bn_srp.c 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545
  1. /*
  2. * Copyright 2014-2017 The OpenSSL Project Authors. All Rights Reserved.
  3. *
  4. * Licensed under the Apache License 2.0 (the "License"). You may not use
  5. * this file except in compliance with the License. You can obtain a copy
  6. * in the file LICENSE in the source distribution or at
  7. * https://www.openssl.org/source/license.html
  8. */
  9. #include "bn_local.h"
  10. #include "internal/nelem.h"
  11. #ifndef OPENSSL_NO_SRP
  12. #include <openssl/srp.h>
  13. #include "crypto/bn_srp.h"
  14. # if (BN_BYTES == 8)
  15. # if (defined(_WIN32) || defined(_WIN64)) && !defined(__MINGW32__)
  16. # define bn_pack4(a1,a2,a3,a4) ((a1##UI64<<48)|(a2##UI64<<32)|(a3##UI64<<16)|a4##UI64)
  17. # elif defined(__arch64__)
  18. # define bn_pack4(a1,a2,a3,a4) ((a1##UL<<48)|(a2##UL<<32)|(a3##UL<<16)|a4##UL)
  19. # else
  20. # define bn_pack4(a1,a2,a3,a4) ((a1##ULL<<48)|(a2##ULL<<32)|(a3##ULL<<16)|a4##ULL)
  21. # endif
  22. # elif (BN_BYTES == 4)
  23. # define bn_pack4(a1,a2,a3,a4) ((a3##UL<<16)|a4##UL), ((a1##UL<<16)|a2##UL)
  24. # else
  25. # error "unsupported BN_BYTES"
  26. # endif
  27. static const BN_ULONG bn_group_1024_value[] = {
  28. bn_pack4(0x9FC6, 0x1D2F, 0xC0EB, 0x06E3),
  29. bn_pack4(0xFD51, 0x38FE, 0x8376, 0x435B),
  30. bn_pack4(0x2FD4, 0xCBF4, 0x976E, 0xAA9A),
  31. bn_pack4(0x68ED, 0xBC3C, 0x0572, 0x6CC0),
  32. bn_pack4(0xC529, 0xF566, 0x660E, 0x57EC),
  33. bn_pack4(0x8255, 0x9B29, 0x7BCF, 0x1885),
  34. bn_pack4(0xCE8E, 0xF4AD, 0x69B1, 0x5D49),
  35. bn_pack4(0x5DC7, 0xD7B4, 0x6154, 0xD6B6),
  36. bn_pack4(0x8E49, 0x5C1D, 0x6089, 0xDAD1),
  37. bn_pack4(0xE0D5, 0xD8E2, 0x50B9, 0x8BE4),
  38. bn_pack4(0x383B, 0x4813, 0xD692, 0xC6E0),
  39. bn_pack4(0xD674, 0xDF74, 0x96EA, 0x81D3),
  40. bn_pack4(0x9EA2, 0x314C, 0x9C25, 0x6576),
  41. bn_pack4(0x6072, 0x6187, 0x75FF, 0x3C0B),
  42. bn_pack4(0x9C33, 0xF80A, 0xFA8F, 0xC5E8),
  43. bn_pack4(0xEEAF, 0x0AB9, 0xADB3, 0x8DD6)
  44. };
  45. const BIGNUM bn_group_1024 = {
  46. (BN_ULONG *)bn_group_1024_value,
  47. OSSL_NELEM(bn_group_1024_value),
  48. OSSL_NELEM(bn_group_1024_value),
  49. 0,
  50. BN_FLG_STATIC_DATA
  51. };
  52. static const BN_ULONG bn_group_1536_value[] = {
  53. bn_pack4(0xCF76, 0xE3FE, 0xD135, 0xF9BB),
  54. bn_pack4(0x1518, 0x0F93, 0x499A, 0x234D),
  55. bn_pack4(0x8CE7, 0xA28C, 0x2442, 0xC6F3),
  56. bn_pack4(0x5A02, 0x1FFF, 0x5E91, 0x479E),
  57. bn_pack4(0x7F8A, 0x2FE9, 0xB8B5, 0x292E),
  58. bn_pack4(0x837C, 0x264A, 0xE3A9, 0xBEB8),
  59. bn_pack4(0xE442, 0x734A, 0xF7CC, 0xB7AE),
  60. bn_pack4(0x6577, 0x2E43, 0x7D6C, 0x7F8C),
  61. bn_pack4(0xDB2F, 0xD53D, 0x24B7, 0xC486),
  62. bn_pack4(0x6EDF, 0x0195, 0x3934, 0x9627),
  63. bn_pack4(0x158B, 0xFD3E, 0x2B9C, 0x8CF5),
  64. bn_pack4(0x764E, 0x3F4B, 0x53DD, 0x9DA1),
  65. bn_pack4(0x4754, 0x8381, 0xDBC5, 0xB1FC),
  66. bn_pack4(0x9B60, 0x9E0B, 0xE3BA, 0xB63D),
  67. bn_pack4(0x8134, 0xB1C8, 0xB979, 0x8914),
  68. bn_pack4(0xDF02, 0x8A7C, 0xEC67, 0xF0D0),
  69. bn_pack4(0x80B6, 0x55BB, 0x9A22, 0xE8DC),
  70. bn_pack4(0x1558, 0x903B, 0xA0D0, 0xF843),
  71. bn_pack4(0x51C6, 0xA94B, 0xE460, 0x7A29),
  72. bn_pack4(0x5F4F, 0x5F55, 0x6E27, 0xCBDE),
  73. bn_pack4(0xBEEE, 0xA961, 0x4B19, 0xCC4D),
  74. bn_pack4(0xDBA5, 0x1DF4, 0x99AC, 0x4C80),
  75. bn_pack4(0xB1F1, 0x2A86, 0x17A4, 0x7BBB),
  76. bn_pack4(0x9DEF, 0x3CAF, 0xB939, 0x277A)
  77. };
  78. const BIGNUM bn_group_1536 = {
  79. (BN_ULONG *)bn_group_1536_value,
  80. OSSL_NELEM(bn_group_1536_value),
  81. OSSL_NELEM(bn_group_1536_value),
  82. 0,
  83. BN_FLG_STATIC_DATA
  84. };
  85. static const BN_ULONG bn_group_2048_value[] = {
  86. bn_pack4(0x0FA7, 0x111F, 0x9E4A, 0xFF73),
  87. bn_pack4(0x9B65, 0xE372, 0xFCD6, 0x8EF2),
  88. bn_pack4(0x35DE, 0x236D, 0x525F, 0x5475),
  89. bn_pack4(0x94B5, 0xC803, 0xD89F, 0x7AE4),
  90. bn_pack4(0x71AE, 0x35F8, 0xE9DB, 0xFBB6),
  91. bn_pack4(0x2A56, 0x98F3, 0xA8D0, 0xC382),
  92. bn_pack4(0x9CCC, 0x041C, 0x7BC3, 0x08D8),
  93. bn_pack4(0xAF87, 0x4E73, 0x03CE, 0x5329),
  94. bn_pack4(0x6160, 0x2790, 0x04E5, 0x7AE6),
  95. bn_pack4(0x032C, 0xFBDB, 0xF52F, 0xB378),
  96. bn_pack4(0x5EA7, 0x7A27, 0x75D2, 0xECFA),
  97. bn_pack4(0x5445, 0x23B5, 0x24B0, 0xD57D),
  98. bn_pack4(0x5B9D, 0x32E6, 0x88F8, 0x7748),
  99. bn_pack4(0xF1D2, 0xB907, 0x8717, 0x461A),
  100. bn_pack4(0x76BD, 0x207A, 0x436C, 0x6481),
  101. bn_pack4(0xCA97, 0xB43A, 0x23FB, 0x8016),
  102. bn_pack4(0x1D28, 0x1E44, 0x6B14, 0x773B),
  103. bn_pack4(0x7359, 0xD041, 0xD5C3, 0x3EA7),
  104. bn_pack4(0xA80D, 0x740A, 0xDBF4, 0xFF74),
  105. bn_pack4(0x55F9, 0x7993, 0xEC97, 0x5EEA),
  106. bn_pack4(0x2918, 0xA996, 0x2F0B, 0x93B8),
  107. bn_pack4(0x661A, 0x05FB, 0xD5FA, 0xAAE8),
  108. bn_pack4(0xCF60, 0x9517, 0x9A16, 0x3AB3),
  109. bn_pack4(0xE808, 0x3969, 0xEDB7, 0x67B0),
  110. bn_pack4(0xCD7F, 0x48A9, 0xDA04, 0xFD50),
  111. bn_pack4(0xD523, 0x12AB, 0x4B03, 0x310D),
  112. bn_pack4(0x8193, 0xE075, 0x7767, 0xA13D),
  113. bn_pack4(0xA373, 0x29CB, 0xB4A0, 0x99ED),
  114. bn_pack4(0xFC31, 0x9294, 0x3DB5, 0x6050),
  115. bn_pack4(0xAF72, 0xB665, 0x1987, 0xEE07),
  116. bn_pack4(0xF166, 0xDE5E, 0x1389, 0x582F),
  117. bn_pack4(0xAC6B, 0xDB41, 0x324A, 0x9A9B)
  118. };
  119. const BIGNUM bn_group_2048 = {
  120. (BN_ULONG *)bn_group_2048_value,
  121. OSSL_NELEM(bn_group_2048_value),
  122. OSSL_NELEM(bn_group_2048_value),
  123. 0,
  124. BN_FLG_STATIC_DATA
  125. };
  126. static const BN_ULONG bn_group_3072_value[] = {
  127. bn_pack4(0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF),
  128. bn_pack4(0x4B82, 0xD120, 0xA93A, 0xD2CA),
  129. bn_pack4(0x43DB, 0x5BFC, 0xE0FD, 0x108E),
  130. bn_pack4(0x08E2, 0x4FA0, 0x74E5, 0xAB31),
  131. bn_pack4(0x7709, 0x88C0, 0xBAD9, 0x46E2),
  132. bn_pack4(0xBBE1, 0x1757, 0x7A61, 0x5D6C),
  133. bn_pack4(0x521F, 0x2B18, 0x177B, 0x200C),
  134. bn_pack4(0xD876, 0x0273, 0x3EC8, 0x6A64),
  135. bn_pack4(0xF12F, 0xFA06, 0xD98A, 0x0864),
  136. bn_pack4(0xCEE3, 0xD226, 0x1AD2, 0xEE6B),
  137. bn_pack4(0x1E8C, 0x94E0, 0x4A25, 0x619D),
  138. bn_pack4(0xABF5, 0xAE8C, 0xDB09, 0x33D7),
  139. bn_pack4(0xB397, 0x0F85, 0xA6E1, 0xE4C7),
  140. bn_pack4(0x8AEA, 0x7157, 0x5D06, 0x0C7D),
  141. bn_pack4(0xECFB, 0x8504, 0x58DB, 0xEF0A),
  142. bn_pack4(0xA855, 0x21AB, 0xDF1C, 0xBA64),
  143. bn_pack4(0xAD33, 0x170D, 0x0450, 0x7A33),
  144. bn_pack4(0x1572, 0x8E5A, 0x8AAA, 0xC42D),
  145. bn_pack4(0x15D2, 0x2618, 0x98FA, 0x0510),
  146. bn_pack4(0x3995, 0x497C, 0xEA95, 0x6AE5),
  147. bn_pack4(0xDE2B, 0xCBF6, 0x9558, 0x1718),
  148. bn_pack4(0xB5C5, 0x5DF0, 0x6F4C, 0x52C9),
  149. bn_pack4(0x9B27, 0x83A2, 0xEC07, 0xA28F),
  150. bn_pack4(0xE39E, 0x772C, 0x180E, 0x8603),
  151. bn_pack4(0x3290, 0x5E46, 0x2E36, 0xCE3B),
  152. bn_pack4(0xF174, 0x6C08, 0xCA18, 0x217C),
  153. bn_pack4(0x670C, 0x354E, 0x4ABC, 0x9804),
  154. bn_pack4(0x9ED5, 0x2907, 0x7096, 0x966D),
  155. bn_pack4(0x1C62, 0xF356, 0x2085, 0x52BB),
  156. bn_pack4(0x8365, 0x5D23, 0xDCA3, 0xAD96),
  157. bn_pack4(0x6916, 0x3FA8, 0xFD24, 0xCF5F),
  158. bn_pack4(0x98DA, 0x4836, 0x1C55, 0xD39A),
  159. bn_pack4(0xC200, 0x7CB8, 0xA163, 0xBF05),
  160. bn_pack4(0x4928, 0x6651, 0xECE4, 0x5B3D),
  161. bn_pack4(0xAE9F, 0x2411, 0x7C4B, 0x1FE6),
  162. bn_pack4(0xEE38, 0x6BFB, 0x5A89, 0x9FA5),
  163. bn_pack4(0x0BFF, 0x5CB6, 0xF406, 0xB7ED),
  164. bn_pack4(0xF44C, 0x42E9, 0xA637, 0xED6B),
  165. bn_pack4(0xE485, 0xB576, 0x625E, 0x7EC6),
  166. bn_pack4(0x4FE1, 0x356D, 0x6D51, 0xC245),
  167. bn_pack4(0x302B, 0x0A6D, 0xF25F, 0x1437),
  168. bn_pack4(0xEF95, 0x19B3, 0xCD3A, 0x431B),
  169. bn_pack4(0x514A, 0x0879, 0x8E34, 0x04DD),
  170. bn_pack4(0x020B, 0xBEA6, 0x3B13, 0x9B22),
  171. bn_pack4(0x2902, 0x4E08, 0x8A67, 0xCC74),
  172. bn_pack4(0xC4C6, 0x628B, 0x80DC, 0x1CD1),
  173. bn_pack4(0xC90F, 0xDAA2, 0x2168, 0xC234),
  174. bn_pack4(0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF)
  175. };
  176. const BIGNUM bn_group_3072 = {
  177. (BN_ULONG *)bn_group_3072_value,
  178. OSSL_NELEM(bn_group_3072_value),
  179. OSSL_NELEM(bn_group_3072_value),
  180. 0,
  181. BN_FLG_STATIC_DATA
  182. };
  183. static const BN_ULONG bn_group_4096_value[] = {
  184. bn_pack4(0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF),
  185. bn_pack4(0x4DF4, 0x35C9, 0x3406, 0x3199),
  186. bn_pack4(0x86FF, 0xB7DC, 0x90A6, 0xC08F),
  187. bn_pack4(0x93B4, 0xEA98, 0x8D8F, 0xDDC1),
  188. bn_pack4(0xD006, 0x9127, 0xD5B0, 0x5AA9),
  189. bn_pack4(0xB81B, 0xDD76, 0x2170, 0x481C),
  190. bn_pack4(0x1F61, 0x2970, 0xCEE2, 0xD7AF),
  191. bn_pack4(0x233B, 0xA186, 0x515B, 0xE7ED),
  192. bn_pack4(0x99B2, 0x964F, 0xA090, 0xC3A2),
  193. bn_pack4(0x287C, 0x5947, 0x4E6B, 0xC05D),
  194. bn_pack4(0x2E8E, 0xFC14, 0x1FBE, 0xCAA6),
  195. bn_pack4(0xDBBB, 0xC2DB, 0x04DE, 0x8EF9),
  196. bn_pack4(0x2583, 0xE9CA, 0x2AD4, 0x4CE8),
  197. bn_pack4(0x1A94, 0x6834, 0xB615, 0x0BDA),
  198. bn_pack4(0x99C3, 0x2718, 0x6AF4, 0xE23C),
  199. bn_pack4(0x8871, 0x9A10, 0xBDBA, 0x5B26),
  200. bn_pack4(0x1A72, 0x3C12, 0xA787, 0xE6D7),
  201. bn_pack4(0x4B82, 0xD120, 0xA921, 0x0801),
  202. bn_pack4(0x43DB, 0x5BFC, 0xE0FD, 0x108E),
  203. bn_pack4(0x08E2, 0x4FA0, 0x74E5, 0xAB31),
  204. bn_pack4(0x7709, 0x88C0, 0xBAD9, 0x46E2),
  205. bn_pack4(0xBBE1, 0x1757, 0x7A61, 0x5D6C),
  206. bn_pack4(0x521F, 0x2B18, 0x177B, 0x200C),
  207. bn_pack4(0xD876, 0x0273, 0x3EC8, 0x6A64),
  208. bn_pack4(0xF12F, 0xFA06, 0xD98A, 0x0864),
  209. bn_pack4(0xCEE3, 0xD226, 0x1AD2, 0xEE6B),
  210. bn_pack4(0x1E8C, 0x94E0, 0x4A25, 0x619D),
  211. bn_pack4(0xABF5, 0xAE8C, 0xDB09, 0x33D7),
  212. bn_pack4(0xB397, 0x0F85, 0xA6E1, 0xE4C7),
  213. bn_pack4(0x8AEA, 0x7157, 0x5D06, 0x0C7D),
  214. bn_pack4(0xECFB, 0x8504, 0x58DB, 0xEF0A),
  215. bn_pack4(0xA855, 0x21AB, 0xDF1C, 0xBA64),
  216. bn_pack4(0xAD33, 0x170D, 0x0450, 0x7A33),
  217. bn_pack4(0x1572, 0x8E5A, 0x8AAA, 0xC42D),
  218. bn_pack4(0x15D2, 0x2618, 0x98FA, 0x0510),
  219. bn_pack4(0x3995, 0x497C, 0xEA95, 0x6AE5),
  220. bn_pack4(0xDE2B, 0xCBF6, 0x9558, 0x1718),
  221. bn_pack4(0xB5C5, 0x5DF0, 0x6F4C, 0x52C9),
  222. bn_pack4(0x9B27, 0x83A2, 0xEC07, 0xA28F),
  223. bn_pack4(0xE39E, 0x772C, 0x180E, 0x8603),
  224. bn_pack4(0x3290, 0x5E46, 0x2E36, 0xCE3B),
  225. bn_pack4(0xF174, 0x6C08, 0xCA18, 0x217C),
  226. bn_pack4(0x670C, 0x354E, 0x4ABC, 0x9804),
  227. bn_pack4(0x9ED5, 0x2907, 0x7096, 0x966D),
  228. bn_pack4(0x1C62, 0xF356, 0x2085, 0x52BB),
  229. bn_pack4(0x8365, 0x5D23, 0xDCA3, 0xAD96),
  230. bn_pack4(0x6916, 0x3FA8, 0xFD24, 0xCF5F),
  231. bn_pack4(0x98DA, 0x4836, 0x1C55, 0xD39A),
  232. bn_pack4(0xC200, 0x7CB8, 0xA163, 0xBF05),
  233. bn_pack4(0x4928, 0x6651, 0xECE4, 0x5B3D),
  234. bn_pack4(0xAE9F, 0x2411, 0x7C4B, 0x1FE6),
  235. bn_pack4(0xEE38, 0x6BFB, 0x5A89, 0x9FA5),
  236. bn_pack4(0x0BFF, 0x5CB6, 0xF406, 0xB7ED),
  237. bn_pack4(0xF44C, 0x42E9, 0xA637, 0xED6B),
  238. bn_pack4(0xE485, 0xB576, 0x625E, 0x7EC6),
  239. bn_pack4(0x4FE1, 0x356D, 0x6D51, 0xC245),
  240. bn_pack4(0x302B, 0x0A6D, 0xF25F, 0x1437),
  241. bn_pack4(0xEF95, 0x19B3, 0xCD3A, 0x431B),
  242. bn_pack4(0x514A, 0x0879, 0x8E34, 0x04DD),
  243. bn_pack4(0x020B, 0xBEA6, 0x3B13, 0x9B22),
  244. bn_pack4(0x2902, 0x4E08, 0x8A67, 0xCC74),
  245. bn_pack4(0xC4C6, 0x628B, 0x80DC, 0x1CD1),
  246. bn_pack4(0xC90F, 0xDAA2, 0x2168, 0xC234),
  247. bn_pack4(0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF)
  248. };
  249. const BIGNUM bn_group_4096 = {
  250. (BN_ULONG *)bn_group_4096_value,
  251. OSSL_NELEM(bn_group_4096_value),
  252. OSSL_NELEM(bn_group_4096_value),
  253. 0,
  254. BN_FLG_STATIC_DATA
  255. };
  256. static const BN_ULONG bn_group_6144_value[] = {
  257. bn_pack4(0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF),
  258. bn_pack4(0xE694, 0xF91E, 0x6DCC, 0x4024),
  259. bn_pack4(0x12BF, 0x2D5B, 0x0B74, 0x74D6),
  260. bn_pack4(0x043E, 0x8F66, 0x3F48, 0x60EE),
  261. bn_pack4(0x387F, 0xE8D7, 0x6E3C, 0x0468),
  262. bn_pack4(0xDA56, 0xC9EC, 0x2EF2, 0x9632),
  263. bn_pack4(0xEB19, 0xCCB1, 0xA313, 0xD55C),
  264. bn_pack4(0xF550, 0xAA3D, 0x8A1F, 0xBFF0),
  265. bn_pack4(0x06A1, 0xD58B, 0xB7C5, 0xDA76),
  266. bn_pack4(0xA797, 0x15EE, 0xF29B, 0xE328),
  267. bn_pack4(0x14CC, 0x5ED2, 0x0F80, 0x37E0),
  268. bn_pack4(0xCC8F, 0x6D7E, 0xBF48, 0xE1D8),
  269. bn_pack4(0x4BD4, 0x07B2, 0x2B41, 0x54AA),
  270. bn_pack4(0x0F1D, 0x45B7, 0xFF58, 0x5AC5),
  271. bn_pack4(0x23A9, 0x7A7E, 0x36CC, 0x88BE),
  272. bn_pack4(0x59E7, 0xC97F, 0xBEC7, 0xE8F3),
  273. bn_pack4(0xB5A8, 0x4031, 0x900B, 0x1C9E),
  274. bn_pack4(0xD55E, 0x702F, 0x4698, 0x0C82),
  275. bn_pack4(0xF482, 0xD7CE, 0x6E74, 0xFEF6),
  276. bn_pack4(0xF032, 0xEA15, 0xD172, 0x1D03),
  277. bn_pack4(0x5983, 0xCA01, 0xC64B, 0x92EC),
  278. bn_pack4(0x6FB8, 0xF401, 0x378C, 0xD2BF),
  279. bn_pack4(0x3320, 0x5151, 0x2BD7, 0xAF42),
  280. bn_pack4(0xDB7F, 0x1447, 0xE6CC, 0x254B),
  281. bn_pack4(0x44CE, 0x6CBA, 0xCED4, 0xBB1B),
  282. bn_pack4(0xDA3E, 0xDBEB, 0xCF9B, 0x14ED),
  283. bn_pack4(0x1797, 0x27B0, 0x865A, 0x8918),
  284. bn_pack4(0xB06A, 0x53ED, 0x9027, 0xD831),
  285. bn_pack4(0xE5DB, 0x382F, 0x4130, 0x01AE),
  286. bn_pack4(0xF8FF, 0x9406, 0xAD9E, 0x530E),
  287. bn_pack4(0xC975, 0x1E76, 0x3DBA, 0x37BD),
  288. bn_pack4(0xC1D4, 0xDCB2, 0x6026, 0x46DE),
  289. bn_pack4(0x36C3, 0xFAB4, 0xD27C, 0x7026),
  290. bn_pack4(0x4DF4, 0x35C9, 0x3402, 0x8492),
  291. bn_pack4(0x86FF, 0xB7DC, 0x90A6, 0xC08F),
  292. bn_pack4(0x93B4, 0xEA98, 0x8D8F, 0xDDC1),
  293. bn_pack4(0xD006, 0x9127, 0xD5B0, 0x5AA9),
  294. bn_pack4(0xB81B, 0xDD76, 0x2170, 0x481C),
  295. bn_pack4(0x1F61, 0x2970, 0xCEE2, 0xD7AF),
  296. bn_pack4(0x233B, 0xA186, 0x515B, 0xE7ED),
  297. bn_pack4(0x99B2, 0x964F, 0xA090, 0xC3A2),
  298. bn_pack4(0x287C, 0x5947, 0x4E6B, 0xC05D),
  299. bn_pack4(0x2E8E, 0xFC14, 0x1FBE, 0xCAA6),
  300. bn_pack4(0xDBBB, 0xC2DB, 0x04DE, 0x8EF9),
  301. bn_pack4(0x2583, 0xE9CA, 0x2AD4, 0x4CE8),
  302. bn_pack4(0x1A94, 0x6834, 0xB615, 0x0BDA),
  303. bn_pack4(0x99C3, 0x2718, 0x6AF4, 0xE23C),
  304. bn_pack4(0x8871, 0x9A10, 0xBDBA, 0x5B26),
  305. bn_pack4(0x1A72, 0x3C12, 0xA787, 0xE6D7),
  306. bn_pack4(0x4B82, 0xD120, 0xA921, 0x0801),
  307. bn_pack4(0x43DB, 0x5BFC, 0xE0FD, 0x108E),
  308. bn_pack4(0x08E2, 0x4FA0, 0x74E5, 0xAB31),
  309. bn_pack4(0x7709, 0x88C0, 0xBAD9, 0x46E2),
  310. bn_pack4(0xBBE1, 0x1757, 0x7A61, 0x5D6C),
  311. bn_pack4(0x521F, 0x2B18, 0x177B, 0x200C),
  312. bn_pack4(0xD876, 0x0273, 0x3EC8, 0x6A64),
  313. bn_pack4(0xF12F, 0xFA06, 0xD98A, 0x0864),
  314. bn_pack4(0xCEE3, 0xD226, 0x1AD2, 0xEE6B),
  315. bn_pack4(0x1E8C, 0x94E0, 0x4A25, 0x619D),
  316. bn_pack4(0xABF5, 0xAE8C, 0xDB09, 0x33D7),
  317. bn_pack4(0xB397, 0x0F85, 0xA6E1, 0xE4C7),
  318. bn_pack4(0x8AEA, 0x7157, 0x5D06, 0x0C7D),
  319. bn_pack4(0xECFB, 0x8504, 0x58DB, 0xEF0A),
  320. bn_pack4(0xA855, 0x21AB, 0xDF1C, 0xBA64),
  321. bn_pack4(0xAD33, 0x170D, 0x0450, 0x7A33),
  322. bn_pack4(0x1572, 0x8E5A, 0x8AAA, 0xC42D),
  323. bn_pack4(0x15D2, 0x2618, 0x98FA, 0x0510),
  324. bn_pack4(0x3995, 0x497C, 0xEA95, 0x6AE5),
  325. bn_pack4(0xDE2B, 0xCBF6, 0x9558, 0x1718),
  326. bn_pack4(0xB5C5, 0x5DF0, 0x6F4C, 0x52C9),
  327. bn_pack4(0x9B27, 0x83A2, 0xEC07, 0xA28F),
  328. bn_pack4(0xE39E, 0x772C, 0x180E, 0x8603),
  329. bn_pack4(0x3290, 0x5E46, 0x2E36, 0xCE3B),
  330. bn_pack4(0xF174, 0x6C08, 0xCA18, 0x217C),
  331. bn_pack4(0x670C, 0x354E, 0x4ABC, 0x9804),
  332. bn_pack4(0x9ED5, 0x2907, 0x7096, 0x966D),
  333. bn_pack4(0x1C62, 0xF356, 0x2085, 0x52BB),
  334. bn_pack4(0x8365, 0x5D23, 0xDCA3, 0xAD96),
  335. bn_pack4(0x6916, 0x3FA8, 0xFD24, 0xCF5F),
  336. bn_pack4(0x98DA, 0x4836, 0x1C55, 0xD39A),
  337. bn_pack4(0xC200, 0x7CB8, 0xA163, 0xBF05),
  338. bn_pack4(0x4928, 0x6651, 0xECE4, 0x5B3D),
  339. bn_pack4(0xAE9F, 0x2411, 0x7C4B, 0x1FE6),
  340. bn_pack4(0xEE38, 0x6BFB, 0x5A89, 0x9FA5),
  341. bn_pack4(0x0BFF, 0x5CB6, 0xF406, 0xB7ED),
  342. bn_pack4(0xF44C, 0x42E9, 0xA637, 0xED6B),
  343. bn_pack4(0xE485, 0xB576, 0x625E, 0x7EC6),
  344. bn_pack4(0x4FE1, 0x356D, 0x6D51, 0xC245),
  345. bn_pack4(0x302B, 0x0A6D, 0xF25F, 0x1437),
  346. bn_pack4(0xEF95, 0x19B3, 0xCD3A, 0x431B),
  347. bn_pack4(0x514A, 0x0879, 0x8E34, 0x04DD),
  348. bn_pack4(0x020B, 0xBEA6, 0x3B13, 0x9B22),
  349. bn_pack4(0x2902, 0x4E08, 0x8A67, 0xCC74),
  350. bn_pack4(0xC4C6, 0x628B, 0x80DC, 0x1CD1),
  351. bn_pack4(0xC90F, 0xDAA2, 0x2168, 0xC234),
  352. bn_pack4(0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF)
  353. };
  354. const BIGNUM bn_group_6144 = {
  355. (BN_ULONG *)bn_group_6144_value,
  356. OSSL_NELEM(bn_group_6144_value),
  357. OSSL_NELEM(bn_group_6144_value),
  358. 0,
  359. BN_FLG_STATIC_DATA
  360. };
  361. static const BN_ULONG bn_group_8192_value[] = {
  362. bn_pack4(0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF),
  363. bn_pack4(0x60C9, 0x80DD, 0x98ED, 0xD3DF),
  364. bn_pack4(0xC81F, 0x56E8, 0x80B9, 0x6E71),
  365. bn_pack4(0x9E30, 0x50E2, 0x7656, 0x94DF),
  366. bn_pack4(0x9558, 0xE447, 0x5677, 0xE9AA),
  367. bn_pack4(0xC919, 0x0DA6, 0xFC02, 0x6E47),
  368. bn_pack4(0x889A, 0x002E, 0xD5EE, 0x382B),
  369. bn_pack4(0x4009, 0x438B, 0x481C, 0x6CD7),
  370. bn_pack4(0x3590, 0x46F4, 0xEB87, 0x9F92),
  371. bn_pack4(0xFAF3, 0x6BC3, 0x1ECF, 0xA268),
  372. bn_pack4(0xB1D5, 0x10BD, 0x7EE7, 0x4D73),
  373. bn_pack4(0xF9AB, 0x4819, 0x5DED, 0x7EA1),
  374. bn_pack4(0x64F3, 0x1CC5, 0x0846, 0x851D),
  375. bn_pack4(0x4597, 0xE899, 0xA025, 0x5DC1),
  376. bn_pack4(0xDF31, 0x0EE0, 0x74AB, 0x6A36),
  377. bn_pack4(0x6D2A, 0x13F8, 0x3F44, 0xF82D),
  378. bn_pack4(0x062B, 0x3CF5, 0xB3A2, 0x78A6),
  379. bn_pack4(0x7968, 0x3303, 0xED5B, 0xDD3A),
  380. bn_pack4(0xFA9D, 0x4B7F, 0xA2C0, 0x87E8),
  381. bn_pack4(0x4BCB, 0xC886, 0x2F83, 0x85DD),
  382. bn_pack4(0x3473, 0xFC64, 0x6CEA, 0x306B),
  383. bn_pack4(0x13EB, 0x57A8, 0x1A23, 0xF0C7),
  384. bn_pack4(0x2222, 0x2E04, 0xA403, 0x7C07),
  385. bn_pack4(0xE3FD, 0xB8BE, 0xFC84, 0x8AD9),
  386. bn_pack4(0x238F, 0x16CB, 0xE39D, 0x652D),
  387. bn_pack4(0x3423, 0xB474, 0x2BF1, 0xC978),
  388. bn_pack4(0x3AAB, 0x639C, 0x5AE4, 0xF568),
  389. bn_pack4(0x2576, 0xF693, 0x6BA4, 0x2466),
  390. bn_pack4(0x741F, 0xA7BF, 0x8AFC, 0x47ED),
  391. bn_pack4(0x3BC8, 0x32B6, 0x8D9D, 0xD300),
  392. bn_pack4(0xD8BE, 0xC4D0, 0x73B9, 0x31BA),
  393. bn_pack4(0x3877, 0x7CB6, 0xA932, 0xDF8C),
  394. bn_pack4(0x74A3, 0x926F, 0x12FE, 0xE5E4),
  395. bn_pack4(0xE694, 0xF91E, 0x6DBE, 0x1159),
  396. bn_pack4(0x12BF, 0x2D5B, 0x0B74, 0x74D6),
  397. bn_pack4(0x043E, 0x8F66, 0x3F48, 0x60EE),
  398. bn_pack4(0x387F, 0xE8D7, 0x6E3C, 0x0468),
  399. bn_pack4(0xDA56, 0xC9EC, 0x2EF2, 0x9632),
  400. bn_pack4(0xEB19, 0xCCB1, 0xA313, 0xD55C),
  401. bn_pack4(0xF550, 0xAA3D, 0x8A1F, 0xBFF0),
  402. bn_pack4(0x06A1, 0xD58B, 0xB7C5, 0xDA76),
  403. bn_pack4(0xA797, 0x15EE, 0xF29B, 0xE328),
  404. bn_pack4(0x14CC, 0x5ED2, 0x0F80, 0x37E0),
  405. bn_pack4(0xCC8F, 0x6D7E, 0xBF48, 0xE1D8),
  406. bn_pack4(0x4BD4, 0x07B2, 0x2B41, 0x54AA),
  407. bn_pack4(0x0F1D, 0x45B7, 0xFF58, 0x5AC5),
  408. bn_pack4(0x23A9, 0x7A7E, 0x36CC, 0x88BE),
  409. bn_pack4(0x59E7, 0xC97F, 0xBEC7, 0xE8F3),
  410. bn_pack4(0xB5A8, 0x4031, 0x900B, 0x1C9E),
  411. bn_pack4(0xD55E, 0x702F, 0x4698, 0x0C82),
  412. bn_pack4(0xF482, 0xD7CE, 0x6E74, 0xFEF6),
  413. bn_pack4(0xF032, 0xEA15, 0xD172, 0x1D03),
  414. bn_pack4(0x5983, 0xCA01, 0xC64B, 0x92EC),
  415. bn_pack4(0x6FB8, 0xF401, 0x378C, 0xD2BF),
  416. bn_pack4(0x3320, 0x5151, 0x2BD7, 0xAF42),
  417. bn_pack4(0xDB7F, 0x1447, 0xE6CC, 0x254B),
  418. bn_pack4(0x44CE, 0x6CBA, 0xCED4, 0xBB1B),
  419. bn_pack4(0xDA3E, 0xDBEB, 0xCF9B, 0x14ED),
  420. bn_pack4(0x1797, 0x27B0, 0x865A, 0x8918),
  421. bn_pack4(0xB06A, 0x53ED, 0x9027, 0xD831),
  422. bn_pack4(0xE5DB, 0x382F, 0x4130, 0x01AE),
  423. bn_pack4(0xF8FF, 0x9406, 0xAD9E, 0x530E),
  424. bn_pack4(0xC975, 0x1E76, 0x3DBA, 0x37BD),
  425. bn_pack4(0xC1D4, 0xDCB2, 0x6026, 0x46DE),
  426. bn_pack4(0x36C3, 0xFAB4, 0xD27C, 0x7026),
  427. bn_pack4(0x4DF4, 0x35C9, 0x3402, 0x8492),
  428. bn_pack4(0x86FF, 0xB7DC, 0x90A6, 0xC08F),
  429. bn_pack4(0x93B4, 0xEA98, 0x8D8F, 0xDDC1),
  430. bn_pack4(0xD006, 0x9127, 0xD5B0, 0x5AA9),
  431. bn_pack4(0xB81B, 0xDD76, 0x2170, 0x481C),
  432. bn_pack4(0x1F61, 0x2970, 0xCEE2, 0xD7AF),
  433. bn_pack4(0x233B, 0xA186, 0x515B, 0xE7ED),
  434. bn_pack4(0x99B2, 0x964F, 0xA090, 0xC3A2),
  435. bn_pack4(0x287C, 0x5947, 0x4E6B, 0xC05D),
  436. bn_pack4(0x2E8E, 0xFC14, 0x1FBE, 0xCAA6),
  437. bn_pack4(0xDBBB, 0xC2DB, 0x04DE, 0x8EF9),
  438. bn_pack4(0x2583, 0xE9CA, 0x2AD4, 0x4CE8),
  439. bn_pack4(0x1A94, 0x6834, 0xB615, 0x0BDA),
  440. bn_pack4(0x99C3, 0x2718, 0x6AF4, 0xE23C),
  441. bn_pack4(0x8871, 0x9A10, 0xBDBA, 0x5B26),
  442. bn_pack4(0x1A72, 0x3C12, 0xA787, 0xE6D7),
  443. bn_pack4(0x4B82, 0xD120, 0xA921, 0x0801),
  444. bn_pack4(0x43DB, 0x5BFC, 0xE0FD, 0x108E),
  445. bn_pack4(0x08E2, 0x4FA0, 0x74E5, 0xAB31),
  446. bn_pack4(0x7709, 0x88C0, 0xBAD9, 0x46E2),
  447. bn_pack4(0xBBE1, 0x1757, 0x7A61, 0x5D6C),
  448. bn_pack4(0x521F, 0x2B18, 0x177B, 0x200C),
  449. bn_pack4(0xD876, 0x0273, 0x3EC8, 0x6A64),
  450. bn_pack4(0xF12F, 0xFA06, 0xD98A, 0x0864),
  451. bn_pack4(0xCEE3, 0xD226, 0x1AD2, 0xEE6B),
  452. bn_pack4(0x1E8C, 0x94E0, 0x4A25, 0x619D),
  453. bn_pack4(0xABF5, 0xAE8C, 0xDB09, 0x33D7),
  454. bn_pack4(0xB397, 0x0F85, 0xA6E1, 0xE4C7),
  455. bn_pack4(0x8AEA, 0x7157, 0x5D06, 0x0C7D),
  456. bn_pack4(0xECFB, 0x8504, 0x58DB, 0xEF0A),
  457. bn_pack4(0xA855, 0x21AB, 0xDF1C, 0xBA64),
  458. bn_pack4(0xAD33, 0x170D, 0x0450, 0x7A33),
  459. bn_pack4(0x1572, 0x8E5A, 0x8AAA, 0xC42D),
  460. bn_pack4(0x15D2, 0x2618, 0x98FA, 0x0510),
  461. bn_pack4(0x3995, 0x497C, 0xEA95, 0x6AE5),
  462. bn_pack4(0xDE2B, 0xCBF6, 0x9558, 0x1718),
  463. bn_pack4(0xB5C5, 0x5DF0, 0x6F4C, 0x52C9),
  464. bn_pack4(0x9B27, 0x83A2, 0xEC07, 0xA28F),
  465. bn_pack4(0xE39E, 0x772C, 0x180E, 0x8603),
  466. bn_pack4(0x3290, 0x5E46, 0x2E36, 0xCE3B),
  467. bn_pack4(0xF174, 0x6C08, 0xCA18, 0x217C),
  468. bn_pack4(0x670C, 0x354E, 0x4ABC, 0x9804),
  469. bn_pack4(0x9ED5, 0x2907, 0x7096, 0x966D),
  470. bn_pack4(0x1C62, 0xF356, 0x2085, 0x52BB),
  471. bn_pack4(0x8365, 0x5D23, 0xDCA3, 0xAD96),
  472. bn_pack4(0x6916, 0x3FA8, 0xFD24, 0xCF5F),
  473. bn_pack4(0x98DA, 0x4836, 0x1C55, 0xD39A),
  474. bn_pack4(0xC200, 0x7CB8, 0xA163, 0xBF05),
  475. bn_pack4(0x4928, 0x6651, 0xECE4, 0x5B3D),
  476. bn_pack4(0xAE9F, 0x2411, 0x7C4B, 0x1FE6),
  477. bn_pack4(0xEE38, 0x6BFB, 0x5A89, 0x9FA5),
  478. bn_pack4(0x0BFF, 0x5CB6, 0xF406, 0xB7ED),
  479. bn_pack4(0xF44C, 0x42E9, 0xA637, 0xED6B),
  480. bn_pack4(0xE485, 0xB576, 0x625E, 0x7EC6),
  481. bn_pack4(0x4FE1, 0x356D, 0x6D51, 0xC245),
  482. bn_pack4(0x302B, 0x0A6D, 0xF25F, 0x1437),
  483. bn_pack4(0xEF95, 0x19B3, 0xCD3A, 0x431B),
  484. bn_pack4(0x514A, 0x0879, 0x8E34, 0x04DD),
  485. bn_pack4(0x020B, 0xBEA6, 0x3B13, 0x9B22),
  486. bn_pack4(0x2902, 0x4E08, 0x8A67, 0xCC74),
  487. bn_pack4(0xC4C6, 0x628B, 0x80DC, 0x1CD1),
  488. bn_pack4(0xC90F, 0xDAA2, 0x2168, 0xC234),
  489. bn_pack4(0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF)
  490. };
  491. const BIGNUM bn_group_8192 = {
  492. (BN_ULONG *)bn_group_8192_value,
  493. OSSL_NELEM(bn_group_8192_value),
  494. OSSL_NELEM(bn_group_8192_value),
  495. 0,
  496. BN_FLG_STATIC_DATA
  497. };
  498. static const BN_ULONG bn_generator_19_value[] = { 19 };
  499. const BIGNUM bn_generator_19 = {
  500. (BN_ULONG *)bn_generator_19_value,
  501. 1,
  502. 1,
  503. 0,
  504. BN_FLG_STATIC_DATA
  505. };
  506. static const BN_ULONG bn_generator_5_value[] = { 5 };
  507. const BIGNUM bn_generator_5 = {
  508. (BN_ULONG *)bn_generator_5_value,
  509. 1,
  510. 1,
  511. 0,
  512. BN_FLG_STATIC_DATA
  513. };
  514. static const BN_ULONG bn_generator_2_value[] = { 2 };
  515. const BIGNUM bn_generator_2 = {
  516. (BN_ULONG *)bn_generator_2_value,
  517. 1,
  518. 1,
  519. 0,
  520. BN_FLG_STATIC_DATA
  521. };
  522. #endif