Use node-rsa for private pkcs1 decryption.

This commit is contained in:
Maik Marschner 2025-03-26 15:18:06 +01:00
parent b2ae16b933
commit e810ce241f
3 changed files with 19 additions and 6 deletions

View File

@ -1,6 +1,7 @@
'use strict';
const crypto = require('crypto');
const NodeRSA = require('node-rsa');
const BigNumber = require('./BigNumber.js');
const mgf1 = require('./MGF1');
@ -54,10 +55,14 @@ module.exports = class Crypto {
}
static privateDecrypt(key, data) {
return crypto.privateDecrypt({
key: key.toPem(),
padding: crypto.constants.RSA_PKCS1_PADDING,
}, data);
const keyRSA = new NodeRSA(
key.toPem(),
'pkcs1-private-pem', {
encryptionScheme: 'pkcs1',
environment: 'browser', // would use the crypto module by default, which blocks pkcs1
},
);
return keyRSA.decrypt(data);
}
static privateSign(key, data, outputEncoding = 'base64') {

11
package-lock.json generated
View File

@ -13,6 +13,7 @@
"handlebars": "^4.7.8",
"js2xmlparser": "^5.0.0",
"node-forge": "^1.3.1",
"node-rsa": "^1.1.1",
"rock-req": "^5.1.3",
"uuid": "^9.0.1",
"xml-crypto": "^6.0.0",
@ -767,7 +768,6 @@
},
"node_modules/asn1": {
"version": "0.2.4",
"dev": true,
"license": "MIT",
"dependencies": {
"safer-buffer": "~2.1.0"
@ -3498,6 +3498,14 @@
"integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==",
"dev": true
},
"node_modules/node-rsa": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/node-rsa/-/node-rsa-1.1.1.tgz",
"integrity": "sha512-Jd4cvbJMryN21r5HgxQOpMEqv+ooke/korixNNK3mGqfGJmy0M77WDDzo/05969+OkMy3XW1UuZsSmW9KQm7Fw==",
"dependencies": {
"asn1": "^0.2.4"
}
},
"node_modules/normalize-path": {
"version": "3.0.0",
"dev": true,
@ -4218,7 +4226,6 @@
},
"node_modules/safer-buffer": {
"version": "2.1.2",
"dev": true,
"license": "MIT"
},
"node_modules/semver": {

View File

@ -70,6 +70,7 @@
"handlebars": "^4.7.8",
"js2xmlparser": "^5.0.0",
"node-forge": "^1.3.1",
"node-rsa": "^1.1.1",
"rock-req": "^5.1.3",
"uuid": "^9.0.1",
"xml-crypto": "^6.0.0",