Skip to content
This repository has been archived by the owner on Jul 21, 2023. It is now read-only.

Commit

Permalink
fix: padding error
Browse files Browse the repository at this point in the history
  • Loading branch information
mkg20001 authored and jacobheun committed Oct 25, 2019
1 parent 027a5a9 commit 2c1bac5
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 5 deletions.
7 changes: 4 additions & 3 deletions src/keys/rsa-browser.js
Original file line number Diff line number Diff line change
Expand Up @@ -129,8 +129,8 @@ RSA encryption/decryption for the browser with webcrypto workarround
Explanation:
- Convert JWK to PEM
- Load PEM with nodeForge
- Convert msg buffer to nodeForge buffer: it's already uint8array, so do nothing
- Convert resulting nodeForge buffer to buffer: it returns a binary string, turn that into a uint8array
- Convert msg buffer to nodeForge buffer: ByteBuffer is a "binary-string backed buffer", so let's make our buffer a binary string
- Convert resulting nodeForge buffer to buffer: it returns a binary string, turn that into a uint8array(buffer)
*/

Expand All @@ -140,7 +140,8 @@ const jwkToPem = require('pem-jwk').jwk2pem
function convertKey (key, pub, msg, handle) {
const pem = jwkToPem(key)
const fkey = pki[pub ? 'publicKeyFromPem' : 'privateKeyFromPem'](pem)
const fomsg = handle(Buffer.from(msg), fkey)
const fmsg = Buffer.from(msg).toString('binary')
const fomsg = handle(fmsg, fkey)
return Buffer.from(fomsg, 'binary')
}

Expand Down
6 changes: 4 additions & 2 deletions src/keys/rsa.js
Original file line number Diff line number Diff line change
Expand Up @@ -69,10 +69,12 @@ exports.hashAndVerify = async function (key, sig, msg) { // eslint-disable-line
return verify.verify(pem, sig)
}

const padding = crypto.constants.RSA_PKCS1_PADDING

exports.encrypt = function (key, bytes) {
return crypto.publicEncrypt(jwkToPem(key), bytes)
return crypto.publicEncrypt({ key: jwkToPem(key), padding }, bytes)
}

exports.decrypt = function (key, bytes) {
return crypto.privateDecrypt(jwkToPem(key), bytes)
return crypto.privateDecrypt({ key: jwkToPem(key), padding }, bytes)
}

0 comments on commit 2c1bac5

Please sign in to comment.