home *** CD-ROM | disk | FTP | other *** search
/ ftp.rsa.com / 2014.05.ftp.rsa.com.tar / ftp.rsa.com / pub / pkcs / pkcs-9-v2 / pkcs-9.asn next >
Text File  |  2014-05-02  |  13KB  |  391 lines

  1. PKCS-9 {iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1)
  2. pkcs-9(9) modules(0) pkcs-9(1)}
  3.  
  4. -- $Revision$
  5.  
  6. DEFINITIONS IMPLICIT TAGS ::=
  7.  
  8. BEGIN
  9.  
  10. -- EXPORTS All --
  11. -- All types and values defined in this module is exported for use in
  12. -- other ASN.1 modules.
  13.  
  14. IMPORTS
  15.  
  16. informationFramework, authenticationFramework, selectedAttributeTypes,
  17.         upperBounds , id-at
  18.         FROM UsefulDefinitions {joint-iso-itu-t ds(5) module(1)
  19.         usefulDefinitions(0) 3}
  20.  
  21. ub-name
  22.         FROM UpperBounds upperBounds
  23.  
  24. OBJECT-CLASS, ATTRIBUTE, MATCHING-RULE, Attribute, top, objectIdentifierMatch
  25.         FROM InformationFramework informationFramework
  26.  
  27. ALGORITHM, Extensions, Time
  28.         FROM AuthenticationFramework authenticationFramework
  29.  
  30. DirectoryString, octetStringMatch, caseIgnoreMatch, caseExactMatch,
  31.         generalizedTimeMatch, integerMatch, serialNumber 
  32.         FROM SelectedAttributeTypes selectedAttributeTypes
  33.  
  34. ContentInfo, SignerInfo
  35.         FROM CryptographicMessageSyntax {iso(1) member-body(2) us(840)
  36.         rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) modules(0) cms(1)}
  37.  
  38. EncryptedPrivateKeyInfo
  39.         FROM PKCS-8 {iso(1) member-body(2) us(840) rsadsi(113549)
  40.         pkcs(1) pkcs-8(8) modules(1) pkcs-8(1)}
  41.  
  42. PFX
  43.         FROM PKCS-12 {iso(1) member-body(2) us(840) rsadsi(113549)
  44.         pkcs(1) pkcs-12(12) modules(0) pkcs-12(1)}
  45.  
  46. PKCS15Token
  47.         FROM PKCS-15 {iso(1) member-body(2) us(840) rsadsi(113549)
  48.         pkcs(1) pkcs-15(15) modules(1) pkcs-15(1)};
  49.  
  50. -- Upper bounds
  51. pkcs-9-ub-pkcs9String                  INTEGER ::= 255
  52. pkcs-9-ub-emailAddress                 INTEGER ::= pkcs-9-ub-pkcs9String
  53. pkcs-9-ub-unstructuredName          INTEGER ::= pkcs-9-ub-pkcs9String
  54. pkcs-9-ub-unstructuredAddress       INTEGER ::= pkcs-9-ub-pkcs9String
  55. pkcs-9-ub-challengePassword         INTEGER ::= pkcs-9-ub-pkcs9String
  56. pkcs-9-ub-friendlyName                 INTEGER ::= pkcs-9-ub-pkcs9String
  57. pkcs-9-ub-signingDescription        INTEGER ::= pkcs-9-ub-pkcs9String
  58. pkcs-9-ub-match                        INTEGER ::= pkcs-9-ub-pkcs9String
  59. pkcs-9-ub-pseudonym                    INTEGER ::= ub-name
  60. pkcs-9-ub-placeOfBirth                 INTEGER ::= ub-name
  61.  
  62. -- Object Identifiers
  63.  
  64. pkcs-9 OBJECT IDENTIFIER ::= {iso(1) member-body(2) us(840)
  65.                               rsadsi(113549) pkcs(1) 9} 
  66.  
  67.   -- Main arcs
  68. pkcs-9-mo    OBJECT IDENTIFIER ::= {pkcs-9 0}  -- Modules branch
  69. pkcs-9-oc        OBJECT IDENTIFIER ::= {pkcs-9 24} -- Object class branch
  70. pkcs-9-at       OBJECT IDENTIFIER ::= {pkcs-9 25} -- Attribute branch, for new  attributes 
  71. pkcs-9-sx    OBJECT IDENTIFIER ::= {pkcs-9 26} -- For syntaxes (RFC 2252)
  72. pkcs-9-mr       OBJECT IDENTIFIER ::= {pkcs-9 27} -- Matching rules
  73.  
  74.   -- Object classes
  75. pkcs-9-oc-pkcsEntity               OBJECT IDENTIFIER ::= {pkcs-9-oc 1}
  76. pkcs-9-oc-naturalPerson                 OBJECT IDENTIFIER ::= {pkcs-9-oc 2}
  77.  
  78.   -- Attributes
  79. pkcs-9-at-emailAddress                  OBJECT IDENTIFIER ::= {pkcs-9 1}
  80. pkcs-9-at-unstructuredName              OBJECT IDENTIFIER ::= {pkcs-9 2}
  81. pkcs-9-at-contentType                   OBJECT IDENTIFIER ::= {pkcs-9 3}
  82. pkcs-9-at-messageDigest                 OBJECT IDENTIFIER ::= {pkcs-9 4}
  83. pkcs-9-at-signingTime                   OBJECT IDENTIFIER ::= {pkcs-9 5}
  84. pkcs-9-at-counterSignature              OBJECT IDENTIFIER ::= {pkcs-9 6}
  85. pkcs-9-at-challengePassword             OBJECT IDENTIFIER ::= {pkcs-9 7}
  86. pkcs-9-at-unstructuredAddress           OBJECT IDENTIFIER ::= {pkcs-9 8}
  87. pkcs-9-at-extendedCertificateAttributes OBJECT IDENTIFIER ::= {pkcs-9 9}
  88.  
  89. -- Obsolete (?) attribute identifiers, purportedly from "tentative
  90. -- PKCS #9 draft"
  91. -- pkcs-9-at-issuerAndSerialNumber      OBJECT IDENTIFIER ::= {pkcs-9 10}
  92. -- pkcs-9-at-passwordCheck              OBJECT IDENTIFIER ::= {pkcs-9 11}
  93. -- pkcs-9-at-publicKey                  OBJECT IDENTIFIER ::= {pkcs-9 12}
  94.  
  95. pkcs-9-at-signingDescription            OBJECT IDENTIFIER ::= {pkcs-9 13}
  96. pkcs-9-at-extensionRequest              OBJECT IDENTIFIER ::= {pkcs-9 14}
  97. pkcs-9-at-smimeCapabilities             OBJECT IDENTIFIER ::= {pkcs-9 15}
  98.  
  99. -- Unused (?)
  100. -- pkcs-9-at-?                          OBJECT IDENTIFIER ::= {pkcs-9 17}
  101. -- pkcs-9-at-?                          OBJECT IDENTIFIER ::= {pkcs-9 18}
  102. -- pkcs-9-at-?                          OBJECT IDENTIFIER ::= {pkcs-9 19}
  103.  
  104. pkcs-9-at-friendlyName                  OBJECT IDENTIFIER ::= {pkcs-9 20}
  105. pkcs-9-at-localKeyId                    OBJECT IDENTIFIER ::= {pkcs-9 21}
  106. pkcs-9-at-userPKCS12                    OBJECT IDENTIFIER ::= {2 16 840 1 113730 3 1 216}
  107. pkcs-9-at-pkcs15Token                   OBJECT IDENTIFIER ::= {pkcs-9-at 1}
  108. pkcs-9-at-encryptedPrivateKeyInfo       OBJECT IDENTIFIER ::= {pkcs-9-at 2}
  109. pkcs-9-at-randomNonce                   OBJECT IDENTIFIER ::= {pkcs-9-at 3}
  110. pkcs-9-at-sequenceNumber                OBJECT IDENTIFIER ::= {pkcs-9-at 4}
  111. pkcs-9-at-pkcs7PDU                      OBJECT IDENTIFIER ::= {pkcs-9-at 5}
  112.  
  113.   -- IETF PKIX Attribute branch
  114. ietf-at                     OBJECT IDENTIFIER ::= {1 3 6 1 5 5 7 9}
  115.  
  116. pkcs-9-at-dateOfBirth                   OBJECT IDENTIFIER ::= {ietf-at 1}
  117. pkcs-9-at-placeOfBirth                  OBJECT IDENTIFIER ::= {ietf-at 2}
  118. pkcs-9-at-gender                        OBJECT IDENTIFIER ::= {ietf-at 3}
  119. pkcs-9-at-countryOfCitizenship          OBJECT IDENTIFIER ::= {ietf-at 4}
  120. pkcs-9-at-countryOfResidence            OBJECT IDENTIFIER ::= {ietf-at 5}
  121.  
  122.   -- Syntaxes (for use with LDAP accessible directories)
  123. pkcs-9-sx-pkcs9String                   OBJECT IDENTIFIER ::= {pkcs-9-sx 1}
  124. pkcs-9-sx-signingTime                   OBJECT IDENTIFIER ::= {pkcs-9-sx 2}
  125.  
  126.   -- Matching rules
  127. pkcs-9-mr-caseIgnoreMatch               OBJECT IDENTIFIER ::= {pkcs-9-mr 1}
  128. pkcs-9-mr-signingTimeMatch              OBJECT IDENTIFIER ::= {pkcs-9-mr 2}
  129.  
  130.   -- Arcs with attributes defined elsewhere
  131. smime                         OBJECT IDENTIFIER ::= {pkcs-9 16} 
  132.   -- Main arc for S/MIME (RFC 2633)
  133. certTypes                     OBJECT IDENTIFIER ::= {pkcs-9 22} 
  134.   -- Main arc for certificate types defined in PKCS #12
  135. crlTypes                      OBJECT IDENTIFIER ::= {pkcs-9 23}
  136.   -- Main arc for crl types defined in PKCS #12
  137.  
  138.   -- Other object identifiers
  139. id-at-pseudonym                OBJECT IDENTIFIER ::= {id-at 65}
  140.  
  141. -- Useful types
  142.  
  143. PKCS9String {INTEGER : maxSize} ::= CHOICE {
  144.         ia5String IA5String (SIZE(1..maxSize)),
  145.         directoryString DirectoryString {maxSize}
  146. }
  147.  
  148. -- Object classes
  149.  
  150. pkcsEntity OBJECT-CLASS ::= {
  151.         SUBCLASS OF    { top }
  152.         KIND               auxiliary
  153.         MAY CONTAIN    { PKCSEntityAttributeSet }
  154.         ID              pkcs-9-oc-pkcsEntity
  155. }
  156.  
  157. naturalPerson OBJECT-CLASS ::= {
  158.         SUBCLASS OF     { top }
  159.         KIND         auxiliary
  160.         MAY CONTAIN     { NaturalPersonAttributeSet }
  161.         ID         pkcs-9-oc-naturalPerson
  162. }
  163.  
  164. -- Attribute sets
  165.  
  166. PKCSEntityAttributeSet ATTRIBUTE ::= {
  167.         pKCS7PDU       |
  168.         userPKCS12     |
  169.         pKCS15Token    |
  170.         encryptedPrivateKeyInfo,
  171.         ... -- For future extensions
  172. }
  173.  
  174. NaturalPersonAttributeSet ATTRIBUTE ::= {
  175.         emailAddress         |
  176.         unstructuredName     |
  177.         unstructuredAddress  |
  178.         dateOfBirth         |
  179.         placeOfBirth         |
  180.         gender             |
  181.         countryOfCitizenship |
  182.         countryOfResidence   |
  183.         pseudonym         |
  184.         serialNumber,
  185.         ... -- For future extensions
  186. }
  187.  
  188. -- Attributes
  189.  
  190. pKCS7PDU ATTRIBUTE ::= {
  191.         WITH SYNTAX ContentInfo
  192.         ID pkcs-9-at-pkcs7PDU
  193. }
  194.  
  195. userPKCS12 ATTRIBUTE ::= {
  196.         WITH SYNTAX PFX
  197.         ID pkcs-9-at-userPKCS12
  198. }
  199.  
  200. pKCS15Token ATTRIBUTE ::= {
  201.         WITH SYNTAX PKCS15Token
  202.         ID pkcs-9-at-pkcs15Token
  203. }
  204.  
  205. encryptedPrivateKeyInfo ATTRIBUTE ::= {
  206.         WITH SYNTAX EncryptedPrivateKeyInfo
  207.         ID pkcs-9-at-encryptedPrivateKeyInfo
  208. }
  209.  
  210. emailAddress ATTRIBUTE ::= {
  211.         WITH SYNTAX IA5String (SIZE(1..pkcs-9-ub-emailAddress))
  212.         EQUALITY MATCHING RULE pkcs9CaseIgnoreMatch
  213.         ID pkcs-9-at-emailAddress
  214. }
  215.  
  216. unstructuredName ATTRIBUTE ::= {
  217.         WITH SYNTAX PKCS9String {pkcs-9-ub-unstructuredName}
  218.         EQUALITY MATCHING RULE pkcs9CaseIgnoreMatch
  219.         ID pkcs-9-at-unstructuredName
  220. }
  221.  
  222. unstructuredAddress ATTRIBUTE ::= {
  223.         WITH SYNTAX DirectoryString {pkcs-9-ub-unstructuredAddress}
  224.         EQUALITY MATCHING RULE caseIgnoreMatch
  225.         ID pkcs-9-at-unstructuredAddress
  226. }
  227.  
  228. dateOfBirth ATTRIBUTE ::= {
  229.         WITH SYNTAX GeneralizedTime
  230.         EQUALITY MATCHING RULE generalizedTimeMatch
  231.         SINGLE VALUE TRUE
  232.         ID pkcs-9-at-dateOfBirth
  233. }
  234.  
  235. placeOfBirth ATTRIBUTE ::= {
  236.         WITH SYNTAX DirectoryString {pkcs-9-ub-placeOfBirth}
  237.         EQUALITY MATCHING RULE caseExactMatch
  238.         SINGLE VALUE TRUE
  239.         ID pkcs-9-at-placeOfBirth
  240. }
  241.  
  242. gender ATTRIBUTE ::= {
  243.         WITH SYNTAX PrintableString (SIZE(1) ^ FROM ("M" | "F" | "m" | "f"))
  244.         EQUALITY MATCHING RULE caseIgnoreMatch
  245.         SINGLE VALUE TRUE
  246.         ID pkcs-9-at-gender
  247. }
  248.  
  249. countryOfCitizenship ATTRIBUTE ::= {
  250.         WITH SYNTAX PrintableString (SIZE(2))(CONSTRAINED BY { 
  251.         -- Must be a two-letter country acronym in accordance with
  252.         -- ISO/IEC 3166 --}) 
  253.         EQUALITY MATCHING RULE caseIgnoreMatch
  254.         ID pkcs-9-at-countryOfCitizenship
  255. }
  256.  
  257. countryOfResidence ATTRIBUTE ::= {
  258.         WITH SYNTAX PrintableString (SIZE(2))(CONSTRAINED BY { 
  259.         -- Must be a two-letter country acronym in accordance with
  260.         -- ISO/IEC 3166 --}) 
  261.         EQUALITY MATCHING RULE caseIgnoreMatch
  262.         ID pkcs-9-at-countryOfResidence
  263. }
  264.  
  265. pseudonym ATTRIBUTE ::= {
  266.         WITH SYNTAX DirectoryString {pkcs-9-ub-pseudonym}
  267.         EQUALITY MATCHING RULE caseExactMatch
  268.         ID id-at-pseudonym
  269. }
  270.  
  271. contentType ATTRIBUTE ::= {
  272.         WITH SYNTAX ContentType
  273.         EQUALITY MATCHING RULE objectIdentifierMatch
  274.         SINGLE VALUE TRUE
  275.         ID pkcs-9-at-contentType
  276. }
  277.  
  278. ContentType ::= OBJECT IDENTIFIER
  279.  
  280. messageDigest ATTRIBUTE ::= {
  281.         WITH SYNTAX MessageDigest
  282.         EQUALITY MATCHING RULE octetStringMatch
  283.         SINGLE VALUE TRUE
  284.         ID pkcs-9-at-messageDigest
  285. }
  286.  
  287. MessageDigest ::= OCTET STRING
  288.  
  289. signingTime ATTRIBUTE ::= {
  290.         WITH SYNTAX SigningTime
  291.         EQUALITY MATCHING RULE signingTimeMatch
  292.         SINGLE VALUE TRUE
  293.         ID pkcs-9-at-signingTime
  294. }
  295.  
  296. SigningTime ::= Time -- imported from ISO/IEC 9594-8
  297.  
  298. randomNonce ATTRIBUTE ::= {
  299.         WITH SYNTAX RandomNonce
  300.         EQUALITY MATCHING RULE octetStringMatch
  301.         SINGLE VALUE TRUE
  302.         ID pkcs-9-at-randomNonce
  303. }
  304.  
  305. RandomNonce ::= OCTET STRING (SIZE(4..MAX)) -- At least four bytes long
  306.  
  307. sequenceNumber ATTRIBUTE ::= {
  308.         WITH SYNTAX SequenceNumber
  309.         EQUALITY MATCHING RULE integerMatch
  310.         SINGLE VALUE TRUE
  311.         ID pkcs-9-at-sequenceNumber
  312. }
  313.  
  314. SequenceNumber ::= INTEGER (1..MAX)
  315.  
  316. counterSignature ATTRIBUTE ::= {
  317.         WITH SYNTAX SignerInfo
  318.         ID pkcs-9-at-counterSignature
  319. }
  320.  
  321. challengePassword ATTRIBUTE ::= {
  322.         WITH SYNTAX DirectoryString {pkcs-9-ub-challengePassword}
  323.         EQUALITY MATCHING RULE caseExactMatch
  324.         SINGLE VALUE TRUE
  325.         ID pkcs-9-at-challengePassword
  326. }
  327.  
  328. extensionRequest ATTRIBUTE ::= {
  329.         WITH SYNTAX ExtensionRequest
  330.         SINGLE VALUE TRUE
  331.         ID pkcs-9-at-extensionRequest
  332. }
  333.  
  334. ExtensionRequest ::= Extensions
  335.  
  336. extendedCertificateAttributes ATTRIBUTE ::= {
  337.         WITH SYNTAX SET OF Attribute
  338.         SINGLE VALUE TRUE
  339.         ID pkcs-9-at-extendedCertificateAttributes
  340. }
  341.  
  342. friendlyName ATTRIBUTE ::= {
  343.         WITH SYNTAX BMPString (SIZE(1..pkcs-9-ub-friendlyName))
  344.         EQUALITY MATCHING RULE caseIgnoreMatch
  345.         SINGLE VALUE TRUE
  346.         ID pkcs-9-at-friendlyName
  347. }
  348.  
  349. localKeyId ATTRIBUTE ::= {
  350.         WITH SYNTAX OCTET STRING
  351.         EQUALITY MATCHING RULE octetStringMatch
  352.         SINGLE VALUE TRUE
  353.         ID pkcs-9-at-localKeyId
  354. }
  355.  
  356. signingDescription ATTRIBUTE ::= {
  357.         WITH SYNTAX DirectoryString {pkcs-9-ub-signingDescription}
  358.         EQUALITY MATCHING RULE caseIgnoreMatch
  359.         SINGLE VALUE TRUE
  360.         ID pkcs-9-at-signingDescription
  361. }
  362.  
  363. smimeCapabilities ATTRIBUTE ::= {
  364.         WITH SYNTAX SMIMECapabilities
  365.         SINGLE VALUE TRUE
  366.         ID pkcs-9-at-smimeCapabilities
  367. }
  368.  
  369. SMIMECapabilities ::= SEQUENCE OF SMIMECapability
  370.  
  371. SMIMECapability ::= SEQUENCE {
  372.         algorithm  ALGORITHM.&id ({SMIMEv3Algorithms}),
  373.         parameters ALGORITHM.&Type ({SMIMEv3Algorithms}{@algorithm})
  374. }
  375.  
  376. SMIMEv3Algorithms ALGORITHM ::= {...-- See RFC 2633 --}
  377.  
  378.  -- Matching rules
  379.  
  380. pkcs9CaseIgnoreMatch MATCHING-RULE ::= {
  381.         SYNTAX PKCS9String {pkcs-9-ub-match}
  382.         ID pkcs-9-mr-caseIgnoreMatch
  383. }
  384.  
  385. signingTimeMatch MATCHING-RULE ::= {
  386.         SYNTAX SigningTime
  387.         ID pkcs-9-mr-signingTimeMatch
  388. }
  389.  
  390. END
  391.