cose-kit
Version:
This is an early prototype of a RFC8152 COSE library for node.js.
77 lines (76 loc) • 2.53 kB
JavaScript
;
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;