@julesl23/s5js
Version:
Enhanced TypeScript SDK for S5 decentralized storage with path-based API, media processing, and directory utilities
44 lines • 1.47 kB
JavaScript
import { RECORD_TYPE_REGISTRY_ENTRY } from "../constants.js";
import { decodeLittleEndian, encodeLittleEndian } from "../util/little_endian.js";
export function serializeRegistryEntry(entry) {
return new Uint8Array([
RECORD_TYPE_REGISTRY_ENTRY,
...entry.pk,
...encodeLittleEndian(entry.revision, 8),
entry.data.length,
...entry.data,
...entry.signature,
]);
}
export function deserializeRegistryEntry(data) {
const dataLength = data[42];
return {
pk: data.subarray(1, 34),
revision: decodeLittleEndian(data.subarray(34, 42)),
data: data.subarray(43, 43 + dataLength),
signature: data.subarray(43 + dataLength),
};
}
export async function createRegistryEntry(keyPair, data, revision, crypto) {
const signature = await crypto.signEd25519(keyPair, new Uint8Array([
RECORD_TYPE_REGISTRY_ENTRY,
...encodeLittleEndian(revision, 8),
data.length, // 1 byte
...data,
]));
return {
pk: keyPair.publicKey,
revision: revision,
data: data,
signature: signature,
};
}
export function verifyRegistryEntry(entry, crypto) {
return crypto.verifyEd25519(entry.pk.subarray(1), new Uint8Array([
RECORD_TYPE_REGISTRY_ENTRY,
...encodeLittleEndian(entry.revision, 8),
entry.data.length, // 1 byte
...entry.data,
]), entry.signature);
}
//# sourceMappingURL=entry.js.map