Skip to content

Commit

Permalink
fix: correctly pad integers when importing RSA JWK
Browse files Browse the repository at this point in the history
  • Loading branch information
panva committed Jul 27, 2019
1 parent 9cca30f commit 1dc7f35
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 10 deletions.
1 change: 1 addition & 0 deletions lib/help/asn1/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,4 @@ const RSAPublicKey = asn1.define('RSAPublicKey', require('./rsa_public_key'))
types.set('RSAPublicKey', RSAPublicKey)

module.exports = types
module.exports.bignum = asn1.bignum
21 changes: 11 additions & 10 deletions lib/help/key_utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ const asn1 = require('./asn1')
const computePrimes = require('./rsa_primes')
const { OKP_CURVES, EC_CURVES } = require('./consts')

const BN = asn1.bignum
const oidHexToCurve = new Map([
['06082a8648ce3d030107', 'P-256'],
['06052b8104000a', secp256k1],
Expand Down Expand Up @@ -212,23 +213,23 @@ const jwkToPem = {

return RSAPrivateKey.encode({
version: 0,
n: base64url.decodeToBuffer(jwk.n),
e: base64url.decodeToBuffer(jwk.e),
d: base64url.decodeToBuffer(jwk.d),
p: base64url.decodeToBuffer(jwk.p),
q: base64url.decodeToBuffer(jwk.q),
dp: base64url.decodeToBuffer(jwk.dp),
dq: base64url.decodeToBuffer(jwk.dq),
qi: base64url.decodeToBuffer(jwk.qi)
n: new BN(base64url.decodeToBuffer(jwk.n)),
e: new BN(base64url.decodeToBuffer(jwk.e)),
d: new BN(base64url.decodeToBuffer(jwk.d)),
p: new BN(base64url.decodeToBuffer(jwk.p)),
q: new BN(base64url.decodeToBuffer(jwk.q)),
dp: new BN(base64url.decodeToBuffer(jwk.dp)),
dq: new BN(base64url.decodeToBuffer(jwk.dq)),
qi: new BN(base64url.decodeToBuffer(jwk.qi))
}, 'pem', { label: 'RSA PRIVATE KEY' })
},
public (jwk) {
const RSAPublicKey = asn1.get('RSAPublicKey')

return RSAPublicKey.encode({
version: 0,
n: base64url.decodeToBuffer(jwk.n),
e: base64url.decodeToBuffer(jwk.e)
n: new BN(base64url.decodeToBuffer(jwk.n)),
e: new BN(base64url.decodeToBuffer(jwk.e))
}, 'pem', { label: 'RSA PUBLIC KEY' })
}
},
Expand Down

0 comments on commit 1dc7f35

Please sign in to comment.