UNPKG

cose-kit

Version:

This is an early prototype of a RFC8152 COSE library for node.js.

77 lines (76 loc) 2.53 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.mapUnprotectedHeaders = exports.encodeProtectedHeaders = exports.headers = exports.algsToValue = exports.macAlgsToValue = exports.macAlgs = exports.algs = void 0; const buffer_utils_js_1 = require("./lib/buffer_utils.js"); const cbor_js_1 = require("./cbor.js"); exports.algs = new Map([ [-8, { name: 'EdDSA' }], [-7, { name: 'ES256', hash: 'SHA-256' }], [-35, { name: 'ES384', hash: 'SHA-384' }], [-36, { name: 'ES512', hash: 'SHA-512' }], [-37, { name: 'PS256', hash: 'SHA-256' }], [-38, { name: 'PS384', hash: 'SHA-384' }], [-39, { name: 'PS512', hash: 'SHA-512' }], [-257, { name: 'RS256', hash: 'SHA-256' }], [-258, { name: 'RS384', hash: 'SHA-384' }], [-259, { name: 'RS512', hash: 'SHA-512' }], ]); exports.macAlgs = new Map([ [5, { name: 'HS256', hash: 'SHA-256', length: 256 }], [6, { name: 'HS384', hash: 'SHA-384', length: 384 }], [7, { name: 'HS512', hash: 'SHA-512', length: 512 }] ]); exports.macAlgsToValue = new Map(Array.from(exports.macAlgs.entries()).map(([k, v]) => [v.name, k])); exports.algsToValue = new Map([ ['EdDSA', -8], ['ES256', -7], ['ES384', -35], ['ES512', -36], ['PS256', -37], ['PS384', -38], ['PS512', -39], ['RS256', -257], ['RS384', -258], ['RS512', -259], ]); exports.headers = { partyUNonce: -22, static_key_id: -3, static_key: -2, ephemeral_key: -1, alg: 1, crit: 2, ctyp: 3, kid: 4, IV: 5, Partial_IV: 6, counter_signature: 7, x5bag: 32, x5chain: 33, x5t: 34, x5u: 35, }; const encodeProtectedHeaders = (protectedHeaders) => { if (typeof protectedHeaders === 'undefined') { return new Uint8Array(); } return cbor_js_1.encoder.encode(new Map(Object.entries(protectedHeaders || {}).map(([k, v]) => { if (k === 'alg') { v = exports.algsToValue.get(v); } else if (typeof v === 'string') { v = (0, buffer_utils_js_1.fromUTF8)(v); } return [exports.headers[k], v]; }))); }; exports.encodeProtectedHeaders = encodeProtectedHeaders; const mapUnprotectedHeaders = (unprotectedHeaders) => { return new Map(Object.entries(unprotectedHeaders || {}).map(([k, v]) => { if (typeof v === 'string') { v = (0, buffer_utils_js_1.fromUTF8)(v); } return [exports.headers[k], v]; })); }; exports.mapUnprotectedHeaders = mapUnprotectedHeaders;