Skip to content

Commit 1dc7f35

Browse files
committed
fix: correctly pad integers when importing RSA JWK
1 parent 9cca30f commit 1dc7f35

File tree

2 files changed

+12
-10
lines changed

2 files changed

+12
-10
lines changed

lib/help/asn1/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,4 @@ const RSAPublicKey = asn1.define('RSAPublicKey', require('./rsa_public_key'))
2727
types.set('RSAPublicKey', RSAPublicKey)
2828

2929
module.exports = types
30+
module.exports.bignum = asn1.bignum

lib/help/key_utils.js

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ const asn1 = require('./asn1')
88
const computePrimes = require('./rsa_primes')
99
const { OKP_CURVES, EC_CURVES } = require('./consts')
1010

11+
const BN = asn1.bignum
1112
const oidHexToCurve = new Map([
1213
['06082a8648ce3d030107', 'P-256'],
1314
['06052b8104000a', secp256k1],
@@ -212,23 +213,23 @@ const jwkToPem = {
212213

213214
return RSAPrivateKey.encode({
214215
version: 0,
215-
n: base64url.decodeToBuffer(jwk.n),
216-
e: base64url.decodeToBuffer(jwk.e),
217-
d: base64url.decodeToBuffer(jwk.d),
218-
p: base64url.decodeToBuffer(jwk.p),
219-
q: base64url.decodeToBuffer(jwk.q),
220-
dp: base64url.decodeToBuffer(jwk.dp),
221-
dq: base64url.decodeToBuffer(jwk.dq),
222-
qi: base64url.decodeToBuffer(jwk.qi)
216+
n: new BN(base64url.decodeToBuffer(jwk.n)),
217+
e: new BN(base64url.decodeToBuffer(jwk.e)),
218+
d: new BN(base64url.decodeToBuffer(jwk.d)),
219+
p: new BN(base64url.decodeToBuffer(jwk.p)),
220+
q: new BN(base64url.decodeToBuffer(jwk.q)),
221+
dp: new BN(base64url.decodeToBuffer(jwk.dp)),
222+
dq: new BN(base64url.decodeToBuffer(jwk.dq)),
223+
qi: new BN(base64url.decodeToBuffer(jwk.qi))
223224
}, 'pem', { label: 'RSA PRIVATE KEY' })
224225
},
225226
public (jwk) {
226227
const RSAPublicKey = asn1.get('RSAPublicKey')
227228

228229
return RSAPublicKey.encode({
229230
version: 0,
230-
n: base64url.decodeToBuffer(jwk.n),
231-
e: base64url.decodeToBuffer(jwk.e)
231+
n: new BN(base64url.decodeToBuffer(jwk.n)),
232+
e: new BN(base64url.decodeToBuffer(jwk.e))
232233
}, 'pem', { label: 'RSA PUBLIC KEY' })
233234
}
234235
},

0 commit comments

Comments
 (0)