paypro: more debugging. fixes.
This commit is contained in:
parent
bb3da9d6dc
commit
799388db8e
@ -169,8 +169,8 @@ PayPro.prototype.x509Verify = function() {
|
|||||||
unknown: [],
|
unknown: [],
|
||||||
};
|
};
|
||||||
|
|
||||||
for (var i = 0; i < nc.tbsCertificate.extensions.length; i++) {
|
for (var i = 0; i < c.tbsCertificate.extensions.length; i++) {
|
||||||
ext = nc.tbsCertificate.extensions[i];
|
ext = c.tbsCertificate.extensions[i];
|
||||||
eid = ext.extnID;
|
eid = ext.extnID;
|
||||||
|
|
||||||
// id-ce extensions - Standard Extensions
|
// id-ce extensions - Standard Extensions
|
||||||
@ -178,26 +178,30 @@ PayPro.prototype.x509Verify = function() {
|
|||||||
switch (eid[3]) {
|
switch (eid[3]) {
|
||||||
// Authority Key Identifier
|
// Authority Key Identifier
|
||||||
case 35:
|
case 35:
|
||||||
|
print('Authority Key Identifier:');
|
||||||
|
print(ext.extnValue);
|
||||||
extensions.authorityKeyIdentifier = ext.extnValue;
|
extensions.authorityKeyIdentifier = ext.extnValue;
|
||||||
// parse
|
// parse
|
||||||
extensions.authorityKeyIdentifier = rfc5280.AuthorityKeyIdentifier.decode(
|
extensions.authorityKeyIdentifier = rfc5280.AuthorityKeyIdentifier.decode(
|
||||||
extensions.authorityKeyIdentifier,
|
extensions.authorityKeyIdentifier,
|
||||||
'der');
|
'der', { partial: false });
|
||||||
print('Authority Key Identifier:');
|
|
||||||
print(extensions.authorityKeyIdentifier);
|
print(extensions.authorityKeyIdentifier);
|
||||||
break;
|
break;
|
||||||
// Subject Key Identifier
|
// Subject Key Identifier
|
||||||
case 14:
|
case 14: // VERY IMPORTANT, especially is cA (basic constraints) is true (it is)
|
||||||
|
print('Subject Key Identifier:');
|
||||||
|
print(ext.extnValue);
|
||||||
extensions.subjectKeyIdentifier = ext.extnValue;
|
extensions.subjectKeyIdentifier = ext.extnValue;
|
||||||
// parse
|
// parse
|
||||||
extensions.subjectKeyIdentifier = rfc5280.SubjectKeyIdentifier.decode(
|
extensions.subjectKeyIdentifier = rfc5280.SubjectKeyIdentifier.decode(
|
||||||
extensions.subjectKeyIdentifier,
|
extensions.subjectKeyIdentifier,
|
||||||
'der');
|
'der', { partial: false });
|
||||||
print('Subject Key Identifier:');
|
|
||||||
print(extensions.subjectKeyIdentifier);
|
print(extensions.subjectKeyIdentifier);
|
||||||
break;
|
break;
|
||||||
// Key Usage
|
// Key Usage
|
||||||
case 15:
|
case 15:
|
||||||
|
print('Key Usage:');
|
||||||
|
print(ext.extnValue);
|
||||||
extensions.keyUsage = ext.extnValue;
|
extensions.keyUsage = ext.extnValue;
|
||||||
// parse
|
// parse
|
||||||
data = rfc5280.KeyUsage.decode(
|
data = rfc5280.KeyUsage.decode(
|
||||||
@ -216,127 +220,138 @@ PayPro.prototype.x509Verify = function() {
|
|||||||
encipherOnly: !!((data >> 7) & 1),
|
encipherOnly: !!((data >> 7) & 1),
|
||||||
decipherOnly: !!((data >> 8) & 1)
|
decipherOnly: !!((data >> 8) & 1)
|
||||||
};
|
};
|
||||||
print('Key Usage:');
|
|
||||||
print(extensions.keyUsage);
|
print(extensions.keyUsage);
|
||||||
break;
|
break;
|
||||||
// Certificate Policies
|
// Certificate Policies
|
||||||
case 32:
|
case 32:
|
||||||
|
print('Certificate Policies:');
|
||||||
|
print(ext.extnValue);
|
||||||
extensions.certificatePolicies = ext.extnValue;
|
extensions.certificatePolicies = ext.extnValue;
|
||||||
// parse
|
// parse
|
||||||
extensions.certificatePolicies = rfc5280.CertificatePolicies.decode(
|
extensions.certificatePolicies = rfc5280.CertificatePolicies.decode(
|
||||||
extensions.certificatePolicies,
|
extensions.certificatePolicies,
|
||||||
'der');
|
'der', { partial: false });
|
||||||
print('Certificate Policies:');
|
|
||||||
print(extensions.certificatePolicies);
|
print(extensions.certificatePolicies);
|
||||||
break;
|
break;
|
||||||
// Policy Mappings
|
// Policy Mappings
|
||||||
case 33:
|
case 33:
|
||||||
|
print('Policy Mappings:');
|
||||||
|
print(ext.extnValue);
|
||||||
extensions.policyMappings = ext.extnValue;
|
extensions.policyMappings = ext.extnValue;
|
||||||
// parse
|
// parse
|
||||||
extensions.policyMappings = rfc5280.PolicyMappings.decode(
|
extensions.policyMappings = rfc5280.PolicyMappings.decode(
|
||||||
extensions.policyMappings,
|
extensions.policyMappings,
|
||||||
'der');
|
'der', { partial: false });
|
||||||
print('Policy Mappings:');
|
|
||||||
print(extensions.policyMappings);
|
print(extensions.policyMappings);
|
||||||
break;
|
break;
|
||||||
// Subject Alternative Name
|
// Subject Alternative Name
|
||||||
case 17:
|
case 17:
|
||||||
|
print('Subject Alternative Name:');
|
||||||
|
print(ext.extnValue);
|
||||||
extensions.subjectAlternativeName = ext.extnValue;
|
extensions.subjectAlternativeName = ext.extnValue;
|
||||||
// parse
|
// parse
|
||||||
extensions.subjectAlternativeName = rfc5280.SubjectAlternativeName.decode(
|
extensions.subjectAlternativeName = rfc5280.SubjectAlternativeName.decode(
|
||||||
extensions.subjectAlternativeName,
|
extensions.subjectAlternativeName,
|
||||||
'der');
|
'der', { partial: false });
|
||||||
print('Subject Alternative Name:');
|
|
||||||
print(extensions.subjectAlternativeName);
|
print(extensions.subjectAlternativeName);
|
||||||
break;
|
break;
|
||||||
// Issuer Alternative Name
|
// Issuer Alternative Name
|
||||||
case 18:
|
case 18:
|
||||||
|
print('Issuer Alternative Name:');
|
||||||
|
print(ext.extnValue);
|
||||||
extensions.issuerAlternativeName = ext.extnValue;
|
extensions.issuerAlternativeName = ext.extnValue;
|
||||||
// parse
|
// parse
|
||||||
extensions.issuerAlternativeName = rfc5280.IssuerAlternativeName.decode(
|
extensions.issuerAlternativeName = rfc5280.IssuerAlternativeName.decode(
|
||||||
extensions.issuerAlternativeName,
|
extensions.issuerAlternativeName,
|
||||||
'der');
|
'der', { partial: false });
|
||||||
print('Issuer Alternative Name:');
|
|
||||||
print(extensions.issuerAlternativeName);
|
print(extensions.issuerAlternativeName);
|
||||||
break;
|
break;
|
||||||
// Subject Directory Attributes
|
// Subject Directory Attributes
|
||||||
case 9:
|
case 9:
|
||||||
|
print('Subject Directory Attributes:');
|
||||||
|
print(ext.extnValue);
|
||||||
extensions.subjectDirectoryAttributes = ext.extnValue;
|
extensions.subjectDirectoryAttributes = ext.extnValue;
|
||||||
// parse
|
// parse
|
||||||
extensions.subjectDirectoryAttributes = rfc5280.SubjectDirectoryAttributes.decode(
|
extensions.subjectDirectoryAttributes = rfc5280.SubjectDirectoryAttributes.decode(
|
||||||
extensions.subjectDirectoryAttributes,
|
extensions.subjectDirectoryAttributes,
|
||||||
'der');
|
'der', { partial: false });
|
||||||
print('Subject Directory Attributes:');
|
|
||||||
print(extensions.subjectDirectoryAttributes);
|
print(extensions.subjectDirectoryAttributes);
|
||||||
break;
|
break;
|
||||||
// Basic Constraints
|
// Basic Constraints
|
||||||
case 19:
|
case 19:
|
||||||
|
print('Basic Constraints:');
|
||||||
|
print(ext.extnValue);
|
||||||
extensions.basicConstraints = ext.extnValue;
|
extensions.basicConstraints = ext.extnValue;
|
||||||
// parse
|
// parse
|
||||||
extensions.basicConstraints = rfc5280.BasicConstraints.decode(
|
extensions.basicConstraints = rfc5280.BasicConstraints.decode(
|
||||||
extensions.basicConstraints,
|
extensions.basicConstraints,
|
||||||
'der');
|
'der', { partial: false });
|
||||||
print('Basic Constraints:');
|
|
||||||
print(extensions.basicConstraints);
|
print(extensions.basicConstraints);
|
||||||
break;
|
break;
|
||||||
// Name Constraints
|
// Name Constraints
|
||||||
case 30:
|
case 30:
|
||||||
|
print('Name Constraints:');
|
||||||
|
print(ext.extnValue);
|
||||||
extensions.nameConstraints = ext.extnValue;
|
extensions.nameConstraints = ext.extnValue;
|
||||||
// parse
|
// parse
|
||||||
extensions.nameConstraints = rfc5280.NameConstraints.decode(
|
extensions.nameConstraints = rfc5280.NameConstraints.decode(
|
||||||
extensions.nameConstraints,
|
extensions.nameConstraints,
|
||||||
'der');
|
'der', { partial: false });
|
||||||
print('Name Constraints:');
|
|
||||||
print(extensions.nameConstraints);
|
print(extensions.nameConstraints);
|
||||||
break;
|
break;
|
||||||
// Policy Constraints
|
// Policy Constraints
|
||||||
case 36:
|
case 36:
|
||||||
|
print('Policy Constraints:');
|
||||||
|
print(ext.extnValue);
|
||||||
extensions.policyConstraints = ext.extnValue;
|
extensions.policyConstraints = ext.extnValue;
|
||||||
// parse
|
// parse
|
||||||
extensions.policyConstraints = rfc5280.PolicyConstraints.decode(
|
extensions.policyConstraints = rfc5280.PolicyConstraints.decode(
|
||||||
extensions.policyConstraints,
|
extensions.policyConstraints,
|
||||||
'der');
|
'der', { partial: false });
|
||||||
print('Policy Constraints:');
|
|
||||||
print(extensions.policyConstraints);
|
print(extensions.policyConstraints);
|
||||||
break;
|
break;
|
||||||
// Extended Key Usage
|
// Extended Key Usage
|
||||||
case 37:
|
case 37:
|
||||||
|
print('Extended Key Usage');
|
||||||
|
print(ext.extnValue);
|
||||||
extensions.extendedKeyUsage = ext.extnValue;
|
extensions.extendedKeyUsage = ext.extnValue;
|
||||||
// parse
|
// parse
|
||||||
extensions.extendedKeyUsage = rfc5280.ExtendedKeyUsage.decode(
|
extensions.extendedKeyUsage = rfc5280.ExtendedKeyUsage.decode(
|
||||||
extensions.extendedKeyUsage,
|
extensions.extendedKeyUsage,
|
||||||
'der');
|
'der', { partial: false });
|
||||||
print('Extended Key Usage');
|
|
||||||
print(extensions.extendedKeyUsage);
|
print(extensions.extendedKeyUsage);
|
||||||
break;
|
break;
|
||||||
// CRL Distribution Points
|
// CRL Distribution Points
|
||||||
case 31:
|
case 31:
|
||||||
|
print('CRL Distribution Points:');
|
||||||
|
print(ext.extnValue);
|
||||||
extensions.CRLDistributionPoints = ext.extnValue;
|
extensions.CRLDistributionPoints = ext.extnValue;
|
||||||
// parse
|
// parse
|
||||||
extensions.CRLDistributionPoints = rfc5280.CRLDistributionPoints.decode(
|
extensions.CRLDistributionPoints = rfc5280.CRLDistributionPoints.decode(
|
||||||
extensions.CRLDistributionPoints,
|
extensions.CRLDistributionPoints,
|
||||||
'der');
|
'der', { partial: false });
|
||||||
print('CRL Distribution Points:');
|
|
||||||
print(extensions.CRLDistributionPoints);
|
print(extensions.CRLDistributionPoints);
|
||||||
break;
|
break;
|
||||||
// Inhibit anyPolicy
|
// Inhibit anyPolicy
|
||||||
case 54:
|
case 54:
|
||||||
|
print('Inhibit Any Policy:');
|
||||||
|
print(ext.extnValue);
|
||||||
extensions.inhibitAnyPolicy = ext.extnValue;
|
extensions.inhibitAnyPolicy = ext.extnValue;
|
||||||
// parse
|
// parse
|
||||||
extensions.inhibitAnyPolicy = rfc5280.InhibitAnyPolicy.decode(
|
extensions.inhibitAnyPolicy = rfc5280.InhibitAnyPolicy.decode(
|
||||||
extensions.inhibitAnyPolicy,
|
extensions.inhibitAnyPolicy,
|
||||||
'der');
|
'der', { partial: false });
|
||||||
print('Inhibit Any Policy:');
|
|
||||||
print(extensions.inhibitAnyPolicy);
|
print(extensions.inhibitAnyPolicy);
|
||||||
break;
|
break;
|
||||||
// Freshest CRL
|
// Freshest CRL
|
||||||
case 46:
|
case 46:
|
||||||
|
print('Freshest CRL:');
|
||||||
|
print(ext.extnValue);
|
||||||
extensions.freshestCRL = ext.extnValue;
|
extensions.freshestCRL = ext.extnValue;
|
||||||
// parse
|
// parse
|
||||||
extensions.freshestCRL = rfc5280.FreshestCRL.decode(
|
extensions.freshestCRL = rfc5280.FreshestCRL.decode(
|
||||||
extensions.freshestCRL,
|
extensions.freshestCRL,
|
||||||
'der');
|
'der', { partial: false });
|
||||||
print('Freshest CRL:');
|
|
||||||
print(extensions.freshestCRL);
|
print(extensions.freshestCRL);
|
||||||
break;
|
break;
|
||||||
// Unknown Extension (not documented anywhere, probably non-standard)
|
// Unknown Extension (not documented anywhere, probably non-standard)
|
||||||
@ -361,23 +376,25 @@ PayPro.prototype.x509Verify = function() {
|
|||||||
// Authority Information Access
|
// Authority Information Access
|
||||||
// id-pe:
|
// id-pe:
|
||||||
case 1:
|
case 1:
|
||||||
|
print('Authority Information Access:');
|
||||||
|
print(ext.extnValue);
|
||||||
extensions.authorityInformationAccess = ext.extnValue;
|
extensions.authorityInformationAccess = ext.extnValue;
|
||||||
// parse
|
// parse
|
||||||
extensions.authorityInformationAccess = rfc5280.AuthorityInformationAccess.decode(
|
extensions.authorityInformationAccess = rfc5280.AuthorityInformationAccess.decode(
|
||||||
extensions.authorityInformationAccess,
|
extensions.authorityInformationAccess,
|
||||||
'der');
|
'der');
|
||||||
print('Authority Information Access:');
|
|
||||||
print(extensions.freshestCRL);
|
print(extensions.freshestCRL);
|
||||||
break;
|
break;
|
||||||
// Subject Information Access
|
// Subject Information Access
|
||||||
// id-pe:
|
// id-pe:
|
||||||
case 11:
|
case 11:
|
||||||
|
print('Subject Information Access:');
|
||||||
|
print(ext.extnValue);
|
||||||
extensions.subjectInformationAccess = ext.extnValue;
|
extensions.subjectInformationAccess = ext.extnValue;
|
||||||
// parse
|
// parse
|
||||||
extensions.subjectInformationAccess = rfc5280.SubjectInformationAccess.decode(
|
extensions.subjectInformationAccess = rfc5280.SubjectInformationAccess.decode(
|
||||||
extensions.subjectInformationAccess,
|
extensions.subjectInformationAccess,
|
||||||
'der');
|
'der');
|
||||||
print('Subject Information Access:');
|
|
||||||
print(extensions.subjectInformationAccess);
|
print(extensions.subjectInformationAccess);
|
||||||
break;
|
break;
|
||||||
// Unknown Extension (not documented anywhere, probably non-standard)
|
// Unknown Extension (not documented anywhere, probably non-standard)
|
||||||
@ -502,7 +519,7 @@ var OtherName =
|
|||||||
rfc5280.OtherName = asn1.define('OtherName', function() {
|
rfc5280.OtherName = asn1.define('OtherName', function() {
|
||||||
this.seq().obj(
|
this.seq().obj(
|
||||||
this.key('typeId').objid(),
|
this.key('typeId').objid(),
|
||||||
this.key('value')
|
this.key('value').explicit(0).any()
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -889,8 +906,7 @@ var Attribute = rfc5280.AttributeTypeAndValue = AttributeTypeAndValue;
|
|||||||
var BasicConstraints =
|
var BasicConstraints =
|
||||||
rfc5280.BasicConstraints = asn1.define('BasicConstraints', function() {
|
rfc5280.BasicConstraints = asn1.define('BasicConstraints', function() {
|
||||||
this.seq().obj(
|
this.seq().obj(
|
||||||
// this.key('cA').default(false).bool(),
|
this.key('cA').bool().def(false),
|
||||||
this.key('cA').bool(),
|
|
||||||
this.key('pathLenConstraint').optional().int()
|
this.key('pathLenConstraint').optional().int()
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user