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().
API
signDataItem(dataItem: DataItem): Promise<ArrayBufferLike>;dataItem: DataItem
dataItem: DataItemThe 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>
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