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