Browse Source

paypro: treat pki_data as an array.

patch-2
Christopher Jeffrey 11 years ago
parent
commit
cc7657d843
  1. 19
      lib/PayPro.js
  2. 23
      lib/browser/PayPro.js
  3. 4
      test/test.PayPro.js

19
lib/PayPro.js

@ -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 der = pki_data.toString('hex');
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, '')];
});
if (!Trusted[pem.replace(/\s+/g, '')]) {
if (!trusted) {
// throw new Error('Unstrusted certificate.');
}
@ -269,11 +268,8 @@ PayPro.prototype.verify = function() {
var verifier = crypto.createVerify('RSA-' + type);
verifier.update(buf);
pki_data = Array.isArray(pki_data)
? pki_data[0]
: pki_data;
var der = pki_data.toString('hex');
return [].concat(pki_data).every(function(cert) {
var der = cert.toString('hex');
var pem = KJUR.asn1.ASN1Util.getPEMStringFromHex(der, 'CERTIFICATE');
if (!Trusted[pem.replace(/\s+/g, '')]) {
@ -281,6 +277,7 @@ PayPro.prototype.verify = function() {
}
return verifier.verify(pem, sig);
});
} else if (pki_type === 'none') {
return true;
}

23
lib/browser/PayPro.js

@ -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 der = pki_data.toString('hex');
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, '')];
});
if (!Trusted[pem.replace(/\s+/g, '')]) {
if (!trusted) {
// throw new Error('Unstrusted certificate.');
}
@ -79,11 +78,8 @@ PayPro.verify = function() {
prov: 'cryptojs/jsrsa'
});
pki_data = pki_data && pki_data.unshift
? pki_data[0]
: pki_data;
var der = pki_data.toString('hex');
return [].concat(pki_data).every(function(cert) {
var der = cert.toString('hex');
var pem = KJUR.asn1.ASN1Util.getPEMStringFromHex(der, 'CERTIFICATE');
if (!Trusted[pem.replace(/\s+/g, '')]) {
@ -94,9 +90,8 @@ PayPro.verify = function() {
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;
}

4
test/test.PayPro.js

@ -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…
Cancel
Save