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.

243 lines
7.3 KiB

  1. --------------------------------------------------------------------------
  2. -- ESS.ASN
  3. --
  4. -- ASN.1 definitions for S/MIME Extended Security Services
  5. --------------------------------------------------------------------------
  6. ExtendedSecurityServices
  7. -- { iso(1) member-body(2) us(840) rsadsi(113549)
  8. -- pkcs(1) pkcs-9(9) smime(16) modules(0) ess(2) }
  9. DEFINITIONS IMPLICIT TAGS ::=
  10. BEGIN
  11. --IMPORTS
  12. -- Cryptographic Message Syntax (CMS)
  13. --- ContentType, EntityIdentifier, SubjectKeyIdentifier, Version
  14. --- FROM CryptographicMessageSyntax { iso(1) member-body(2) us(840)
  15. --- rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) modules(0) cms(1) };
  16. -- EntityIdentifier ::= CHOICE {
  17. -- issuerAndSerialNumber IssuerAndSerialNumber,
  18. -- subjectKeyIdentifier SubjectKeyIdentifier }
  19. ObjectIdentifier ::= OBJECT IDENTIFIER --<PDU>-- --<OBJECTID 16>--
  20. ContentType ::= ObjectIdentifier
  21. Version ::= INTEGER { v0(0), v1(1), v2(2), v3(3) }
  22. IssuerAndSerialNumber ::= SEQUENCE {
  23. issuer NOCOPYANY,
  24. serialNumber SerialNumber }
  25. HUGEINTEGER ::= INTEGER --<HUGE>-- -- tag 0x02
  26. SerialNumber ::= HUGEINTEGER
  27. CertificateSerialNumber ::= SerialNumber
  28. PolicyInformation ::= NOCOPYANY
  29. -- X.509
  30. -- GeneralNames FROM CertificateExtensions
  31. -- {joint-iso-ccitt ds(5) module(1) certificateExtensions(26) 0};
  32. OCTETSTRING ::= OCTET STRING --<UNBOUNDED>-- --<NOCOPY>-- -- tag 0x04
  33. NOCOPYANY ::= ANY --<ENCODABLE>-- --<NOCOPY>--
  34. SubjectKeyIdentifier ::= OCTETSTRING
  35. GeneralNames ::= NOCOPYANY
  36. -- UNIVERSAL type defined in ASN.1 1997 but required for
  37. -- this specification
  38. -- UTF8String ::= [UNIVERSAL 12] IMPLICIT OCTET STRING
  39. -- Extended Security Services
  40. -- The construct "SEQUENCE SIZE (1..MAX) OF" appears in several ASN.1
  41. -- constructs in this module. A valid ASN.1 SEQUENCE can have zero or
  42. -- more entries. The SIZE (1..MAX) construct constrains the SEQUENCE to
  43. -- have at least one entry. MAX indicates the upper bound is unspecified.
  44. -- Implementations are free to choose an upper bound that suits their
  45. -- environment.
  46. -- Section 2.7
  47. ReceiptRequest ::= SEQUENCE {
  48. signedContentIdentifier ContentIdentifier,
  49. receiptsFrom ReceiptsFrom,
  50. receiptsTo SEQUENCE SIZE (1..ub-receiptsTo) OF GeneralNames } --<PDU>--
  51. ub-receiptsTo INTEGER ::= 16
  52. id-aa-receiptRequest OBJECT IDENTIFIER ::= { iso(1) member-body(2)
  53. us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 1}
  54. ContentIdentifier ::= OCTET STRING
  55. id-aa-contentIdentifier OBJECT IDENTIFIER ::= { iso(1) member-body(2)
  56. us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 7}
  57. ReceiptsFrom ::= CHOICE {
  58. allOrFirstTier [0] AllOrFirstTier,
  59. -- formerly "allOrNone [0]AllOrNone"
  60. receiptList [1] SEQUENCE OF GeneralNames }
  61. AllOrFirstTier ::= INTEGER { -- Formerly AllOrNone
  62. allReceipts (0),
  63. firstTierRecipients (1) }
  64. -- Section 2.8
  65. Receipt ::= SEQUENCE {
  66. version Version, -- Version is imported from [CMS]
  67. contentType ContentType,
  68. signedContentIdentifier ContentIdentifier,
  69. originatorSignatureValue OCTETSTRING } --<PDU>--
  70. id-ct-receipt OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840)
  71. rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-ct(1) 1}
  72. -- Section 2.9
  73. -- contentDescription UTF8String SIZE (1..MAX) OPTIONAL,
  74. ContentHints ::= SEQUENCE {
  75. contentDescription UTF8String (SIZE (1..MAX)) OPTIONAL,
  76. -- If contentDescription is used, its contents MUST be in UTF8 format
  77. contentType ObjectIdentifier } --<PDU>--
  78. id-aa-contentHint OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840)
  79. rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 4}
  80. -- Section 2.10
  81. MsgSigDigest ::= OCTET STRING
  82. id-aa-msgSigDigest OBJECT IDENTIFIER ::= { iso(1) member-body(2)
  83. us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 5}
  84. -- Section 2.11
  85. ContentReference ::= SEQUENCE {
  86. contentType ContentType,
  87. signedContentIdentifier ContentIdentifier,
  88. originatorSignatureValue OCTET STRING }
  89. id-aa-contentReference OBJECT IDENTIFIER ::= { iso(1) member-body(2)
  90. us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 10 }
  91. -- Section 3.2
  92. ESSSecurityLabel ::= SET {
  93. security-policy-identifier SecurityPolicyIdentifier,
  94. security-classification SecurityClassification OPTIONAL,
  95. privacy-mark ESSPrivacyMark OPTIONAL,
  96. security-categories SecurityCategories OPTIONAL } --<PDU>--
  97. id-aa-securityLabel OBJECT IDENTIFIER ::= { iso(1) member-body(2)
  98. us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 2}
  99. SecurityPolicyIdentifier ::= ObjectIdentifier
  100. SecurityClassification ::= INTEGER {
  101. unmarked (0),
  102. unclassified (1),
  103. restricted (2),
  104. confidential (3),
  105. secret (4),
  106. top-secret (5) } (0..ub-integer-options)
  107. ub-integer-options INTEGER ::= 256
  108. ESSPrivacyMark ::= CHOICE {
  109. pString PrintableString (SIZE (1..ub-privacy-mark-length)),
  110. utf8String UTF8String (SIZE (1..MAX))
  111. }
  112. ub-privacy-mark-length INTEGER ::= 128
  113. SecurityCategories ::= SET SIZE (1..ub-security-categories) OF
  114. SecurityCategory
  115. ub-security-categories INTEGER ::= 64
  116. SecurityCategory ::= SEQUENCE {
  117. type [0] ObjectIdentifier,
  118. -- value [1] ANY - - defined by type
  119. value [1] NOCOPYANY -- defined by type
  120. }
  121. -- Note: The aforementioned SecurityCategory syntax produces identical
  122. -- hex encodings as the following SecurityCategory syntax that is
  123. -- documented in the X.411 specification:
  124. --
  125. -- SecurityCategory ::= SEQUENCE {
  126. -- type [0] SECURITY-CATEGORY,
  127. -- value [1] ANY DEFINED BY type }
  128. --
  129. -- SECURITY-CATEGORY MACRO ::=
  130. -- BEGIN
  131. -- TYPE NOTATION ::= type | empty
  132. -- VALUE NOTATION ::= value (VALUE OBJECT IDENTIFIER)
  133. -- END
  134. -- Section 3.4
  135. EquivalentLabels ::= SEQUENCE OF ESSSecurityLabel
  136. id-aa-equivalentLabels OBJECT IDENTIFIER ::= { iso(1) member-body(2)
  137. us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 9}
  138. -- Section 4.4
  139. MLExpansionHistory ::= SEQUENCE --<PDU>-- SIZE (1..ub-ml-expansion-history) OF MLData
  140. id-aa-mlExpandHistory OBJECT IDENTIFIER ::= { iso(1) member-body(2)
  141. us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 3}
  142. ub-ml-expansion-history INTEGER ::= 64
  143. MLData ::= SEQUENCE {
  144. mailListIdentifier EntityIdentifier,
  145. -- EntityIdentifier is imported from [CMS]
  146. expansionTime GeneralizedTime,
  147. mlReceiptPolicy MLReceiptPolicy OPTIONAL }
  148. EntityIdentifier ::= CHOICE {
  149. issuerAndSerialNumber IssuerAndSerialNumber,
  150. subjectKeyIdentifier SubjectKeyIdentifier }
  151. MLReceiptPolicy ::= CHOICE {
  152. none [0] NULL,
  153. insteadOf [1] SEQUENCE SIZE (1..MAX) OF GeneralNames,
  154. inAdditionTo [2] SEQUENCE SIZE (1..MAX) OF GeneralNames }
  155. -- Section 5.4
  156. SigningCertificate ::= SEQUENCE {
  157. certs SEQUENCE OF ESSCertID,
  158. policies SEQUENCE OF PolicyInformation OPTIONAL
  159. }
  160. id-aa-signingCertificate OBJECT IDENTIFIER ::= { iso(1)
  161. member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9)
  162. smime(16) id-aa(2) 12 }
  163. ESSCertID ::= SEQUENCE {
  164. certHash Hash,
  165. issuerSerial IssuerSerial OPTIONAL
  166. }
  167. Hash ::= OCTET STRING -- SHA1 hash of entire certificate
  168. IssuerSerial ::= SEQUENCE {
  169. issuer GeneralNames,
  170. serialNumber CertificateSerialNumber
  171. }
  172. END -- of ExtendedSecurityServices