jsonld-signatures-merkleproof2019
Version:
A jsonld signature implementation to support MerkleProof2019 verification in Verifiable Credential context
35 lines (34 loc) • 1.82 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
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 = Object.assign(Object.assign({}, 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 = (_a) => __awaiter(void 0, [_a], void 0, function* ({ publicKeyMultibase }) {
const pubKeyJwk = yield multikey.toJwk({ keyPair: { publicKeyMultibase } });
return publicKeyUInt8ArrayFromJwk(pubKeyJwk);
});