Skip to content

Commit bed1190

Browse files
authored
fix(package): security fix (#217)
* Update helper.js * Update pem.js * Update convert.js
1 parent 68ad452 commit bed1190

File tree

3 files changed

+24
-23
lines changed

3 files changed

+24
-23
lines changed

lib/convert.js

+6-6
Original file line numberDiff line numberDiff line change
@@ -169,8 +169,8 @@ module.exports.PEM2PFX = function (pathBundleIN, pathOUT, password, callback) {
169169
})
170170
}
171171
var delTempPWFiles = []
172-
helper.createPasswordFile({ 'cipher': '', 'password': password, 'passType': 'in' }, params, delTempPWFiles[delTempPWFiles.length])
173-
helper.createPasswordFile({ 'cipher': '', 'password': password, 'passType': 'out' }, params, delTempPWFiles[delTempPWFiles.length])
172+
helper.createPasswordFile({ 'cipher': '', 'password': password, 'passType': 'in' }, params, delTempPWFiles)
173+
helper.createPasswordFile({ 'cipher': '', 'password': password, 'passType': 'out' }, params, delTempPWFiles)
174174
openssl.spawnWrapper(params, false, function (error, code) {
175175
function done (error) {
176176
if (error) {
@@ -202,8 +202,8 @@ module.exports.PFX2PEM = function (pathIN, pathOUT, password, callback) {
202202
'-nodes'
203203
]
204204
var delTempPWFiles = []
205-
helper.createPasswordFile({ 'cipher': '', 'password': password, 'passType': 'in' }, params, delTempPWFiles[delTempPWFiles.length])
206-
helper.createPasswordFile({ 'cipher': '', 'password': password, 'passType': 'out' }, params, delTempPWFiles[delTempPWFiles.length])
205+
helper.createPasswordFile({ 'cipher': '', 'password': password, 'passType': 'in' }, params, delTempPWFiles)
206+
helper.createPasswordFile({ 'cipher': '', 'password': password, 'passType': 'out' }, params, delTempPWFiles)
207207
openssl.spawnWrapper(params, false, function (error, code) {
208208
function done (error) {
209209
if (error) {
@@ -259,8 +259,8 @@ module.exports.P7B2PFX = function (pathBundleIN, pathOUT, password, callback) {
259259
})
260260
}
261261
var delTempPWFiles = [tmpfile]
262-
helper.createPasswordFile({ 'cipher': '', 'password': password, 'passType': 'in' }, params, delTempPWFiles[delTempPWFiles.length])
263-
helper.createPasswordFile({ 'cipher': '', 'password': password, 'passType': 'out' }, params, delTempPWFiles[delTempPWFiles.length])
262+
helper.createPasswordFile({ 'cipher': '', 'password': password, 'passType': 'in' }, params, delTempPWFiles)
263+
helper.createPasswordFile({ 'cipher': '', 'password': password, 'passType': 'out' }, params, delTempPWFiles)
264264
openssl.spawnWrapper(params, false, function (error, code) {
265265
function done (error) {
266266
if (error) {

lib/helper.js

+6-5
Original file line numberDiff line numberDiff line change
@@ -66,14 +66,15 @@ var ciphers = module.exports.ciphers
6666
* @param {String} options.passType passType: can be in/out/word for passIN/passOUT/passWORD
6767
* @param {Boolean} options.mustPass mustPass is used when you need to set the pass like as "-password pass:" most needed when empty password
6868
* @param {Object} params params will be extended with the data that need for the openssl command. IS USED AS POINTER!
69-
* @param {String} PasswordFile PasswordFile is the filePath that later need to deleted, after the openssl command. IS USED AS POINTER!
69+
* @param {String} PasswordFileArray PasswordFileArray is an array of filePaths that later need to deleted ,after the openssl command. IS USED AS POINTER!
7070
* @return {Boolean} result
7171
*/
72-
module.exports.createPasswordFile = function (options, params, PasswordFile) {
73-
if (!options || !options.hasOwnProperty('password') || !options.hasOwnProperty('passType') || !/^(word|in|out)$/.test(options.passType)) {
72+
module.exports.createPasswordFile = function (options, params, PasswordFileArray) {
73+
if (!options || !options.hasOwnProperty('password') || !options.hasOwnProperty('passType') || !/^(word|in|out)$/.test(options.passType)) {
7474
return false
75-
}
76-
PasswordFile = pathlib.join(tempDir, crypto.randomBytes(20).toString('hex'))
75+
}
76+
var PasswordFile = pathlib.join(tempDir ,crypto.randomBytes(20).toString('hex'))
77+
PasswordFileArray.push(PasswordFile)
7778
options.password = options.password.trim()
7879
if (options.password === '') {
7980
options.mustPass = true

lib/pem.js

+12-12
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ function createPrivateKey (keyBitsize, options, callback) {
6969
var delTempPWFiles = []
7070

7171
if (options && options.cipher && (Number(helper.ciphers.indexOf(options.cipher)) !== -1) && options.password) {
72-
helper.createPasswordFile({ 'cipher': options.cipher, 'password': options.password, 'passType': 'out' }, params, delTempPWFiles[delTempPWFiles.length])
72+
helper.createPasswordFile({ 'cipher': options.cipher, 'password': options.password, 'passType': 'out' }, params, delTempPWFiles)
7373
}
7474

7575
params.push(keyBitsize)
@@ -263,7 +263,7 @@ function createCSR (options, callback) {
263263

264264
var delTempPWFiles = []
265265
if (options.clientKeyPassword) {
266-
helper.createPasswordFile({ 'cipher': '', 'password': options.clientKeyPassword, 'passType': 'in' }, params, delTempPWFiles[delTempPWFiles.length])
266+
helper.createPasswordFile({ 'cipher': '', 'password': options.clientKeyPassword, 'passType': 'in' }, params, delTempPWFiles)
267267
}
268268

269269
openssl.exec(params, 'CERTIFICATE REQUEST', tmpfiles, function (sslErr, data) {
@@ -384,15 +384,15 @@ function createCertificate (options, callback) {
384384
}
385385
}
386386
if (options.serviceKeyPassword) {
387-
helper.createPasswordFile({ 'cipher': '', 'password': options.serviceKeyPassword, 'passType': 'in' }, params, delTempPWFiles[delTempPWFiles.length])
387+
helper.createPasswordFile({ 'cipher': '', 'password': options.serviceKeyPassword, 'passType': 'in' }, params, delTempPWFiles)
388388
}
389389
tmpfiles.push(options.serviceCertificate)
390390
tmpfiles.push(options.serviceKey)
391391
} else {
392392
params.push('-signkey')
393393
params.push('--TMPFILE--')
394394
if (options.serviceKeyPassword) {
395-
helper.createPasswordFile({ 'cipher': '', 'password': options.serviceKeyPassword, 'passType': 'in' }, params, delTempPWFiles[delTempPWFiles.length])
395+
helper.createPasswordFile({ 'cipher': '', 'password': options.serviceKeyPassword, 'passType': 'in' }, params, delTempPWFiles)
396396
}
397397
tmpfiles.push(options.serviceKey)
398398
}
@@ -409,7 +409,7 @@ function createCertificate (options, callback) {
409409
}
410410

411411
if (options.clientKeyPassword) {
412-
helper.createPasswordFile({ 'cipher': '', 'password': options.clientKeyPassword, 'passType': 'in' }, params, delTempPWFiles[delTempPWFiles.length])
412+
helper.createPasswordFile({ 'cipher': '', 'password': options.clientKeyPassword, 'passType': 'in' }, params, delTempPWFiles)
413413
}
414414

415415
openssl.exec(params, 'CERTIFICATE', tmpfiles, function (sslErr, data) {
@@ -558,7 +558,7 @@ function getModulus (certificate, password, hash, callback) {
558558
]
559559
var delTempPWFiles = []
560560
if (password) {
561-
helper.createPasswordFile({ 'cipher': '', 'password': password, 'passType': 'in' }, params, delTempPWFiles[delTempPWFiles.length])
561+
helper.createPasswordFile({ 'cipher': '', 'password': password, 'passType': 'in' }, params, delTempPWFiles)
562562
}
563563

564564
openssl.spawnWrapper(params, certificate, function (sslErr, code, stdout, stderr) {
@@ -702,11 +702,11 @@ function createPkcs12 (key, certificate, password, options, callback) {
702702
if (options.cipher && options.clientKeyPassword) {
703703
// NOTICE: The password field is needed! self if it is empty.
704704
// create password file for the import "-passin"
705-
helper.createPasswordFile({ 'cipher': options.cipher, 'password': options.clientKeyPassword, 'passType': 'in' }, params, delTempPWFiles[delTempPWFiles.length])
705+
helper.createPasswordFile({ 'cipher': options.cipher, 'password': options.clientKeyPassword, 'passType': 'in' }, params, delTempPWFiles)
706706
}
707707
// NOTICE: The password field is needed! self if it is empty.
708708
// create password file for the password "-password"
709-
helper.createPasswordFile({ 'cipher': '', 'password': password, 'passType': 'word' }, params, delTempPWFiles[delTempPWFiles.length])
709+
helper.createPasswordFile({ 'cipher': '', 'password': password, 'passType': 'word' }, params, delTempPWFiles)
710710

711711
params.push('-in')
712712
params.push('--TMPFILE--')
@@ -756,15 +756,15 @@ function readPkcs12 (bufferOrPath, options, callback) {
756756
var delTempPWFiles = []
757757
var args = ['pkcs12', '-in', bufferOrPath]
758758

759-
helper.createPasswordFile({ 'cipher': '', 'password': options.p12Password, 'passType': 'in' }, args, delTempPWFiles[delTempPWFiles.length])
759+
helper.createPasswordFile({ 'cipher': '', 'password': options.p12Password, 'passType': 'in' }, args, delTempPWFiles)
760760

761761
if (Buffer.isBuffer(bufferOrPath)) {
762762
tmpfiles = [bufferOrPath]
763763
args[2] = '--TMPFILE--'
764764
}
765765

766766
if (options.clientKeyPassword) {
767-
helper.createPasswordFile({ 'cipher': '', 'password': options.clientKeyPassword, 'passType': 'out' }, args, delTempPWFiles[delTempPWFiles.length])
767+
helper.createPasswordFile({ 'cipher': '', 'password': options.clientKeyPassword, 'passType': 'out' }, args, delTempPWFiles)
768768
} else {
769769
args.push('-nodes')
770770
}
@@ -832,7 +832,7 @@ function checkCertificate (certificate, passphrase, callback) {
832832
params = ['x509', '-text', '-noout', '-in', '--TMPFILE--']
833833
}
834834
if (passphrase) {
835-
helper.createPasswordFile({ 'cipher': '', 'password': passphrase, 'passType': 'in' }, params, delTempPWFiles[delTempPWFiles.length])
835+
helper.createPasswordFile({ 'cipher': '', 'password': passphrase, 'passType': 'in' }, params, delTempPWFiles)
836836
}
837837

838838
openssl.spawnWrapper(params, certificate, function (sslErr, code, stdout, stderr) {
@@ -875,7 +875,7 @@ function checkPkcs12 (bufferOrPath, passphrase, callback) {
875875
var delTempPWFiles = []
876876
var args = ['pkcs12', '-info', '-in', bufferOrPath, '-noout', '-maciter', '-nodes']
877877

878-
helper.createPasswordFile({ 'cipher': '', 'password': passphrase, 'passType': 'in' }, args, delTempPWFiles[delTempPWFiles.length])
878+
helper.createPasswordFile({ 'cipher': '', 'password': passphrase, 'passType': 'in' }, args, delTempPWFiles)
879879

880880
if (Buffer.isBuffer(bufferOrPath)) {
881881
tmpfiles = [bufferOrPath]

0 commit comments

Comments
 (0)