Development of an internal social media platform with personalised dashboards for students
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

rfc5280.py 48KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617
  1. # coding: utf-8
  2. #
  3. # This file is part of pyasn1-modules software.
  4. #
  5. # Created by Stanisław Pitucha with asn1ate tool.
  6. # Copyright (c) 2005-2018, Ilya Etingof <etingof@gmail.com>
  7. # License: http://snmplabs.com/pyasn1/license.html
  8. #
  9. # Internet X.509 Public Key Infrastructure Certificate and Certificate
  10. # Revocation List (CRL) Profile
  11. #
  12. # ASN.1 source from:
  13. # http://www.ietf.org/rfc/rfc5280.txt
  14. #
  15. from pyasn1.type import char
  16. from pyasn1.type import constraint
  17. from pyasn1.type import namedtype
  18. from pyasn1.type import namedval
  19. from pyasn1.type import opentype
  20. from pyasn1.type import tag
  21. from pyasn1.type import univ
  22. from pyasn1.type import useful
  23. MAX = float('inf')
  24. def _buildOid(*components):
  25. output = []
  26. for x in tuple(components):
  27. if isinstance(x, univ.ObjectIdentifier):
  28. output.extend(list(x))
  29. else:
  30. output.append(int(x))
  31. return univ.ObjectIdentifier(output)
  32. ub_e163_4_sub_address_length = univ.Integer(40)
  33. ub_e163_4_number_length = univ.Integer(15)
  34. unformatted_postal_address = univ.Integer(16)
  35. class TerminalType(univ.Integer):
  36. pass
  37. TerminalType.namedValues = namedval.NamedValues(
  38. ('telex', 3),
  39. ('teletex', 4),
  40. ('g3-facsimile', 5),
  41. ('g4-facsimile', 6),
  42. ('ia5-terminal', 7),
  43. ('videotex', 8)
  44. )
  45. class Extension(univ.Sequence):
  46. pass
  47. Extension.componentType = namedtype.NamedTypes(
  48. namedtype.NamedType('extnID', univ.ObjectIdentifier()),
  49. namedtype.DefaultedNamedType('critical', univ.Boolean().subtype(value=0)),
  50. namedtype.NamedType('extnValue', univ.OctetString())
  51. )
  52. class Extensions(univ.SequenceOf):
  53. pass
  54. Extensions.componentType = Extension()
  55. Extensions.subtypeSpec = constraint.ValueSizeConstraint(1, MAX)
  56. physical_delivery_personal_name = univ.Integer(13)
  57. ub_unformatted_address_length = univ.Integer(180)
  58. ub_pds_parameter_length = univ.Integer(30)
  59. ub_pds_physical_address_lines = univ.Integer(6)
  60. class UnformattedPostalAddress(univ.Set):
  61. pass
  62. UnformattedPostalAddress.componentType = namedtype.NamedTypes(
  63. namedtype.OptionalNamedType('printable-address', univ.SequenceOf(componentType=char.PrintableString().subtype(
  64. subtypeSpec=constraint.ValueSizeConstraint(1, ub_pds_parameter_length)))),
  65. namedtype.OptionalNamedType('teletex-string', char.TeletexString().subtype(
  66. subtypeSpec=constraint.ValueSizeConstraint(1, ub_unformatted_address_length)))
  67. )
  68. ub_organization_name = univ.Integer(64)
  69. class X520OrganizationName(univ.Choice):
  70. pass
  71. X520OrganizationName.componentType = namedtype.NamedTypes(
  72. namedtype.NamedType('teletexString', char.TeletexString().subtype(
  73. subtypeSpec=constraint.ValueSizeConstraint(1, ub_organization_name))),
  74. namedtype.NamedType('printableString', char.PrintableString().subtype(
  75. subtypeSpec=constraint.ValueSizeConstraint(1, ub_organization_name))),
  76. namedtype.NamedType('universalString', char.UniversalString().subtype(
  77. subtypeSpec=constraint.ValueSizeConstraint(1, ub_organization_name))),
  78. namedtype.NamedType('utf8String',
  79. char.UTF8String().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_organization_name))),
  80. namedtype.NamedType('bmpString',
  81. char.BMPString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_organization_name)))
  82. )
  83. ub_x121_address_length = univ.Integer(16)
  84. pds_name = univ.Integer(7)
  85. id_pkix = _buildOid(1, 3, 6, 1, 5, 5, 7)
  86. id_kp = _buildOid(id_pkix, 3)
  87. ub_postal_code_length = univ.Integer(16)
  88. class PostalCode(univ.Choice):
  89. pass
  90. PostalCode.componentType = namedtype.NamedTypes(
  91. namedtype.NamedType('numeric-code', char.NumericString().subtype(
  92. subtypeSpec=constraint.ValueSizeConstraint(1, ub_postal_code_length))),
  93. namedtype.NamedType('printable-code', char.PrintableString().subtype(
  94. subtypeSpec=constraint.ValueSizeConstraint(1, ub_postal_code_length)))
  95. )
  96. ub_generation_qualifier_length = univ.Integer(3)
  97. unique_postal_name = univ.Integer(20)
  98. class DomainComponent(char.IA5String):
  99. pass
  100. ub_domain_defined_attribute_value_length = univ.Integer(128)
  101. ub_match = univ.Integer(128)
  102. id_at = _buildOid(2, 5, 4)
  103. class AttributeType(univ.ObjectIdentifier):
  104. pass
  105. id_at_organizationalUnitName = _buildOid(id_at, 11)
  106. terminal_type = univ.Integer(23)
  107. class PDSParameter(univ.Set):
  108. pass
  109. PDSParameter.componentType = namedtype.NamedTypes(
  110. namedtype.OptionalNamedType('printable-string', char.PrintableString().subtype(
  111. subtypeSpec=constraint.ValueSizeConstraint(1, ub_pds_parameter_length))),
  112. namedtype.OptionalNamedType('teletex-string', char.TeletexString().subtype(
  113. subtypeSpec=constraint.ValueSizeConstraint(1, ub_pds_parameter_length)))
  114. )
  115. class PhysicalDeliveryPersonalName(PDSParameter):
  116. pass
  117. ub_surname_length = univ.Integer(40)
  118. id_ad = _buildOid(id_pkix, 48)
  119. ub_domain_defined_attribute_type_length = univ.Integer(8)
  120. class TeletexDomainDefinedAttribute(univ.Sequence):
  121. pass
  122. TeletexDomainDefinedAttribute.componentType = namedtype.NamedTypes(
  123. namedtype.NamedType('type', char.TeletexString().subtype(
  124. subtypeSpec=constraint.ValueSizeConstraint(1, ub_domain_defined_attribute_type_length))),
  125. namedtype.NamedType('value', char.TeletexString().subtype(
  126. subtypeSpec=constraint.ValueSizeConstraint(1, ub_domain_defined_attribute_value_length)))
  127. )
  128. ub_domain_defined_attributes = univ.Integer(4)
  129. class TeletexDomainDefinedAttributes(univ.SequenceOf):
  130. pass
  131. TeletexDomainDefinedAttributes.componentType = TeletexDomainDefinedAttribute()
  132. TeletexDomainDefinedAttributes.subtypeSpec = constraint.ValueSizeConstraint(1, ub_domain_defined_attributes)
  133. extended_network_address = univ.Integer(22)
  134. ub_locality_name = univ.Integer(128)
  135. class X520LocalityName(univ.Choice):
  136. pass
  137. X520LocalityName.componentType = namedtype.NamedTypes(
  138. namedtype.NamedType('teletexString',
  139. char.TeletexString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_locality_name))),
  140. namedtype.NamedType('printableString', char.PrintableString().subtype(
  141. subtypeSpec=constraint.ValueSizeConstraint(1, ub_locality_name))),
  142. namedtype.NamedType('universalString', char.UniversalString().subtype(
  143. subtypeSpec=constraint.ValueSizeConstraint(1, ub_locality_name))),
  144. namedtype.NamedType('utf8String',
  145. char.UTF8String().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_locality_name))),
  146. namedtype.NamedType('bmpString',
  147. char.BMPString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_locality_name)))
  148. )
  149. teletex_organization_name = univ.Integer(3)
  150. ub_given_name_length = univ.Integer(16)
  151. ub_initials_length = univ.Integer(5)
  152. class PersonalName(univ.Set):
  153. pass
  154. PersonalName.componentType = namedtype.NamedTypes(
  155. namedtype.NamedType('surname', char.PrintableString().subtype(
  156. subtypeSpec=constraint.ValueSizeConstraint(1, ub_surname_length)).subtype(
  157. implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
  158. namedtype.OptionalNamedType('given-name', char.PrintableString().subtype(
  159. subtypeSpec=constraint.ValueSizeConstraint(1, ub_given_name_length)).subtype(
  160. implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
  161. namedtype.OptionalNamedType('initials', char.PrintableString().subtype(
  162. subtypeSpec=constraint.ValueSizeConstraint(1, ub_initials_length)).subtype(
  163. implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))),
  164. namedtype.OptionalNamedType('generation-qualifier', char.PrintableString().subtype(
  165. subtypeSpec=constraint.ValueSizeConstraint(1, ub_generation_qualifier_length)).subtype(
  166. implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3)))
  167. )
  168. ub_organizational_unit_name_length = univ.Integer(32)
  169. class OrganizationalUnitName(char.PrintableString):
  170. pass
  171. OrganizationalUnitName.subtypeSpec = constraint.ValueSizeConstraint(1, ub_organizational_unit_name_length)
  172. id_at_generationQualifier = _buildOid(id_at, 44)
  173. class Version(univ.Integer):
  174. pass
  175. Version.namedValues = namedval.NamedValues(
  176. ('v1', 0),
  177. ('v2', 1),
  178. ('v3', 2)
  179. )
  180. class CertificateSerialNumber(univ.Integer):
  181. pass
  182. class AlgorithmIdentifier(univ.Sequence):
  183. componentType = namedtype.NamedTypes(
  184. namedtype.NamedType('algorithm', univ.ObjectIdentifier()),
  185. namedtype.OptionalNamedType('parameters', univ.Any())
  186. )
  187. class Time(univ.Choice):
  188. pass
  189. Time.componentType = namedtype.NamedTypes(
  190. namedtype.NamedType('utcTime', useful.UTCTime()),
  191. namedtype.NamedType('generalTime', useful.GeneralizedTime())
  192. )
  193. class AttributeValue(univ.Any):
  194. pass
  195. certificateAttributesMap = {}
  196. class AttributeTypeAndValue(univ.Sequence):
  197. componentType = namedtype.NamedTypes(
  198. namedtype.NamedType('type', AttributeType()),
  199. namedtype.NamedType(
  200. 'value', AttributeValue(),
  201. openType=opentype.OpenType('type', certificateAttributesMap)
  202. )
  203. )
  204. class RelativeDistinguishedName(univ.SetOf):
  205. pass
  206. RelativeDistinguishedName.componentType = AttributeTypeAndValue()
  207. RelativeDistinguishedName.subtypeSpec = constraint.ValueSizeConstraint(1, MAX)
  208. class RDNSequence(univ.SequenceOf):
  209. pass
  210. RDNSequence.componentType = RelativeDistinguishedName()
  211. class Name(univ.Choice):
  212. pass
  213. Name.componentType = namedtype.NamedTypes(
  214. namedtype.NamedType('rdnSequence', RDNSequence())
  215. )
  216. class TBSCertList(univ.Sequence):
  217. pass
  218. TBSCertList.componentType = namedtype.NamedTypes(
  219. namedtype.OptionalNamedType('version', Version()),
  220. namedtype.NamedType('signature', AlgorithmIdentifier()),
  221. namedtype.NamedType('issuer', Name()),
  222. namedtype.NamedType('thisUpdate', Time()),
  223. namedtype.OptionalNamedType('nextUpdate', Time()),
  224. namedtype.OptionalNamedType(
  225. 'revokedCertificates', univ.SequenceOf(
  226. componentType=univ.Sequence(
  227. componentType=namedtype.NamedTypes(
  228. namedtype.NamedType('userCertificate', CertificateSerialNumber()),
  229. namedtype.NamedType('revocationDate', Time()),
  230. namedtype.OptionalNamedType('crlEntryExtensions', Extensions())
  231. )
  232. )
  233. )
  234. ),
  235. namedtype.OptionalNamedType(
  236. 'crlExtensions', Extensions().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)))
  237. )
  238. class CertificateList(univ.Sequence):
  239. pass
  240. CertificateList.componentType = namedtype.NamedTypes(
  241. namedtype.NamedType('tbsCertList', TBSCertList()),
  242. namedtype.NamedType('signatureAlgorithm', AlgorithmIdentifier()),
  243. namedtype.NamedType('signature', univ.BitString())
  244. )
  245. class PhysicalDeliveryOfficeName(PDSParameter):
  246. pass
  247. ub_extension_attributes = univ.Integer(256)
  248. certificateExtensionsMap = {
  249. }
  250. class ExtensionAttribute(univ.Sequence):
  251. componentType = namedtype.NamedTypes(
  252. namedtype.NamedType(
  253. 'extension-attribute-type',
  254. univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(0, ub_extension_attributes)).subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
  255. namedtype.NamedType(
  256. 'extension-attribute-value',
  257. univ.Any().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)),
  258. openType=opentype.OpenType('type', certificateExtensionsMap))
  259. )
  260. id_qt = _buildOid(id_pkix, 2)
  261. id_qt_cps = _buildOid(id_qt, 1)
  262. id_at_stateOrProvinceName = _buildOid(id_at, 8)
  263. id_at_title = _buildOid(id_at, 12)
  264. id_at_serialNumber = _buildOid(id_at, 5)
  265. class X520dnQualifier(char.PrintableString):
  266. pass
  267. class PosteRestanteAddress(PDSParameter):
  268. pass
  269. poste_restante_address = univ.Integer(19)
  270. class UniqueIdentifier(univ.BitString):
  271. pass
  272. class Validity(univ.Sequence):
  273. pass
  274. Validity.componentType = namedtype.NamedTypes(
  275. namedtype.NamedType('notBefore', Time()),
  276. namedtype.NamedType('notAfter', Time())
  277. )
  278. class SubjectPublicKeyInfo(univ.Sequence):
  279. pass
  280. SubjectPublicKeyInfo.componentType = namedtype.NamedTypes(
  281. namedtype.NamedType('algorithm', AlgorithmIdentifier()),
  282. namedtype.NamedType('subjectPublicKey', univ.BitString())
  283. )
  284. class TBSCertificate(univ.Sequence):
  285. pass
  286. TBSCertificate.componentType = namedtype.NamedTypes(
  287. namedtype.DefaultedNamedType('version',
  288. Version().subtype(explicitTag=tag.Tag(tag.tagClassContext,
  289. tag.tagFormatSimple, 0)).subtype(value="v1")),
  290. namedtype.NamedType('serialNumber', CertificateSerialNumber()),
  291. namedtype.NamedType('signature', AlgorithmIdentifier()),
  292. namedtype.NamedType('issuer', Name()),
  293. namedtype.NamedType('validity', Validity()),
  294. namedtype.NamedType('subject', Name()),
  295. namedtype.NamedType('subjectPublicKeyInfo', SubjectPublicKeyInfo()),
  296. namedtype.OptionalNamedType('issuerUniqueID', UniqueIdentifier().subtype(
  297. implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
  298. namedtype.OptionalNamedType('subjectUniqueID', UniqueIdentifier().subtype(
  299. implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))),
  300. namedtype.OptionalNamedType('extensions',
  301. Extensions().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3)))
  302. )
  303. physical_delivery_office_name = univ.Integer(10)
  304. ub_name = univ.Integer(32768)
  305. class X520name(univ.Choice):
  306. pass
  307. X520name.componentType = namedtype.NamedTypes(
  308. namedtype.NamedType('teletexString',
  309. char.TeletexString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_name))),
  310. namedtype.NamedType('printableString',
  311. char.PrintableString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_name))),
  312. namedtype.NamedType('universalString',
  313. char.UniversalString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_name))),
  314. namedtype.NamedType('utf8String',
  315. char.UTF8String().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_name))),
  316. namedtype.NamedType('bmpString', char.BMPString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_name)))
  317. )
  318. id_at_dnQualifier = _buildOid(id_at, 46)
  319. ub_serial_number = univ.Integer(64)
  320. ub_pseudonym = univ.Integer(128)
  321. pkcs_9 = _buildOid(1, 2, 840, 113549, 1, 9)
  322. class X121Address(char.NumericString):
  323. pass
  324. X121Address.subtypeSpec = constraint.ValueSizeConstraint(1, ub_x121_address_length)
  325. class NetworkAddress(X121Address):
  326. pass
  327. ub_integer_options = univ.Integer(256)
  328. id_at_commonName = _buildOid(id_at, 3)
  329. ub_organization_name_length = univ.Integer(64)
  330. id_ad_ocsp = _buildOid(id_ad, 1)
  331. ub_country_name_numeric_length = univ.Integer(3)
  332. ub_country_name_alpha_length = univ.Integer(2)
  333. class PhysicalDeliveryCountryName(univ.Choice):
  334. pass
  335. PhysicalDeliveryCountryName.componentType = namedtype.NamedTypes(
  336. namedtype.NamedType('x121-dcc-code', char.NumericString().subtype(
  337. subtypeSpec=constraint.ValueSizeConstraint(ub_country_name_numeric_length, ub_country_name_numeric_length))),
  338. namedtype.NamedType('iso-3166-alpha2-code', char.PrintableString().subtype(
  339. subtypeSpec=constraint.ValueSizeConstraint(ub_country_name_alpha_length, ub_country_name_alpha_length)))
  340. )
  341. id_emailAddress = _buildOid(pkcs_9, 1)
  342. common_name = univ.Integer(1)
  343. class X520Pseudonym(univ.Choice):
  344. pass
  345. X520Pseudonym.componentType = namedtype.NamedTypes(
  346. namedtype.NamedType('teletexString',
  347. char.TeletexString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_pseudonym))),
  348. namedtype.NamedType('printableString',
  349. char.PrintableString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_pseudonym))),
  350. namedtype.NamedType('universalString',
  351. char.UniversalString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_pseudonym))),
  352. namedtype.NamedType('utf8String',
  353. char.UTF8String().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_pseudonym))),
  354. namedtype.NamedType('bmpString',
  355. char.BMPString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_pseudonym)))
  356. )
  357. ub_domain_name_length = univ.Integer(16)
  358. class AdministrationDomainName(univ.Choice):
  359. pass
  360. AdministrationDomainName.tagSet = univ.Choice.tagSet.tagExplicitly(
  361. tag.Tag(tag.tagClassApplication, tag.tagFormatConstructed, 2))
  362. AdministrationDomainName.componentType = namedtype.NamedTypes(
  363. namedtype.NamedType('numeric', char.NumericString().subtype(
  364. subtypeSpec=constraint.ValueSizeConstraint(0, ub_domain_name_length))),
  365. namedtype.NamedType('printable', char.PrintableString().subtype(
  366. subtypeSpec=constraint.ValueSizeConstraint(0, ub_domain_name_length)))
  367. )
  368. class PresentationAddress(univ.Sequence):
  369. pass
  370. PresentationAddress.componentType = namedtype.NamedTypes(
  371. namedtype.OptionalNamedType('pSelector', univ.OctetString().subtype(
  372. explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
  373. namedtype.OptionalNamedType('sSelector', univ.OctetString().subtype(
  374. explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
  375. namedtype.OptionalNamedType('tSelector', univ.OctetString().subtype(
  376. explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))),
  377. namedtype.NamedType('nAddresses', univ.SetOf(componentType=univ.OctetString()).subtype(
  378. explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3)))
  379. )
  380. class ExtendedNetworkAddress(univ.Choice):
  381. pass
  382. ExtendedNetworkAddress.componentType = namedtype.NamedTypes(
  383. namedtype.NamedType(
  384. 'e163-4-address', univ.Sequence(
  385. componentType=namedtype.NamedTypes(
  386. namedtype.NamedType('number', char.NumericString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_e163_4_number_length)).subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
  387. namedtype.OptionalNamedType('sub-address', char.NumericString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_e163_4_sub_address_length)).subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))
  388. )
  389. )
  390. ),
  391. namedtype.NamedType('psap-address', PresentationAddress().subtype(
  392. implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0)))
  393. )
  394. class TeletexOrganizationName(char.TeletexString):
  395. pass
  396. TeletexOrganizationName.subtypeSpec = constraint.ValueSizeConstraint(1, ub_organization_name_length)
  397. ub_terminal_id_length = univ.Integer(24)
  398. class TerminalIdentifier(char.PrintableString):
  399. pass
  400. TerminalIdentifier.subtypeSpec = constraint.ValueSizeConstraint(1, ub_terminal_id_length)
  401. id_ad_caIssuers = _buildOid(id_ad, 2)
  402. id_at_countryName = _buildOid(id_at, 6)
  403. class StreetAddress(PDSParameter):
  404. pass
  405. postal_code = univ.Integer(9)
  406. id_at_givenName = _buildOid(id_at, 42)
  407. ub_title = univ.Integer(64)
  408. class ExtensionAttributes(univ.SetOf):
  409. pass
  410. ExtensionAttributes.componentType = ExtensionAttribute()
  411. ExtensionAttributes.subtypeSpec = constraint.ValueSizeConstraint(1, ub_extension_attributes)
  412. ub_emailaddress_length = univ.Integer(255)
  413. id_ad_caRepository = _buildOid(id_ad, 5)
  414. class ExtensionORAddressComponents(PDSParameter):
  415. pass
  416. ub_organizational_unit_name = univ.Integer(64)
  417. class X520OrganizationalUnitName(univ.Choice):
  418. pass
  419. X520OrganizationalUnitName.componentType = namedtype.NamedTypes(
  420. namedtype.NamedType('teletexString', char.TeletexString().subtype(
  421. subtypeSpec=constraint.ValueSizeConstraint(1, ub_organizational_unit_name))),
  422. namedtype.NamedType('printableString', char.PrintableString().subtype(
  423. subtypeSpec=constraint.ValueSizeConstraint(1, ub_organizational_unit_name))),
  424. namedtype.NamedType('universalString', char.UniversalString().subtype(
  425. subtypeSpec=constraint.ValueSizeConstraint(1, ub_organizational_unit_name))),
  426. namedtype.NamedType('utf8String', char.UTF8String().subtype(
  427. subtypeSpec=constraint.ValueSizeConstraint(1, ub_organizational_unit_name))),
  428. namedtype.NamedType('bmpString', char.BMPString().subtype(
  429. subtypeSpec=constraint.ValueSizeConstraint(1, ub_organizational_unit_name)))
  430. )
  431. class LocalPostalAttributes(PDSParameter):
  432. pass
  433. teletex_organizational_unit_names = univ.Integer(5)
  434. class X520Title(univ.Choice):
  435. pass
  436. X520Title.componentType = namedtype.NamedTypes(
  437. namedtype.NamedType('teletexString',
  438. char.TeletexString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_title))),
  439. namedtype.NamedType('printableString',
  440. char.PrintableString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_title))),
  441. namedtype.NamedType('universalString',
  442. char.UniversalString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_title))),
  443. namedtype.NamedType('utf8String',
  444. char.UTF8String().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_title))),
  445. namedtype.NamedType('bmpString', char.BMPString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_title)))
  446. )
  447. id_at_localityName = _buildOid(id_at, 7)
  448. id_at_initials = _buildOid(id_at, 43)
  449. ub_state_name = univ.Integer(128)
  450. class X520StateOrProvinceName(univ.Choice):
  451. pass
  452. X520StateOrProvinceName.componentType = namedtype.NamedTypes(
  453. namedtype.NamedType('teletexString',
  454. char.TeletexString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_state_name))),
  455. namedtype.NamedType('printableString',
  456. char.PrintableString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_state_name))),
  457. namedtype.NamedType('universalString',
  458. char.UniversalString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_state_name))),
  459. namedtype.NamedType('utf8String',
  460. char.UTF8String().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_state_name))),
  461. namedtype.NamedType('bmpString',
  462. char.BMPString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_state_name)))
  463. )
  464. physical_delivery_organization_name = univ.Integer(14)
  465. id_at_surname = _buildOid(id_at, 4)
  466. class X520countryName(char.PrintableString):
  467. pass
  468. X520countryName.subtypeSpec = constraint.ValueSizeConstraint(2, 2)
  469. physical_delivery_office_number = univ.Integer(11)
  470. id_qt_unotice = _buildOid(id_qt, 2)
  471. class X520SerialNumber(char.PrintableString):
  472. pass
  473. X520SerialNumber.subtypeSpec = constraint.ValueSizeConstraint(1, ub_serial_number)
  474. class Attribute(univ.Sequence):
  475. componentType = namedtype.NamedTypes(
  476. namedtype.NamedType('type', AttributeType()),
  477. namedtype.NamedType('values',
  478. univ.SetOf(componentType=AttributeValue()),
  479. openType=opentype.OpenType('type', certificateAttributesMap))
  480. )
  481. ub_common_name = univ.Integer(64)
  482. id_pe = _buildOid(id_pkix, 1)
  483. class ExtensionPhysicalDeliveryAddressComponents(PDSParameter):
  484. pass
  485. class EmailAddress(char.IA5String):
  486. pass
  487. EmailAddress.subtypeSpec = constraint.ValueSizeConstraint(1, ub_emailaddress_length)
  488. id_at_organizationName = _buildOid(id_at, 10)
  489. post_office_box_address = univ.Integer(18)
  490. class BuiltInDomainDefinedAttribute(univ.Sequence):
  491. pass
  492. BuiltInDomainDefinedAttribute.componentType = namedtype.NamedTypes(
  493. namedtype.NamedType('type', char.PrintableString().subtype(
  494. subtypeSpec=constraint.ValueSizeConstraint(1, ub_domain_defined_attribute_type_length))),
  495. namedtype.NamedType('value', char.PrintableString().subtype(
  496. subtypeSpec=constraint.ValueSizeConstraint(1, ub_domain_defined_attribute_value_length)))
  497. )
  498. class BuiltInDomainDefinedAttributes(univ.SequenceOf):
  499. pass
  500. BuiltInDomainDefinedAttributes.componentType = BuiltInDomainDefinedAttribute()
  501. BuiltInDomainDefinedAttributes.subtypeSpec = constraint.ValueSizeConstraint(1, ub_domain_defined_attributes)
  502. id_at_pseudonym = _buildOid(id_at, 65)
  503. id_domainComponent = _buildOid(0, 9, 2342, 19200300, 100, 1, 25)
  504. class X520CommonName(univ.Choice):
  505. pass
  506. X520CommonName.componentType = namedtype.NamedTypes(
  507. namedtype.NamedType('teletexString',
  508. char.TeletexString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_common_name))),
  509. namedtype.NamedType('printableString',
  510. char.PrintableString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_common_name))),
  511. namedtype.NamedType('universalString',
  512. char.UniversalString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_common_name))),
  513. namedtype.NamedType('utf8String',
  514. char.UTF8String().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_common_name))),
  515. namedtype.NamedType('bmpString',
  516. char.BMPString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, ub_common_name)))
  517. )
  518. extension_OR_address_components = univ.Integer(12)
  519. ub_organizational_units = univ.Integer(4)
  520. teletex_personal_name = univ.Integer(4)
  521. ub_numeric_user_id_length = univ.Integer(32)
  522. ub_common_name_length = univ.Integer(64)
  523. class TeletexCommonName(char.TeletexString):
  524. pass
  525. TeletexCommonName.subtypeSpec = constraint.ValueSizeConstraint(1, ub_common_name_length)
  526. class PhysicalDeliveryOrganizationName(PDSParameter):
  527. pass
  528. extension_physical_delivery_address_components = univ.Integer(15)
  529. class NumericUserIdentifier(char.NumericString):
  530. pass
  531. NumericUserIdentifier.subtypeSpec = constraint.ValueSizeConstraint(1, ub_numeric_user_id_length)
  532. class CountryName(univ.Choice):
  533. pass
  534. CountryName.tagSet = univ.Choice.tagSet.tagExplicitly(tag.Tag(tag.tagClassApplication, tag.tagFormatConstructed, 1))
  535. CountryName.componentType = namedtype.NamedTypes(
  536. namedtype.NamedType('x121-dcc-code', char.NumericString().subtype(
  537. subtypeSpec=constraint.ValueSizeConstraint(ub_country_name_numeric_length, ub_country_name_numeric_length))),
  538. namedtype.NamedType('iso-3166-alpha2-code', char.PrintableString().subtype(
  539. subtypeSpec=constraint.ValueSizeConstraint(ub_country_name_alpha_length, ub_country_name_alpha_length)))
  540. )
  541. class OrganizationName(char.PrintableString):
  542. pass
  543. OrganizationName.subtypeSpec = constraint.ValueSizeConstraint(1, ub_organization_name_length)
  544. class OrganizationalUnitNames(univ.SequenceOf):
  545. pass
  546. OrganizationalUnitNames.componentType = OrganizationalUnitName()
  547. OrganizationalUnitNames.subtypeSpec = constraint.ValueSizeConstraint(1, ub_organizational_units)
  548. class PrivateDomainName(univ.Choice):
  549. pass
  550. PrivateDomainName.componentType = namedtype.NamedTypes(
  551. namedtype.NamedType('numeric', char.NumericString().subtype(
  552. subtypeSpec=constraint.ValueSizeConstraint(1, ub_domain_name_length))),
  553. namedtype.NamedType('printable', char.PrintableString().subtype(
  554. subtypeSpec=constraint.ValueSizeConstraint(1, ub_domain_name_length)))
  555. )
  556. class BuiltInStandardAttributes(univ.Sequence):
  557. pass
  558. BuiltInStandardAttributes.componentType = namedtype.NamedTypes(
  559. namedtype.OptionalNamedType('country-name', CountryName()),
  560. namedtype.OptionalNamedType('administration-domain-name', AdministrationDomainName()),
  561. namedtype.OptionalNamedType('network-address', NetworkAddress().subtype(
  562. implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
  563. namedtype.OptionalNamedType('terminal-identifier', TerminalIdentifier().subtype(
  564. implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
  565. namedtype.OptionalNamedType('private-domain-name', PrivateDomainName().subtype(
  566. explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2))),
  567. namedtype.OptionalNamedType('organization-name', OrganizationName().subtype(
  568. implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3))),
  569. namedtype.OptionalNamedType('numeric-user-identifier', NumericUserIdentifier().subtype(
  570. implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 4))),
  571. namedtype.OptionalNamedType('personal-name', PersonalName().subtype(
  572. implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 5))),
  573. namedtype.OptionalNamedType('organizational-unit-names', OrganizationalUnitNames().subtype(
  574. implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 6)))
  575. )
  576. class ORAddress(univ.Sequence):
  577. pass
  578. ORAddress.componentType = namedtype.NamedTypes(
  579. namedtype.NamedType('built-in-standard-attributes', BuiltInStandardAttributes()),
  580. namedtype.OptionalNamedType('built-in-domain-defined-attributes', BuiltInDomainDefinedAttributes()),
  581. namedtype.OptionalNamedType('extension-attributes', ExtensionAttributes())
  582. )
  583. class DistinguishedName(RDNSequence):
  584. pass
  585. id_ad_timeStamping = _buildOid(id_ad, 3)
  586. class PhysicalDeliveryOfficeNumber(PDSParameter):
  587. pass
  588. teletex_domain_defined_attributes = univ.Integer(6)
  589. class UniquePostalName(PDSParameter):
  590. pass
  591. physical_delivery_country_name = univ.Integer(8)
  592. ub_pds_name_length = univ.Integer(16)
  593. class PDSName(char.PrintableString):
  594. pass
  595. PDSName.subtypeSpec = constraint.ValueSizeConstraint(1, ub_pds_name_length)
  596. class TeletexPersonalName(univ.Set):
  597. pass
  598. TeletexPersonalName.componentType = namedtype.NamedTypes(
  599. namedtype.NamedType('surname', char.TeletexString().subtype(
  600. subtypeSpec=constraint.ValueSizeConstraint(1, ub_surname_length)).subtype(
  601. implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
  602. namedtype.OptionalNamedType('given-name', char.TeletexString().subtype(
  603. subtypeSpec=constraint.ValueSizeConstraint(1, ub_given_name_length)).subtype(
  604. implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
  605. namedtype.OptionalNamedType('initials', char.TeletexString().subtype(
  606. subtypeSpec=constraint.ValueSizeConstraint(1, ub_initials_length)).subtype(
  607. implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))),
  608. namedtype.OptionalNamedType('generation-qualifier', char.TeletexString().subtype(
  609. subtypeSpec=constraint.ValueSizeConstraint(1, ub_generation_qualifier_length)).subtype(
  610. implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3)))
  611. )
  612. street_address = univ.Integer(17)
  613. class PostOfficeBoxAddress(PDSParameter):
  614. pass
  615. local_postal_attributes = univ.Integer(21)
  616. class DirectoryString(univ.Choice):
  617. pass
  618. DirectoryString.componentType = namedtype.NamedTypes(
  619. namedtype.NamedType('teletexString',
  620. char.TeletexString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, MAX))),
  621. namedtype.NamedType('printableString',
  622. char.PrintableString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, MAX))),
  623. namedtype.NamedType('universalString',
  624. char.UniversalString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, MAX))),
  625. namedtype.NamedType('utf8String', char.UTF8String().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, MAX))),
  626. namedtype.NamedType('bmpString', char.BMPString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, MAX)))
  627. )
  628. teletex_common_name = univ.Integer(2)
  629. class CommonName(char.PrintableString):
  630. pass
  631. CommonName.subtypeSpec = constraint.ValueSizeConstraint(1, ub_common_name_length)
  632. class Certificate(univ.Sequence):
  633. pass
  634. Certificate.componentType = namedtype.NamedTypes(
  635. namedtype.NamedType('tbsCertificate', TBSCertificate()),
  636. namedtype.NamedType('signatureAlgorithm', AlgorithmIdentifier()),
  637. namedtype.NamedType('signature', univ.BitString())
  638. )
  639. class TeletexOrganizationalUnitName(char.TeletexString):
  640. pass
  641. TeletexOrganizationalUnitName.subtypeSpec = constraint.ValueSizeConstraint(1, ub_organizational_unit_name_length)
  642. id_at_name = _buildOid(id_at, 41)
  643. class TeletexOrganizationalUnitNames(univ.SequenceOf):
  644. pass
  645. TeletexOrganizationalUnitNames.componentType = TeletexOrganizationalUnitName()
  646. TeletexOrganizationalUnitNames.subtypeSpec = constraint.ValueSizeConstraint(1, ub_organizational_units)
  647. id_ce = _buildOid(2, 5, 29)
  648. id_ce_issuerAltName = _buildOid(id_ce, 18)
  649. class SkipCerts(univ.Integer):
  650. pass
  651. SkipCerts.subtypeSpec = constraint.ValueRangeConstraint(0, MAX)
  652. class CRLReason(univ.Enumerated):
  653. pass
  654. CRLReason.namedValues = namedval.NamedValues(
  655. ('unspecified', 0),
  656. ('keyCompromise', 1),
  657. ('cACompromise', 2),
  658. ('affiliationChanged', 3),
  659. ('superseded', 4),
  660. ('cessationOfOperation', 5),
  661. ('certificateHold', 6),
  662. ('removeFromCRL', 8),
  663. ('privilegeWithdrawn', 9),
  664. ('aACompromise', 10)
  665. )
  666. class PrivateKeyUsagePeriod(univ.Sequence):
  667. pass
  668. PrivateKeyUsagePeriod.componentType = namedtype.NamedTypes(
  669. namedtype.OptionalNamedType('notBefore', useful.GeneralizedTime().subtype(
  670. implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
  671. namedtype.OptionalNamedType('notAfter', useful.GeneralizedTime().subtype(
  672. implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))
  673. )
  674. anotherNameMap = {
  675. }
  676. class AnotherName(univ.Sequence):
  677. componentType = namedtype.NamedTypes(
  678. namedtype.NamedType('type-id', univ.ObjectIdentifier()),
  679. namedtype.NamedType(
  680. 'value',
  681. univ.Any().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)),
  682. openType=opentype.OpenType('type-id', anotherNameMap)
  683. )
  684. )
  685. class EDIPartyName(univ.Sequence):
  686. pass
  687. EDIPartyName.componentType = namedtype.NamedTypes(
  688. namedtype.OptionalNamedType('nameAssigner', DirectoryString().subtype(
  689. implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
  690. namedtype.NamedType('partyName', DirectoryString().subtype(
  691. implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1)))
  692. )
  693. class GeneralName(univ.Choice):
  694. pass
  695. GeneralName.componentType = namedtype.NamedTypes(
  696. namedtype.NamedType('otherName',
  697. AnotherName().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
  698. namedtype.NamedType('rfc822Name',
  699. char.IA5String().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
  700. namedtype.NamedType('dNSName',
  701. char.IA5String().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))),
  702. namedtype.NamedType('x400Address',
  703. ORAddress().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3))),
  704. namedtype.NamedType('directoryName',
  705. Name().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 4))),
  706. namedtype.NamedType('ediPartyName',
  707. EDIPartyName().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 5))),
  708. namedtype.NamedType('uniformResourceIdentifier',
  709. char.IA5String().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 6))),
  710. namedtype.NamedType('iPAddress',
  711. univ.OctetString().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 7))),
  712. namedtype.NamedType('registeredID', univ.ObjectIdentifier().subtype(
  713. implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 8)))
  714. )
  715. class BaseDistance(univ.Integer):
  716. pass
  717. BaseDistance.subtypeSpec = constraint.ValueRangeConstraint(0, MAX)
  718. class GeneralSubtree(univ.Sequence):
  719. pass
  720. GeneralSubtree.componentType = namedtype.NamedTypes(
  721. namedtype.NamedType('base', GeneralName()),
  722. namedtype.DefaultedNamedType('minimum', BaseDistance().subtype(
  723. implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)).subtype(value=0)),
  724. namedtype.OptionalNamedType('maximum', BaseDistance().subtype(
  725. implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))
  726. )
  727. class GeneralNames(univ.SequenceOf):
  728. pass
  729. GeneralNames.componentType = GeneralName()
  730. GeneralNames.subtypeSpec = constraint.ValueSizeConstraint(1, MAX)
  731. class DistributionPointName(univ.Choice):
  732. pass
  733. DistributionPointName.componentType = namedtype.NamedTypes(
  734. namedtype.NamedType('fullName',
  735. GeneralNames().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
  736. namedtype.NamedType('nameRelativeToCRLIssuer', RelativeDistinguishedName().subtype(
  737. implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))
  738. )
  739. class ReasonFlags(univ.BitString):
  740. pass
  741. ReasonFlags.namedValues = namedval.NamedValues(
  742. ('unused', 0),
  743. ('keyCompromise', 1),
  744. ('cACompromise', 2),
  745. ('affiliationChanged', 3),
  746. ('superseded', 4),
  747. ('cessationOfOperation', 5),
  748. ('certificateHold', 6),
  749. ('privilegeWithdrawn', 7),
  750. ('aACompromise', 8)
  751. )
  752. class IssuingDistributionPoint(univ.Sequence):
  753. pass
  754. IssuingDistributionPoint.componentType = namedtype.NamedTypes(
  755. namedtype.OptionalNamedType('distributionPoint', DistributionPointName().subtype(
  756. implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
  757. namedtype.DefaultedNamedType('onlyContainsUserCerts', univ.Boolean().subtype(
  758. implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)).subtype(value=0)),
  759. namedtype.DefaultedNamedType('onlyContainsCACerts', univ.Boolean().subtype(
  760. implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2)).subtype(value=0)),
  761. namedtype.OptionalNamedType('onlySomeReasons', ReasonFlags().subtype(
  762. implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3))),
  763. namedtype.DefaultedNamedType('indirectCRL', univ.Boolean().subtype(
  764. implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 4)).subtype(value=0)),
  765. namedtype.DefaultedNamedType('onlyContainsAttributeCerts', univ.Boolean().subtype(
  766. implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 5)).subtype(value=0))
  767. )
  768. id_ce_certificatePolicies = _buildOid(id_ce, 32)
  769. id_kp_emailProtection = _buildOid(id_kp, 4)
  770. class AccessDescription(univ.Sequence):
  771. pass
  772. AccessDescription.componentType = namedtype.NamedTypes(
  773. namedtype.NamedType('accessMethod', univ.ObjectIdentifier()),
  774. namedtype.NamedType('accessLocation', GeneralName())
  775. )
  776. class IssuerAltName(GeneralNames):
  777. pass
  778. id_ce_cRLDistributionPoints = _buildOid(id_ce, 31)
  779. holdInstruction = _buildOid(2, 2, 840, 10040, 2)
  780. id_holdinstruction_callissuer = _buildOid(holdInstruction, 2)
  781. id_ce_subjectDirectoryAttributes = _buildOid(id_ce, 9)
  782. id_ce_issuingDistributionPoint = _buildOid(id_ce, 28)
  783. class DistributionPoint(univ.Sequence):
  784. pass
  785. DistributionPoint.componentType = namedtype.NamedTypes(
  786. namedtype.OptionalNamedType('distributionPoint', DistributionPointName().subtype(
  787. implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
  788. namedtype.OptionalNamedType('reasons', ReasonFlags().subtype(
  789. implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
  790. namedtype.OptionalNamedType('cRLIssuer', GeneralNames().subtype(
  791. implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2)))
  792. )
  793. class CRLDistributionPoints(univ.SequenceOf):
  794. pass
  795. CRLDistributionPoints.componentType = DistributionPoint()
  796. CRLDistributionPoints.subtypeSpec = constraint.ValueSizeConstraint(1, MAX)
  797. class GeneralSubtrees(univ.SequenceOf):
  798. pass
  799. GeneralSubtrees.componentType = GeneralSubtree()
  800. GeneralSubtrees.subtypeSpec = constraint.ValueSizeConstraint(1, MAX)
  801. class NameConstraints(univ.Sequence):
  802. pass
  803. NameConstraints.componentType = namedtype.NamedTypes(
  804. namedtype.OptionalNamedType('permittedSubtrees', GeneralSubtrees().subtype(
  805. implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
  806. namedtype.OptionalNamedType('excludedSubtrees', GeneralSubtrees().subtype(
  807. implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))
  808. )
  809. class SubjectDirectoryAttributes(univ.SequenceOf):
  810. pass
  811. SubjectDirectoryAttributes.componentType = Attribute()
  812. SubjectDirectoryAttributes.subtypeSpec = constraint.ValueSizeConstraint(1, MAX)
  813. id_kp_OCSPSigning = _buildOid(id_kp, 9)
  814. id_kp_timeStamping = _buildOid(id_kp, 8)
  815. class DisplayText(univ.Choice):
  816. pass
  817. DisplayText.componentType = namedtype.NamedTypes(
  818. namedtype.NamedType('ia5String', char.IA5String().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, 200))),
  819. namedtype.NamedType('visibleString',
  820. char.VisibleString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, 200))),
  821. namedtype.NamedType('bmpString', char.BMPString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, 200))),
  822. namedtype.NamedType('utf8String', char.UTF8String().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, 200)))
  823. )
  824. class NoticeReference(univ.Sequence):
  825. pass
  826. NoticeReference.componentType = namedtype.NamedTypes(
  827. namedtype.NamedType('organization', DisplayText()),
  828. namedtype.NamedType('noticeNumbers', univ.SequenceOf(componentType=univ.Integer()))
  829. )
  830. class UserNotice(univ.Sequence):
  831. pass
  832. UserNotice.componentType = namedtype.NamedTypes(
  833. namedtype.OptionalNamedType('noticeRef', NoticeReference()),
  834. namedtype.OptionalNamedType('explicitText', DisplayText())
  835. )
  836. class PolicyQualifierId(univ.ObjectIdentifier):
  837. pass
  838. policyQualifierInfoMap = {
  839. }
  840. class PolicyQualifierInfo(univ.Sequence):
  841. componentType = namedtype.NamedTypes(
  842. namedtype.NamedType('policyQualifierId', PolicyQualifierId()),
  843. namedtype.NamedType(
  844. 'qualifier', univ.Any(),
  845. openType=opentype.OpenType('policyQualifierId', policyQualifierInfoMap)
  846. )
  847. )
  848. class CertPolicyId(univ.ObjectIdentifier):
  849. pass
  850. class PolicyInformation(univ.Sequence):
  851. pass
  852. PolicyInformation.componentType = namedtype.NamedTypes(
  853. namedtype.NamedType('policyIdentifier', CertPolicyId()),
  854. namedtype.OptionalNamedType('policyQualifiers', univ.SequenceOf(componentType=PolicyQualifierInfo()))
  855. )
  856. class CertificatePolicies(univ.SequenceOf):
  857. pass
  858. CertificatePolicies.componentType = PolicyInformation()
  859. CertificatePolicies.subtypeSpec = constraint.ValueSizeConstraint(1, MAX)
  860. class SubjectAltName(GeneralNames):
  861. pass
  862. id_ce_basicConstraints = _buildOid(id_ce, 19)
  863. id_ce_authorityKeyIdentifier = _buildOid(id_ce, 35)
  864. id_kp_codeSigning = _buildOid(id_kp, 3)
  865. class BasicConstraints(univ.Sequence):
  866. pass
  867. BasicConstraints.componentType = namedtype.NamedTypes(
  868. namedtype.DefaultedNamedType('cA', univ.Boolean().subtype(value=0)),
  869. namedtype.OptionalNamedType('pathLenConstraint',
  870. univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(0, MAX)))
  871. )
  872. id_ce_certificateIssuer = _buildOid(id_ce, 29)
  873. class PolicyMappings(univ.SequenceOf):
  874. pass
  875. PolicyMappings.componentType = univ.Sequence(
  876. componentType=namedtype.NamedTypes(
  877. namedtype.NamedType('issuerDomainPolicy', CertPolicyId()),
  878. namedtype.NamedType('subjectDomainPolicy', CertPolicyId())
  879. )
  880. )
  881. PolicyMappings.subtypeSpec = constraint.ValueSizeConstraint(1, MAX)
  882. class InhibitAnyPolicy(SkipCerts):
  883. pass
  884. anyPolicy = _buildOid(id_ce_certificatePolicies, 0)
  885. class CRLNumber(univ.Integer):
  886. pass
  887. CRLNumber.subtypeSpec = constraint.ValueRangeConstraint(0, MAX)
  888. class BaseCRLNumber(CRLNumber):
  889. pass
  890. id_ce_nameConstraints = _buildOid(id_ce, 30)
  891. id_kp_serverAuth = _buildOid(id_kp, 1)
  892. id_ce_freshestCRL = _buildOid(id_ce, 46)
  893. id_ce_cRLReasons = _buildOid(id_ce, 21)
  894. id_ce_extKeyUsage = _buildOid(id_ce, 37)
  895. class KeyIdentifier(univ.OctetString):
  896. pass
  897. class AuthorityKeyIdentifier(univ.Sequence):
  898. pass
  899. AuthorityKeyIdentifier.componentType = namedtype.NamedTypes(
  900. namedtype.OptionalNamedType('keyIdentifier', KeyIdentifier().subtype(
  901. implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
  902. namedtype.OptionalNamedType('authorityCertIssuer', GeneralNames().subtype(
  903. implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),
  904. namedtype.OptionalNamedType('authorityCertSerialNumber', CertificateSerialNumber().subtype(
  905. implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2)))
  906. )
  907. class FreshestCRL(CRLDistributionPoints):
  908. pass
  909. id_ce_policyConstraints = _buildOid(id_ce, 36)
  910. id_pe_authorityInfoAccess = _buildOid(id_pe, 1)
  911. class AuthorityInfoAccessSyntax(univ.SequenceOf):
  912. pass
  913. AuthorityInfoAccessSyntax.componentType = AccessDescription()
  914. AuthorityInfoAccessSyntax.subtypeSpec = constraint.ValueSizeConstraint(1, MAX)
  915. id_holdinstruction_none = _buildOid(holdInstruction, 1)
  916. class CPSuri(char.IA5String):
  917. pass
  918. id_pe_subjectInfoAccess = _buildOid(id_pe, 11)
  919. class SubjectKeyIdentifier(KeyIdentifier):
  920. pass
  921. id_ce_subjectAltName = _buildOid(id_ce, 17)
  922. class KeyPurposeId(univ.ObjectIdentifier):
  923. pass
  924. class ExtKeyUsageSyntax(univ.SequenceOf):
  925. pass
  926. ExtKeyUsageSyntax.componentType = KeyPurposeId()
  927. ExtKeyUsageSyntax.subtypeSpec = constraint.ValueSizeConstraint(1, MAX)
  928. class HoldInstructionCode(univ.ObjectIdentifier):
  929. pass
  930. id_ce_deltaCRLIndicator = _buildOid(id_ce, 27)
  931. id_ce_keyUsage = _buildOid(id_ce, 15)
  932. id_ce_holdInstructionCode = _buildOid(id_ce, 23)
  933. class SubjectInfoAccessSyntax(univ.SequenceOf):
  934. pass
  935. SubjectInfoAccessSyntax.componentType = AccessDescription()
  936. SubjectInfoAccessSyntax.subtypeSpec = constraint.ValueSizeConstraint(1, MAX)
  937. class InvalidityDate(useful.GeneralizedTime):
  938. pass
  939. class KeyUsage(univ.BitString):
  940. pass
  941. KeyUsage.namedValues = namedval.NamedValues(
  942. ('digitalSignature', 0),
  943. ('nonRepudiation', 1),
  944. ('keyEncipherment', 2),
  945. ('dataEncipherment', 3),
  946. ('keyAgreement', 4),
  947. ('keyCertSign', 5),
  948. ('cRLSign', 6),
  949. ('encipherOnly', 7),
  950. ('decipherOnly', 8)
  951. )
  952. id_ce_invalidityDate = _buildOid(id_ce, 24)
  953. id_ce_policyMappings = _buildOid(id_ce, 33)
  954. anyExtendedKeyUsage = _buildOid(id_ce_extKeyUsage, 0)
  955. id_ce_privateKeyUsagePeriod = _buildOid(id_ce, 16)
  956. id_ce_cRLNumber = _buildOid(id_ce, 20)
  957. class CertificateIssuer(GeneralNames):
  958. pass
  959. id_holdinstruction_reject = _buildOid(holdInstruction, 3)
  960. class PolicyConstraints(univ.Sequence):
  961. pass
  962. PolicyConstraints.componentType = namedtype.NamedTypes(
  963. namedtype.OptionalNamedType('requireExplicitPolicy',
  964. SkipCerts().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
  965. namedtype.OptionalNamedType('inhibitPolicyMapping',
  966. SkipCerts().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))
  967. )
  968. id_kp_clientAuth = _buildOid(id_kp, 2)
  969. id_ce_subjectKeyIdentifier = _buildOid(id_ce, 14)
  970. id_ce_inhibitAnyPolicy = _buildOid(id_ce, 54)
  971. # map of AttributeType -> AttributeValue
  972. _certificateAttributesMapUpdate = {
  973. id_at_name: X520name(),
  974. id_at_surname: X520name(),
  975. id_at_givenName: X520name(),
  976. id_at_initials: X520name(),
  977. id_at_generationQualifier: X520name(),
  978. id_at_commonName: X520CommonName(),
  979. id_at_localityName: X520LocalityName(),
  980. id_at_stateOrProvinceName: X520StateOrProvinceName(),
  981. id_at_organizationName: X520OrganizationName(),
  982. id_at_organizationalUnitName: X520OrganizationalUnitName(),
  983. id_at_title: X520Title(),
  984. id_at_dnQualifier: X520dnQualifier(),
  985. id_at_countryName: X520countryName(),
  986. id_at_serialNumber: X520SerialNumber(),
  987. id_at_pseudonym: X520Pseudonym(),
  988. id_domainComponent: DomainComponent(),
  989. id_emailAddress: EmailAddress(),
  990. }
  991. certificateAttributesMap.update(_certificateAttributesMapUpdate)
  992. # map of Certificate Extension OIDs to Extensions
  993. _certificateExtensionsMap = {
  994. id_ce_authorityKeyIdentifier: AuthorityKeyIdentifier(),
  995. id_ce_subjectKeyIdentifier: SubjectKeyIdentifier(),
  996. id_ce_keyUsage: KeyUsage(),
  997. id_ce_privateKeyUsagePeriod: PrivateKeyUsagePeriod(),
  998. id_ce_certificatePolicies: PolicyInformation(), # could be a sequence of concat'ed objects?
  999. id_ce_policyMappings: PolicyMappings(),
  1000. id_ce_subjectAltName: SubjectAltName(),
  1001. id_ce_issuerAltName: IssuerAltName(),
  1002. id_ce_subjectDirectoryAttributes: SubjectDirectoryAttributes(),
  1003. id_ce_basicConstraints: BasicConstraints(),
  1004. id_ce_nameConstraints: NameConstraints(),
  1005. id_ce_policyConstraints: PolicyConstraints(),
  1006. id_ce_extKeyUsage: ExtKeyUsageSyntax(),
  1007. id_ce_cRLDistributionPoints: CRLDistributionPoints(),
  1008. id_pe_authorityInfoAccess: AuthorityInfoAccessSyntax(),
  1009. id_ce_cRLNumber: univ.Integer(),
  1010. id_ce_deltaCRLIndicator: BaseCRLNumber(),
  1011. id_ce_issuingDistributionPoint: IssuingDistributionPoint(),
  1012. id_ce_cRLReasons: CRLReason(),
  1013. id_ce_holdInstructionCode: univ.ObjectIdentifier(),
  1014. id_ce_invalidityDate: useful.GeneralizedTime(),
  1015. id_ce_certificateIssuer: GeneralNames(),
  1016. }
  1017. certificateExtensionsMap.update(_certificateExtensionsMap)