cose-kit
Version:
This is an early prototype of a RFC8152 COSE library for node.js.
52 lines (51 loc) • 2.11 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.coseVerifyMAC0 = exports.coseVerifyX509 = exports.coseVerifyMultiSignature = exports.coseVerify = void 0;
const cbor_js_1 = require("./cbor.js");
const Sign1_js_1 = require("./cose/Sign1.js");
const Sign_js_1 = require("./cose/Sign.js");
const Mac0_js_1 = require("./cose/Mac0.js");
const coseVerify = async (cose, key, externalAAD = new Uint8Array()) => {
let decoded = cbor_js_1.encoder.decode(cose);
if (Array.isArray(decoded) && decoded.length === 4) {
const params = decoded;
decoded = new Sign1_js_1.Sign1(...params);
}
if (!(decoded instanceof Sign1_js_1.Sign1)) {
throw new Error('unknown COSE type');
}
const isValid = await decoded.verify(key, externalAAD);
return { isValid, decoded };
};
exports.coseVerify = coseVerify;
const coseVerifyMultiSignature = async (cose, keys) => {
const decoded = cbor_js_1.encoder.decode(cose);
if (!(decoded instanceof Sign_js_1.Sign)) {
throw new Error('unexpected COSE type');
}
const isValid = await decoded.verify(keys);
return { isValid, decoded };
};
exports.coseVerifyMultiSignature = coseVerifyMultiSignature;
const coseVerifyX509 = async (cose, roots) => {
const decoded = cbor_js_1.encoder.decode(cose);
if (!(decoded instanceof Sign1_js_1.Sign1 || decoded instanceof Sign_js_1.Sign)) {
throw new Error('unknown COSE type');
}
const isValid = await decoded.verifyX509(roots);
return { isValid, decoded };
};
exports.coseVerifyX509 = coseVerifyX509;
const coseVerifyMAC0 = async (cose, key, externalAAD = new Uint8Array()) => {
let decoded = cbor_js_1.encoder.decode(cose);
if (Array.isArray(decoded) && decoded.length === 4) {
const params = decoded;
decoded = new Mac0_js_1.Mac0(...params);
}
if (!(decoded instanceof Mac0_js_1.Mac0)) {
throw new Error('unexpected COSE type');
}
const isValid = await decoded.verify(key, externalAAD);
return { isValid, decoded };
};
exports.coseVerifyMAC0 = coseVerifyMAC0;