Leaked source code of windows server 2003
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.

777 lines
28 KiB

  1. ----------------------------------------------------------------------------
  2. -- X509.ASN
  3. --
  4. -- ASN.1 definitions for X509 v3 certificates
  5. ----------------------------------------------------------------------------
  6. --#comment "Copyright (C) Microsoft Corporation, 1996-1999. All rights reserved."--
  7. --#comment "ASN.1 definitions for X509 v3 certificates"--
  8. --#SS.basic lenptr-- -- set of and sequence of w/o size constraint
  9. --#SS.sized lenptr-- -- set of and sequence of w/ size constraint
  10. X509
  11. DEFINITIONS EXPLICIT TAGS ::=
  12. BEGIN
  13. HUGEINTEGER ::= INTEGER --#intx-- -- tag 0x02
  14. BITSTRING ::= BIT STRING --#lenptr-- --#nomemcpy-- -- tag 0x03
  15. OCTETSTRING ::= OCTET STRING --#lenptr-- --#nomemcpy-- -- tag 0x04
  16. NOCOPYANY ::= ANY --#nomemcpy--
  17. NUMERICSTRING ::= NumericString --#lenptr-- -- tag 0x12 (18)
  18. PRINTABLESTRING ::= PrintableString --#lenptr-- -- tag 0x13 (19)
  19. TELETEXSTRING ::= TeletexString --#lenptr-- -- tag 0x14 (20)
  20. T61STRING ::= T61String --#lenptr-- -- tag 0x14 (20)
  21. VIDEOTEXSTRING ::= VideotexString --#lenptr-- -- tag 0x15 (21)
  22. IA5STRING ::= IA5String --#lenptr-- -- tag 0x16 (22)
  23. GRAPHICSTRING ::= GraphicString --#lenptr-- -- tag 0x19 (25)
  24. VISIBLESTRING ::= VisibleString --#lenptr-- -- tag 0x1A (26)
  25. ISO646STRING ::= ISO646String --#lenptr-- -- tag 0x1A (26)
  26. GENERALSTRING ::= GeneralString --#lenptr-- -- tag 0x1B (27)
  27. UNIVERSALSTRING ::= UniversalString --#lenptr-- -- tag 0x1C (28)
  28. BMPSTRING ::= BMPString --#lenptr-- -- tag 0x1E (30)
  29. UTF8STRING ::= UTF8String --#lenptr-- -- tag 0x0C (12)
  30. EncodedObjectID ::= OBJECT IDENTIFIER --#public-- --#oid packed--
  31. --------------------------------------------
  32. -- Choice of Any string
  33. --------------------------------------------
  34. AnyString ::= CHOICE {
  35. octetString OCTETSTRING, -- tag 0x04 (04)
  36. numericString NUMERICSTRING, -- tag 0x12 (18)
  37. printableString PRINTABLESTRING, -- tag 0x13 (19)
  38. teletexString TELETEXSTRING, -- tag 0x14 (20) (t61String)
  39. videotexString VIDEOTEXSTRING, -- tag 0x15 (21)
  40. ia5String IA5STRING, -- tag 0x16 (22)
  41. graphicString GRAPHICSTRING, -- tag 0x19 (25)
  42. visibleString VISIBLESTRING, -- tag 0x1A (26) (iso646String)
  43. generalString GENERALSTRING, -- tag 0x1B (27)
  44. universalString UNIVERSALSTRING, -- tag 0x1C (28)
  45. bmpString BMPSTRING, -- tag 0x1E (30)
  46. utf8String UTF8STRING -- tag 0x0C (12)
  47. } --#public--
  48. --------------------------------------------
  49. -- Encoded Bits
  50. --------------------------------------------
  51. Bits ::= BITSTRING --#public--
  52. --------------------------------------------
  53. -- Algorithm Identifier
  54. --------------------------------------------
  55. AlgorithmIdentifier ::= SEQUENCE {
  56. algorithm EncodedObjectID,
  57. parameters NOCOPYANY OPTIONAL
  58. }
  59. --------------------------------------------
  60. -- Name, Attributes
  61. --------------------------------------------
  62. Name ::= SEQUENCE --#public-- OF RelativeDistinguishedName
  63. RelativeDistinguishedName ::= SET OF AttributeTypeValue
  64. AttributeTypeValue ::= SEQUENCE {
  65. type EncodedObjectID,
  66. value NOCOPYANY
  67. }
  68. Attribute ::= SEQUENCE {
  69. type EncodedObjectID,
  70. values AttributeSetValue
  71. } --#public--
  72. AttributeSetValue ::= SET OF NOCOPYANY
  73. Attributes ::= SET --#public-- OF Attribute
  74. --------------------------------------------
  75. -- From PKCS #1: ASN.1 representation for public key
  76. --------------------------------------------
  77. RSAPublicKey ::= SEQUENCE {
  78. modulus HUGEINTEGER, -- n
  79. publicExponent INTEGER (0..4294967295) -- e
  80. } --#public--
  81. --------------------------------------------
  82. -- DSS Public Key Parameters
  83. --------------------------------------------
  84. DSSParameters ::= SEQUENCE {
  85. p HUGEINTEGER,
  86. q HUGEINTEGER,
  87. g HUGEINTEGER
  88. } --#public--
  89. --------------------------------------------
  90. -- DSS Signature
  91. --------------------------------------------
  92. DSSSignature ::= SEQUENCE {
  93. r HUGEINTEGER,
  94. s HUGEINTEGER
  95. } --#public--
  96. --------------------------------------------
  97. -- DH Public Key Parameters
  98. --------------------------------------------
  99. DHParameters ::= SEQUENCE {
  100. p HUGEINTEGER,
  101. g HUGEINTEGER,
  102. privateValueLength HUGEINTEGER OPTIONAL
  103. } --#public--
  104. --------------------------------------------
  105. -- X942 DH Public Key Parameters
  106. --------------------------------------------
  107. X942DhParameters ::= SEQUENCE {
  108. p HUGEINTEGER,
  109. g HUGEINTEGER,
  110. q HUGEINTEGER,
  111. j HUGEINTEGER OPTIONAL,
  112. validationParams X942DhValidationParams OPTIONAL
  113. } --#public--
  114. X942DhValidationParams ::= SEQUENCE {
  115. seed BITSTRING,
  116. pgenCounter INTEGER (0..4294967295)
  117. }
  118. --------------------------------------------
  119. -- X942 DH OtherInfo
  120. --------------------------------------------
  121. X942DhOtherInfo ::= SEQUENCE {
  122. keyInfo X942DhKeySpecificInfo,
  123. pubInfo [0] EXPLICIT OCTETSTRING OPTIONAL,
  124. keyLength [2] EXPLICIT OCTETSTRING -- SIZE (4..4)
  125. } --<PDU>--
  126. X942DhKeySpecificInfo ::= SEQUENCE {
  127. algorithm EncodedObjectID,
  128. counter OCTETSTRING -- SIZE (4..4)
  129. }
  130. --------------------------------------------
  131. -- RC2 CBC Parameters
  132. --------------------------------------------
  133. RC2CBCParameters ::= SEQUENCE {
  134. version INTEGER,
  135. iv OCTETSTRING OPTIONAL
  136. } --#public--
  137. --------------------------------------------
  138. -- SMIME Capabilities
  139. --------------------------------------------
  140. SMIMECapability ::= SEQUENCE {
  141. capabilityID EncodedObjectID,
  142. smimeParameters NOCOPYANY OPTIONAL
  143. }
  144. SMIMECapabilities ::= SEQUENCE --#public-- OF SMIMECapability
  145. --------------------------------------------
  146. -- Subject Public Key Info
  147. --------------------------------------------
  148. SubjectPublicKeyInfo ::= SEQUENCE {
  149. algorithm AlgorithmIdentifier,
  150. subjectPublicKey BITSTRING
  151. } --#public--
  152. --------------------------------------------
  153. -- Choice of Time: UTCTime before 2005, GeneralizedTime
  154. -- starting in 2005.
  155. --------------------------------------------
  156. ChoiceOfTime ::= CHOICE {
  157. utcTime UTCTime,
  158. generalTime GeneralizedTime
  159. } --#public--
  160. --------------------------------------------
  161. -- X509 Certificate
  162. --------------------------------------------
  163. CertificateToBeSigned ::= SEQUENCE {
  164. version [0] CertificateVersion DEFAULT v1,
  165. serialNumber CertificateSerialNumber,
  166. signature AlgorithmIdentifier,
  167. issuer NOCOPYANY, -- really Name
  168. validity Validity,
  169. subject NOCOPYANY, -- really Name
  170. subjectPublicKeyInfo SubjectPublicKeyInfo,
  171. issuerUniqueIdentifier [1] IMPLICIT UniqueIdentifier OPTIONAL,
  172. subjectUniqueIdentifier [2] IMPLICIT UniqueIdentifier OPTIONAL,
  173. extensions [3] Extensions OPTIONAL
  174. } --#public--
  175. CertificateVersion ::= INTEGER {v1(0), v2(1), v3(2)}
  176. CertificateSerialNumber ::= HUGEINTEGER
  177. Validity ::= SEQUENCE {
  178. notBefore ChoiceOfTime,
  179. notAfter ChoiceOfTime
  180. }
  181. UniqueIdentifier ::= BITSTRING
  182. Extensions ::= SEQUENCE --#public-- OF Extension
  183. Extension ::= SEQUENCE {
  184. extnId EncodedObjectID,
  185. critical BOOLEAN DEFAULT FALSE,
  186. extnValue OCTETSTRING
  187. }
  188. --------------------------------------------
  189. -- Signed Content: Cert, CRL or Cert Request
  190. --------------------------------------------
  191. SignedContent ::= SEQUENCE {
  192. toBeSigned NOCOPYANY,
  193. algorithm AlgorithmIdentifier,
  194. signature BITSTRING
  195. } --#public--
  196. --------------------------------------------
  197. -- CRLs
  198. --------------------------------------------
  199. CertificateRevocationListToBeSigned ::= SEQUENCE {
  200. version CRLVersion OPTIONAL, -- if present, must be v2
  201. signature AlgorithmIdentifier,
  202. issuer NOCOPYANY, -- really Name
  203. thisUpdate ChoiceOfTime,
  204. nextUpdate ChoiceOfTime OPTIONAL,
  205. revokedCertificates RevokedCertificates OPTIONAL,
  206. crlExtensions [0] Extensions OPTIONAL
  207. } --#public--
  208. CRLVersion ::= INTEGER {v1(0), v2(1)}
  209. RevokedCertificates ::= SEQUENCE OF CRLEntry
  210. CRLEntry ::= SEQUENCE{
  211. userCertificate CertificateSerialNumber,
  212. revocationDate ChoiceOfTime,
  213. crlEntryExtensions Extensions OPTIONAL
  214. }
  215. --------------------------------------------
  216. -- Certificate Request
  217. --------------------------------------------
  218. CertificationRequestInfo ::= SEQUENCE {
  219. version CertificationRequestInfoVersion,
  220. subject NOCOPYANY, -- really Name
  221. subjectPublicKeyInfo SubjectPublicKeyInfo,
  222. attributes [0] IMPLICIT Attributes
  223. } --#public--
  224. --------------------------------------------
  225. -- Certificate Request (some have interpretted attributes
  226. -- as being optional)
  227. --------------------------------------------
  228. CertificationRequestInfoDecode ::= SEQUENCE {
  229. version CertificationRequestInfoVersion,
  230. subject NOCOPYANY, -- really Name
  231. subjectPublicKeyInfo SubjectPublicKeyInfo,
  232. attributes [0] IMPLICIT Attributes OPTIONAL
  233. } --#public--
  234. CertificationRequestInfoVersion ::= INTEGER
  235. --------------------------------------------
  236. -- Netscape's Keygen Request
  237. --------------------------------------------
  238. KeygenRequestInfo ::= SEQUENCE {
  239. subjectPublicKeyInfo SubjectPublicKeyInfo,
  240. challenge IA5STRING
  241. } --#public--
  242. --------------------------------------------
  243. -- X509 Extensions
  244. --------------------------------------------
  245. --------------------------------------------
  246. -- Authority Key Identifier
  247. --
  248. -- A CA may have more than one certificate.
  249. -- This extension is used to identify which
  250. -- CA certificate must be used. Non-Critical
  251. --
  252. -- Because Name has a CHOICE, [1] needs to be EXPLICIT.
  253. --------------------------------------------
  254. AuthorityKeyId ::= SEQUENCE {
  255. keyIdentifier [0] IMPLICIT KeyIdentifier OPTIONAL,
  256. certIssuer [1] EXPLICIT NOCOPYANY OPTIONAL, -- really Name
  257. certSerialNumber [2] IMPLICIT CertificateSerialNumber OPTIONAL
  258. } --#public--
  259. KeyIdentifier ::= OCTETSTRING
  260. --------------------------------------------
  261. -- Key Attributes
  262. --
  263. -- Certificates are either used for Signature verification
  264. -- or date encryption. One certificate cannot be used to do both
  265. -- The primary use if this extension is to provide an identifier
  266. -- for the intended use of that key.
  267. --------------------------------------------
  268. KeyAttributes ::= SEQUENCE {
  269. keyIdentifier KeyIdentifier OPTIONAL,
  270. intendedKeyUsage KeyUsage OPTIONAL,
  271. privateKeyUsagePeriod PrivateKeyValidity OPTIONAL
  272. } --#public--
  273. KeyUsage ::= BITSTRING
  274. PrivateKeyValidity ::= SEQUENCE {
  275. notBefore [0] IMPLICIT GeneralizedTime OPTIONAL,
  276. notAfter [1] IMPLICIT GeneralizedTime OPTIONAL
  277. }
  278. --------------------------------------------
  279. -- Key Usage Restriction
  280. --
  281. -- This extension indicates a restriction imposed as to the purposes
  282. -- for which, and the policies under which the certified public key may
  283. -- be used
  284. --------------------------------------------
  285. KeyUsageRestriction ::= SEQUENCE {
  286. certPolicySet CertPolicySet OPTIONAL,
  287. restrictedKeyUsage KeyUsage OPTIONAL
  288. } --#public--
  289. CertPolicySet ::= SEQUENCE OF CertPolicyId
  290. CertPolicyId ::= SEQUENCE OF CertPolicyElementId
  291. CertPolicyElementId ::= EncodedObjectID
  292. --------------------------------------------
  293. -- AltNames
  294. --
  295. -- This extension contains one or more alternative names
  296. -- using any variety of name forms that are bound by the
  297. -- CA to the certified public key.
  298. --
  299. -- Because Name has a CHOICE, [4] needs to be EXPLICIT.
  300. --------------------------------------------
  301. AltNames ::= SEQUENCE --#public-- OF GeneralName
  302. GeneralNames ::= AltNames
  303. GeneralName ::= CHOICE {
  304. otherName [0] IMPLICIT OtherName,
  305. rfc822Name [1] IMPLICIT IA5STRING,
  306. dNSName [2] IMPLICIT IA5STRING,
  307. x400Address [3] IMPLICIT SeqOfAny,
  308. directoryName [4] EXPLICIT NOCOPYANY, -- really Name
  309. ediPartyName [5] IMPLICIT SeqOfAny,
  310. uniformResourceLocator [6] IMPLICIT IA5STRING,
  311. iPAddress [7] IMPLICIT OCTETSTRING,
  312. registeredID [8] IMPLICIT EncodedObjectID
  313. }
  314. OtherName ::= SEQUENCE {
  315. type EncodedObjectID,
  316. value [0] EXPLICIT NOCOPYANY
  317. }
  318. -- Because AnyString has a CHOICE, [0], [1] need to be EXPLICIT.
  319. EDIPartyName ::= SEQUENCE {
  320. nameAssigner [0] EXPLICIT NOCOPYANY OPTIONAL,
  321. partyName [1] EXPLICIT NOCOPYANY
  322. }
  323. --------------------------------------------
  324. -- Basic Constraints Extension
  325. --
  326. -- This extension indicates whether the certified subject may act
  327. -- as a CA, an end entity or both
  328. --------------------------------------------
  329. BasicConstraints ::= SEQUENCE {
  330. subjectType SubjectType,
  331. pathLenConstraint INTEGER OPTIONAL,
  332. subtreesConstraint SubtreesConstraint OPTIONAL
  333. } --#public--
  334. SubjectType ::= BITSTRING
  335. SubtreesConstraint ::= SEQUENCE OF NOCOPYANY -- really OF Name
  336. --------------------------------------------
  337. -- Basic Constraints #2 Extension (Added for S/MIME) (2.5.29.19)
  338. --
  339. -- This extension serves to delimit the role and position of an
  340. -- issuing authority or end-user certificate plays in a chain of
  341. -- certificates.
  342. --------------------------------------------
  343. BasicConstraints2 ::= SEQUENCE {
  344. cA BOOLEAN DEFAULT FALSE,
  345. pathLenConstraint INTEGER OPTIONAL
  346. } --#public--
  347. --------------------------------------------
  348. -- Key Usage Extension (Added for S/MIME) (2.5.29.15)
  349. --
  350. -- This extension serves to limit the technical purposes for which a
  351. -- public key listed in a valid certificate may be used.
  352. --------------------------------------------
  353. -- KeyUsageExtension ::= Bits
  354. --------------------------------------------
  355. -- Certificate Policies Extension (Added for S/MIME) (2.5.29.32)
  356. --
  357. -- This extension limits a certificate to the practices required by
  358. -- relying parties.
  359. --------------------------------------------
  360. CertificatePolicies ::= SEQUENCE --#public-- OF PolicyInformation
  361. PolicyInformation ::= SEQUENCE {
  362. policyIdentifier EncodedObjectID,
  363. policyQualifiers PolicyQualifiers OPTIONAL
  364. }
  365. PolicyQualifiers ::= SEQUENCE OF PolicyQualifierInfo
  366. PolicyQualifierInfo ::= SEQUENCE {
  367. policyQualifierId EncodedObjectID,
  368. qualifier NOCOPYANY OPTIONAL
  369. }
  370. UserNotice ::= SEQUENCE {
  371. noticeRef NoticeReference OPTIONAL,
  372. explicitText DisplayText OPTIONAL
  373. } --#public--
  374. NoticeReference ::= SEQUENCE {
  375. organization IA5String,
  376. noticeNumbers SEQUENCE OF INTEGER
  377. }
  378. DisplayText ::= CHOICE {
  379. theVisibleString VisibleString,
  380. theBMPString BMPString
  381. }
  382. -- This is to support the old definition of policies and qualifiers
  383. CertificatePolicies95 ::= SEQUENCE --#public-- OF PolicyQualifiers
  384. VerisignQualifier1 ::= SEQUENCE {
  385. practicesReference IA5String OPTIONAL,
  386. noticeId [0] EXPLICIT EncodedObjectID OPTIONAL,
  387. nsiNoticeId [1] EXPLICIT EncodedObjectID OPTIONAL,
  388. cpsURLs CpsURLs OPTIONAL
  389. } --#public--
  390. CpsURLs ::= SEQUENCE OF SEQUENCE {
  391. url IA5String,
  392. digestAlgorithmId AlgorithmIdentifier OPTIONAL,
  393. digest OCTETSTRING OPTIONAL
  394. }
  395. --------------------------------------------
  396. -- Authority Key Identifier #2 (2.5.29.35)
  397. --
  398. -- A CA may have more than one certificate.
  399. -- This extension is used to identify which
  400. -- CA certificate must be used. Non-Critical
  401. --------------------------------------------
  402. AuthorityKeyId2 ::= SEQUENCE {
  403. keyIdentifier [0] IMPLICIT KeyIdentifier OPTIONAL,
  404. authorityCertIssuer [1] IMPLICIT GeneralNames OPTIONAL,
  405. authorityCertSerialNumber [2] IMPLICIT CertificateSerialNumber OPTIONAL
  406. } --#public--
  407. --------------------------------------------
  408. -- Authority Information Access certificate Extension
  409. --
  410. -- The authority information access extension indicates how to access CA
  411. -- information and services for the issuer of the certificate in which
  412. -- the extension appears. This extension may be
  413. -- included in subject or CA certificates and may be critical or non-
  414. -- critical.
  415. --------------------------------------------
  416. AccessDescription ::= SEQUENCE {
  417. accessMethod EncodedObjectID,
  418. accessLocation GeneralName
  419. }
  420. AuthorityInfoAccess ::= SEQUENCE --#public-- OF AccessDescription
  421. --------------------------------------------
  422. -- CRL Distribution Points Extension
  423. --------------------------------------------
  424. CRLDistributionPoints ::= SEQUENCE --#public-- OF DistributionPoint
  425. DistributionPoint ::= SEQUENCE {
  426. distributionPoint [0] EXPLICIT DistributionPointName OPTIONAL,
  427. reasons [1] IMPLICIT ReasonFlags OPTIONAL,
  428. cRLIssuer [2] IMPLICIT GeneralNames OPTIONAL
  429. }
  430. DistributionPointName ::= CHOICE {
  431. fullName [0] IMPLICIT GeneralNames,
  432. nameRelativeToCRLIssuer [1] IMPLICIT RelativeDistinguishedName
  433. }
  434. ReasonFlags ::= BITSTRING
  435. --------------------------------------------
  436. -- Some predefined basic types used as extensions
  437. --------------------------------------------
  438. IntegerType ::= INTEGER --#public--
  439. HugeIntegerType ::= HUGEINTEGER --#public--
  440. OctetStringType ::= OCTETSTRING --#public--
  441. -- with -noconstraints OSS encode/decode allows any enumerated value
  442. EnumeratedType ::= ENUMERATED {
  443. dummyEnumerated0 (0)
  444. } --#public--
  445. UtcTime ::= UTCTime --#public--
  446. ContentInfo ::= SEQUENCE {
  447. contentType ContentType,
  448. content [0] EXPLICIT NOCOPYANY OPTIONAL
  449. } --#public--
  450. ContentType ::= EncodedObjectID
  451. ContentInfoSeqOfAny ::= SEQUENCE {
  452. contentType ContentType,
  453. contentSeqOfAny [0] EXPLICIT SeqOfAny OPTIONAL
  454. } --#public--
  455. SeqOfAny ::= SEQUENCE --#public-- OF NOCOPYANY
  456. TimeStampRequest ::= SEQUENCE {
  457. timeStampAlgorithm EncodedObjectID,
  458. attributesTS Attributes OPTIONAL,
  459. content ContentInfo
  460. } --#public--
  461. ContentInfoOTS ::= SEQUENCE {
  462. contentTypeOTS ContentType,
  463. contentOTS [0] EXPLICIT OCTETSTRING OPTIONAL
  464. } --#public--
  465. TimeStampRequestOTS ::= SEQUENCE {
  466. timeStampAlgorithmOTS EncodedObjectID,
  467. attributesOTS Attributes OPTIONAL,
  468. contentOTS ContentInfoOTS
  469. } --#public--
  470. --------------------------------------------
  471. -- Enhanced Key Usage Extension (2.5.29.32)
  472. --------------------------------------------
  473. EnhancedKeyUsage ::= SEQUENCE --#public-- OF UsageIdentifier
  474. UsageIdentifier ::= EncodedObjectID
  475. --------------------------------------------
  476. -- Certificate Trust List (CTL)
  477. --------------------------------------------
  478. CertificateTrustList ::= SEQUENCE {
  479. version CTLVersion DEFAULT v1,
  480. subjectUsage SubjectUsage,
  481. listIdentifier ListIdentifier OPTIONAL,
  482. sequenceNumber HUGEINTEGER OPTIONAL,
  483. ctlThisUpdate ChoiceOfTime,
  484. ctlNextUpdate ChoiceOfTime OPTIONAL,
  485. subjectAlgorithm AlgorithmIdentifier,
  486. trustedSubjects TrustedSubjects OPTIONAL,
  487. ctlExtensions [0] EXPLICIT Extensions OPTIONAL
  488. } --#public--
  489. CTLVersion ::= INTEGER {v1(0)}
  490. SubjectUsage ::= EnhancedKeyUsage
  491. ListIdentifier ::= OCTETSTRING
  492. TrustedSubjects ::= SEQUENCE OF TrustedSubject
  493. TrustedSubject ::= SEQUENCE{
  494. subjectIdentifier SubjectIdentifier,
  495. subjectAttributes Attributes OPTIONAL
  496. }
  497. SubjectIdentifier ::= OCTETSTRING
  498. -----------------------------------------------------------------------
  499. -- Enrollment Name Value Pair Authenticated Attributes in RA PKCS7s
  500. -----------------------------------------------------------------------
  501. EnrollmentNameValuePair ::= SEQUENCE {
  502. name BMPSTRING,
  503. value BMPSTRING
  504. } --#public--
  505. -----------------------------------------------------------------------
  506. -- PKCS10 Attribute to decribe the CSP Provider used
  507. -----------------------------------------------------------------------
  508. CSPProvider ::= SEQUENCE {
  509. keySpec INTEGER,
  510. cspName BMPSTRING,
  511. signature BITSTRING
  512. } --#public--
  513. -----------------------------------------------------------------------
  514. -- CertificatePair Attribute
  515. -----------------------------------------------------------------------
  516. CertificatePair ::= SEQUENCE {
  517. forward [0] EXPLICIT NOCOPYANY OPTIONAL,
  518. reverse [1] EXPLICIT NOCOPYANY OPTIONAL
  519. } --#public--
  520. --------------------------------------------
  521. -- Name Constraints Extension
  522. --------------------------------------------
  523. NameConstraints ::= SEQUENCE {
  524. permittedSubtrees [0] IMPLICIT GeneralSubtrees OPTIONAL,
  525. excludedSubtrees [1] IMPLICIT GeneralSubtrees OPTIONAL
  526. } --#public--
  527. GeneralSubtrees ::= SEQUENCE OF GeneralSubtree
  528. GeneralSubtree ::= SEQUENCE {
  529. base GeneralName,
  530. minimum [0] IMPLICIT BaseDistance DEFAULT 0,
  531. maximum [1] IMPLICIT BaseDistance OPTIONAL
  532. }
  533. BaseDistance ::= INTEGER (0..4294967295)
  534. --------------------------------------------
  535. -- CRL Issuing Distribution Point Extension
  536. --------------------------------------------
  537. IssuingDistributionPoint ::= SEQUENCE {
  538. issuingDistributionPoint [0] EXPLICIT DistributionPointName OPTIONAL,
  539. onlyContainsUserCerts [1] IMPLICIT BOOLEAN DEFAULT FALSE,
  540. onlyContainsCACerts [2] IMPLICIT BOOLEAN DEFAULT FALSE,
  541. onlySomeReasons [3] IMPLICIT ReasonFlags OPTIONAL,
  542. indirectCRL [4] IMPLICIT BOOLEAN DEFAULT FALSE
  543. } --#public--
  544. --------------------------------------------
  545. -- Cross Cert Distribution Points Extension
  546. --------------------------------------------
  547. CrossCertDistPoints ::= SEQUENCE {
  548. syncDeltaTime INTEGER (0..4294967295) OPTIONAL,
  549. crossCertDistPointNames CrossCertDistPointNames
  550. } --#public--
  551. CrossCertDistPointNames ::= SEQUENCE OF GeneralNames
  552. --------------------------------------------
  553. -- Policy Mappings Extension
  554. --------------------------------------------
  555. PolicyMappings ::= SEQUENCE --#public-- OF PolicyMapping
  556. PolicyMapping ::= SEQUENCE {
  557. issuerDomainPolicy EncodedObjectID,
  558. subjectDomainPolicy EncodedObjectID
  559. }
  560. --------------------------------------------
  561. -- Policy Constraints Extension
  562. --------------------------------------------
  563. PolicyConstraints ::= SEQUENCE {
  564. requireExplicitPolicy [0] IMPLICIT SkipCerts OPTIONAL,
  565. inhibitPolicyMapping [1] IMPLICIT SkipCerts OPTIONAL
  566. } --#public--
  567. SkipCerts ::= INTEGER (0..4294967295)
  568. --------------------------------------------
  569. -- CMC Data Structures
  570. --------------------------------------------
  571. CmcData ::= SEQUENCE {
  572. controlSequence ControlSequence,
  573. reqSequence ReqSequence,
  574. cmsSequence CmsSequence,
  575. otherMsgSequence OtherMsgSequence
  576. } --#public--
  577. CmcResponseBody ::= SEQUENCE {
  578. controlSequence ControlSequence,
  579. cmsSequence CmsSequence,
  580. otherMsgSequence OtherMsgSequence
  581. } --#public--
  582. ControlSequence ::= SEQUENCE OF TaggedAttribute
  583. ReqSequence ::= SEQUENCE OF TaggedRequest
  584. CmsSequence ::= SEQUENCE OF TaggedContentInfo
  585. OtherMsgSequence ::= SEQUENCE OF TaggedOtherMsg
  586. BodyPartID ::= INTEGER (0..4294967295)
  587. BodyPartIDSequence ::= SEQUENCE OF BodyPartID
  588. TaggedAttribute ::= SEQUENCE {
  589. bodyPartID BodyPartID,
  590. type EncodedObjectID,
  591. values AttributeSetValue
  592. }
  593. TaggedRequest ::= CHOICE {
  594. tcr [0] IMPLICIT TaggedCertificationRequest
  595. }
  596. TaggedCertificationRequest ::= SEQUENCE {
  597. bodyPartID BodyPartID,
  598. certificationRequest NOCOPYANY
  599. }
  600. TaggedContentInfo ::= SEQUENCE {
  601. bodyPartID BodyPartID,
  602. contentInfo NOCOPYANY
  603. }
  604. TaggedOtherMsg ::= SEQUENCE {
  605. bodyPartID BodyPartID,
  606. otherMsgType EncodedObjectID,
  607. otherMsgValue NOCOPYANY
  608. }
  609. CmcStatusInfo ::= SEQUENCE {
  610. cmcStatus INTEGER (0..4294967295),
  611. bodyList BodyPartIDSequence,
  612. statusString UTF8STRING OPTIONAL,
  613. otherInfo CHOICE {
  614. failInfo INTEGER (0..4294967295),
  615. pendInfo PendInfo
  616. } OPTIONAL
  617. } --#public--
  618. PendInfo ::= SEQUENCE {
  619. pendToken OCTETSTRING,
  620. pendTime GeneralizedTime
  621. }
  622. CmcAddExtensions ::= SEQUENCE {
  623. pkiDataReference BodyPartID,
  624. certReferences BodyPartIDSequence,
  625. extensions Extensions
  626. } --#public--
  627. CmcAddAttributes ::= SEQUENCE {
  628. pkiDataReference BodyPartID,
  629. certReferences BodyPartIDSequence,
  630. attributes Attributes
  631. } --#public--
  632. --------------------------------------------
  633. -- Certificate Template
  634. --------------------------------------------
  635. CertificateTemplate ::= SEQUENCE {
  636. templateID EncodedObjectID,
  637. templateMajorVersion TemplateVersion,
  638. templateMinorVersion TemplateVersion OPTIONAL
  639. } --#public--
  640. TemplateVersion ::= INTEGER (0..4294967295)
  641. END