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: 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>
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