UNPKG

@filemap/events-sdk

Version:

SDK for Filemap events. Desktop client for Filemap dev server.

38 lines 1.37 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ieeeP1363ToDer = void 0; function ieeeP1363ToDer(ieeeSignature) { const signature = Buffer.from(ieeeSignature, 'base64'); if (signature.length !== 64) { throw new Error(`Invalid signature length: ${signature.length}. Expected 64 bytes for P-256.`); } const r = signature.subarray(0, 32); const s = signature.subarray(32, 64); const der = encodeDER(r, s); return der.toString('base64'); } exports.ieeeP1363ToDer = ieeeP1363ToDer; function encodeDER(r, s) { function trimInteger(buf) { let i = 0; while (i < buf.length - 1 && buf[i] === 0 && !(buf[i + 1] & 0x80)) { i++; } return buf.slice(i); } const rTrimmed = trimInteger(r); const sTrimmed = trimInteger(s); const rEncoded = (rTrimmed[0] & 0x80) ? Buffer.concat([Buffer.from([0]), rTrimmed]) : rTrimmed; const sEncoded = (sTrimmed[0] & 0x80) ? Buffer.concat([Buffer.from([0]), sTrimmed]) : sTrimmed; const sequence = Buffer.concat([ Buffer.from([0x02, rEncoded.length]), rEncoded, Buffer.from([0x02, sEncoded.length]), sEncoded ]); return Buffer.concat([ Buffer.from([0x30, sequence.length]), sequence ]); } //# sourceMappingURL=signature-format-converter.js.map