diff options
author | Ilya Etingof <etingof@gmail.com> | 2017-09-13 01:09:14 +0200 |
---|---|---|
committer | Ilya Etingof <etingof@gmail.com> | 2017-09-13 01:09:14 +0200 |
commit | 49d39b1e21c7d0817b4ea3e69ffb70af97fa2da2 (patch) | |
tree | f1c30b8c6fbfc167d0e9b47d35b2bc06c03a23dc /pyasn1_modules/rfc5280.py | |
parent | c513c62dd72b3afbe4fc1e7eb4856f0f9ac76954 (diff) | |
download | pyasn1-modules-49d39b1e21c7d0817b4ea3e69ffb70af97fa2da2.tar.gz |
WIP: open types support
Diffstat (limited to 'pyasn1_modules/rfc5280.py')
-rw-r--r-- | pyasn1_modules/rfc5280.py | 105 |
1 files changed, 62 insertions, 43 deletions
diff --git a/pyasn1_modules/rfc5280.py b/pyasn1_modules/rfc5280.py index 7d3aa69..c750f28 100644 --- a/pyasn1_modules/rfc5280.py +++ b/pyasn1_modules/rfc5280.py @@ -16,6 +16,7 @@ from pyasn1.type import univ from pyasn1.type import char from pyasn1.type import namedtype from pyasn1.type import namedval +from pyasn1.type import opentype from pyasn1.type import tag from pyasn1.type import constraint from pyasn1.type import useful @@ -279,13 +280,10 @@ class CertificateSerialNumber(univ.Integer): class AlgorithmIdentifier(univ.Sequence): - pass - - -AlgorithmIdentifier.componentType = namedtype.NamedTypes( - namedtype.NamedType('algorithm', univ.ObjectIdentifier()), - namedtype.OptionalNamedType('parameters', univ.Any()) -) + componentType = namedtype.NamedTypes( + namedtype.NamedType('algorithm', univ.ObjectIdentifier()), + namedtype.OptionalNamedType('parameters', univ.Any()) + ) class Time(univ.Choice): @@ -302,14 +300,17 @@ class AttributeValue(univ.Any): pass -class AttributeTypeAndValue(univ.Sequence): - pass +certificateAttributesMap = {} -AttributeTypeAndValue.componentType = namedtype.NamedTypes( - namedtype.NamedType('type', AttributeType()), - namedtype.NamedType('value', AttributeValue()) -) +class AttributeTypeAndValue(univ.Sequence): + componentType = namedtype.NamedTypes( + namedtype.NamedType('type', AttributeType()), + namedtype.NamedType( + 'value', AttributeValue(), + openType=opentype.OpenType('type', certificateAttributesMap) + ) + ) class RelativeDistinguishedName(univ.SetOf): @@ -379,18 +380,21 @@ class PhysicalDeliveryOfficeName(PDSParameter): ub_extension_attributes = univ.Integer(256) +certificateExtensionsMap = { -class ExtensionAttribute(univ.Sequence): - pass +} -ExtensionAttribute.componentType = namedtype.NamedTypes( - namedtype.NamedType('extension-attribute-type', univ.Integer().subtype( - subtypeSpec=constraint.ValueRangeConstraint(0, ub_extension_attributes)).subtype( - implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))), - namedtype.NamedType('extension-attribute-value', - univ.Any().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))) -) +class ExtensionAttribute(univ.Sequence): + componentType = namedtype.NamedTypes( + namedtype.NamedType( + 'extension-attribute-type', + univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(0, ub_extension_attributes)).subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))), + namedtype.NamedType( + 'extension-attribute-value', + univ.Any().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)), + openType=opentype.OpenType('type', certificateExtensionsMap)) + ) id_qt = _buildOid(id_pkix, 2) @@ -737,13 +741,12 @@ X520SerialNumber.subtypeSpec = constraint.ValueSizeConstraint(1, ub_serial_numbe class Attribute(univ.Sequence): - pass - - -Attribute.componentType = namedtype.NamedTypes( - namedtype.NamedType('type', AttributeType()), - namedtype.NamedType('values', univ.SetOf(componentType=AttributeValue())) -) + componentType = namedtype.NamedTypes( + namedtype.NamedType('type', AttributeType()), + namedtype.NamedType('values', + univ.SetOf(componentType=AttributeValue()), + openType=opentype.OpenType('type', certificateAttributesMap)) + ) ub_common_name = univ.Integer(64) @@ -1066,14 +1069,20 @@ PrivateKeyUsagePeriod.componentType = namedtype.NamedTypes( ) -class AnotherName(univ.Sequence): - pass +anotherNameMap = { +} -AnotherName.componentType = namedtype.NamedTypes( - namedtype.NamedType('type-id', univ.ObjectIdentifier()), - namedtype.NamedType('value', univ.Any().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))) -) + +class AnotherName(univ.Sequence): + componentType = namedtype.NamedTypes( + namedtype.NamedType('type-id', univ.ObjectIdentifier()), + namedtype.NamedType( + 'value', + univ.Any().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)), + openType=opentype.OpenType('type-id', anotherNameMap) + ) + ) class EDIPartyName(univ.Sequence): @@ -1311,14 +1320,19 @@ class PolicyQualifierId(univ.ObjectIdentifier): pass -class PolicyQualifierInfo(univ.Sequence): - pass +policyQualifierInfoMap = { +} -PolicyQualifierInfo.componentType = namedtype.NamedTypes( - namedtype.NamedType('policyQualifierId', PolicyQualifierId()), - namedtype.NamedType('qualifier', univ.Any()) -) + +class PolicyQualifierInfo(univ.Sequence): + componentType = namedtype.NamedTypes( + namedtype.NamedType('policyQualifierId', PolicyQualifierId()), + namedtype.NamedType( + 'qualifier', univ.Any(), + openType=opentype.OpenType('policyQualifierId', policyQualifierInfoMap) + ) + ) class CertPolicyId(univ.ObjectIdentifier): @@ -1549,7 +1563,7 @@ id_ce_inhibitAnyPolicy = _buildOid(id_ce, 54) # map of AttributeType -> AttributeValue -certificateAttributesMap = { +_certificateAttributesMapUpdate = { id_at_name: X520name(), id_at_surname: X520name(), id_at_givenName: X520name(), @@ -1569,9 +1583,12 @@ certificateAttributesMap = { id_emailAddress: EmailAddress(), } +certificateAttributesMap.update(_certificateAttributesMapUpdate) + + # map of Certificate Extension OIDs to Extensions -certificateExtensionsMap = { +_certificateExtensionsMap = { id_ce_authorityKeyIdentifier: AuthorityKeyIdentifier(), id_ce_subjectKeyIdentifier: SubjectKeyIdentifier(), id_ce_keyUsage: KeyUsage(), @@ -1595,3 +1612,5 @@ certificateExtensionsMap = { id_ce_invalidityDate: useful.GeneralizedTime(), id_ce_certificateIssuer: GeneralNames(), } + +certificateExtensionsMap.update(_certificateExtensionsMap) |