paypro: treat pki_data as an array.
This commit is contained in:
parent
47e1ca5f1e
commit
cc7657d843
|
@ -224,14 +224,13 @@ PayPro.prototype.sign = function(key) {
|
|||
var details = this.get('serialized_payment_details');
|
||||
var type = pki_type.split('+')[1].toUpperCase();
|
||||
|
||||
pki_data = pki_data && Array.isArray(pki_data)
|
||||
? pki_data[0]
|
||||
: pki_data;
|
||||
var trusted = [].concat(pki_data).every(function(cert) {
|
||||
var der = cert.toString('hex');
|
||||
var pem = KJUR.asn1.ASN1Util.getPEMStringFromHex(der, 'CERTIFICATE');
|
||||
return !!Trusted[pem.replace(/\s+/g, '')];
|
||||
});
|
||||
|
||||
var der = pki_data.toString('hex');
|
||||
var pem = KJUR.asn1.ASN1Util.getPEMStringFromHex(der, 'CERTIFICATE');
|
||||
|
||||
if (!Trusted[pem.replace(/\s+/g, '')]) {
|
||||
if (!trusted) {
|
||||
// throw new Error('Unstrusted certificate.');
|
||||
}
|
||||
|
||||
|
@ -269,18 +268,16 @@ PayPro.prototype.verify = function() {
|
|||
var verifier = crypto.createVerify('RSA-' + type);
|
||||
verifier.update(buf);
|
||||
|
||||
pki_data = Array.isArray(pki_data)
|
||||
? pki_data[0]
|
||||
: pki_data;
|
||||
return [].concat(pki_data).every(function(cert) {
|
||||
var der = cert.toString('hex');
|
||||
var pem = KJUR.asn1.ASN1Util.getPEMStringFromHex(der, 'CERTIFICATE');
|
||||
|
||||
var der = pki_data.toString('hex');
|
||||
var pem = KJUR.asn1.ASN1Util.getPEMStringFromHex(der, 'CERTIFICATE');
|
||||
if (!Trusted[pem.replace(/\s+/g, '')]) {
|
||||
// throw new Error('Unstrusted certificate.');
|
||||
}
|
||||
|
||||
if (!Trusted[pem.replace(/\s+/g, '')]) {
|
||||
// throw new Error('Unstrusted certificate.');
|
||||
}
|
||||
|
||||
return verifier.verify(pem, sig);
|
||||
return verifier.verify(pem, sig);
|
||||
});
|
||||
} else if (pki_type === 'none') {
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -29,14 +29,13 @@ PayPro.sign = function(key) {
|
|||
var type = pki_type.split('+')[1].toUpperCase();
|
||||
var buf = this.serializeForSig();
|
||||
|
||||
pki_data = pki_data && pki_data.unshift
|
||||
? pki_data[0]
|
||||
: pki_data;
|
||||
var trusted = [].concat(pki_data).every(function(cert) {
|
||||
var der = cert.toString('hex');
|
||||
var pem = KJUR.asn1.ASN1Util.getPEMStringFromHex(der, 'CERTIFICATE');
|
||||
return !!Trusted[pem.replace(/\s+/g, '')];
|
||||
});
|
||||
|
||||
var der = pki_data.toString('hex');
|
||||
var pem = KJUR.asn1.ASN1Util.getPEMStringFromHex(der, 'CERTIFICATE');
|
||||
|
||||
if (!Trusted[pem.replace(/\s+/g, '')]) {
|
||||
if (!trusted) {
|
||||
// throw new Error('Unstrusted certificate.');
|
||||
}
|
||||
|
||||
|
@ -79,24 +78,20 @@ PayPro.verify = function() {
|
|||
prov: 'cryptojs/jsrsa'
|
||||
});
|
||||
|
||||
pki_data = pki_data && pki_data.unshift
|
||||
? pki_data[0]
|
||||
: pki_data;
|
||||
return [].concat(pki_data).every(function(cert) {
|
||||
var der = cert.toString('hex');
|
||||
var pem = KJUR.asn1.ASN1Util.getPEMStringFromHex(der, 'CERTIFICATE');
|
||||
|
||||
var der = pki_data.toString('hex');
|
||||
var pem = KJUR.asn1.ASN1Util.getPEMStringFromHex(der, 'CERTIFICATE');
|
||||
if (!Trusted[pem.replace(/\s+/g, '')]) {
|
||||
// throw new Error('Unstrusted certificate.');
|
||||
}
|
||||
|
||||
if (!Trusted[pem.replace(/\s+/g, '')]) {
|
||||
// throw new Error('Unstrusted certificate.');
|
||||
}
|
||||
jsrsaSig.initVerifyByCertificatePEM(pem);
|
||||
|
||||
jsrsaSig.initVerifyByCertificatePEM(pem);
|
||||
jsrsaSig.updateHex(buf.toString('hex'));
|
||||
|
||||
jsrsaSig.updateHex(buf.toString('hex'));
|
||||
|
||||
var result = jsrsaSig.verify(sig.toString('hex'));
|
||||
|
||||
return result;
|
||||
return jsrsaSig.verify(sig.toString('hex'));
|
||||
});
|
||||
} else if (pki_type === 'none') {
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -339,7 +339,7 @@ describe('PayPro', function() {
|
|||
|
||||
paypro.set('serialized_payment_details', pdbuf);
|
||||
paypro.set('pki_type', 'x509+sha256');
|
||||
paypro.set('pki_data', x509.crt);
|
||||
paypro.set('pki_data', [x509.crt]);
|
||||
|
||||
paypro.sign(x509.priv);
|
||||
|
||||
|
@ -362,7 +362,7 @@ describe('PayPro', function() {
|
|||
paypro.set('pki_type', 'x509+sha256');
|
||||
|
||||
paypro.set('signature', x509.sig); // sig buffer
|
||||
paypro.set('pki_data', x509.crt); // contains one or more x509 certs
|
||||
paypro.set('pki_data', [x509.crt]); // contains one or more x509 certs
|
||||
|
||||
var verify = paypro.verify();
|
||||
verify.should.equal(true);
|
||||
|
|
Loading…
Reference in New Issue