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.
 
 
 
 
 

463 lines
16 KiB

  1. /* X25519, X448 test vectors */
  2. template<> const uint8_t Tests<IsoEd25519>::rfc7748_1[32] = {
  3. 0x42,0x2c,0x8e,0x7a,0x62,0x27,0xd7,0xbc,
  4. 0xa1,0x35,0x0b,0x3e,0x2b,0xb7,0x27,0x9f,
  5. 0x78,0x97,0xb8,0x7b,0xb6,0x85,0x4b,0x78,
  6. 0x3c,0x60,0xe8,0x03,0x11,0xae,0x30,0x79
  7. };
  8. template<> const uint8_t Tests<IsoEd25519>::rfc7748_1000[32] = {
  9. 0x68,0x4c,0xf5,0x9b,0xa8,0x33,0x09,0x55,
  10. 0x28,0x00,0xef,0x56,0x6f,0x2f,0x4d,0x3c,
  11. 0x1c,0x38,0x87,0xc4,0x93,0x60,0xe3,0x87,
  12. 0x5f,0x2e,0xb9,0x4d,0x99,0x53,0x2c,0x51
  13. };
  14. template<> const uint8_t Tests<IsoEd25519>::rfc7748_1000000[32] = {
  15. 0x7c,0x39,0x11,0xe0,0xab,0x25,0x86,0xfd,
  16. 0x86,0x44,0x97,0x29,0x7e,0x57,0x5e,0x6f,
  17. 0x3b,0xc6,0x01,0xc0,0x88,0x3c,0x30,0xdf,
  18. 0x5f,0x4d,0xd2,0xd2,0x4f,0x66,0x54,0x24
  19. };
  20. template<> const uint8_t Tests<Ed448Goldilocks>::rfc7748_1[56] = {
  21. 0x3f,0x48,0x2c,0x8a,0x9f,0x19,0xb0,0x1e,
  22. 0x6c,0x46,0xee,0x97,0x11,0xd9,0xdc,0x14,
  23. 0xfd,0x4b,0xf6,0x7a,0xf3,0x07,0x65,0xc2,
  24. 0xae,0x2b,0x84,0x6a,0x4d,0x23,0xa8,0xcd,
  25. 0x0d,0xb8,0x97,0x08,0x62,0x39,0x49,0x2c,
  26. 0xaf,0x35,0x0b,0x51,0xf8,0x33,0x86,0x8b,
  27. 0x9b,0xc2,0xb3,0xbc,0xa9,0xcf,0x41,0x13
  28. };
  29. template<> const uint8_t Tests<Ed448Goldilocks>::rfc7748_1000[56] = {
  30. 0xaa,0x3b,0x47,0x49,0xd5,0x5b,0x9d,0xaf,
  31. 0x1e,0x5b,0x00,0x28,0x88,0x26,0xc4,0x67,
  32. 0x27,0x4c,0xe3,0xeb,0xbd,0xd5,0xc1,0x7b,
  33. 0x97,0x5e,0x09,0xd4,0xaf,0x6c,0x67,0xcf,
  34. 0x10,0xd0,0x87,0x20,0x2d,0xb8,0x82,0x86,
  35. 0xe2,0xb7,0x9f,0xce,0xea,0x3e,0xc3,0x53,
  36. 0xef,0x54,0xfa,0xa2,0x6e,0x21,0x9f,0x38
  37. };
  38. template<> const uint8_t Tests<Ed448Goldilocks>::rfc7748_1000000[56] = {
  39. 0x07,0x7f,0x45,0x36,0x81,0xca,0xca,0x36,
  40. 0x93,0x19,0x84,0x20,0xbb,0xe5,0x15,0xca,
  41. 0xe0,0x00,0x24,0x72,0x51,0x9b,0x3e,0x67,
  42. 0x66,0x1a,0x7e,0x89,0xca,0xb9,0x46,0x95,
  43. 0xc8,0xf4,0xbc,0xd6,0x6e,0x61,0xb9,0xb9,
  44. 0xc9,0x46,0xda,0x8d,0x52,0x4d,0xe3,0xd6,
  45. 0x9b,0xd9,0xd9,0xd6,0x6b,0x99,0x7e,0x37
  46. };
  47. template<> const Block Tests<Ed448Goldilocks>::sqrt_minus_one(NULL,0);
  48. const uint8_t sm1_25519[32] = {
  49. 0xb0,0xa0,0x0e,0x4a,0x27,0x1b,0xee,0xc4,
  50. 0x78,0xe4,0x2f,0xad,0x06,0x18,0x43,0x2f,
  51. 0xa7,0xd7,0xfb,0x3d,0x99,0x00,0x4d,0x2b,
  52. 0x0b,0xdf,0xc1,0x4f,0x80,0x24,0x83,0x2b
  53. };
  54. template<> const Block Tests<IsoEd25519>::sqrt_minus_one(sm1_25519,32);
  55. template<> const Block Tests<Ed448Goldilocks>::minus_sqrt_minus_one(NULL,0);
  56. const uint8_t msm1_25519[32] = {
  57. 0x3d,0x5f,0xf1,0xb5,0xd8,0xe4,0x11,0x3b,
  58. 0x87,0x1b,0xd0,0x52,0xf9,0xe7,0xbc,0xd0,
  59. 0x58,0x28,0x04,0xc2,0x66,0xff,0xb2,0xd4,
  60. 0xf4,0x20,0x3e,0xb0,0x7f,0xdb,0x7c,0x54
  61. };
  62. template<> const Block Tests<IsoEd25519>::minus_sqrt_minus_one(msm1_25519,32);
  63. const uint8_t elli_patho_448[56] = {
  64. 0x14,0xf0,0x70,0x58,0x41,0xc7,0xf9,0xa5,
  65. 0xfa,0x2c,0x7d,0x87,0x07,0x89,0xe8,0x61,
  66. 0x63,0xe8,0xc8,0xdc,0x06,0x2d,0x39,0x8f,
  67. 0x18,0x83,0x1e,0xc6,0x8c,0x6d,0x73,0x24,
  68. 0xd4,0xb3,0xd3,0xe1,0xf3,0x51,0x8c,0xee,
  69. 0x65,0x79,0x88,0xc1,0x0b,0xcf,0x8e,0xa5,
  70. 0x86,0xa9,0x2e,0xc9,0x17,0x68,0x9b,0x20
  71. };
  72. template<> const Block Tests<Ed448Goldilocks>::elli_patho(elli_patho_448,56);
  73. template<> const Block Tests<IsoEd25519>::elli_patho(NULL,0);
  74. /* EdDSA test vectors */
  75. const uint8_t ed448_eddsa_sk[][57] = {{
  76. 0x6c,0x82,0xa5,0x62,0xcb,0x80,0x8d,0x10,
  77. 0xd6,0x32,0xbe,0x89,0xc8,0x51,0x3e,0xbf,
  78. 0x6c,0x92,0x9f,0x34,0xdd,0xfa,0x8c,0x9f,
  79. 0x63,0xc9,0x96,0x0e,0xf6,0xe3,0x48,0xa3,
  80. 0x52,0x8c,0x8a,0x3f,0xcc,0x2f,0x04,0x4e,
  81. 0x39,0xa3,0xfc,0x5b,0x94,0x49,0x2f,0x8f,
  82. 0x03,0x2e,0x75,0x49,0xa2,0x00,0x98,0xf9,
  83. 0x5b
  84. }, {
  85. 0xc4,0xea,0xb0,0x5d,0x35,0x70,0x07,0xc6,
  86. 0x32,0xf3,0xdb,0xb4,0x84,0x89,0x92,0x4d,
  87. 0x55,0x2b,0x08,0xfe,0x0c,0x35,0x3a,0x0d,
  88. 0x4a,0x1f,0x00,0xac,0xda,0x2c,0x46,0x3a,
  89. 0xfb,0xea,0x67,0xc5,0xe8,0xd2,0x87,0x7c,
  90. 0x5e,0x3b,0xc3,0x97,0xa6,0x59,0x94,0x9e,
  91. 0xf8,0x02,0x1e,0x95,0x4e,0x0a,0x12,0x27,
  92. 0x4e
  93. }, {
  94. 0xcd,0x23,0xd2,0x4f,0x71,0x42,0x74,0xe7,
  95. 0x44,0x34,0x32,0x37,0xb9,0x32,0x90,0xf5,
  96. 0x11,0xf6,0x42,0x5f,0x98,0xe6,0x44,0x59,
  97. 0xff,0x20,0x3e,0x89,0x85,0x08,0x3f,0xfd,
  98. 0xf6,0x05,0x00,0x55,0x3a,0xbc,0x0e,0x05,
  99. 0xcd,0x02,0x18,0x4b,0xdb,0x89,0xc4,0xcc,
  100. 0xd6,0x7e,0x18,0x79,0x51,0x26,0x7e,0xb3,
  101. 0x28
  102. }, {
  103. 0x25,0x8c,0xdd,0x4a,0xda,0x32,0xed,0x9c,
  104. 0x9f,0xf5,0x4e,0x63,0x75,0x6a,0xe5,0x82,
  105. 0xfb,0x8f,0xab,0x2a,0xc7,0x21,0xf2,0xc8,
  106. 0xe6,0x76,0xa7,0x27,0x68,0x51,0x3d,0x93,
  107. 0x9f,0x63,0xdd,0xdb,0x55,0x60,0x91,0x33,
  108. 0xf2,0x9a,0xdf,0x86,0xec,0x99,0x29,0xdc,
  109. 0xcb,0x52,0xc1,0xc5,0xfd,0x2f,0xf7,0xe2,
  110. 0x1b
  111. }, {
  112. 0x83,0x3f,0xe6,0x24,0x09,0x23,0x7b,0x9d,
  113. 0x62,0xec,0x77,0x58,0x75,0x20,0x91,0x1e,
  114. 0x9a,0x75,0x9c,0xec,0x1d,0x19,0x75,0x5b,
  115. 0x7d,0xa9,0x01,0xb9,0x6d,0xca,0x3d,0x42,
  116. 0xef,0x78,0x22,0xe0,0xd5,0x10,0x41,0x27,
  117. 0xdc,0x05,0xd6,0xdb,0xef,0xde,0x69,0xe3,
  118. 0xab,0x2c,0xec,0x7c,0x86,0x7c,0x6e,0x2c,
  119. 0x49
  120. }};
  121. const uint8_t ed448_eddsa_pk[][57] = {{
  122. 0x5f,0xd7,0x44,0x9b,0x59,0xb4,0x61,0xfd,
  123. 0x2c,0xe7,0x87,0xec,0x61,0x6a,0xd4,0x6a,
  124. 0x1d,0xa1,0x34,0x24,0x85,0xa7,0x0e,0x1f,
  125. 0x8a,0x0e,0xa7,0x5d,0x80,0xe9,0x67,0x78,
  126. 0xed,0xf1,0x24,0x76,0x9b,0x46,0xc7,0x06,
  127. 0x1b,0xd6,0x78,0x3d,0xf1,0xe5,0x0f,0x6c,
  128. 0xd1,0xfa,0x1a,0xbe,0xaf,0xe8,0x25,0x61,
  129. 0x80
  130. }, {
  131. 0x43,0xba,0x28,0xf4,0x30,0xcd,0xff,0x45,
  132. 0x6a,0xe5,0x31,0x54,0x5f,0x7e,0xcd,0x0a,
  133. 0xc8,0x34,0xa5,0x5d,0x93,0x58,0xc0,0x37,
  134. 0x2b,0xfa,0x0c,0x6c,0x67,0x98,0xc0,0x86,
  135. 0x6a,0xea,0x01,0xeb,0x00,0x74,0x28,0x02,
  136. 0xb8,0x43,0x8e,0xa4,0xcb,0x82,0x16,0x9c,
  137. 0x23,0x51,0x60,0x62,0x7b,0x4c,0x3a,0x94,
  138. 0x80
  139. }, {
  140. 0xdc,0xea,0x9e,0x78,0xf3,0x5a,0x1b,0xf3,
  141. 0x49,0x9a,0x83,0x1b,0x10,0xb8,0x6c,0x90,
  142. 0xaa,0xc0,0x1c,0xd8,0x4b,0x67,0xa0,0x10,
  143. 0x9b,0x55,0xa3,0x6e,0x93,0x28,0xb1,0xe3,
  144. 0x65,0xfc,0xe1,0x61,0xd7,0x1c,0xe7,0x13,
  145. 0x1a,0x54,0x3e,0xa4,0xcb,0x5f,0x7e,0x9f,
  146. 0x1d,0x8b,0x00,0x69,0x64,0x47,0x00,0x14,
  147. 0x00
  148. }, {
  149. 0x3b,0xa1,0x6d,0xa0,0xc6,0xf2,0xcc,0x1f,
  150. 0x30,0x18,0x77,0x40,0x75,0x6f,0x5e,0x79,
  151. 0x8d,0x6b,0xc5,0xfc,0x01,0x5d,0x7c,0x63,
  152. 0xcc,0x95,0x10,0xee,0x3f,0xd4,0x4a,0xdc,
  153. 0x24,0xd8,0xe9,0x68,0xb6,0xe4,0x6e,0x6f,
  154. 0x94,0xd1,0x9b,0x94,0x53,0x61,0x72,0x6b,
  155. 0xd7,0x5e,0x14,0x9e,0xf0,0x98,0x17,0xf5,
  156. 0x80
  157. }, {
  158. 0x25,0x9b,0x71,0xc1,0x9f,0x83,0xef,0x77,
  159. 0xa7,0xab,0xd2,0x65,0x24,0xcb,0xdb,0x31,
  160. 0x61,0xb5,0x90,0xa4,0x8f,0x7d,0x17,0xde,
  161. 0x3e,0xe0,0xba,0x9c,0x52,0xbe,0xb7,0x43,
  162. 0xc0,0x94,0x28,0xa1,0x31,0xd6,0xb1,0xb5,
  163. 0x73,0x03,0xd9,0x0d,0x81,0x32,0xc2,0x76,
  164. 0xd5,0xed,0x3d,0x5d,0x01,0xc0,0xf5,0x38,
  165. 0x80
  166. }};
  167. const uint8_t ed448_eddsa_message[][12] = {{
  168. 0
  169. }, {
  170. 0x03
  171. }, {
  172. 0x0c,0x3e,0x54,0x40,0x74,0xec,0x63,0xb0,
  173. 0x26,0x5e,0x0c
  174. }, {
  175. 0x64,0xa6,0x5f,0x3c,0xde,0xdc,0xdd,0x66,
  176. 0x81,0x1e,0x29,0x15
  177. }, {
  178. 0x61,0x62,0x63
  179. }};
  180. template<> const bool Tests<Ed448Goldilocks>::eddsa_prehashed[] = {
  181. false,
  182. false,
  183. false,
  184. false,
  185. false,
  186. true
  187. };
  188. const uint8_t ed448_eddsa_context[][3] = {{
  189. 0x66,0x6f,0x6f
  190. }};
  191. const uint8_t ed448_eddsa_sig[][114] = {{
  192. 0x53,0x3a,0x37,0xf6,0xbb,0xe4,0x57,0x25,
  193. 0x1f,0x02,0x3c,0x0d,0x88,0xf9,0x76,0xae,
  194. 0x2d,0xfb,0x50,0x4a,0x84,0x3e,0x34,0xd2,
  195. 0x07,0x4f,0xd8,0x23,0xd4,0x1a,0x59,0x1f,
  196. 0x2b,0x23,0x3f,0x03,0x4f,0x62,0x82,0x81,
  197. 0xf2,0xfd,0x7a,0x22,0xdd,0xd4,0x7d,0x78,
  198. 0x28,0xc5,0x9b,0xd0,0xa2,0x1b,0xfd,0x39,
  199. 0x80,0xff,0x0d,0x20,0x28,0xd4,0xb1,0x8a,
  200. 0x9d,0xf6,0x3e,0x00,0x6c,0x5d,0x1c,0x2d,
  201. 0x34,0x5b,0x92,0x5d,0x8d,0xc0,0x0b,0x41,
  202. 0x04,0x85,0x2d,0xb9,0x9a,0xc5,0xc7,0xcd,
  203. 0xda,0x85,0x30,0xa1,0x13,0xa0,0xf4,0xdb,
  204. 0xb6,0x11,0x49,0xf0,0x5a,0x73,0x63,0x26,
  205. 0x8c,0x71,0xd9,0x58,0x08,0xff,0x2e,0x65,
  206. 0x26,0x00
  207. }, {
  208. 0x26,0xb8,0xf9,0x17,0x27,0xbd,0x62,0x89,
  209. 0x7a,0xf1,0x5e,0x41,0xeb,0x43,0xc3,0x77,
  210. 0xef,0xb9,0xc6,0x10,0xd4,0x8f,0x23,0x35,
  211. 0xcb,0x0b,0xd0,0x08,0x78,0x10,0xf4,0x35,
  212. 0x25,0x41,0xb1,0x43,0xc4,0xb9,0x81,0xb7,
  213. 0xe1,0x8f,0x62,0xde,0x8c,0xcd,0xf6,0x33,
  214. 0xfc,0x1b,0xf0,0x37,0xab,0x7c,0xd7,0x79,
  215. 0x80,0x5e,0x0d,0xbc,0xc0,0xaa,0xe1,0xcb,
  216. 0xce,0xe1,0xaf,0xb2,0xe0,0x27,0xdf,0x36,
  217. 0xbc,0x04,0xdc,0xec,0xbf,0x15,0x43,0x36,
  218. 0xc1,0x9f,0x0a,0xf7,0xe0,0xa6,0x47,0x29,
  219. 0x05,0xe7,0x99,0xf1,0x95,0x3d,0x2a,0x0f,
  220. 0xf3,0x34,0x8a,0xb2,0x1a,0xa4,0xad,0xaf,
  221. 0xd1,0xd2,0x34,0x44,0x1c,0xf8,0x07,0xc0,
  222. 0x3a,0x00
  223. }, {
  224. 0x1f,0x0a,0x88,0x88,0xce,0x25,0xe8,0xd4,
  225. 0x58,0xa2,0x11,0x30,0x87,0x9b,0x84,0x0a,
  226. 0x90,0x89,0xd9,0x99,0xaa,0xba,0x03,0x9e,
  227. 0xaf,0x3e,0x3a,0xfa,0x09,0x0a,0x09,0xd3,
  228. 0x89,0xdb,0xa8,0x2c,0x4f,0xf2,0xae,0x8a,
  229. 0xc5,0xcd,0xfb,0x7c,0x55,0xe9,0x4d,0x5d,
  230. 0x96,0x1a,0x29,0xfe,0x01,0x09,0x94,0x1e,
  231. 0x00,0xb8,0xdb,0xde,0xea,0x6d,0x3b,0x05,
  232. 0x10,0x68,0xdf,0x72,0x54,0xc0,0xcd,0xc1,
  233. 0x29,0xcb,0xe6,0x2d,0xb2,0xdc,0x95,0x7d,
  234. 0xbb,0x47,0xb5,0x1f,0xd3,0xf2,0x13,0xfb,
  235. 0x86,0x98,0xf0,0x64,0x77,0x42,0x50,0xa5,
  236. 0x02,0x89,0x61,0xc9,0xbf,0x8f,0xfd,0x97,
  237. 0x3f,0xe5,0xd5,0xc2,0x06,0x49,0x2b,0x14,
  238. 0x0e,0x00
  239. }, {
  240. 0x7e,0xee,0xab,0x7c,0x4e,0x50,0xfb,0x79,
  241. 0x9b,0x41,0x8e,0xe5,0xe3,0x19,0x7f,0xf6,
  242. 0xbf,0x15,0xd4,0x3a,0x14,0xc3,0x43,0x89,
  243. 0xb5,0x9d,0xd1,0xa7,0xb1,0xb8,0x5b,0x4a,
  244. 0xe9,0x04,0x38,0xac,0xa6,0x34,0xbe,0xa4,
  245. 0x5e,0x3a,0x26,0x95,0xf1,0x27,0x0f,0x07,
  246. 0xfd,0xcd,0xf7,0xc6,0x2b,0x8e,0xfe,0xaf,
  247. 0x00,0xb4,0x5c,0x2c,0x96,0xba,0x45,0x7e,
  248. 0xb1,0xa8,0xbf,0x07,0x5a,0x3d,0xb2,0x8e,
  249. 0x5c,0x24,0xf6,0xb9,0x23,0xed,0x4a,0xd7,
  250. 0x47,0xc3,0xc9,0xe0,0x3c,0x70,0x79,0xef,
  251. 0xb8,0x7c,0xb1,0x10,0xd3,0xa9,0x98,0x61,
  252. 0xe7,0x20,0x03,0xcb,0xae,0x6d,0x6b,0x8b,
  253. 0x82,0x7e,0x4e,0x6c,0x14,0x30,0x64,0xff,
  254. 0x3c,0x00
  255. }, {
  256. 0xd4,0xf8,0xf6,0x13,0x17,0x70,0xdd,0x46,
  257. 0xf4,0x08,0x67,0xd6,0xfd,0x5d,0x50,0x55,
  258. 0xde,0x43,0x54,0x1f,0x8c,0x5e,0x35,0xab,
  259. 0xbc,0xd0,0x01,0xb3,0x2a,0x89,0xf7,0xd2,
  260. 0x15,0x1f,0x76,0x47,0xf1,0x1d,0x8c,0xa2,
  261. 0xae,0x27,0x9f,0xb8,0x42,0xd6,0x07,0x21,
  262. 0x7f,0xce,0x6e,0x04,0x2f,0x68,0x15,0xea,
  263. 0x00,0x0c,0x85,0x74,0x1d,0xe5,0xc8,0xda,
  264. 0x11,0x44,0xa6,0xa1,0xab,0xa7,0xf9,0x6d,
  265. 0xe4,0x25,0x05,0xd7,0xa7,0x29,0x85,0x24,
  266. 0xfd,0xa5,0x38,0xfc,0xcb,0xbb,0x75,0x4f,
  267. 0x57,0x8c,0x1c,0xad,0x10,0xd5,0x4d,0x0d,
  268. 0x54,0x28,0x40,0x7e,0x85,0xdc,0xbc,0x98,
  269. 0xa4,0x91,0x55,0xc1,0x37,0x64,0xe6,0x6c,
  270. 0x3c,0x00
  271. }, {
  272. 0x86,0xa6,0xbf,0x52,0xf9,0xe8,0xf8,0x4f,
  273. 0x45,0x1b,0x2f,0x39,0x2a,0x8d,0x1c,0x3a,
  274. 0x41,0x44,0x25,0xfa,0xc0,0x06,0x8f,0x74,
  275. 0xae,0xea,0xd5,0x3b,0x0e,0x6b,0x53,0xd4,
  276. 0x55,0x5c,0xea,0x17,0x26,0xda,0x4a,0x65,
  277. 0x20,0x28,0x80,0xd4,0x07,0x26,0x70,0x87,
  278. 0x9e,0x8e,0x6f,0xa4,0xd9,0x69,0x4c,0x06,
  279. 0x00,0x54,0xf2,0x06,0x5d,0xc2,0x06,0xa6,
  280. 0xe6,0x15,0xd0,0xd8,0xc9,0x9b,0x95,0x20,
  281. 0x9b,0x69,0x6c,0x81,0x25,0xc5,0xfb,0xb9,
  282. 0xbc,0x82,0xa0,0xf7,0xed,0x3d,0x99,0xc4,
  283. 0xc1,0x1c,0x47,0x79,0x8e,0xf0,0xf7,0xeb,
  284. 0x97,0xb3,0xb7,0x2a,0xb4,0xac,0x86,0xea,
  285. 0xf8,0xb4,0x34,0x49,0xe8,0xac,0x30,0xff,
  286. 0x3f,0x00
  287. }};
  288. template<> const Block Tests<Ed448Goldilocks>::eddsa_sk[] = {
  289. Block(ed448_eddsa_sk[0],57),
  290. Block(ed448_eddsa_sk[1],57),
  291. Block(ed448_eddsa_sk[1],57),
  292. Block(ed448_eddsa_sk[2],57),
  293. Block(ed448_eddsa_sk[3],57),
  294. Block(ed448_eddsa_sk[4],57),
  295. Block(NULL,0)
  296. };
  297. template<> const Block Tests<Ed448Goldilocks>::eddsa_pk[] = {
  298. Block(ed448_eddsa_pk[0],57),
  299. Block(ed448_eddsa_pk[1],57),
  300. Block(ed448_eddsa_pk[1],57),
  301. Block(ed448_eddsa_pk[2],57),
  302. Block(ed448_eddsa_pk[3],57),
  303. Block(ed448_eddsa_pk[4],57)
  304. };
  305. template<> const Block Tests<Ed448Goldilocks>::eddsa_message[] = {
  306. Block(ed448_eddsa_message[0],0),
  307. Block(ed448_eddsa_message[1],1),
  308. Block(ed448_eddsa_message[1],1),
  309. Block(ed448_eddsa_message[2],11),
  310. Block(ed448_eddsa_message[3],12),
  311. Block(ed448_eddsa_message[4],3)
  312. };
  313. template<> const Block Tests<Ed448Goldilocks>::eddsa_context[] = {
  314. Block(NULL,0),
  315. Block(NULL,0),
  316. Block(ed448_eddsa_context[0],3),
  317. Block(NULL,0),
  318. Block(NULL,0),
  319. Block(ed448_eddsa_context[0],3)
  320. };
  321. template<> const Block Tests<Ed448Goldilocks>::eddsa_sig[] = {
  322. Block(ed448_eddsa_sig[0],114),
  323. Block(ed448_eddsa_sig[1],114),
  324. Block(ed448_eddsa_sig[4],114),
  325. Block(ed448_eddsa_sig[2],114),
  326. Block(ed448_eddsa_sig[3],114),
  327. Block(ed448_eddsa_sig[5],114)
  328. };
  329. const uint8_t ed25519_eddsa_sk[][32] = {{
  330. 0x9d,0x61,0xb1,0x9d,0xef,0xfd,0x5a,0x60,
  331. 0xba,0x84,0x4a,0xf4,0x92,0xec,0x2c,0xc4,
  332. 0x44,0x49,0xc5,0x69,0x7b,0x32,0x69,0x19,
  333. 0x70,0x3b,0xac,0x03,0x1c,0xae,0x7f,0x60
  334. }, {
  335. 0x4c,0xcd,0x08,0x9b,0x28,0xff,0x96,0xda,
  336. 0x9d,0xb6,0xc3,0x46,0xec,0x11,0x4e,0x0f,
  337. 0x5b,0x8a,0x31,0x9f,0x35,0xab,0xa6,0x24,
  338. 0xda,0x8c,0xf6,0xed,0x4f,0xb8,0xa6,0xfb
  339. }, {
  340. 0xc5,0xaa,0x8d,0xf4,0x3f,0x9f,0x83,0x7b,
  341. 0xed,0xb7,0x44,0x2f,0x31,0xdc,0xb7,0xb1,
  342. 0x66,0xd3,0x85,0x35,0x07,0x6f,0x09,0x4b,
  343. 0x85,0xce,0x3a,0x2e,0x0b,0x44,0x58,0xf7
  344. }, {
  345. 0x83,0x3f,0xe6,0x24,0x09,0x23,0x7b,0x9d,
  346. 0x62,0xec,0x77,0x58,0x75,0x20,0x91,0x1e,
  347. 0x9a,0x75,0x9c,0xec,0x1d,0x19,0x75,0x5b,
  348. 0x7d,0xa9,0x01,0xb9,0x6d,0xca,0x3d,0x42
  349. }};
  350. const uint8_t ed25519_eddsa_pk[][32] = {{
  351. 0xd7,0x5a,0x98,0x01,0x82,0xb1,0x0a,0xb7,
  352. 0xd5,0x4b,0xfe,0xd3,0xc9,0x64,0x07,0x3a,
  353. 0x0e,0xe1,0x72,0xf3,0xda,0xa6,0x23,0x25,
  354. 0xaf,0x02,0x1a,0x68,0xf7,0x07,0x51,0x1a
  355. }, {
  356. 0x3d,0x40,0x17,0xc3,0xe8,0x43,0x89,0x5a,
  357. 0x92,0xb7,0x0a,0xa7,0x4d,0x1b,0x7e,0xbc,
  358. 0x9c,0x98,0x2c,0xcf,0x2e,0xc4,0x96,0x8c,
  359. 0xc0,0xcd,0x55,0xf1,0x2a,0xf4,0x66,0x0c
  360. }, {
  361. 0xfc,0x51,0xcd,0x8e,0x62,0x18,0xa1,0xa3,
  362. 0x8d,0xa4,0x7e,0xd0,0x02,0x30,0xf0,0x58,
  363. 0x08,0x16,0xed,0x13,0xba,0x33,0x03,0xac,
  364. 0x5d,0xeb,0x91,0x15,0x48,0x90,0x80,0x25
  365. }, {
  366. 0xec,0x17,0x2b,0x93,0xad,0x5e,0x56,0x3b,
  367. 0xf4,0x93,0x2c,0x70,0xe1,0x24,0x50,0x34,
  368. 0xc3,0x54,0x67,0xef,0x2e,0xfd,0x4d,0x64,
  369. 0xeb,0xf8,0x19,0x68,0x34,0x67,0xe2,0xbf
  370. }};
  371. const uint8_t ed25519_eddsa_message[][3] = {{
  372. 0
  373. }, {
  374. 0x72
  375. }, {
  376. 0xaf,0x82
  377. }, {
  378. 0x61,0x62,0x63
  379. }};
  380. const uint8_t ed25519_eddsa_sig[][64] = {{
  381. 0xe5,0x56,0x43,0x00,0xc3,0x60,0xac,0x72,
  382. 0x90,0x86,0xe2,0xcc,0x80,0x6e,0x82,0x8a,
  383. 0x84,0x87,0x7f,0x1e,0xb8,0xe5,0xd9,0x74,
  384. 0xd8,0x73,0xe0,0x65,0x22,0x49,0x01,0x55,
  385. 0x5f,0xb8,0x82,0x15,0x90,0xa3,0x3b,0xac,
  386. 0xc6,0x1e,0x39,0x70,0x1c,0xf9,0xb4,0x6b,
  387. 0xd2,0x5b,0xf5,0xf0,0x59,0x5b,0xbe,0x24,
  388. 0x65,0x51,0x41,0x43,0x8e,0x7a,0x10,0x0b
  389. } , {
  390. 0x92,0xa0,0x09,0xa9,0xf0,0xd4,0xca,0xb8,
  391. 0x72,0x0e,0x82,0x0b,0x5f,0x64,0x25,0x40,
  392. 0xa2,0xb2,0x7b,0x54,0x16,0x50,0x3f,0x8f,
  393. 0xb3,0x76,0x22,0x23,0xeb,0xdb,0x69,0xda,
  394. 0x08,0x5a,0xc1,0xe4,0x3e,0x15,0x99,0x6e,
  395. 0x45,0x8f,0x36,0x13,0xd0,0xf1,0x1d,0x8c,
  396. 0x38,0x7b,0x2e,0xae,0xb4,0x30,0x2a,0xee,
  397. 0xb0,0x0d,0x29,0x16,0x12,0xbb,0x0c,0x00
  398. }, {
  399. 0x62,0x91,0xd6,0x57,0xde,0xec,0x24,0x02,
  400. 0x48,0x27,0xe6,0x9c,0x3a,0xbe,0x01,0xa3,
  401. 0x0c,0xe5,0x48,0xa2,0x84,0x74,0x3a,0x44,
  402. 0x5e,0x36,0x80,0xd7,0xdb,0x5a,0xc3,0xac,
  403. 0x18,0xff,0x9b,0x53,0x8d,0x16,0xf2,0x90,
  404. 0xae,0x67,0xf7,0x60,0x98,0x4d,0xc6,0x59,
  405. 0x4a,0x7c,0x15,0xe9,0x71,0x6e,0xd2,0x8d,
  406. 0xc0,0x27,0xbe,0xce,0xea,0x1e,0xc4,0x0a
  407. }, {
  408. 0xdc,0x2a,0x44,0x59,0xe7,0x36,0x96,0x33,
  409. 0xa5,0x2b,0x1b,0xf2,0x77,0x83,0x9a,0x00,
  410. 0x20,0x10,0x09,0xa3,0xef,0xbf,0x3e,0xcb,
  411. 0x69,0xbe,0xa2,0x18,0x6c,0x26,0xb5,0x89,
  412. 0x09,0x35,0x1f,0xc9,0xac,0x90,0xb3,0xec,
  413. 0xfd,0xfb,0xc7,0xc6,0x64,0x31,0xe0,0x30,
  414. 0x3d,0xca,0x17,0x9c,0x13,0x8a,0xc1,0x7a,
  415. 0xd9,0xbe,0xf1,0x17,0x73,0x31,0xa7,0x04
  416. }};
  417. template<> const bool Tests<IsoEd25519>::eddsa_prehashed[] = {
  418. false,
  419. false,
  420. false,
  421. true
  422. };
  423. template<> const Block Tests<IsoEd25519>::eddsa_sk[] = {
  424. Block(ed25519_eddsa_sk[0],32),
  425. Block(ed25519_eddsa_sk[1],32),
  426. Block(ed25519_eddsa_sk[2],32),
  427. Block(ed25519_eddsa_sk[3],32),
  428. Block(NULL,0)
  429. };
  430. template<> const Block Tests<IsoEd25519>::eddsa_pk[] = {
  431. Block(ed25519_eddsa_pk[0],32),
  432. Block(ed25519_eddsa_pk[1],32),
  433. Block(ed25519_eddsa_pk[2],32),
  434. Block(ed25519_eddsa_pk[3],32)
  435. };
  436. template<> const Block Tests<IsoEd25519>::eddsa_context[] = {
  437. Block(NULL,0),
  438. Block(NULL,0),
  439. Block(NULL,0),
  440. Block(NULL,0)
  441. };
  442. template<> const Block Tests<IsoEd25519>::eddsa_message[] = {
  443. Block(ed25519_eddsa_message[0],0),
  444. Block(ed25519_eddsa_message[1],1),
  445. Block(ed25519_eddsa_message[2],2),
  446. Block(ed25519_eddsa_message[3],3)
  447. };
  448. template<> const Block Tests<IsoEd25519>::eddsa_sig[] = {
  449. Block(ed25519_eddsa_sig[0],64),
  450. Block(ed25519_eddsa_sig[1],64),
  451. Block(ed25519_eddsa_sig[2],64),
  452. Block(ed25519_eddsa_sig[3],64)
  453. };