diff --git a/README.md b/README.md index 2bf134e..07d2dc9 100644 --- a/README.md +++ b/README.md @@ -72,7 +72,8 @@ const cose = require('cose-js'); const verifier = { 'key': { 'x': Buffer.from('143329cce7868e416927599cf65a34f3ce2ffda55a7eca69ed8919a394d42f0f', 'hex'), - 'y': Buffer.from('60f7f1a780d8a783bfb7a2dd6b2796e8128dbbcef9d3d168db9529971a36e7b9', 'hex') + 'y': Buffer.from('60f7f1a780d8a783bfb7a2dd6b2796e8128dbbcef9d3d168db9529971a36e7b9', 'hex'), + 'kid': '11' } }; const COSEMessage = Buffer.from('d28443a10126a10442313172496d706f7274616e74206d6573736167652158404c2b6b66dfedc4cfef0f221cf7ac7f95087a4c4245fef0063a0fd4014b670f642d31e26d38345bb4efcdc7ded3083ab4fe71b62a23f766d83785f044b20534f9', 'hex'); diff --git a/examples/sign.js b/examples/sign.js index 0ce799a..9c46f44 100644 --- a/examples/sign.js +++ b/examples/sign.js @@ -24,7 +24,8 @@ cose.sign.create( const verifier = { 'key': { 'x': Buffer.from('143329cce7868e416927599cf65a34f3ce2ffda55a7eca69ed8919a394d42f0f', 'hex'), - 'y': Buffer.from('60f7f1a780d8a783bfb7a2dd6b2796e8128dbbcef9d3d168db9529971a36e7b9', 'hex') + 'y': Buffer.from('60f7f1a780d8a783bfb7a2dd6b2796e8128dbbcef9d3d168db9529971a36e7b9', 'hex'), + 'kid': '11' } }; const COSEMessage = Buffer.from('d28443a10126a10442313172496d706f7274616e74206d6573736167652158404c2b6b66dfedc4cfef0f221cf7ac7f95087a4c4245fef0063a0fd4014b670f642d31e26d38345bb4efcdc7ded3083ab4fe71b62a23f766d83785f044b20534f9', 'hex'); diff --git a/lib/sign.js b/lib/sign.js index f8841b6..a324a0b 100644 --- a/lib/sign.js +++ b/lib/sign.js @@ -190,6 +190,11 @@ exports.verify = function (payload, verifier, options) { if (!signer) { throw new Error('Failed to find signer with kid' + verifier.key.kid); + } else { + const kid = getCommonParameter(p, u, common.HeaderParameters.kid); + if (Buffer.compare(kid,verifier.key.kid)) { + throw new Error('Not signed by specified KID') + } } if (type === SignTag) { @@ -212,7 +217,6 @@ exports.verify = function (payload, verifier, options) { }); } else { const externalAAD = verifier.externalAAD || EMPTY_BUFFER; - const alg = getCommonParameter(p, u, common.HeaderParameters.alg); p = (!p.size) ? EMPTY_BUFFER : cbor.encode(p); const SigStructure = [