From f98ebe69d8df073a4615f6888c1ba098eb0c2322 Mon Sep 17 00:00:00 2001 From: Christopher Jeffrey Date: Thu, 28 Aug 2014 17:37:06 -0700 Subject: [PATCH] paypro: move validity and issuer validation into common. --- lib/PayPro.js | 28 ++-------------------------- lib/browser/PayPro.js | 28 ++-------------------------- lib/common/PayPro.js | 36 ++++++++++++++++++++++++++++++++++++ 3 files changed, 40 insertions(+), 52 deletions(-) diff --git a/lib/PayPro.js b/lib/PayPro.js index 9c51a44..471992f 100644 --- a/lib/PayPro.js +++ b/lib/PayPro.js @@ -101,36 +101,12 @@ PayPro.prototype.x509Verify = function() { // // Check Validity of Certificates // - var validityVerified = true; - var now = Date.now(); - var cBefore = c.tbsCertificate.validity.notBefore.value; - var cAfter = c.tbsCertificate.validity.notAfter.value; - var nBefore = nc.tbsCertificate.validity.notBefore.value; - var nAfter = nc.tbsCertificate.validity.notAfter.value; - if (cBefore > now || cAfter < now || nBefore > now || nAfter < now) { - validityVerified = false; - } + var validityVerified = PayPro.validateCertTime(c, nc); // // Check the Issuer matches the Subject of the next certificate: // - var issuer = c.tbsCertificate.issuer; - var subject = nc.tbsCertificate.subject; - var issuerVerified = issuer.type === subject.type && issuer.value.every(function(issuerArray, i) { - var subjectArray = subject.value[i]; - return issuerArray.every(function(issuerObject, i) { - var subjectObject = subjectArray[i]; - - var issuerObjectType = issuerObject.type.join('.'); - var subjectObjectType = subjectObject.type.join('.'); - - var issuerObjectValue = issuerObject.value.toString('hex'); - var subjectObjectValue = subjectObject.value.toString('hex'); - - return issuerObjectType === subjectObjectType - && issuerObjectValue === subjectObjectValue; - }); - }); + var issuerVerified = PayPro.validateCertIssuer(c, nc); // // Verify current Certificate signature diff --git a/lib/browser/PayPro.js b/lib/browser/PayPro.js index 65b1a0b..42f3016 100644 --- a/lib/browser/PayPro.js +++ b/lib/browser/PayPro.js @@ -127,36 +127,12 @@ PayPro.prototype.x509Verify = function(key) { // // Check Validity of Certificates // - var validityVerified = true; - var now = Date.now(); - var cBefore = c.tbsCertificate.validity.notBefore.value; - var cAfter = c.tbsCertificate.validity.notAfter.value; - var nBefore = nc.tbsCertificate.validity.notBefore.value; - var nAfter = nc.tbsCertificate.validity.notAfter.value; - if (cBefore > now || cAfter < now || nBefore > now || nAfter < now) { - validityVerified = false; - } + var validityVerified = PayPro.validateCertTime(c, nc); // // Check the Issuer matches the Subject of the next certificate: // - var issuer = c.tbsCertificate.issuer; - var subject = nc.tbsCertificate.subject; - var issuerVerified = issuer.type === subject.type && issuer.value.every(function(issuerArray, i) { - var subjectArray = subject.value[i]; - return issuerArray.every(function(issuerObject, i) { - var subjectObject = subjectArray[i]; - - var issuerObjectType = issuerObject.type.join('.'); - var subjectObjectType = subjectObject.type.join('.'); - - var issuerObjectValue = issuerObject.value.toString('hex'); - var subjectObjectValue = subjectObject.value.toString('hex'); - - return issuerObjectType === subjectObjectType - && issuerObjectValue === subjectObjectValue; - }); - }); + var issuerVerified = PayPro.validateCertIssuer(c, nc); // // Verify current Certificate signature diff --git a/lib/common/PayPro.js b/lib/common/PayPro.js index b360f1c..3813bad 100644 --- a/lib/common/PayPro.js +++ b/lib/common/PayPro.js @@ -93,6 +93,42 @@ PayPro.getTBSCertificate = function(data) { return data.slice(start, end); }; +// Check Validity of Certificates +PayPro.validateCertTime = function(c, nc) { + var validityVerified = true; + var now = Date.now(); + var cBefore = c.tbsCertificate.validity.notBefore.value; + var cAfter = c.tbsCertificate.validity.notAfter.value; + var nBefore = nc.tbsCertificate.validity.notBefore.value; + var nAfter = nc.tbsCertificate.validity.notAfter.value; + if (cBefore > now || cAfter < now || nBefore > now || nAfter < now) { + validityVerified = false; + } + return validityVerified; +}; + +// Check the Issuer matches the Subject of the next certificate: +PayPro.validateCertIssuer = function(c, nc) { + var issuer = c.tbsCertificate.issuer; + var subject = nc.tbsCertificate.subject; + var issuerVerified = issuer.type === subject.type && issuer.value.every(function(issuerArray, i) { + var subjectArray = subject.value[i]; + return issuerArray.every(function(issuerObject, i) { + var subjectObject = subjectArray[i]; + + var issuerObjectType = issuerObject.type.join('.'); + var subjectObjectType = subjectObject.type.join('.'); + + var issuerObjectValue = issuerObject.value.toString('hex'); + var subjectObjectValue = subjectObject.value.toString('hex'); + + return issuerObjectType === subjectObjectType + && issuerObjectValue === subjectObjectValue; + }); + }); + return issuerVerified; +}; + PayPro.RootCerts = RootCerts; PayPro.proto = {};