Merge pull request #446 from chjj/paypro

PayPro: Fix payment protocol with regards to pki_data DER certs
This commit is contained in:
Ryan X. Charles 2014-07-23 17:30:16 -04:00
commit 1936bfd374
3 changed files with 46 additions and 6 deletions

View File

@ -11,6 +11,8 @@ PayPro.prototype.x509Sign = function(key) {
var crypto = require('crypto');
var pki_type = this.get('pki_type');
var pki_data = this.get('pki_data'); // contains one or more x509 certs
pki_data = PayPro.X509Certificates.decode(pki_data);
pki_data = pki_data.certificate;
var details = this.get('serialized_payment_details');
var type = pki_type.split('+')[1].toUpperCase();
@ -38,6 +40,8 @@ PayPro.prototype.x509Verify = function() {
var pki_type = this.get('pki_type');
var sig = this.get('signature');
var pki_data = this.get('pki_data');
pki_data = PayPro.X509Certificates.decode(pki_data);
pki_data = pki_data.certificate;
var details = this.get('serialized_payment_details');
var buf = this.serializeForSig();
var type = pki_type.split('+')[1].toUpperCase();

View File

@ -13,6 +13,8 @@ var RootCerts = require('../common/RootCerts');
PayPro.prototype.x509Sign = function(key) {
var pki_type = this.get('pki_type');
var pki_data = this.get('pki_data'); // contains one or more x509 certs
pki_data = PayPro.X509Certificates.decode(pki_data);
pki_data = pki_data.certificate;
var type = pki_type.split('+')[1].toUpperCase();
var buf = this.serializeForSig();
@ -51,6 +53,8 @@ PayPro.prototype.x509Verify = function(key) {
var sig = this.get('signature');
var pki_type = this.get('pki_type');
var pki_data = this.get('pki_data');
pki_data = PayPro.X509Certificates.decode(pki_data);
pki_data = pki_data.certificate;
var buf = this.serializeForSig();
var type = pki_type.split('+')[1].toUpperCase();

View File

@ -353,7 +353,13 @@ describe('PayPro', function() {
paypro.makePaymentRequest();
paypro.set('serialized_payment_details', pdbuf);
paypro.set('pki_type', 'x509+sha256');
paypro.set('pki_data', x509.der);
var cr = new PayPro();
cr = cr.makeX509Certificates();
cr.set('certificate', [x509.der]);
paypro.set('pki_data', cr.serialize()); // contains one or more x509 certs
paypro.sign(x509.priv);
x509.sig1 = paypro.get('signature');
x509.sig1.length.should.be.greaterThan(0);
@ -388,7 +394,13 @@ describe('PayPro', function() {
paypro.set('serialized_payment_details', pdbuf);
paypro.set('pki_type', 'x509+sha256');
paypro.set('signature', x509.sig1); // sig buffer
paypro.set('pki_data', x509.der); // contains one or more x509 certs
var cr = new PayPro();
cr = cr.makeX509Certificates();
cr.set('certificate', [x509.der]);
paypro.set('pki_data', cr.serialize()); // contains one or more x509 certs
var verify = paypro.verify();
verify.should.equal(true);
});
@ -446,7 +458,12 @@ describe('PayPro', function() {
paypro.set('serialized_payment_details', pdbuf);
paypro.set('pki_type', 'x509+sha256');
paypro.set('pki_data', x509.der);
var cr = new PayPro();
cr = cr.makeX509Certificates();
cr.set('certificate', [x509.der]);
paypro.set('pki_data', cr.serialize()); // contains one or more x509 certs
var sig = paypro.x509Sign(x509.priv);
paypro.set('signature', sig);
@ -470,7 +487,12 @@ describe('PayPro', function() {
paypro.set('pki_type', 'x509+sha256');
paypro.set('signature', x509.sig2); // sig buffer
paypro.set('pki_data', x509.der); // contains one or more x509 certs
var cr = new PayPro();
cr = cr.makeX509Certificates();
cr.set('certificate', [x509.der]);
paypro.set('pki_data', cr.serialize()); // contains one or more x509 certs
var verify = paypro.x509Verify();
verify.should.equal(true);
@ -489,7 +511,12 @@ describe('PayPro', function() {
paypro.set('serialized_payment_details', pdbuf);
paypro.set('pki_type', 'x509+sha1');
paypro.set('pki_data', x509.der);
var cr = new PayPro();
cr = cr.makeX509Certificates();
cr.set('certificate', [x509.der]);
paypro.set('pki_data', cr.serialize()); // contains one or more x509 certs
var sig = paypro.x509Sign(x509.priv);
paypro.set('signature', sig);
@ -513,7 +540,12 @@ describe('PayPro', function() {
paypro.set('pki_type', 'x509+sha1');
paypro.set('signature', x509.sig3); // sig buffer
paypro.set('pki_data', x509.der); // contains one or more x509 certs
var cr = new PayPro();
cr = cr.makeX509Certificates();
cr.set('certificate', [x509.der]);
paypro.set('pki_data', cr.serialize()); // contains one or more x509 certs
var verify = paypro.x509Verify();
verify.should.equal(true);