paypro: start implementing more rfc5280 definitions.

This commit is contained in:
Christopher Jeffrey 2014-08-25 12:38:16 -07:00
parent 83286113ff
commit 6be8ad1790
1 changed files with 105 additions and 0 deletions

View File

@ -274,6 +274,7 @@ PayPro.prototype.x509Verify = function() {
var rfc5280 = {};
var AuthorityKeyIdentifier =
rfc5280.AuthorityKeyIdentifier = asn1.define('AuthorityKeyIdentifier', function() {
this.seq().obj(
this.key('keyIdentifier').optional().octstr(),
@ -282,6 +283,110 @@ rfc5280.AuthorityKeyIdentifier = asn1.define('AuthorityKeyIdentifier', function(
);
});
var GeneralNames =
rfc5280.GeneralNames = asn1.define('GeneralNames', function() {
this.seq().obj(
this.key('generalNames').use(rfc5280.GeneralName)
);
});
var GeneralName =
rfc5280.GeneralName = asn1.define('GeneralName', function() {
this.choice({
otherName: this.use(OtherName),
rfc822Name: this.use(IA5String),
dNSName: this.use(IA5String),
x400Address: this.use(ORAddress),
directoryName: this.use(rfc3280.Name),
ediPartyName: this.use(EDIPartyName),
uniformResourceIdentifier: this.use(IA5String),
iPAddress: this.octstr(),
registeredID: this.objid()
});
});
var OtherName =
rfc5280.OtherName = asn1.define('OtherName', function() {
this.seq().obj(
this.key('typeId').objid(),
this.key('value')
);
});
// https://www.google.com/search?q=IA5String
// https://en.wikipedia.org/wiki/IA5STRING
// http://msdn.microsoft.com/en-us/library/windows/desktop/bb540805(v=vs.85).aspx
var IA5String =
rfc5280.IA5String = asn1.define('IA5String', function() {
this.octstr(); // unsure
});
var ORAddress =
rfc5280.ORAddress = asn1.define('ORAddress', function() {
this.seq().obj(
this.key('builtInStandardAttributes').use(BuiltInStandardAttributes),
this.key('builtInDomainDefinedAttributes').optional().use(BuiltInDomainDefinedAttributes),
this.key('extensionAttributes').optional().use(ExtensionAttributes)
);
});
var BuiltInStandardAttributes =
rfc5280.BuiltInStandardAttributes = asn1.define('BuiltInStandardAttributes', function() {
;
});
var BuiltInDomainDefinedAttributes =
rfc5280.BuiltInDomainDefinedAttributes = asn1.define('BuiltInDomainDefinedAttributes', function() {
;
});
var ExtensionAttributes =
rfc5280.ExtensionAttributes = asn1.define('ExtensionAttributes', function() {
;
});
var EDIPartyName = rfc5280.EDIPartyName = asn1.define('EDIPartyName', function() {
this.seq().obj(
this.key('nameAssigner').optional().use(DirectoryString),
this.key('partyName').use(DirectoryString)
);
});
var DirectoryString = rfc5280.DirectoryString = asn1.define('DirectoryString', function() {
this.choice({
teletexString: this.use(TeletexString),
printableString: this.use(PrintableString),
universalString: this.use(UniversalString),
utf8String: this.use(UTF8String),
bmpString: this.use(BMPString)
});
});
var TeletexString =
rfc5280.TeletexString = asn1.define('TeletexString', function() {
;
});
var PrintableString =
rfc5280.PrintableString = asn1.define('PrintableString', function() {
;
});
var UniversalString =
rfc5280.UniversalString = asn1.define('UniversalString', function() {
;
});
var UTF8String =
rfc5280.UTF8String = asn1.define('UTF8String', function() {
;
});
var BMPString =
rfc5280.BMPString = asn1.define('BMPString', function() {
;
});
// rfc5280.SubjectKeyIdentifier = asn1.define('SubjectKeyIdentifier', function() {
// this.seq().obj(
// this.key('keyIdentifier').optional().octstr(),