aboutsummaryrefslogtreecommitdiff
path: root/pyasn1_modules/rfc5280.py
diff options
context:
space:
mode:
authorIlya Etingof <etingof@gmail.com>2017-09-13 01:09:14 +0200
committerIlya Etingof <etingof@gmail.com>2017-09-13 01:09:14 +0200
commit49d39b1e21c7d0817b4ea3e69ffb70af97fa2da2 (patch)
treef1c30b8c6fbfc167d0e9b47d35b2bc06c03a23dc /pyasn1_modules/rfc5280.py
parentc513c62dd72b3afbe4fc1e7eb4856f0f9ac76954 (diff)
downloadpyasn1-modules-49d39b1e21c7d0817b4ea3e69ffb70af97fa2da2.tar.gz
WIP: open types support
Diffstat (limited to 'pyasn1_modules/rfc5280.py')
-rw-r--r--pyasn1_modules/rfc5280.py105
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)