Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.
 
 
 
 

1544 рядки
46 KiB

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