signDataItem()

Othent JS SDK signDataItem() function

The signDataItem() function allows you to create and sign a DataItem object, compatible with arbundles. These data items can then be submitted to an ANS-104 compatible bundler.

Bug: Using signDataItem() and then calling dataItem.isValid() always returns false, so the example below will never submit the data item to a bundler. Track the progress on this GitHub issue.

This function assumes (and requires) a user is authenticated. See requireAuth().

Tip: The function returns a buffer (ArrayBufferLike) of the signed data item. You'll need to manually load it into an arbundles DataItem instance as seen in the example usage:

API

signDataItem(dataItem: DataItem): Promise<ArrayBufferLike>;

dataItem: DataItem

The bundled data item's data (not arbundle's DateItem instance) to sign.

interface DataItem {
    data: string | Uint8Array;
    target?: string;
    anchor?: string;
    tags?: {
        name: string;
        value: string;
    }[];
}

return Promise<ArrayBufferLike>

A Promise containing an ArrayBuffer with the DataItem's signed data, which can be loaded into a arbundle's DateItem instance for validation.

Example usage

import { DataItem } from "arbundles";
import { Othent } from "@othent/kms";

const othent = new Othent({ appInfo, throwErrors: false, ... });

// Make sure the user is authenticated, or prompt them to authenticate:
await othent.requireAuth();

// Sign the DataItem:
const signedDataItemBuffer = await othent.signDataItem({
    data: "This is an example data",
    tags: [{
        name: "Content-Type",
        value: "text/plain"
    }]
});

// Load the result into a DataItem instance:
const dataItem = new DataItem(signedDataItemBuffer);

// Verify the DataItem's signature:
const isValid = await dataItem.isValid();

if (isValid) {
    // Submit it to a bundler:
    await fetch(`https://node2.bundlr.network/tx`, {
        method: "POST",
        headers: {
            "Content-Type": "application/octet-stream"
        },
        body: dataItem.getRaw()
    });
}

Last updated