mirror of
https://github.com/GAM-team/GAM.git
synced 2026-06-28 01:41:36 +00:00
pyasn1 0.4.3, pyasn1_modules 0.2.2
This commit is contained in:
@@ -1,2 +1,2 @@
|
||||
# http://www.python.org/dev/peps/pep-0396/
|
||||
__version__ = '0.1.4'
|
||||
__version__ = '0.2.2'
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://snmplabs.com/pyasn1/license.html
|
||||
#
|
||||
import base64
|
||||
import sys
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://snmplabs.com/pyasn1/license.html
|
||||
#
|
||||
# SNMPv1 message syntax
|
||||
#
|
||||
@@ -12,7 +12,10 @@
|
||||
# Sample captures from:
|
||||
# http://wiki.wireshark.org/SampleCaptures/
|
||||
#
|
||||
from pyasn1.type import univ, namedtype, tag, constraint
|
||||
from pyasn1.type import constraint
|
||||
from pyasn1.type import namedtype
|
||||
from pyasn1.type import tag
|
||||
from pyasn1.type import univ
|
||||
|
||||
|
||||
class ObjectName(univ.ObjectIdentifier):
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://snmplabs.com/pyasn1/license.html
|
||||
#
|
||||
# SNMPv1 message syntax
|
||||
#
|
||||
@@ -12,7 +12,11 @@
|
||||
# Sample captures from:
|
||||
# http://wiki.wireshark.org/SampleCaptures/
|
||||
#
|
||||
from pyasn1.type import univ, namedtype, namedval, tag
|
||||
from pyasn1.type import namedtype
|
||||
from pyasn1.type import namedval
|
||||
from pyasn1.type import tag
|
||||
from pyasn1.type import univ
|
||||
|
||||
from pyasn1_modules import rfc1155
|
||||
|
||||
|
||||
|
||||
@@ -1,15 +1,17 @@
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://snmplabs.com/pyasn1/license.html
|
||||
#
|
||||
# SNMPv2c message syntax
|
||||
#
|
||||
# ASN.1 source from:
|
||||
# http://www.ietf.org/rfc/rfc1901.txt
|
||||
#
|
||||
from pyasn1.type import univ, namedtype, namedval
|
||||
from pyasn1.type import namedtype
|
||||
from pyasn1.type import namedval
|
||||
from pyasn1.type import univ
|
||||
|
||||
|
||||
class Message(univ.Sequence):
|
||||
|
||||
@@ -1,15 +1,18 @@
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://snmplabs.com/pyasn1/license.html
|
||||
#
|
||||
# SNMPv2c message syntax
|
||||
#
|
||||
# ASN.1 source from:
|
||||
# http://www.ietf.org/rfc/rfc1902.txt
|
||||
#
|
||||
from pyasn1.type import univ, namedtype, tag, constraint
|
||||
from pyasn1.type import constraint
|
||||
from pyasn1.type import namedtype
|
||||
from pyasn1.type import tag
|
||||
from pyasn1.type import univ
|
||||
|
||||
|
||||
class Integer(univ.Integer):
|
||||
|
||||
@@ -1,15 +1,20 @@
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://snmplabs.com/pyasn1/license.html
|
||||
#
|
||||
# SNMPv2c PDU syntax
|
||||
#
|
||||
# ASN.1 source from:
|
||||
# http://www.ietf.org/rfc/rfc1905.txt
|
||||
#
|
||||
from pyasn1.type import univ, namedtype, namedval, tag, constraint
|
||||
from pyasn1.type import constraint
|
||||
from pyasn1.type import namedtype
|
||||
from pyasn1.type import namedval
|
||||
from pyasn1.type import tag
|
||||
from pyasn1.type import univ
|
||||
|
||||
from pyasn1_modules import rfc1902
|
||||
|
||||
max_bindings = rfc1902.Integer(2147483647)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://snmplabs.com/pyasn1/license.html
|
||||
#
|
||||
# LDAP message syntax
|
||||
#
|
||||
@@ -12,7 +12,11 @@
|
||||
# Sample captures from:
|
||||
# http://wiki.wireshark.org/SampleCaptures/
|
||||
#
|
||||
from pyasn1.type import tag, namedtype, namedval, univ, constraint
|
||||
from pyasn1.type import constraint
|
||||
from pyasn1.type import namedtype
|
||||
from pyasn1.type import namedval
|
||||
from pyasn1.type import tag
|
||||
from pyasn1.type import univ
|
||||
|
||||
maxInt = univ.Integer(2147483647)
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://snmplabs.com/pyasn1/license.html
|
||||
#
|
||||
# PKCS#10 syntax
|
||||
#
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://snmplabs.com/pyasn1/license.html
|
||||
#
|
||||
# PKCS#7 message syntax
|
||||
#
|
||||
@@ -25,7 +25,8 @@ class Attribute(univ.Sequence):
|
||||
class AttributeValueAssertion(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('attributeType', AttributeType()),
|
||||
namedtype.NamedType('attributeValue', AttributeValue())
|
||||
namedtype.NamedType('attributeValue', AttributeValue(),
|
||||
openType=opentype.OpenType('type', certificateAttributesMap))
|
||||
)
|
||||
|
||||
|
||||
@@ -50,12 +51,19 @@ class EncryptedContent(univ.OctetString):
|
||||
pass
|
||||
|
||||
|
||||
contentTypeMap = {}
|
||||
|
||||
|
||||
class EncryptedContentInfo(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('contentType', ContentType()),
|
||||
namedtype.NamedType('contentEncryptionAlgorithm', ContentEncryptionAlgorithmIdentifier()),
|
||||
namedtype.OptionalNamedType('encryptedContent', EncryptedContent().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0)))
|
||||
namedtype.OptionalNamedType(
|
||||
'encryptedContent', EncryptedContent().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0)
|
||||
),
|
||||
openType=opentype.OpenType('contentType', contentTypeMap)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -85,8 +93,11 @@ class Digest(univ.OctetString):
|
||||
class ContentInfo(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('contentType', ContentType()),
|
||||
namedtype.OptionalNamedType('content', univ.Any().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0)))
|
||||
namedtype.OptionalNamedType(
|
||||
'content',
|
||||
univ.Any().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0)),
|
||||
openType=opentype.OpenType('contentType', contentTypeMap)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -270,3 +281,14 @@ class SignedData(univ.Sequence):
|
||||
|
||||
class Data(univ.OctetString):
|
||||
pass
|
||||
|
||||
_contentTypeMapUpdate = {
|
||||
data: Data(),
|
||||
signedData: SignedData(),
|
||||
envelopedData: EnvelopedData(),
|
||||
signedAndEnvelopedData: SignedAndEnvelopedData(),
|
||||
digestedData: DigestedData(),
|
||||
encryptedData: EncryptedData()
|
||||
}
|
||||
|
||||
contentTypeMap.update(_contentTypeMapUpdate)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://snmplabs.com/pyasn1/license.html
|
||||
#
|
||||
# PKCS#1 syntax
|
||||
#
|
||||
@@ -11,7 +11,10 @@
|
||||
#
|
||||
# Sample captures could be obtained with "openssl genrsa" command
|
||||
#
|
||||
from pyasn1.type import tag, namedtype, univ
|
||||
from pyasn1.type import namedtype
|
||||
from pyasn1.type import tag
|
||||
from pyasn1.type import univ
|
||||
|
||||
from pyasn1_modules.rfc2459 import AlgorithmIdentifier
|
||||
|
||||
pkcs_1 = univ.ObjectIdentifier('1.2.840.113549.1.1')
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://snmplabs.com/pyasn1/license.html
|
||||
#
|
||||
# X.509 message syntax
|
||||
#
|
||||
@@ -13,7 +13,14 @@
|
||||
# Sample captures from:
|
||||
# http://wiki.wireshark.org/SampleCaptures/
|
||||
#
|
||||
from pyasn1.type import tag, namedtype, namedval, univ, constraint, char, useful
|
||||
from pyasn1.type import char
|
||||
from pyasn1.type import constraint
|
||||
from pyasn1.type import namedtype
|
||||
from pyasn1.type import namedval
|
||||
from pyasn1.type import opentype
|
||||
from pyasn1.type import tag
|
||||
from pyasn1.type import univ
|
||||
from pyasn1.type import useful
|
||||
|
||||
MAX = float('inf')
|
||||
|
||||
@@ -84,26 +91,6 @@ id_ad_ocsp = univ.ObjectIdentifier('1.3.6.1.5.5.7.48.1')
|
||||
id_ad_caIssuers = univ.ObjectIdentifier('1.3.6.1.5.5.7.48.2')
|
||||
|
||||
|
||||
class AttributeValue(univ.Any):
|
||||
pass
|
||||
|
||||
|
||||
class AttributeType(univ.ObjectIdentifier):
|
||||
pass
|
||||
|
||||
|
||||
class AttributeTypeAndValue(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('type', AttributeType()),
|
||||
namedtype.NamedType('value', AttributeValue())
|
||||
)
|
||||
|
||||
|
||||
class Attribute(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('type', AttributeType()),
|
||||
namedtype.NamedType('vals', univ.SetOf(componentType=AttributeValue()))
|
||||
)
|
||||
|
||||
|
||||
id_at = univ.ObjectIdentifier('2.5.4')
|
||||
@@ -277,19 +264,6 @@ class DSAPrivateKey(univ.Sequence):
|
||||
|
||||
# ----
|
||||
|
||||
class RelativeDistinguishedName(univ.SetOf):
|
||||
componentType = AttributeTypeAndValue()
|
||||
|
||||
|
||||
class RDNSequence(univ.SequenceOf):
|
||||
componentType = RelativeDistinguishedName()
|
||||
|
||||
|
||||
class Name(univ.Choice):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('', RDNSequence())
|
||||
)
|
||||
|
||||
|
||||
class DirectoryString(univ.Choice):
|
||||
componentType = namedtype.NamedTypes(
|
||||
@@ -316,111 +290,6 @@ class AlgorithmIdentifier(univ.Sequence):
|
||||
)
|
||||
|
||||
|
||||
class Extension(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('extnID', univ.ObjectIdentifier()),
|
||||
namedtype.DefaultedNamedType('critical', univ.Boolean('False')),
|
||||
namedtype.NamedType('extnValue', univ.Any())
|
||||
)
|
||||
|
||||
|
||||
class Extensions(univ.SequenceOf):
|
||||
componentType = Extension()
|
||||
sizeSpec = univ.SequenceOf.sizeSpec + constraint.ValueSizeConstraint(1, MAX)
|
||||
|
||||
|
||||
class SubjectPublicKeyInfo(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('algorithm', AlgorithmIdentifier()),
|
||||
namedtype.NamedType('subjectPublicKey', univ.BitString())
|
||||
)
|
||||
|
||||
|
||||
class UniqueIdentifier(univ.BitString):
|
||||
pass
|
||||
|
||||
|
||||
class Time(univ.Choice):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('utcTime', useful.UTCTime()),
|
||||
namedtype.NamedType('generalTime', useful.GeneralizedTime())
|
||||
)
|
||||
|
||||
|
||||
class Validity(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('notBefore', Time()),
|
||||
namedtype.NamedType('notAfter', Time())
|
||||
)
|
||||
|
||||
|
||||
class CertificateSerialNumber(univ.Integer):
|
||||
pass
|
||||
|
||||
|
||||
class Version(univ.Integer):
|
||||
namedValues = namedval.NamedValues(
|
||||
('v1', 0), ('v2', 1), ('v3', 2)
|
||||
)
|
||||
|
||||
|
||||
class TBSCertificate(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.DefaultedNamedType('version', Version('v1').subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.NamedType('serialNumber', CertificateSerialNumber()),
|
||||
namedtype.NamedType('signature', AlgorithmIdentifier()),
|
||||
namedtype.NamedType('issuer', Name()),
|
||||
namedtype.NamedType('validity', Validity()),
|
||||
namedtype.NamedType('subject', Name()),
|
||||
namedtype.NamedType('subjectPublicKeyInfo', SubjectPublicKeyInfo()),
|
||||
namedtype.OptionalNamedType('issuerUniqueID', UniqueIdentifier().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
||||
namedtype.OptionalNamedType('subjectUniqueID', UniqueIdentifier().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))),
|
||||
namedtype.OptionalNamedType('extensions', Extensions().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3)))
|
||||
)
|
||||
|
||||
|
||||
class Certificate(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('tbsCertificate', TBSCertificate()),
|
||||
namedtype.NamedType('signatureAlgorithm', AlgorithmIdentifier()),
|
||||
namedtype.NamedType('signatureValue', univ.BitString())
|
||||
)
|
||||
|
||||
|
||||
# CRL structures
|
||||
|
||||
class RevokedCertificate(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('userCertificate', CertificateSerialNumber()),
|
||||
namedtype.NamedType('revocationDate', Time()),
|
||||
namedtype.OptionalNamedType('crlEntryExtensions', Extensions())
|
||||
)
|
||||
|
||||
|
||||
class TBSCertList(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.OptionalNamedType('version', Version()),
|
||||
namedtype.NamedType('signature', AlgorithmIdentifier()),
|
||||
namedtype.NamedType('issuer', Name()),
|
||||
namedtype.NamedType('thisUpdate', Time()),
|
||||
namedtype.OptionalNamedType('nextUpdate', Time()),
|
||||
namedtype.OptionalNamedType('revokedCertificates', univ.SequenceOf(componentType=RevokedCertificate())),
|
||||
namedtype.OptionalNamedType('crlExtensions', Extensions().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0)))
|
||||
)
|
||||
|
||||
|
||||
class CertificateList(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('tbsCertList', TBSCertList()),
|
||||
namedtype.NamedType('signatureAlgorithm', AlgorithmIdentifier()),
|
||||
namedtype.NamedType('signature', univ.BitString())
|
||||
)
|
||||
|
||||
|
||||
# Algorithm OIDs and parameter structures
|
||||
|
||||
@@ -972,11 +841,6 @@ class BasicConstraints(univ.Sequence):
|
||||
id_ce_subjectDirectoryAttributes = univ.ObjectIdentifier('2.5.29.9')
|
||||
|
||||
|
||||
class SubjectDirectoryAttributes(univ.SequenceOf):
|
||||
componentType = Attribute()
|
||||
subtypeSpec = univ.SequenceOf.subtypeSpec + constraint.ValueSizeConstraint(1, MAX)
|
||||
|
||||
|
||||
class EDIPartyName(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.OptionalNamedType('nameAssigner', DirectoryString().subtype(
|
||||
@@ -986,76 +850,10 @@ class EDIPartyName(univ.Sequence):
|
||||
)
|
||||
|
||||
|
||||
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)))
|
||||
)
|
||||
|
||||
|
||||
class GeneralName(univ.Choice):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('otherName',
|
||||
AnotherName().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.NamedType('rfc822Name',
|
||||
char.IA5String().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
||||
namedtype.NamedType('dNSName',
|
||||
char.IA5String().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))),
|
||||
namedtype.NamedType('x400Address',
|
||||
ORAddress().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3))),
|
||||
namedtype.NamedType('directoryName',
|
||||
Name().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 4))),
|
||||
namedtype.NamedType('ediPartyName',
|
||||
EDIPartyName().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 5))),
|
||||
namedtype.NamedType('uniformResourceIdentifier',
|
||||
char.IA5String().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 6))),
|
||||
namedtype.NamedType('iPAddress', univ.OctetString().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 7))),
|
||||
namedtype.NamedType('registeredID', univ.ObjectIdentifier().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 8)))
|
||||
)
|
||||
|
||||
|
||||
class GeneralNames(univ.SequenceOf):
|
||||
componentType = GeneralName()
|
||||
subtypeSpec = univ.SequenceOf.subtypeSpec + constraint.ValueSizeConstraint(1, MAX)
|
||||
|
||||
|
||||
class AccessDescription(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('accessMethod', univ.ObjectIdentifier()),
|
||||
namedtype.NamedType('accessLocation', GeneralName())
|
||||
)
|
||||
|
||||
|
||||
class AuthorityInfoAccessSyntax(univ.SequenceOf):
|
||||
componentType = AccessDescription()
|
||||
subtypeSpec = univ.SequenceOf.subtypeSpec + constraint.ValueSizeConstraint(1, MAX)
|
||||
|
||||
|
||||
id_ce_deltaCRLIndicator = univ.ObjectIdentifier('2.5.29.27')
|
||||
|
||||
|
||||
class DistributionPointName(univ.Choice):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('fullName', GeneralNames().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
||||
namedtype.NamedType('nameRelativeToCRLIssuer', RelativeDistinguishedName().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1)))
|
||||
)
|
||||
|
||||
|
||||
class DistributionPoint(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.OptionalNamedType('distributionPoint', DistributionPointName().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
||||
namedtype.OptionalNamedType('reasons', ReasonFlags().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
||||
namedtype.OptionalNamedType('cRLIssuer', GeneralNames().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2)))
|
||||
)
|
||||
|
||||
|
||||
class BaseDistance(univ.Integer):
|
||||
subtypeSpec = univ.Integer.subtypeSpec + constraint.ValueRangeConstraint(0, MAX)
|
||||
@@ -1064,56 +862,14 @@ class BaseDistance(univ.Integer):
|
||||
id_ce_cRLDistributionPoints = univ.ObjectIdentifier('2.5.29.31')
|
||||
|
||||
|
||||
class CRLDistPointsSyntax(univ.SequenceOf):
|
||||
componentType = DistributionPoint()
|
||||
subtypeSpec = univ.SequenceOf.subtypeSpec + constraint.ValueSizeConstraint(1, MAX)
|
||||
|
||||
|
||||
id_ce_issuingDistributionPoint = univ.ObjectIdentifier('2.5.29.28')
|
||||
|
||||
|
||||
class IssuingDistributionPoint(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.OptionalNamedType('distributionPoint', DistributionPointName().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
||||
namedtype.NamedType('onlyContainsUserCerts', univ.Boolean(False).subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
||||
namedtype.NamedType('onlyContainsCACerts', univ.Boolean(False).subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))),
|
||||
namedtype.OptionalNamedType('onlySomeReasons', ReasonFlags().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3))),
|
||||
namedtype.NamedType('indirectCRL', univ.Boolean(False).subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 4)))
|
||||
)
|
||||
|
||||
|
||||
class GeneralSubtree(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('base', GeneralName()),
|
||||
namedtype.DefaultedNamedType('minimum', BaseDistance(0).subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
||||
namedtype.OptionalNamedType('maximum', BaseDistance().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1)))
|
||||
)
|
||||
|
||||
|
||||
class GeneralSubtrees(univ.SequenceOf):
|
||||
componentType = GeneralSubtree()
|
||||
subtypeSpec = univ.SequenceOf.subtypeSpec + constraint.ValueSizeConstraint(1, MAX)
|
||||
|
||||
|
||||
id_ce_nameConstraints = univ.ObjectIdentifier('2.5.29.30')
|
||||
|
||||
|
||||
class NameConstraints(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.OptionalNamedType('permittedSubtrees', GeneralSubtrees().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
||||
namedtype.OptionalNamedType('excludedSubtrees', GeneralSubtrees().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1)))
|
||||
)
|
||||
|
||||
|
||||
class DisplayText(univ.Choice):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('visibleString',
|
||||
@@ -1232,6 +988,110 @@ class SubjectKeyIdentifier(KeyIdentifier):
|
||||
pass
|
||||
|
||||
|
||||
id_ce_certificateIssuer = univ.ObjectIdentifier('2.5.29.29')
|
||||
|
||||
|
||||
id_ce_subjectAltName = univ.ObjectIdentifier('2.5.29.17')
|
||||
|
||||
|
||||
id_ce_issuerAltName = univ.ObjectIdentifier('2.5.29.18')
|
||||
|
||||
|
||||
class AttributeValue(univ.Any):
|
||||
pass
|
||||
|
||||
|
||||
class AttributeType(univ.ObjectIdentifier):
|
||||
pass
|
||||
|
||||
certificateAttributesMap = {}
|
||||
|
||||
|
||||
class AttributeTypeAndValue(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('type', AttributeType()),
|
||||
namedtype.NamedType('value', AttributeValue(),
|
||||
openType=opentype.OpenType('type', certificateAttributesMap))
|
||||
)
|
||||
|
||||
|
||||
class Attribute(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('type', AttributeType()),
|
||||
namedtype.NamedType('vals', univ.SetOf(componentType=AttributeValue()))
|
||||
)
|
||||
|
||||
|
||||
class SubjectDirectoryAttributes(univ.SequenceOf):
|
||||
componentType = Attribute()
|
||||
subtypeSpec = univ.SequenceOf.subtypeSpec + constraint.ValueSizeConstraint(1, MAX)
|
||||
|
||||
|
||||
class RelativeDistinguishedName(univ.SetOf):
|
||||
componentType = AttributeTypeAndValue()
|
||||
|
||||
|
||||
class RDNSequence(univ.SequenceOf):
|
||||
componentType = RelativeDistinguishedName()
|
||||
|
||||
|
||||
class Name(univ.Choice):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('', RDNSequence())
|
||||
)
|
||||
|
||||
class CertificateSerialNumber(univ.Integer):
|
||||
pass
|
||||
|
||||
|
||||
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)))
|
||||
)
|
||||
|
||||
|
||||
class GeneralName(univ.Choice):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('otherName',
|
||||
AnotherName().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.NamedType('rfc822Name',
|
||||
char.IA5String().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
||||
namedtype.NamedType('dNSName',
|
||||
char.IA5String().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))),
|
||||
namedtype.NamedType('x400Address',
|
||||
ORAddress().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3))),
|
||||
namedtype.NamedType('directoryName',
|
||||
Name().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 4))),
|
||||
namedtype.NamedType('ediPartyName',
|
||||
EDIPartyName().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 5))),
|
||||
namedtype.NamedType('uniformResourceIdentifier',
|
||||
char.IA5String().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 6))),
|
||||
namedtype.NamedType('iPAddress', univ.OctetString().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 7))),
|
||||
namedtype.NamedType('registeredID', univ.ObjectIdentifier().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 8)))
|
||||
)
|
||||
|
||||
|
||||
class GeneralNames(univ.SequenceOf):
|
||||
componentType = GeneralName()
|
||||
subtypeSpec = univ.SequenceOf.subtypeSpec + constraint.ValueSizeConstraint(1, MAX)
|
||||
|
||||
|
||||
class AccessDescription(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('accessMethod', univ.ObjectIdentifier()),
|
||||
namedtype.NamedType('accessLocation', GeneralName())
|
||||
)
|
||||
|
||||
|
||||
class AuthorityInfoAccessSyntax(univ.SequenceOf):
|
||||
componentType = AccessDescription()
|
||||
subtypeSpec = univ.SequenceOf.subtypeSpec + constraint.ValueSizeConstraint(1, MAX)
|
||||
|
||||
|
||||
class AuthorityKeyIdentifier(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.OptionalNamedType('keyIdentifier', KeyIdentifier().subtype(
|
||||
@@ -1243,30 +1103,189 @@ class AuthorityKeyIdentifier(univ.Sequence):
|
||||
)
|
||||
|
||||
|
||||
id_ce_certificateIssuer = univ.ObjectIdentifier('2.5.29.29')
|
||||
class DistributionPointName(univ.Choice):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('fullName', GeneralNames().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
||||
namedtype.NamedType('nameRelativeToCRLIssuer', RelativeDistinguishedName().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1)))
|
||||
)
|
||||
|
||||
|
||||
class DistributionPoint(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.OptionalNamedType('distributionPoint', DistributionPointName().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
||||
namedtype.OptionalNamedType('reasons', ReasonFlags().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
||||
namedtype.OptionalNamedType('cRLIssuer', GeneralNames().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2)))
|
||||
)
|
||||
|
||||
|
||||
class CRLDistPointsSyntax(univ.SequenceOf):
|
||||
componentType = DistributionPoint()
|
||||
subtypeSpec = univ.SequenceOf.subtypeSpec + constraint.ValueSizeConstraint(1, MAX)
|
||||
|
||||
|
||||
class IssuingDistributionPoint(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.OptionalNamedType('distributionPoint', DistributionPointName().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
||||
namedtype.NamedType('onlyContainsUserCerts', univ.Boolean(False).subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
||||
namedtype.NamedType('onlyContainsCACerts', univ.Boolean(False).subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))),
|
||||
namedtype.OptionalNamedType('onlySomeReasons', ReasonFlags().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3))),
|
||||
namedtype.NamedType('indirectCRL', univ.Boolean(False).subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 4)))
|
||||
)
|
||||
|
||||
|
||||
class GeneralSubtree(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('base', GeneralName()),
|
||||
namedtype.DefaultedNamedType('minimum', BaseDistance(0).subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
||||
namedtype.OptionalNamedType('maximum', BaseDistance().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1)))
|
||||
)
|
||||
|
||||
|
||||
class GeneralSubtrees(univ.SequenceOf):
|
||||
componentType = GeneralSubtree()
|
||||
subtypeSpec = univ.SequenceOf.subtypeSpec + constraint.ValueSizeConstraint(1, MAX)
|
||||
|
||||
|
||||
class NameConstraints(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.OptionalNamedType('permittedSubtrees', GeneralSubtrees().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
|
||||
namedtype.OptionalNamedType('excludedSubtrees', GeneralSubtrees().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1)))
|
||||
)
|
||||
|
||||
|
||||
class CertificateIssuer(GeneralNames):
|
||||
pass
|
||||
|
||||
|
||||
id_ce_subjectAltName = univ.ObjectIdentifier('2.5.29.17')
|
||||
|
||||
|
||||
class SubjectAltName(GeneralNames):
|
||||
pass
|
||||
|
||||
|
||||
id_ce_issuerAltName = univ.ObjectIdentifier('2.5.29.18')
|
||||
|
||||
|
||||
class IssuerAltName(GeneralNames):
|
||||
pass
|
||||
|
||||
|
||||
certificateExtensionsMap = {}
|
||||
|
||||
|
||||
class Extension(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('extnID', univ.ObjectIdentifier()),
|
||||
namedtype.DefaultedNamedType('critical', univ.Boolean('False')),
|
||||
namedtype.NamedType('extnValue', univ.OctetString(),
|
||||
openType=opentype.OpenType('extnID', certificateExtensionsMap))
|
||||
)
|
||||
|
||||
|
||||
class Extensions(univ.SequenceOf):
|
||||
componentType = Extension()
|
||||
sizeSpec = univ.SequenceOf.sizeSpec + constraint.ValueSizeConstraint(1, MAX)
|
||||
|
||||
|
||||
class SubjectPublicKeyInfo(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('algorithm', AlgorithmIdentifier()),
|
||||
namedtype.NamedType('subjectPublicKey', univ.BitString())
|
||||
)
|
||||
|
||||
|
||||
class UniqueIdentifier(univ.BitString):
|
||||
pass
|
||||
|
||||
|
||||
class Time(univ.Choice):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('utcTime', useful.UTCTime()),
|
||||
namedtype.NamedType('generalTime', useful.GeneralizedTime())
|
||||
)
|
||||
|
||||
|
||||
class Validity(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('notBefore', Time()),
|
||||
namedtype.NamedType('notAfter', Time())
|
||||
)
|
||||
|
||||
|
||||
class Version(univ.Integer):
|
||||
namedValues = namedval.NamedValues(
|
||||
('v1', 0), ('v2', 1), ('v3', 2)
|
||||
)
|
||||
|
||||
|
||||
class TBSCertificate(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.DefaultedNamedType('version', Version('v1').subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
|
||||
namedtype.NamedType('serialNumber', CertificateSerialNumber()),
|
||||
namedtype.NamedType('signature', AlgorithmIdentifier()),
|
||||
namedtype.NamedType('issuer', Name()),
|
||||
namedtype.NamedType('validity', Validity()),
|
||||
namedtype.NamedType('subject', Name()),
|
||||
namedtype.NamedType('subjectPublicKeyInfo', SubjectPublicKeyInfo()),
|
||||
namedtype.OptionalNamedType('issuerUniqueID', UniqueIdentifier().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
||||
namedtype.OptionalNamedType('subjectUniqueID', UniqueIdentifier().subtype(
|
||||
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))),
|
||||
namedtype.OptionalNamedType('extensions', Extensions().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3)))
|
||||
)
|
||||
|
||||
|
||||
class Certificate(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('tbsCertificate', TBSCertificate()),
|
||||
namedtype.NamedType('signatureAlgorithm', AlgorithmIdentifier()),
|
||||
namedtype.NamedType('signatureValue', univ.BitString())
|
||||
)
|
||||
|
||||
# CRL structures
|
||||
|
||||
class RevokedCertificate(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('userCertificate', CertificateSerialNumber()),
|
||||
namedtype.NamedType('revocationDate', Time()),
|
||||
namedtype.OptionalNamedType('crlEntryExtensions', Extensions())
|
||||
)
|
||||
|
||||
|
||||
class TBSCertList(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.OptionalNamedType('version', Version()),
|
||||
namedtype.NamedType('signature', AlgorithmIdentifier()),
|
||||
namedtype.NamedType('issuer', Name()),
|
||||
namedtype.NamedType('thisUpdate', Time()),
|
||||
namedtype.OptionalNamedType('nextUpdate', Time()),
|
||||
namedtype.OptionalNamedType('revokedCertificates', univ.SequenceOf(componentType=RevokedCertificate())),
|
||||
namedtype.OptionalNamedType('crlExtensions', Extensions().subtype(
|
||||
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0)))
|
||||
)
|
||||
|
||||
|
||||
class CertificateList(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('tbsCertList', TBSCertList()),
|
||||
namedtype.NamedType('signatureAlgorithm', AlgorithmIdentifier()),
|
||||
namedtype.NamedType('signature', univ.BitString())
|
||||
)
|
||||
|
||||
# map of AttributeType -> AttributeValue
|
||||
|
||||
certificateAttributesMap = {
|
||||
_certificateAttributesMapUpdate = {
|
||||
id_at_name: X520name(),
|
||||
id_at_surname: X520name(),
|
||||
id_at_givenName: X520name(),
|
||||
@@ -1283,14 +1302,18 @@ certificateAttributesMap = {
|
||||
emailAddress: Pkcs9email(),
|
||||
}
|
||||
|
||||
certificateAttributesMap.update(_certificateAttributesMapUpdate)
|
||||
|
||||
|
||||
# map of Certificate Extension OIDs to Extensions
|
||||
|
||||
certificateExtensionsMap = {
|
||||
_certificateExtensionsMapUpdate = {
|
||||
id_ce_authorityKeyIdentifier: AuthorityKeyIdentifier(),
|
||||
id_ce_subjectKeyIdentifier: SubjectKeyIdentifier(),
|
||||
id_ce_keyUsage: KeyUsage(),
|
||||
id_ce_privateKeyUsagePeriod: PrivateKeyUsagePeriod(),
|
||||
id_ce_certificatePolicies: PolicyInformation(), # could be a sequence of concat'ed objects?
|
||||
# TODO
|
||||
# id_ce_certificatePolicies: PolicyInformation(), # could be a sequence of concat'ed objects?
|
||||
id_ce_policyMappings: PolicyMappings(),
|
||||
id_ce_subjectAltName: SubjectAltName(),
|
||||
id_ce_issuerAltName: IssuerAltName(),
|
||||
@@ -1309,3 +1332,6 @@ certificateExtensionsMap = {
|
||||
id_ce_invalidityDate: useful.GeneralizedTime(),
|
||||
id_ce_certificateIssuer: GeneralNames(),
|
||||
}
|
||||
|
||||
certificateExtensionsMap.update(_certificateExtensionsMapUpdate)
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://snmplabs.com/pyasn1/license.html
|
||||
#
|
||||
# X.509 certificate Request Message Format (CRMF) syntax
|
||||
#
|
||||
@@ -11,8 +11,8 @@
|
||||
#
|
||||
# Sample captures could be obtained with OpenSSL
|
||||
#
|
||||
from pyasn1_modules.rfc2459 import *
|
||||
from pyasn1_modules import rfc2315
|
||||
from pyasn1_modules.rfc2459 import *
|
||||
|
||||
MAX = float('inf')
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://snmplabs.com/pyasn1/license.html
|
||||
#
|
||||
# OCSP request/response syntax
|
||||
#
|
||||
@@ -21,7 +21,12 @@
|
||||
# * dates are left as strings in GeneralizedTime format -- datetime.datetime
|
||||
# would be nicer
|
||||
#
|
||||
from pyasn1.type import tag, namedtype, namedval, univ, useful
|
||||
from pyasn1.type import namedtype
|
||||
from pyasn1.type import namedval
|
||||
from pyasn1.type import tag
|
||||
from pyasn1.type import univ
|
||||
from pyasn1.type import useful
|
||||
|
||||
from pyasn1_modules import rfc2459
|
||||
|
||||
|
||||
@@ -124,9 +129,9 @@ class KeyHash(univ.OctetString):
|
||||
class ResponderID(univ.Choice):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('byName',
|
||||
rfc2459.Name().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
||||
rfc2459.Name().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
|
||||
namedtype.NamedType('byKey',
|
||||
KeyHash().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2)))
|
||||
KeyHash().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2)))
|
||||
)
|
||||
|
||||
|
||||
|
||||
124
src/pyasn1_modules/rfc2986.py
Normal file
124
src/pyasn1_modules/rfc2986.py
Normal file
@@ -0,0 +1,124 @@
|
||||
# coding: utf-8
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Created by Joel Johnson with asn1ate tool.
|
||||
# Copyright (c) 2005-2018, 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
|
||||
#
|
||||
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
|
||||
|
||||
MAX = float('inf')
|
||||
|
||||
|
||||
class AttributeType(univ.ObjectIdentifier):
|
||||
pass
|
||||
|
||||
|
||||
class AttributeValue(univ.Any):
|
||||
pass
|
||||
|
||||
|
||||
certificateAttributesMap = {}
|
||||
|
||||
|
||||
class AttributeTypeAndValue(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('type', AttributeType()),
|
||||
namedtype.NamedType(
|
||||
'value', AttributeValue(),
|
||||
openType=opentype.OpenType('type', certificateAttributesMap)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class Attribute(univ.Sequence):
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('type', AttributeType()),
|
||||
namedtype.NamedType('values',
|
||||
univ.SetOf(componentType=AttributeValue()),
|
||||
openType=opentype.OpenType('type', certificateAttributesMap))
|
||||
)
|
||||
|
||||
|
||||
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)))
|
||||
)
|
||||
|
||||
|
||||
class CertificationRequest(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
CertificationRequest.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('certificationRequestInfo', CertificationRequestInfo()),
|
||||
namedtype.NamedType('signatureAlgorithm', AlgorithmIdentifier()),
|
||||
namedtype.NamedType('signature', univ.BitString())
|
||||
)
|
||||
@@ -2,11 +2,13 @@
|
||||
# This file is part of pyasn1-modules.
|
||||
#
|
||||
# Copyright (c) 2017, Danielle Madeley <danielle@madeley.id.au>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
# License: http://snmplabs.com/pyasn1/license.html
|
||||
#
|
||||
# Derived from RFC 3279
|
||||
#
|
||||
from pyasn1.type import univ, char, namedtype, namedval, tag, constraint, useful
|
||||
from pyasn1.type import namedtype
|
||||
from pyasn1.type import namedval
|
||||
from pyasn1.type import univ
|
||||
|
||||
|
||||
def _OID(*components):
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Created by Stanisław Pitucha with asn1ate tool.
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://snmplabs.com/pyasn1/license.html
|
||||
#
|
||||
# Internet X.509 Public Key Infrastructure Certificate and Certificate
|
||||
# Revocation List (CRL) Profile
|
||||
@@ -12,7 +12,13 @@
|
||||
# ASN.1 source from:
|
||||
# http://www.ietf.org/rfc/rfc3280.txt
|
||||
#
|
||||
from pyasn1.type import univ, char, namedtype, namedval, tag, constraint, useful
|
||||
from pyasn1.type import char
|
||||
from pyasn1.type import constraint
|
||||
from pyasn1.type import namedtype
|
||||
from pyasn1.type import namedval
|
||||
from pyasn1.type import tag
|
||||
from pyasn1.type import univ
|
||||
from pyasn1.type import useful
|
||||
|
||||
MAX = float('inf')
|
||||
|
||||
|
||||
@@ -3,20 +3,20 @@
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Created by Stanisław Pitucha with asn1ate tool.
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://snmplabs.com/pyasn1/license.html
|
||||
#
|
||||
# An Internet Attribute Certificate Profile for Authorization
|
||||
#
|
||||
# ASN.1 source from:
|
||||
# http://www.ietf.org/rfc/rfc3281.txt
|
||||
#
|
||||
from pyasn1.type import univ
|
||||
from pyasn1.type import char
|
||||
from pyasn1.type import constraint
|
||||
from pyasn1.type import namedtype
|
||||
from pyasn1.type import namedval
|
||||
from pyasn1.type import tag
|
||||
from pyasn1.type import constraint
|
||||
from pyasn1.type import univ
|
||||
from pyasn1.type import useful
|
||||
|
||||
from pyasn1_modules import rfc3280
|
||||
|
||||
@@ -1,15 +1,18 @@
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://snmplabs.com/pyasn1/license.html
|
||||
#
|
||||
# SNMPv3 message syntax
|
||||
#
|
||||
# ASN.1 source from:
|
||||
# http://www.ietf.org/rfc/rfc3412.txt
|
||||
#
|
||||
from pyasn1.type import univ, namedtype, constraint
|
||||
from pyasn1.type import constraint
|
||||
from pyasn1.type import namedtype
|
||||
from pyasn1.type import univ
|
||||
|
||||
from pyasn1_modules import rfc1905
|
||||
|
||||
|
||||
|
||||
@@ -1,15 +1,17 @@
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://snmplabs.com/pyasn1/license.html
|
||||
#
|
||||
# SNMPv3 message syntax
|
||||
#
|
||||
# ASN.1 source from:
|
||||
# http://www.ietf.org/rfc/rfc3414.txt
|
||||
#
|
||||
from pyasn1.type import univ, namedtype, constraint
|
||||
from pyasn1.type import constraint
|
||||
from pyasn1.type import namedtype
|
||||
from pyasn1.type import univ
|
||||
|
||||
|
||||
class UsmSecurityParameters(univ.Sequence):
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://snmplabs.com/pyasn1/license.html
|
||||
#
|
||||
# PKCS#1 syntax
|
||||
#
|
||||
@@ -11,7 +11,9 @@
|
||||
#
|
||||
# Sample captures could be obtained with "openssl genrsa" command
|
||||
#
|
||||
from pyasn1.type import constraint, namedval
|
||||
from pyasn1.type import constraint
|
||||
from pyasn1.type import namedval
|
||||
|
||||
from pyasn1_modules.rfc2437 import *
|
||||
|
||||
|
||||
|
||||
@@ -3,15 +3,20 @@
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Created by Stanisław Pitucha with asn1ate tool.
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://snmplabs.com/pyasn1/license.html
|
||||
#
|
||||
# Cryptographic Message Syntax (CMS)
|
||||
#
|
||||
# ASN.1 source from:
|
||||
# http://www.ietf.org/rfc/rfc3852.txt
|
||||
#
|
||||
from pyasn1.type import univ, namedtype, namedval, tag, constraint, useful
|
||||
from pyasn1.type import constraint
|
||||
from pyasn1.type import namedtype
|
||||
from pyasn1.type import namedval
|
||||
from pyasn1.type import tag
|
||||
from pyasn1.type import univ
|
||||
from pyasn1.type import useful
|
||||
|
||||
from pyasn1_modules import rfc3280
|
||||
from pyasn1_modules import rfc3281
|
||||
|
||||
@@ -1,15 +1,24 @@
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://snmplabs.com/pyasn1/license.html
|
||||
#
|
||||
# Certificate Management Protocol structures as per RFC4210
|
||||
#
|
||||
# Based on Alex Railean's work
|
||||
#
|
||||
from pyasn1.type import tag, namedtype, namedval, univ, constraint, char, useful
|
||||
from pyasn1_modules import rfc2459, rfc2511, rfc2314
|
||||
from pyasn1.type import char
|
||||
from pyasn1.type import constraint
|
||||
from pyasn1.type import namedtype
|
||||
from pyasn1.type import namedval
|
||||
from pyasn1.type import tag
|
||||
from pyasn1.type import univ
|
||||
from pyasn1.type import useful
|
||||
|
||||
from pyasn1_modules import rfc2314
|
||||
from pyasn1_modules import rfc2459
|
||||
from pyasn1_modules import rfc2511
|
||||
|
||||
MAX = float('inf')
|
||||
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Created by Stanisław Pitucha with asn1ate tool.
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://snmplabs.com/pyasn1/license.html
|
||||
#
|
||||
# Internet X.509 Public Key Infrastructure Certificate Request
|
||||
# Message Format (CRMF)
|
||||
@@ -12,7 +12,12 @@
|
||||
# ASN.1 source from:
|
||||
# http://www.ietf.org/rfc/rfc4211.txt
|
||||
#
|
||||
from pyasn1.type import univ, char, namedtype, namedval, tag, constraint
|
||||
from pyasn1.type import char
|
||||
from pyasn1.type import constraint
|
||||
from pyasn1.type import namedtype
|
||||
from pyasn1.type import namedval
|
||||
from pyasn1.type import tag
|
||||
from pyasn1.type import univ
|
||||
|
||||
from pyasn1_modules import rfc3280
|
||||
from pyasn1_modules import rfc3852
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://snmplabs.com/pyasn1/license.html
|
||||
#
|
||||
# PKCS#8 syntax
|
||||
#
|
||||
@@ -11,8 +11,8 @@
|
||||
#
|
||||
# Sample captures could be obtained with "openssl pkcs8 -topk8" command
|
||||
#
|
||||
from pyasn1_modules.rfc2459 import *
|
||||
from pyasn1_modules import rfc2251
|
||||
from pyasn1_modules.rfc2459 import *
|
||||
|
||||
|
||||
class KeyEncryptionAlgorithms(AlgorithmIdentifier):
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Created by Stanisław Pitucha with asn1ate tool.
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://snmplabs.com/pyasn1/license.html
|
||||
#
|
||||
# Internet X.509 Public Key Infrastructure Certificate and Certificate
|
||||
# Revocation List (CRL) Profile
|
||||
@@ -12,16 +12,18 @@
|
||||
# ASN.1 source from:
|
||||
# http://www.ietf.org/rfc/rfc5280.txt
|
||||
#
|
||||
from pyasn1.type import univ
|
||||
from pyasn1.type import char
|
||||
from pyasn1.type import constraint
|
||||
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 univ
|
||||
from pyasn1.type import useful
|
||||
|
||||
MAX = float('inf')
|
||||
|
||||
|
||||
def _buildOid(*components):
|
||||
output = []
|
||||
for x in tuple(components):
|
||||
@@ -279,13 +281,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 +301,17 @@ class AttributeValue(univ.Any):
|
||||
pass
|
||||
|
||||
|
||||
certificateAttributesMap = {}
|
||||
|
||||
|
||||
class AttributeTypeAndValue(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
AttributeTypeAndValue.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('type', AttributeType()),
|
||||
namedtype.NamedType('value', AttributeValue())
|
||||
)
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('type', AttributeType()),
|
||||
namedtype.NamedType(
|
||||
'value', AttributeValue(),
|
||||
openType=opentype.OpenType('type', certificateAttributesMap)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class RelativeDistinguishedName(univ.SetOf):
|
||||
@@ -379,18 +381,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)))
|
||||
)
|
||||
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 +742,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 +1070,20 @@ PrivateKeyUsagePeriod.componentType = namedtype.NamedTypes(
|
||||
)
|
||||
|
||||
|
||||
anotherNameMap = {
|
||||
|
||||
}
|
||||
|
||||
|
||||
class AnotherName(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
AnotherName.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('type-id', univ.ObjectIdentifier()),
|
||||
namedtype.NamedType('value', univ.Any().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)))
|
||||
)
|
||||
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 +1321,19 @@ class PolicyQualifierId(univ.ObjectIdentifier):
|
||||
pass
|
||||
|
||||
|
||||
policyQualifierInfoMap = {
|
||||
|
||||
}
|
||||
|
||||
|
||||
class PolicyQualifierInfo(univ.Sequence):
|
||||
pass
|
||||
|
||||
|
||||
PolicyQualifierInfo.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('policyQualifierId', PolicyQualifierId()),
|
||||
namedtype.NamedType('qualifier', univ.Any())
|
||||
)
|
||||
componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('policyQualifierId', PolicyQualifierId()),
|
||||
namedtype.NamedType(
|
||||
'qualifier', univ.Any(),
|
||||
openType=opentype.OpenType('policyQualifierId', policyQualifierInfoMap)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class CertPolicyId(univ.ObjectIdentifier):
|
||||
@@ -1549,7 +1564,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 +1584,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 +1613,5 @@ certificateExtensionsMap = {
|
||||
id_ce_invalidityDate: useful.GeneralizedTime(),
|
||||
id_ce_certificateIssuer: GeneralNames(),
|
||||
}
|
||||
|
||||
certificateExtensionsMap.update(_certificateExtensionsMap)
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Created by Stanisław Pitucha with asn1ate tool.
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://snmplabs.com/pyasn1/license.html
|
||||
#
|
||||
# Cryptographic Message Syntax (CMS)
|
||||
#
|
||||
|
||||
@@ -3,15 +3,21 @@
|
||||
# This file is part of pyasn1-modules software.
|
||||
#
|
||||
# Created by Stanisław Pitucha with asn1ate tool.
|
||||
# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://pyasn1.sf.net/license.html
|
||||
# Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
|
||||
# License: http://snmplabs.com/pyasn1/license.html
|
||||
#
|
||||
# Certificate Management over CMS (CMC) Updates
|
||||
#
|
||||
# ASN.1 source from:
|
||||
# http://www.ietf.org/rfc/rfc6402.txt
|
||||
#
|
||||
from pyasn1.type import univ, char, namedtype, namedval, tag, constraint, useful
|
||||
from pyasn1.type import char
|
||||
from pyasn1.type import constraint
|
||||
from pyasn1.type import namedtype
|
||||
from pyasn1.type import namedval
|
||||
from pyasn1.type import tag
|
||||
from pyasn1.type import univ
|
||||
from pyasn1.type import useful
|
||||
|
||||
from pyasn1_modules import rfc4211
|
||||
from pyasn1_modules import rfc5280
|
||||
|
||||
Reference in New Issue
Block a user