jsonld-signatures-merkleproof2019
Version:
A jsonld signature implementation to support MerkleProof2019 verification in Verifiable Credential context
29 lines (28 loc) • 1.09 kB
JavaScript
import { Buffer as BufferPolyfill } from 'buffer';
// @ts-expect-error not a TS package
import * as multikey from '@digitalbazaar/ecdsa-multikey';
const buffer = typeof Buffer === 'undefined' ? BufferPolyfill : Buffer;
/** convert jwk to hex encoded public key */
export const publicKeyHexFromJwk = (jwk) => {
jwk = {
...jwk,
crv: 'K-256'
};
const compressed = multikey.toPublicKeyBytes({ jwk });
return buffer.from(compressed).toString('hex');
};
/** convert jwk to binary encoded public key */
export const publicKeyUInt8ArrayFromJwk = (jwk) => {
const publicKeyHex = publicKeyHexFromJwk(jwk);
let asBuffer = buffer.from(publicKeyHex, 'hex');
let padding = 32 - asBuffer.length;
while (padding > 0) {
asBuffer = buffer.concat([buffer.from('00', 'hex'), asBuffer]);
padding--;
}
return asBuffer;
};
export const publicKeyUInt8ArrayFromMultibase = async ({ publicKeyMultibase }) => {
const pubKeyJwk = await multikey.toJwk({ keyPair: { publicKeyMultibase } });
return publicKeyUInt8ArrayFromJwk(pubKeyJwk);
};