From a73699ba644125eb5f57ffe60ae7868cd107ebda Mon Sep 17 00:00:00 2001 From: Christopher Jeffrey Date: Fri, 29 Aug 2014 20:05:35 -0700 Subject: [PATCH] paypro: add PayPro.verifyCertChain. --- lib/PayPro.js | 32 ++++++++++++++++++-------------- lib/browser/PayPro.js | 32 ++++++++++++++++++-------------- 2 files changed, 36 insertions(+), 28 deletions(-) diff --git a/lib/PayPro.js b/lib/PayPro.js index eb0cd7abb..22894916d 100644 --- a/lib/PayPro.js +++ b/lib/PayPro.js @@ -107,7 +107,24 @@ PayPro.prototype.x509Verify = function(returnTrust) { return verified; } - var chainVerified = chain.every(function(cert, i) { + var chainVerified = PayPro.verifyCertChain(chain, type); + + if (returnTrust) { + return { + selfSigned: 0, // no + isChain: true, + verified: verified, + caTrusted: !!caName, + caName: caName || null, + chainVerified: chainVerified + }; + } + + return verified && chainVerified; +}; + +PayPro.verifyCertChain = function(chain, type) { + return chain.every(function(cert, i) { var der = cert.toString('hex'); var pem = PayPro.DERtoPEM(der, 'CERTIFICATE'); var name = RootCerts.getTrusted(pem); @@ -168,19 +185,6 @@ PayPro.prototype.x509Verify = function(returnTrust) { && issuerVerified && sigVerified; }); - - if (returnTrust) { - return { - selfSigned: 0, // no - isChain: true, - verified: verified, - caTrusted: !!caName, - caName: caName || null, - chainVerified: chainVerified - }; - } - - return verified && chainVerified; }; module.exports = PayPro; diff --git a/lib/browser/PayPro.js b/lib/browser/PayPro.js index 780f4ef90..44aa42416 100644 --- a/lib/browser/PayPro.js +++ b/lib/browser/PayPro.js @@ -122,7 +122,24 @@ PayPro.prototype.x509Verify = function(returnTrust) { return verified; } - var chainVerified = chain.every(function(cert, i) { + var chainVerified = PayPro.verifyCertChain(chain, type); + + if (returnTrust) { + return { + selfSigned: 0, // no + isChain: true, + verified: verified, + caTrusted: !!caName, + caName: caName || null, + chainVerified: chainVerified + }; + } + + return verified && chainVerified; +}; + +PayPro.verifyCertChain = function(chain, type) { + return chain.every(function(cert, i) { var der = cert.toString('hex'); // var pem = self._DERtoPEM(der, 'CERTIFICATE'); var pem = KJUR.asn1.ASN1Util.getPEMStringFromHex(der, 'CERTIFICATE'); @@ -200,19 +217,6 @@ PayPro.prototype.x509Verify = function(returnTrust) { && issuerVerified && sigVerified; }); - - if (returnTrust) { - return { - selfSigned: 0, // no - isChain: true, - verified: verified, - caTrusted: !!caName, - caName: caName || null, - chainVerified: chainVerified - }; - } - - return verified && chainVerified; }; module.exports = PayPro;