1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154
|
# This file is being contributed to pyasn1-modules software.
#
# Created by Russ Housley with assistance from asn1ate v.0.6.0.
#
# Copyright (c) 2019, Vigil Security, LLC
# License: https://www.pysnmp.com/pyasn1/license.html
#
# Trust Anchor Format
#
# ASN.1 source from:
# https://www.rfc-editor.org/rfc/rfc5914.txt
from pyasn1.type import char, constraint, namedtype, namedval, tag, univ
from pyasn1_modules import rfc5280
MAX = float("inf")
Certificate = rfc5280.Certificate
Name = rfc5280.Name
Extensions = rfc5280.Extensions
SubjectPublicKeyInfo = rfc5280.SubjectPublicKeyInfo
TBSCertificate = rfc5280.TBSCertificate
CertificatePolicies = rfc5280.CertificatePolicies
KeyIdentifier = rfc5280.KeyIdentifier
NameConstraints = rfc5280.NameConstraints
class CertPolicyFlags(univ.BitString):
pass
CertPolicyFlags.namedValues = namedval.NamedValues(
("inhibitPolicyMapping", 0), ("requireExplicitPolicy", 1), ("inhibitAnyPolicy", 2)
)
class CertPathControls(univ.Sequence):
pass
CertPathControls.componentType = namedtype.NamedTypes(
namedtype.NamedType("taName", Name()),
namedtype.OptionalNamedType(
"certificate",
Certificate().subtype(
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)
),
),
namedtype.OptionalNamedType(
"policySet",
CertificatePolicies().subtype(
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)
),
),
namedtype.OptionalNamedType(
"policyFlags",
CertPolicyFlags().subtype(
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2)
),
),
namedtype.OptionalNamedType(
"nameConstr",
NameConstraints().subtype(
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3)
),
),
namedtype.OptionalNamedType(
"pathLenConstraint",
univ.Integer()
.subtype(subtypeSpec=constraint.ValueRangeConstraint(0, MAX))
.subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 4)),
),
)
class TrustAnchorTitle(char.UTF8String):
pass
TrustAnchorTitle.subtypeSpec = constraint.ValueSizeConstraint(1, 64)
class TrustAnchorInfoVersion(univ.Integer):
pass
TrustAnchorInfoVersion.namedValues = namedval.NamedValues(("v1", 1))
class TrustAnchorInfo(univ.Sequence):
pass
TrustAnchorInfo.componentType = namedtype.NamedTypes(
namedtype.DefaultedNamedType(
"version", TrustAnchorInfoVersion().subtype(value="v1")
),
namedtype.NamedType("pubKey", SubjectPublicKeyInfo()),
namedtype.NamedType("keyId", KeyIdentifier()),
namedtype.OptionalNamedType("taTitle", TrustAnchorTitle()),
namedtype.OptionalNamedType("certPath", CertPathControls()),
namedtype.OptionalNamedType(
"exts",
Extensions().subtype(
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)
),
),
namedtype.OptionalNamedType(
"taTitleLangTag",
char.UTF8String().subtype(
implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2)
),
),
)
class TrustAnchorChoice(univ.Choice):
pass
TrustAnchorChoice.componentType = namedtype.NamedTypes(
namedtype.NamedType("certificate", Certificate()),
namedtype.NamedType(
"tbsCert",
TBSCertificate().subtype(
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)
),
),
namedtype.NamedType(
"taInfo",
TrustAnchorInfo().subtype(
explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2)
),
),
)
id_ct_trustAnchorList = univ.ObjectIdentifier("1.2.840.113549.1.9.16.1.34")
class TrustAnchorList(univ.SequenceOf):
pass
TrustAnchorList.componentType = TrustAnchorChoice()
TrustAnchorList.subtypeSpec = constraint.ValueSizeConstraint(1, MAX)
|