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

  1. PKCS-1 {
  2.     iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-1(1) modules(0)
  3.     pkcs-1(1) 
  4. }
  5.  
  6. -- $ Revision: 2.1 $
  7.  
  8. -- This module has been checked for conformance with the ASN.1 standard by the 
  9. -- OSS ASN.1 Tools
  10.  
  11. DEFINITIONS EXPLICIT TAGS ::=
  12.  
  13. BEGIN
  14.  
  15. -- EXPORTS ALL
  16. -- All types and values defined in this module are exported for use in other 
  17. -- ASN.1 modules.
  18.  
  19. IMPORTS
  20.  
  21. id-sha256, id-sha384, id-sha512 
  22.     FROM NIST-SHA2 {
  23.         joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) 
  24.         nistalgorithm(4) modules(0) sha2(1)
  25.     };
  26.  
  27. -- ============================
  28. --   Basic object identifiers 
  29. -- ============================
  30.  
  31. -- The DER encoding of this in hexadecimal is:
  32. -- (0x)06 08 
  33. --        2A 86 48 86 F7 0D 01 01
  34. --
  35. pkcs-1    OBJECT IDENTIFIER ::= { 
  36.     iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 1
  37. }
  38.  
  39. --
  40. -- When rsaEncryption is used in an AlgorithmIdentifier the parameters 
  41. -- MUST be present and MUST be NULL.
  42. --
  43. rsaEncryption    OBJECT IDENTIFIER ::= { pkcs-1 1 }
  44.  
  45. --
  46. -- When id-RSAES-OAEP is used in an AlgorithmIdentifier the parameters MUST 
  47. -- be present and MUST be RSAES-OAEP-params.
  48. --
  49. id-RSAES-OAEP    OBJECT IDENTIFIER ::= { pkcs-1 7 }
  50.  
  51. --
  52. -- When id-pSpecified is used in an AlgorithmIdentifier the parameters MUST be 
  53. -- an OCTET STRING.
  54. --
  55. id-pSpecified    OBJECT IDENTIFIER ::= { pkcs-1 9 }
  56.  
  57. --
  58. -- When id-RSASSA-PSS is used in an AlgorithmIdentifier the parameters MUST be 
  59. -- present and MUST be RSASSA-PSS-params.
  60. --
  61. id-RSASSA-PSS    OBJECT IDENTIFIER ::= { pkcs-1 10 }
  62.  
  63. --
  64. -- When the following OIDs are used in an AlgorithmIdentifier the parameters 
  65. -- MUST be present and MUST be NULL.
  66. --
  67. md2WithRSAEncryption       OBJECT IDENTIFIER ::= { pkcs-1 2 }
  68. md5WithRSAEncryption       OBJECT IDENTIFIER ::= { pkcs-1 4 }
  69. sha1WithRSAEncryption      OBJECT IDENTIFIER ::= { pkcs-1 5 }
  70. sha256WithRSAEncryption    OBJECT IDENTIFIER ::= { pkcs-1 11 }
  71. sha384WithRSAEncryption    OBJECT IDENTIFIER ::= { pkcs-1 12 }
  72. sha512WithRSAEncryption    OBJECT IDENTIFIER ::= { pkcs-1 13 }
  73.  
  74. --
  75. -- This OID really belongs in a module with the secsig OIDs.
  76. --
  77. id-sha1    OBJECT IDENTIFIER ::= {
  78.     iso(1) identified-organization(3) oiw(14) secsig(3) algorithms(2) 26 
  79. }
  80.  
  81. --
  82. -- When id-mgf1 is used in an AlgorithmIdentifier the parameters MUST be present 
  83. -- and MUST be a HashAlgorithm, for example sha1.
  84. --
  85. id-mgf1    OBJECT IDENTIFIER ::= { pkcs-1 8 }
  86.  
  87. -- ================
  88. --   Useful types
  89. -- ================
  90.  
  91. ALGORITHM-IDENTIFIER ::= CLASS {
  92.     &id    OBJECT IDENTIFIER  UNIQUE, 
  93.     &Type  OPTIONAL
  94. }
  95.     WITH SYNTAX { OID &id [PARAMETERS &Type] }
  96.  
  97. -- Note: the parameter InfoObjectSet in the following definitions allows a 
  98. -- distinct information object set to be specified for sets of algorithms such 
  99. -- as:  
  100. -- DigestAlgorithms    ALGORITHM-IDENTIFIER ::= {
  101. --     { OID id-md2  PARAMETERS NULL }|
  102. --     { OID id-md5  PARAMETERS NULL }|
  103. --     { OID id-sha1 PARAMETERS NULL }
  104. -- }
  105. --
  106.  
  107. AlgorithmIdentifier { ALGORITHM-IDENTIFIER:InfoObjectSet } ::= SEQUENCE {
  108.     algorithm   ALGORITHM-IDENTIFIER.&id({InfoObjectSet}), 
  109.     parameters  ALGORITHM-IDENTIFIER.&Type({InfoObjectSet}{@.algorithm})  OPTIONAL
  110. }
  111.  
  112. -- ==============
  113. --   Algorithms
  114. -- ==============
  115.  
  116. --
  117. -- Allowed OAEP and PSS digest algorithms.
  118. --
  119. OAEP-PSSDigestAlgorithms    ALGORITHM-IDENTIFIER ::= {
  120.     { OID id-sha1 PARAMETERS NULL   }|
  121.     { OID id-sha256 PARAMETERS NULL }|
  122.     { OID id-sha384 PARAMETERS NULL }|
  123.     { OID id-sha512 PARAMETERS NULL }, 
  124.     ...  -- Allows for future expansion --
  125. }
  126.  
  127. sha1    HashAlgorithm ::= {
  128.     algorithm   id-sha1, 
  129.     parameters  SHA1Parameters : NULL
  130. }
  131.  
  132. HashAlgorithm ::= AlgorithmIdentifier { {OAEP-PSSDigestAlgorithms} }
  133.  
  134. SHA1Parameters ::= NULL
  135.  
  136. --
  137. -- Allowed mask generation function algorithms. 
  138. -- If the identifier is id-mgf1, the parameters are a HashAlgorithm. 
  139. --
  140. PKCS1MGFAlgorithms    ALGORITHM-IDENTIFIER ::= {
  141.     { OID id-mgf1 PARAMETERS HashAlgorithm }, 
  142.     ...  -- Allows for future expansion --
  143. }
  144.  
  145. --
  146. -- Default AlgorithmIdentifier for id-RSAES-OAEP.maskGenAlgorithm and
  147. -- id-RSASSA-PSS.maskGenAlgorithm.
  148. --
  149. mgf1SHA1    MaskGenAlgorithm ::= {
  150.     algorithm   id-mgf1, 
  151.     parameters  HashAlgorithm : sha1
  152. }
  153.  
  154. MaskGenAlgorithm ::= AlgorithmIdentifier { {PKCS1MGFAlgorithms} }
  155.  
  156. --
  157. -- Allowed algorithms for pSourceAlgorithm.
  158. --
  159. PKCS1PSourceAlgorithms    ALGORITHM-IDENTIFIER ::= {
  160.     { OID id-pSpecified PARAMETERS EncodingParameters }, 
  161.     ...  -- Allows for future expansion --
  162. }
  163.  
  164. EncodingParameters ::= OCTET STRING(SIZE(0..MAX))
  165.  
  166. -- 
  167. -- This identifier means that P is an empty string, so the digest of the empty 
  168. -- string appears in the RSA block before masking.
  169. --
  170.  
  171. pSpecifiedEmpty    PSourceAlgorithm ::= {
  172.     algorithm   id-pSpecified, 
  173.     parameters  EncodingParameters : emptyString
  174. }
  175.  
  176. PSourceAlgorithm ::= AlgorithmIdentifier { {PKCS1PSourceAlgorithms} }
  177.  
  178. emptyString    EncodingParameters ::= ''H 
  179.  
  180. --
  181. -- Type identifier definitions for the PKCS #1 OIDs.
  182. --
  183. PKCS1Algorithms    ALGORITHM-IDENTIFIER ::= {
  184.     { OID rsaEncryption              PARAMETERS NULL } |
  185.     { OID md2WithRSAEncryption       PARAMETERS NULL } |
  186.     { OID md5WithRSAEncryption       PARAMETERS NULL } |
  187.     { OID sha1WithRSAEncryption      PARAMETERS NULL } |
  188.     { OID sha256WithRSAEncryption    PARAMETERS NULL } |
  189.     { OID sha384WithRSAEncryption    PARAMETERS NULL } |
  190.     { OID sha512WithRSAEncryption    PARAMETERS NULL } |
  191.     { OID id-RSAES-OAEP PARAMETERS RSAES-OAEP-params } | 
  192.     PKCS1PSourceAlgorithms                             |
  193.     { OID id-RSASSA-PSS PARAMETERS RSASSA-PSS-params } , 
  194.     ...  -- Allows for future expansion --
  195. }
  196.  
  197. -- ===================
  198. --   Main structures
  199. -- ===================
  200.  
  201. RSAPublicKey ::= SEQUENCE {
  202.     modulus           INTEGER,  -- n
  203.     publicExponent    INTEGER   -- e 
  204. }
  205.  
  206. -- 
  207. -- Representation of RSA private key with information for the CRT algorithm.
  208. --
  209. RSAPrivateKey ::= SEQUENCE {
  210.     version           Version, 
  211.     modulus           INTEGER,  -- n
  212.     publicExponent    INTEGER,  -- e
  213.     privateExponent   INTEGER,  -- d
  214.     prime1            INTEGER,  -- p
  215.     prime2            INTEGER,  -- q
  216.     exponent1         INTEGER,  -- d mod (p-1)
  217.     exponent2         INTEGER,  -- d mod (q-1) 
  218.     coefficient       INTEGER,  -- (inverse of q) mod p
  219.     otherPrimeInfos   OtherPrimeInfos OPTIONAL 
  220. }
  221.  
  222. Version ::= INTEGER { two-prime(0), multi(1) }
  223.      (CONSTRAINED BY {-- version must be multi if otherPrimeInfos present --})
  224.  
  225. OtherPrimeInfos ::= SEQUENCE SIZE(1..MAX) OF OtherPrimeInfo
  226.  
  227. OtherPrimeInfo ::= SEQUENCE {
  228.     prime             INTEGER,  -- ri
  229.     exponent          INTEGER,  -- di
  230.     coefficient       INTEGER   -- ti
  231. }
  232.  
  233. -- 
  234. -- AlgorithmIdentifier.parameters for id-RSAES-OAEP.
  235. -- Note that the tags in this Sequence are explicit.
  236. --
  237. RSAES-OAEP-params ::= SEQUENCE {
  238.     hashAlgorithm      [0] HashAlgorithm     DEFAULT sha1, 
  239.     maskGenAlgorithm   [1] MaskGenAlgorithm  DEFAULT mgf1SHA1, 
  240.     pSourceAlgorithm   [2] PSourceAlgorithm  DEFAULT pSpecifiedEmpty 
  241. }
  242.  
  243. -- 
  244. -- Identifier for default RSAES-OAEP algorithm identifier.
  245. -- The DER Encoding of this is in hexadecimal:
  246. -- (0x)30 0D
  247. --        06 09 
  248. --           2A 86 48 86 F7 0D 01 01 07
  249. --        30 00   
  250. -- Notice that the DER encoding of default values is "empty". 
  251. --
  252.  
  253. rSAES-OAEP-Default-Identifier    RSAES-AlgorithmIdentifier ::= {
  254.     algorithm   id-RSAES-OAEP, 
  255.     parameters  RSAES-OAEP-params : {
  256.         hashAlgorithm       sha1, 
  257.         maskGenAlgorithm    mgf1SHA1, 
  258.         pSourceAlgorithm    pSpecifiedEmpty
  259.     }
  260. }
  261.  
  262. RSAES-AlgorithmIdentifier ::= AlgorithmIdentifier{ {PKCS1Algorithms} }
  263.  
  264. -- 
  265. -- AlgorithmIdentifier.parameters for id-RSASSA-PSS.
  266. -- Note that the tags in this Sequence are explicit.
  267. --
  268. RSASSA-PSS-params ::= SEQUENCE {
  269.     hashAlgorithm      [0] HashAlgorithm      DEFAULT sha1, 
  270.     maskGenAlgorithm   [1] MaskGenAlgorithm   DEFAULT mgf1SHA1, 
  271.     trailerField       [2] TrailerField       DEFAULT trailerFieldBC
  272. }
  273.  
  274. TrailerField ::= INTEGER { trailerFieldBC(1) }
  275.  
  276. -- 
  277. -- Identifier for default RSASSA-PSS algorithm identifier
  278. -- The DER Encoding of this is in hexadecimal:
  279. -- (0x)30 0D
  280. --        06 09 
  281. --           2A 86 48 86 F7 0D 01 01 0A
  282. --        30 00   
  283. -- Notice that the DER encoding of default values is "empty". 
  284. --
  285. rSASSA-PSS-Default-Identifier    RSASSA-AlgorithmIdentifier ::= {
  286.     algorithm   id-RSASSA-PSS, 
  287.     parameters  RSASSA-PSS-params : {
  288.         hashAlgorithm       sha1, 
  289.         maskGenAlgorithm    mgf1SHA1, 
  290.         trailerField        trailerFieldBC
  291.     }
  292. }
  293.  
  294. RSASSA-AlgorithmIdentifier ::= AlgorithmIdentifier{ {PKCS1Algorithms} } 
  295.  
  296. END  -- PKCS1Definitions
  297.