diff options
author | Russ Housley <housley@vigilsec.com> | 2019-07-17 02:11:39 -0400 |
---|---|---|
committer | Ilya Etingof <etingof@gmail.com> | 2019-07-17 08:11:39 +0200 |
commit | 06f5be85d5229cffeb24f9ae622df665d7ae506b (patch) | |
tree | 0d84dc3e62e1bb65c6ccf82c3f75ce7b79f61f1f /pyasn1_modules | |
parent | e391feaffc72dd8ba3f9d5ec3d7bb93ce425fc9b (diff) | |
download | pyasn1-modules-06f5be85d5229cffeb24f9ae622df665d7ae506b.tar.gz |
Add support for opentype for RFC 2986 (#52)
Diffstat (limited to 'pyasn1_modules')
-rw-r--r-- | pyasn1_modules/rfc2986.py | 86 |
1 files changed, 18 insertions, 68 deletions
diff --git a/pyasn1_modules/rfc2986.py b/pyasn1_modules/rfc2986.py index 18a9715..c3ccf04 100644 --- a/pyasn1_modules/rfc2986.py +++ b/pyasn1_modules/rfc2986.py @@ -3,118 +3,68 @@ # This file is part of pyasn1-modules software. # # Created by Joel Johnson with asn1ate tool. +# Modified by Russ Housley to add support for opentypes by importing +# definitions from rfc5280 so that the same maps are used. +# # Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com> # License: http://snmplabs.com/pyasn1/license.html # # PKCS #10: Certification Request Syntax Specification # # ASN.1 source from: -# http://www.ietf.org/rfc/rfc2986.txt +# https://www.rfc-editor.org/rfc/rfc2986.txt # -from pyasn1.type import constraint from pyasn1.type import namedtype -from pyasn1.type import opentype from pyasn1.type import tag from pyasn1.type import univ +from pyasn1_modules import rfc5280 + MAX = float('inf') -class AttributeType(univ.ObjectIdentifier): - pass +AttributeType = rfc5280.AttributeType +AttributeValue = rfc5280.AttributeValue -class AttributeValue(univ.Any): - pass +AttributeTypeAndValue = rfc5280.AttributeTypeAndValue +Attribute = rfc5280.Attribute -certificateAttributesMap = {} +RelativeDistinguishedName = rfc5280.RelativeDistinguishedName +RDNSequence = rfc5280.RDNSequence -class AttributeTypeAndValue(univ.Sequence): - componentType = namedtype.NamedTypes( - namedtype.NamedType('type', AttributeType()), - namedtype.NamedType( - 'value', AttributeValue(), - openType=opentype.OpenType('type', certificateAttributesMap) - ) - ) +Name = rfc5280.Name +AlgorithmIdentifier = rfc5280.AlgorithmIdentifier -class Attribute(univ.Sequence): - componentType = namedtype.NamedTypes( - namedtype.NamedType('type', AttributeType()), - namedtype.NamedType('values', - univ.SetOf(componentType=AttributeValue()), - openType=opentype.OpenType('type', certificateAttributesMap)) - ) +SubjectPublicKeyInfo = rfc5280.SubjectPublicKeyInfo class Attributes(univ.SetOf): pass - Attributes.componentType = Attribute() -class RelativeDistinguishedName(univ.SetOf): - pass - - -RelativeDistinguishedName.componentType = AttributeTypeAndValue() -RelativeDistinguishedName.subtypeSpec = constraint.ValueSizeConstraint(1, MAX) - - -class RDNSequence(univ.SequenceOf): - pass - - -RDNSequence.componentType = RelativeDistinguishedName() - - -class Name(univ.Choice): - pass - - -Name.componentType = namedtype.NamedTypes( - namedtype.NamedType('rdnSequence', RDNSequence()) -) - - -class AlgorithmIdentifier(univ.Sequence): - componentType = namedtype.NamedTypes( - namedtype.NamedType('algorithm', univ.ObjectIdentifier()), - namedtype.OptionalNamedType('parameters', univ.Any()) - ) - - -class SubjectPublicKeyInfo(univ.Sequence): - pass - - -SubjectPublicKeyInfo.componentType = namedtype.NamedTypes( - namedtype.NamedType('algorithm', AlgorithmIdentifier()), - namedtype.NamedType('subjectPublicKey', univ.BitString()) -) - - class CertificationRequestInfo(univ.Sequence): pass - CertificationRequestInfo.componentType = namedtype.NamedTypes( namedtype.NamedType('version', univ.Integer()), namedtype.NamedType('subject', Name()), namedtype.NamedType('subjectPKInfo', SubjectPublicKeyInfo()), namedtype.NamedType('attributes', - Attributes().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))) + Attributes().subtype(implicitTag=tag.Tag( + tag.tagClassContext, tag.tagFormatSimple, 0)) + ) ) class CertificationRequest(univ.Sequence): pass - CertificationRequest.componentType = namedtype.NamedTypes( namedtype.NamedType('certificationRequestInfo', CertificationRequestInfo()), namedtype.NamedType('signatureAlgorithm', AlgorithmIdentifier()), |