diff --git a/package-lock.json b/package-lock.json index c36463d..a93e12c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@solid/jose", - "version": "0.6.9", + "version": "0.7.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@solid/jose", - "version": "0.6.9", + "version": "0.7.0", "license": "MIT", "dependencies": { "@sinonjs/text-encoding": "^0.7.2", diff --git a/package.json b/package.json index dc0405d..793be96 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@solid/jose", - "version": "0.6.9", + "version": "0.7.0", "description": "JSON Object Signing and Encryption", "main": "src/index.js", "directories": { diff --git a/src/algorithms/index.js b/src/algorithms/index.js index 5dff01b..e91b742 100644 --- a/src/algorithms/index.js +++ b/src/algorithms/index.js @@ -64,8 +64,23 @@ supportedAlgorithms.define('ES256', 'sign', new ECDSA({ }, namedCurve: 'P-256' })) -//supportedAlgorithms.define('ES384', 'sign', {}) -//supportedAlgorithms.define('ES512', 'sign', {}) + +supportedAlgorithms.define('ES384', 'sign', new ECDSA({ + name: 'ECDSA', + hash: { + name: 'SHA-384' + }, + namedCurve: 'P-384' +})) + +supportedAlgorithms.define('ES512', 'sign', new ECDSA({ + name: 'ECDSA', + hash: { + name: 'SHA-512' + }, + namedCurve: 'P-521' +})) + //supportedAlgorithms.define('PS256', 'sign', {}) //supportedAlgorithms.define('PS384', 'sign', {}) //supportedAlgorithms.define('PS512', 'sign', {}) @@ -126,8 +141,23 @@ supportedAlgorithms.define('ES256', 'verify', new ECDSA({ }, namedCurve: 'P-256' })) -//supportedAlgorithms.define('ES384', 'verify', {}) -//supportedAlgorithms.define('ES512', 'verify', {}) + +supportedAlgorithms.define('ES384', 'verify', new ECDSA({ + name: 'ECDSA', + hash: { + name: 'SHA-384' + }, + namedCurve: 'P-384' +})) + +supportedAlgorithms.define('ES512', 'verify', new ECDSA({ + name: 'ECDSA', + hash: { + name: 'SHA-512' + }, + namedCurve: 'P-521' +})) + //supportedAlgorithms.define('PS256', 'verify', {}) //supportedAlgorithms.define('PS384', 'verify', {}) //supportedAlgorithms.define('PS512', 'verify', {}) @@ -165,6 +195,22 @@ supportedAlgorithms.define('ES256', 'importKey', new ECDSA({ namedCurve: 'P-256' })) +supportedAlgorithms.define('ES384', 'importKey', new ECDSA({ + name: 'ECDSA', + hash: { + name: 'SHA-384' + }, + namedCurve: 'P-384' +})) + +supportedAlgorithms.define('ES512', 'importKey', new ECDSA({ + name: 'ECDSA', + hash: { + name: 'SHA-512' + }, + namedCurve: 'P-521' +})) + /** * Export */ diff --git a/src/jose/JWA.js b/src/jose/JWA.js index 69a9b11..a237917 100644 --- a/src/jose/JWA.js +++ b/src/jose/JWA.js @@ -87,6 +87,11 @@ class JWA { */ static async importKey (key) { let normalizedAlgorithm = supportedAlgorithms.normalize('importKey', key.alg) + + if (normalizedAlgorithm instanceof Error) { + return Promise.reject(new NotSupportedError(key.alg)) + } + return normalizedAlgorithm.importKey(key) } }