I2C toy code
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.
 
 
 
 
 
 

370 regels
11 KiB

  1. # =================================
  2. # WORKED-OUT EXAMPLE FOR RSAES-OAEP
  3. # =================================
  4. #
  5. # This file gives an example of the process of
  6. # encrypting and decrypting a message with
  7. # RSAES-OAEP as specified in PKCS #1 v2.1.
  8. #
  9. # The message is a bit string of length 128,
  10. # while the size of the modulus in the public
  11. # key is 1024 bits. The second representation
  12. # of the private key is used, which means that
  13. # CRT is applied in the decryption process.
  14. #
  15. # The underlying hash function is SHA-1; the
  16. # mask generation function is MGF1 with SHA-1
  17. # as specified in PKCS #1 v2.1.
  18. #
  19. # This file also contains a demonstration of
  20. # the RSADP decryption primitive with CRT.
  21. # Finally, DER encodings of the RSA keys are
  22. # given at the end of the file.
  23. #
  24. #
  25. # Integers are represented by strings of octets
  26. # with the leftmost octet being the most
  27. # significant octet. For example,
  28. #
  29. # 9,202,000 = (0x)8c 69 50.
  30. #
  31. # =============================================
  32. # ------------------------------
  33. # Components of the RSA Key Pair
  34. # ------------------------------
  35. # RSA modulus n:
  36. bb f8 2f 09 06 82 ce 9c 23 38 ac 2b 9d a8 71 f7
  37. 36 8d 07 ee d4 10 43 a4 40 d6 b6 f0 74 54 f5 1f
  38. b8 df ba af 03 5c 02 ab 61 ea 48 ce eb 6f cd 48
  39. 76 ed 52 0d 60 e1 ec 46 19 71 9d 8a 5b 8b 80 7f
  40. af b8 e0 a3 df c7 37 72 3e e6 b4 b7 d9 3a 25 84
  41. ee 6a 64 9d 06 09 53 74 88 34 b2 45 45 98 39 4e
  42. e0 aa b1 2d 7b 61 a5 1f 52 7a 9a 41 f6 c1 68 7f
  43. e2 53 72 98 ca 2a 8f 59 46 f8 e5 fd 09 1d bd cb
  44. # RSA public exponent e:
  45. (0x)11
  46. # Prime p:
  47. ee cf ae 81 b1 b9 b3 c9 08 81 0b 10 a1 b5 60 01
  48. 99 eb 9f 44 ae f4 fd a4 93 b8 1a 9e 3d 84 f6 32
  49. 12 4e f0 23 6e 5d 1e 3b 7e 28 fa e7 aa 04 0a 2d
  50. 5b 25 21 76 45 9d 1f 39 75 41 ba 2a 58 fb 65 99
  51. # Prime q:
  52. c9 7f b1 f0 27 f4 53 f6 34 12 33 ea aa d1 d9 35
  53. 3f 6c 42 d0 88 66 b1 d0 5a 0f 20 35 02 8b 9d 86
  54. 98 40 b4 16 66 b4 2e 92 ea 0d a3 b4 32 04 b5 cf
  55. ce 33 52 52 4d 04 16 a5 a4 41 e7 00 af 46 15 03
  56. # p's CRT exponent dP:
  57. 54 49 4c a6 3e ba 03 37 e4 e2 40 23 fc d6 9a 5a
  58. eb 07 dd dc 01 83 a4 d0 ac 9b 54 b0 51 f2 b1 3e
  59. d9 49 09 75 ea b7 74 14 ff 59 c1 f7 69 2e 9a 2e
  60. 20 2b 38 fc 91 0a 47 41 74 ad c9 3c 1f 67 c9 81
  61. # q's CRT exponent dQ:
  62. 47 1e 02 90 ff 0a f0 75 03 51 b7 f8 78 86 4c a9
  63. 61 ad bd 3a 8a 7e 99 1c 5c 05 56 a9 4c 31 46 a7
  64. f9 80 3f 8f 6f 8a e3 42 e9 31 fd 8a e4 7a 22 0d
  65. 1b 99 a4 95 84 98 07 fe 39 f9 24 5a 98 36 da 3d
  66. # CRT coefficient qInv:
  67. b0 6c 4f da bb 63 01 19 8d 26 5b db ae 94 23 b3
  68. 80 f2 71 f7 34 53 88 50 93 07 7f cd 39 e2 11 9f
  69. c9 86 32 15 4f 58 83 b1 67 a9 67 bf 40 2b 4e 9e
  70. 2e 0f 96 56 e6 98 ea 36 66 ed fb 25 79 80 39 f7
  71. # ----------------------------------
  72. # Step-by-step RSAES-OAEP Encryption
  73. # ----------------------------------
  74. # Message M to be encrypted:
  75. d4 36 e9 95 69 fd 32 a7 c8 a0 5b bc 90 d3 2c 49
  76. # Label L:
  77. (the empty string)
  78. # lHash = Hash(L)
  79. # DB = lHash || Padding || M
  80. # seed = random string of octets
  81. # dbMask = MGF(seed, length(DB))
  82. # maskedDB = DB xor dbMask
  83. # seedMask = MGF(maskedDB, length(seed))
  84. # maskedSeed = seed xor seedMask
  85. # EM = 0x00 || maskedSeed || maskedDB
  86. # lHash:
  87. da 39 a3 ee 5e 6b 4b 0d 32 55 bf ef 95 60 18 90
  88. af d8 07 09
  89. # DB:
  90. da 39 a3 ee 5e 6b 4b 0d 32 55 bf ef 95 60 18 90
  91. af d8 07 09 00 00 00 00 00 00 00 00 00 00 00 00
  92. 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  93. 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  94. 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  95. 00 00 00 00 00 00 00 00 00 00 01 d4 36 e9 95 69
  96. fd 32 a7 c8 a0 5b bc 90 d3 2c 49
  97. # seed:
  98. aa fd 12 f6 59 ca e6 34 89 b4 79 e5 07 6d de c2
  99. f0 6c b5 8f
  100. # dbMask:
  101. 06 e1 de b2 36 9a a5 a5 c7 07 d8 2c 8e 4e 93 24
  102. 8a c7 83 de e0 b2 c0 46 26 f5 af f9 3e dc fb 25
  103. c9 c2 b3 ff 8a e1 0e 83 9a 2d db 4c dc fe 4f f4
  104. 77 28 b4 a1 b7 c1 36 2b aa d2 9a b4 8d 28 69 d5
  105. 02 41 21 43 58 11 59 1b e3 92 f9 82 fb 3e 87 d0
  106. 95 ae b4 04 48 db 97 2f 3a c1 4e af f4 9c 8c 3b
  107. 7c fc 95 1a 51 ec d1 dd e6 12 64
  108. # maskedDB:
  109. dc d8 7d 5c 68 f1 ee a8 f5 52 67 c3 1b 2e 8b b4
  110. 25 1f 84 d7 e0 b2 c0 46 26 f5 af f9 3e dc fb 25
  111. c9 c2 b3 ff 8a e1 0e 83 9a 2d db 4c dc fe 4f f4
  112. 77 28 b4 a1 b7 c1 36 2b aa d2 9a b4 8d 28 69 d5
  113. 02 41 21 43 58 11 59 1b e3 92 f9 82 fb 3e 87 d0
  114. 95 ae b4 04 48 db 97 2f 3a c1 4f 7b c2 75 19 52
  115. 81 ce 32 d2 f1 b7 6d 4d 35 3e 2d
  116. # seedMask:
  117. 41 87 0b 5a b0 29 e6 57 d9 57 50 b5 4c 28 3c 08
  118. 72 5d be a9
  119. # maskedSeed:
  120. eb 7a 19 ac e9 e3 00 63 50 e3 29 50 4b 45 e2 ca
  121. 82 31 0b 26
  122. # EM = 00 || maskedSeed || maskedDB:
  123. 00 eb 7a 19 ac e9 e3 00 63 50 e3 29 50 4b 45 e2
  124. ca 82 31 0b 26 dc d8 7d 5c 68 f1 ee a8 f5 52 67
  125. c3 1b 2e 8b b4 25 1f 84 d7 e0 b2 c0 46 26 f5 af
  126. f9 3e dc fb 25 c9 c2 b3 ff 8a e1 0e 83 9a 2d db
  127. 4c dc fe 4f f4 77 28 b4 a1 b7 c1 36 2b aa d2 9a
  128. b4 8d 28 69 d5 02 41 21 43 58 11 59 1b e3 92 f9
  129. 82 fb 3e 87 d0 95 ae b4 04 48 db 97 2f 3a c1 4f
  130. 7b c2 75 19 52 81 ce 32 d2 f1 b7 6d 4d 35 3e 2d
  131. # Ciphertext, the RSA encryption of EM:
  132. 12 53 e0 4d c0 a5 39 7b b4 4a 7a b8 7e 9b f2 a0
  133. 39 a3 3d 1e 99 6f c8 2a 94 cc d3 00 74 c9 5d f7
  134. 63 72 20 17 06 9e 52 68 da 5d 1c 0b 4f 87 2c f6
  135. 53 c1 1d f8 23 14 a6 79 68 df ea e2 8d ef 04 bb
  136. 6d 84 b1 c3 1d 65 4a 19 70 e5 78 3b d6 eb 96 a0
  137. 24 c2 ca 2f 4a 90 fe 9f 2e f5 c9 c1 40 e5 bb 48
  138. da 95 36 ad 87 00 c8 4f c9 13 0a de a7 4e 55 8d
  139. 51 a7 4d df 85 d8 b5 0d e9 68 38 d6 06 3e 09 55
  140. # --------------------------------------------
  141. # Step-by-step RSAES-OAEP Decryption Using CRT
  142. # --------------------------------------------
  143. # c = the integer value of C above
  144. # m1 = c^dP mod p = (c mod p)^dP mod p
  145. # m2 = c^dQ mod q = (c mod q)^dQ mod q
  146. # h = (m1-m2)*qInv mod p
  147. # m = m2 + q*h = the integer value of EM above
  148. # c mod p:
  149. de 63 d4 72 35 66 fa a7 59 bf e4 08 82 1d d5 25
  150. 72 ec 92 85 4d df 87 a2 b6 64 d4 4d aa 37 ca 34
  151. 6a 05 20 3d 82 ff 2d e8 e3 6c ec 1d 34 f9 8e b6
  152. 05 e2 a7 d2 6d e7 af 36 9c e4 ec ae 14 e3 56 33
  153. # c mod q:
  154. a2 d9 24 de d9 c3 6d 62 3e d9 a6 5b 5d 86 2c fb
  155. ec 8b 19 9c 64 27 9c 54 14 e6 41 19 6e f1 c9 3c
  156. 50 7a 9b 52 13 88 1a ad 05 b4 cc fa 02 8a c1 ec
  157. 61 42 09 74 bf 16 25 83 6b 0b 7d 05 fb b7 53 36
  158. # m1:
  159. 89 6c a2 6c d7 e4 87 1c 7f c9 68 a8 ed ea 11 e2
  160. 71 82 4f 0e 03 65 52 17 94 f1 e9 e9 43 b4 a4 4b
  161. 57 c9 e3 95 a1 46 74 78 f5 26 49 6b 4b b9 1f 1c
  162. ba ea 90 0f fc 60 2c f0 c6 63 6e ba 84 fc 9f f7
  163. # m2:
  164. 4e bb 22 75 85 f0 c1 31 2d ca 19 e0 b5 41 db 14
  165. 99 fb f1 4e 27 0e 69 8e 23 9a 8c 27 a9 6c da 9a
  166. 74 09 74 de 93 7b 5c 9c 93 ea d9 46 2c 65 75 02
  167. 1a 23 d4 64 99 dc 9f 6b 35 89 75 59 60 8f 19 be
  168. # h:
  169. 01 2b 2b 24 15 0e 76 e1 59 bd 8d db 42 76 e0 7b
  170. fa c1 88 e0 8d 60 47 cf 0e fb 8a e2 ae bd f2 51
  171. c4 0e bc 23 dc fd 4a 34 42 43 94 ad a9 2c fc be
  172. 1b 2e ff bb 60 fd fb 03 35 9a 95 36 8d 98 09 25
  173. # m:
  174. 00 eb 7a 19 ac e9 e3 00 63 50 e3 29 50 4b 45 e2
  175. ca 82 31 0b 26 dc d8 7d 5c 68 f1 ee a8 f5 52 67
  176. c3 1b 2e 8b b4 25 1f 84 d7 e0 b2 c0 46 26 f5 af
  177. f9 3e dc fb 25 c9 c2 b3 ff 8a e1 0e 83 9a 2d db
  178. 4c dc fe 4f f4 77 28 b4 a1 b7 c1 36 2b aa d2 9a
  179. b4 8d 28 69 d5 02 41 21 43 58 11 59 1b e3 92 f9
  180. 82 fb 3e 87 d0 95 ae b4 04 48 db 97 2f 3a c1 4f
  181. 7b c2 75 19 52 81 ce 32 d2 f1 b7 6d 4d 35 3e 2d
  182. # The intermediate values in the remaining
  183. # decryption process are the same as during
  184. # RSAES-OAEP encryption of M.
  185. # =============================================
  186. # ========================
  187. # DER Encoding of RSA Keys
  188. # ========================
  189. # ------------
  190. # RSAPublicKey
  191. # ------------
  192. 30 81 87
  193. # modulus
  194. 02 81 81
  195. 00 bb f8 2f 09 06 82 ce
  196. 9c 23 38 ac 2b 9d a8 71
  197. f7 36 8d 07 ee d4 10 43
  198. a4 40 d6 b6 f0 74 54 f5
  199. 1f b8 df ba af 03 5c 02
  200. ab 61 ea 48 ce eb 6f cd
  201. 48 76 ed 52 0d 60 e1 ec
  202. 46 19 71 9d 8a 5b 8b 80
  203. 7f af b8 e0 a3 df c7 37
  204. 72 3e e6 b4 b7 d9 3a 25
  205. 84 ee 6a 64 9d 06 09 53
  206. 74 88 34 b2 45 45 98 39
  207. 4e e0 aa b1 2d 7b 61 a5
  208. 1f 52 7a 9a 41 f6 c1 68
  209. 7f e2 53 72 98 ca 2a 8f
  210. 59 46 f8 e5 fd 09 1d bd
  211. cb
  212. # publicExponent
  213. 02 01
  214. 11
  215. # -------------
  216. # RSAPrivateKey
  217. # -------------
  218. 30 82 02 5b
  219. # version
  220. 02 01
  221. 00
  222. # modulus
  223. 02 81 81
  224. 00 bb f8 2f 09 06 82 ce
  225. 9c 23 38 ac 2b 9d a8 71
  226. f7 36 8d 07 ee d4 10 43
  227. a4 40 d6 b6 f0 74 54 f5
  228. 1f b8 df ba af 03 5c 02
  229. ab 61 ea 48 ce eb 6f cd
  230. 48 76 ed 52 0d 60 e1 ec
  231. 46 19 71 9d 8a 5b 8b 80
  232. 7f af b8 e0 a3 df c7 37
  233. 72 3e e6 b4 b7 d9 3a 25
  234. 84 ee 6a 64 9d 06 09 53
  235. 74 88 34 b2 45 45 98 39
  236. 4e e0 aa b1 2d 7b 61 a5
  237. 1f 52 7a 9a 41 f6 c1 68
  238. 7f e2 53 72 98 ca 2a 8f
  239. 59 46 f8 e5 fd 09 1d bd
  240. cb
  241. # publicExponent
  242. 02 01
  243. 11
  244. # privateExponent
  245. 02 81 81
  246. 00 a5 da fc 53 41 fa f2
  247. 89 c4 b9 88 db 30 c1 cd
  248. f8 3f 31 25 1e 06 68 b4
  249. 27 84 81 38 01 57 96 41
  250. b2 94 10 b3 c7 99 8d 6b
  251. c4 65 74 5e 5c 39 26 69
  252. d6 87 0d a2 c0 82 a9 39
  253. e3 7f dc b8 2e c9 3e da
  254. c9 7f f3 ad 59 50 ac cf
  255. bc 11 1c 76 f1 a9 52 94
  256. 44 e5 6a af 68 c5 6c 09
  257. 2c d3 8d c3 be f5 d2 0a
  258. 93 99 26 ed 4f 74 a1 3e
  259. dd fb e1 a1 ce cc 48 94
  260. af 94 28 c2 b7 b8 88 3f
  261. e4 46 3a 4b c8 5b 1c b3
  262. c1
  263. # prime1
  264. 02 41
  265. 00 ee cf ae 81 b1 b9 b3
  266. c9 08 81 0b 10 a1 b5 60
  267. 01 99 eb 9f 44 ae f4 fd
  268. a4 93 b8 1a 9e 3d 84 f6
  269. 32 12 4e f0 23 6e 5d 1e
  270. 3b 7e 28 fa e7 aa 04 0a
  271. 2d 5b 25 21 76 45 9d 1f
  272. 39 75 41 ba 2a 58 fb 65
  273. 99
  274. # prime2
  275. 02 41
  276. 00 c9 7f b1 f0 27 f4 53
  277. f6 34 12 33 ea aa d1 d9
  278. 35 3f 6c 42 d0 88 66 b1
  279. d0 5a 0f 20 35 02 8b 9d
  280. 86 98 40 b4 16 66 b4 2e
  281. 92 ea 0d a3 b4 32 04 b5
  282. cf ce 33 52 52 4d 04 16
  283. a5 a4 41 e7 00 af 46 15
  284. 03
  285. # exponent1
  286. 02 40
  287. 54 49 4c a6 3e ba 03 37
  288. e4 e2 40 23 fc d6 9a 5a
  289. eb 07 dd dc 01 83 a4 d0
  290. ac 9b 54 b0 51 f2 b1 3e
  291. d9 49 09 75 ea b7 74 14
  292. ff 59 c1 f7 69 2e 9a 2e
  293. 20 2b 38 fc 91 0a 47 41
  294. 74 ad c9 3c 1f 67 c9 81
  295. # exponent2
  296. 02 40
  297. 47 1e 02 90 ff 0a f0 75
  298. 03 51 b7 f8 78 86 4c a9
  299. 61 ad bd 3a 8a 7e 99 1c
  300. 5c 05 56 a9 4c 31 46 a7
  301. f9 80 3f 8f 6f 8a e3 42
  302. e9 31 fd 8a e4 7a 22 0d
  303. 1b 99 a4 95 84 98 07 fe
  304. 39 f9 24 5a 98 36 da 3d
  305. # coefficient
  306. 02 41
  307. 00 b0 6c 4f da bb 63 01
  308. 19 8d 26 5b db ae 94 23
  309. b3 80 f2 71 f7 34 53 88
  310. 50 93 07 7f cd 39 e2 11
  311. 9f c9 86 32 15 4f 58 83
  312. b1 67 a9 67 bf 40 2b 4e
  313. 9e 2e 0f 96 56 e6 98 ea
  314. 36 66 ed fb 25 79 80 39
  315. f7
  316. # ------------------------
  317. # PrivateKeyInfo (PKCS #8)
  318. # ------------------------
  319. 30 82 02 75
  320. # version
  321. 02 01
  322. 00
  323. # privateKeyAlgorithmIdentifier
  324. 30 0d
  325. 06 09
  326. 2a 86 48 86 f7 0d 01 01 01
  327. # parameters
  328. 05 00
  329. # privateKey = RSAPrivateKey encoding
  330. 04 82 02 5f
  331. # DER encoding of RSAPrivateKey structure
  332. 30 82 02 5b ... 79 80 39 f7
  333. # =============================================