diff --git a/index.js b/index.js index c8b57d8..1c04474 100644 --- a/index.js +++ b/index.js @@ -111,7 +111,9 @@ module.exports.verify = function(jwtString, secretOrPublicKey, options, callback options.algorithms = ~secretOrPublicKey.toString().indexOf('BEGIN CERTIFICATE') || ~secretOrPublicKey.toString().indexOf('BEGIN PUBLIC KEY') ? [ 'RS256','RS384','RS512','ES256','ES384','ES512' ] : - [ 'HS256','HS384','HS512' ]; + ~secretOrPublicKey.toString().indexOf('BEGIN RSA PUBLIC KEY') ? + [ 'RS256','RS384','RS512' ] : + [ 'HS256','HS384','HS512' ]; } diff --git a/test/rsa-public-key.pem b/test/rsa-public-key.pem new file mode 100644 index 0000000..eb9a29b --- /dev/null +++ b/test/rsa-public-key.pem @@ -0,0 +1,8 @@ +-----BEGIN RSA PUBLIC KEY----- +MIIBCgKCAQEAvzoCEC2rpSpJQaWZbUmlsDNwp83Jr4fi6KmBWIwnj1MZ6CUQ7rBa +suLI8AcfX5/10scSfQNCsTLV2tMKQaHuvyrVfwY0dINk+nkqB74QcT2oCCH9XduJ +jDuwWA4xLqAKuF96FsIes52opEM50W7/W7DZCKXkC8fFPFj6QF5ZzApDw2Qsu3yM +Rmr7/W9uWeaTwfPx24YdY7Ah+fdLy3KN40vXv9c4xiSafVvnx9BwYL7H1Q8NiK9L +GEN6+JSWfgckQCs6UUBOXSZdreNN9zbQCwyzee7bOJqXUDAuLcFARzPw1EsZAyjV +tGCKIQ0/btqK+jFunT2NBC8RItanDZpptQIDAQAB +-----END RSA PUBLIC KEY----- diff --git a/test/rsa-public-key.tests.js b/test/rsa-public-key.tests.js new file mode 100644 index 0000000..e2044fc --- /dev/null +++ b/test/rsa-public-key.tests.js @@ -0,0 +1,15 @@ +var jwt = require('../'); + +describe('public key start with BEGIN RSA PUBLIC KEY', function () { + + it('should work', function (done) { + var fs = require('fs'); + var cert_pub = fs.readFileSync(__dirname + '/rsa-public-key.pem'); + var cert_priv = fs.readFileSync(__dirname + '/rsa-private.pem'); + + var token = jwt.sign({ foo: 'bar' }, cert_priv, { algorithm: 'RS256'}); + + jwt.verify(token, cert_pub, done); + }); + +});