This package is a TypeScript implementation of hash-related utilities to support DSNP applications and services.
DSNP anchors content to announcements via a URL and hashes. This ensures integrity of resources and also provides for relocatable content, as hashes can be generated and verified regardless of location.
This library provides a simple implementation that checks whether a data "file" matches at least one of the hash values provided.
This library uses hash-wasm, which has fast WASM implementations of hash algorithms and should work in both server-side and browser environments.
Given a Uint8Array
and an array of strings representing DSNP hashes, use the following function to verify if there is a matching hash.
import { compareBinaryToMultibaseHashes } from "@dsnp/hash-util";
const result = await compareBinaryToMultibaseHashes(binaryU8A, hashes);
The library will verify the following types of hashes:
- multihash values
base32
multibase encoding (leading'b'
character)sha2-256
orblake3
hash (leading0x12
or0x1e
byte)- 256-bit hash length (
0x20
after hash indicator)
All comparisons are done in-memory, meaning that there is no attempt to limit the size of the byte array or memory requirements. Callers should therefore perform their own sanity checks.
npm i
npm run build
npm run test
Please use the github issues area to report bugs or suggest enhancements. Pull requests are gratefully welcomed.