bn/bn_const.c: make it indent-friendly.
[openssl.git] / crypto / bn / bn_const.c
1 /* crypto/bn/knownprimes.c */
2 /* Insert boilerplate */
3
4 #include <openssl/bn.h>
5
6 /*-
7  * "First Oakley Default Group" from RFC2409, section 6.1.
8  *
9  * The prime is: 2^768 - 2 ^704 - 1 + 2^64 * { [2^638 pi] + 149686 }
10  *
11  * RFC2409 specifies a generator of 2.
12  * RFC2412 specifies a generator of of 22.
13  */
14
15 BIGNUM *get_rfc2409_prime_768(BIGNUM *bn)
16         {
17         static const unsigned char RFC2409_PRIME_768[]={
18                 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
19                 0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x34,
20                 0xC4,0xC6,0x62,0x8B,0x80,0xDC,0x1C,0xD1,
21                 0x29,0x02,0x4E,0x08,0x8A,0x67,0xCC,0x74,
22                 0x02,0x0B,0xBE,0xA6,0x3B,0x13,0x9B,0x22,
23                 0x51,0x4A,0x08,0x79,0x8E,0x34,0x04,0xDD,
24                 0xEF,0x95,0x19,0xB3,0xCD,0x3A,0x43,0x1B,
25                 0x30,0x2B,0x0A,0x6D,0xF2,0x5F,0x14,0x37,
26                 0x4F,0xE1,0x35,0x6D,0x6D,0x51,0xC2,0x45,
27                 0xE4,0x85,0xB5,0x76,0x62,0x5E,0x7E,0xC6,
28                 0xF4,0x4C,0x42,0xE9,0xA6,0x3A,0x36,0x20,
29                 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
30                 };
31         return BN_bin2bn(RFC2409_PRIME_768,sizeof(RFC2409_PRIME_768),bn);
32         }
33
34 /*-
35  * "Second Oakley Default Group" from RFC2409, section 6.2.
36  *
37  * The prime is: 2^1024 - 2^960 - 1 + 2^64 * { [2^894 pi] + 129093 }.
38  *
39  * RFC2409 specifies a generator of 2.
40  * RFC2412 specifies a generator of 22.
41  */
42
43 BIGNUM *get_rfc2409_prime_1024(BIGNUM *bn)
44         {
45         static const unsigned char RFC2409_PRIME_1024[]={
46                 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
47                 0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x34,
48                 0xC4,0xC6,0x62,0x8B,0x80,0xDC,0x1C,0xD1,
49                 0x29,0x02,0x4E,0x08,0x8A,0x67,0xCC,0x74,
50                 0x02,0x0B,0xBE,0xA6,0x3B,0x13,0x9B,0x22,
51                 0x51,0x4A,0x08,0x79,0x8E,0x34,0x04,0xDD,
52                 0xEF,0x95,0x19,0xB3,0xCD,0x3A,0x43,0x1B,
53                 0x30,0x2B,0x0A,0x6D,0xF2,0x5F,0x14,0x37,
54                 0x4F,0xE1,0x35,0x6D,0x6D,0x51,0xC2,0x45,
55                 0xE4,0x85,0xB5,0x76,0x62,0x5E,0x7E,0xC6,
56                 0xF4,0x4C,0x42,0xE9,0xA6,0x37,0xED,0x6B,
57                 0x0B,0xFF,0x5C,0xB6,0xF4,0x06,0xB7,0xED,
58                 0xEE,0x38,0x6B,0xFB,0x5A,0x89,0x9F,0xA5,
59                 0xAE,0x9F,0x24,0x11,0x7C,0x4B,0x1F,0xE6,
60                 0x49,0x28,0x66,0x51,0xEC,0xE6,0x53,0x81,
61                 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
62                 };
63         return BN_bin2bn(RFC2409_PRIME_1024,sizeof(RFC2409_PRIME_1024),bn);
64         }
65
66 /*-
67  * "1536-bit MODP Group" from RFC3526, Section 2.
68  *
69  * The prime is: 2^1536 - 2^1472 - 1 + 2^64 * { [2^1406 pi] + 741804 }
70  *
71  * RFC3526 specifies a generator of 2.
72  * RFC2312 specifies a generator of 22.
73  */
74
75 BIGNUM *get_rfc3526_prime_1536(BIGNUM *bn)
76         {
77         static const unsigned char RFC3526_PRIME_1536[]={
78                 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
79                 0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x34,
80                 0xC4,0xC6,0x62,0x8B,0x80,0xDC,0x1C,0xD1,
81                 0x29,0x02,0x4E,0x08,0x8A,0x67,0xCC,0x74,
82                 0x02,0x0B,0xBE,0xA6,0x3B,0x13,0x9B,0x22,
83                 0x51,0x4A,0x08,0x79,0x8E,0x34,0x04,0xDD,
84                 0xEF,0x95,0x19,0xB3,0xCD,0x3A,0x43,0x1B,
85                 0x30,0x2B,0x0A,0x6D,0xF2,0x5F,0x14,0x37,
86                 0x4F,0xE1,0x35,0x6D,0x6D,0x51,0xC2,0x45,
87                 0xE4,0x85,0xB5,0x76,0x62,0x5E,0x7E,0xC6,
88                 0xF4,0x4C,0x42,0xE9,0xA6,0x37,0xED,0x6B,
89                 0x0B,0xFF,0x5C,0xB6,0xF4,0x06,0xB7,0xED,
90                 0xEE,0x38,0x6B,0xFB,0x5A,0x89,0x9F,0xA5,
91                 0xAE,0x9F,0x24,0x11,0x7C,0x4B,0x1F,0xE6,
92                 0x49,0x28,0x66,0x51,0xEC,0xE4,0x5B,0x3D,
93                 0xC2,0x00,0x7C,0xB8,0xA1,0x63,0xBF,0x05,
94                 0x98,0xDA,0x48,0x36,0x1C,0x55,0xD3,0x9A,
95                 0x69,0x16,0x3F,0xA8,0xFD,0x24,0xCF,0x5F,
96                 0x83,0x65,0x5D,0x23,0xDC,0xA3,0xAD,0x96,
97                 0x1C,0x62,0xF3,0x56,0x20,0x85,0x52,0xBB,
98                 0x9E,0xD5,0x29,0x07,0x70,0x96,0x96,0x6D,
99                 0x67,0x0C,0x35,0x4E,0x4A,0xBC,0x98,0x04,
100                 0xF1,0x74,0x6C,0x08,0xCA,0x23,0x73,0x27,
101                 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
102                 };
103         return BN_bin2bn(RFC3526_PRIME_1536,sizeof(RFC3526_PRIME_1536),bn);
104         }
105
106 /*-
107  * "2048-bit MODP Group" from RFC3526, Section 3.
108  *
109  * The prime is: 2^2048 - 2^1984 - 1 + 2^64 * { [2^1918 pi] + 124476 }
110  *
111  * RFC3526 specifies a generator of 2.
112  */
113
114 BIGNUM *get_rfc3526_prime_2048(BIGNUM *bn)
115         {
116         static const unsigned char RFC3526_PRIME_2048[]={
117                 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
118                 0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x34,
119                 0xC4,0xC6,0x62,0x8B,0x80,0xDC,0x1C,0xD1,
120                 0x29,0x02,0x4E,0x08,0x8A,0x67,0xCC,0x74,
121                 0x02,0x0B,0xBE,0xA6,0x3B,0x13,0x9B,0x22,
122                 0x51,0x4A,0x08,0x79,0x8E,0x34,0x04,0xDD,
123                 0xEF,0x95,0x19,0xB3,0xCD,0x3A,0x43,0x1B,
124                 0x30,0x2B,0x0A,0x6D,0xF2,0x5F,0x14,0x37,
125                 0x4F,0xE1,0x35,0x6D,0x6D,0x51,0xC2,0x45,
126                 0xE4,0x85,0xB5,0x76,0x62,0x5E,0x7E,0xC6,
127                 0xF4,0x4C,0x42,0xE9,0xA6,0x37,0xED,0x6B,
128                 0x0B,0xFF,0x5C,0xB6,0xF4,0x06,0xB7,0xED,
129                 0xEE,0x38,0x6B,0xFB,0x5A,0x89,0x9F,0xA5,
130                 0xAE,0x9F,0x24,0x11,0x7C,0x4B,0x1F,0xE6,
131                 0x49,0x28,0x66,0x51,0xEC,0xE4,0x5B,0x3D,
132                 0xC2,0x00,0x7C,0xB8,0xA1,0x63,0xBF,0x05,
133                 0x98,0xDA,0x48,0x36,0x1C,0x55,0xD3,0x9A,
134                 0x69,0x16,0x3F,0xA8,0xFD,0x24,0xCF,0x5F,
135                 0x83,0x65,0x5D,0x23,0xDC,0xA3,0xAD,0x96,
136                 0x1C,0x62,0xF3,0x56,0x20,0x85,0x52,0xBB,
137                 0x9E,0xD5,0x29,0x07,0x70,0x96,0x96,0x6D,
138                 0x67,0x0C,0x35,0x4E,0x4A,0xBC,0x98,0x04,
139                 0xF1,0x74,0x6C,0x08,0xCA,0x18,0x21,0x7C,
140                 0x32,0x90,0x5E,0x46,0x2E,0x36,0xCE,0x3B,
141                 0xE3,0x9E,0x77,0x2C,0x18,0x0E,0x86,0x03,
142                 0x9B,0x27,0x83,0xA2,0xEC,0x07,0xA2,0x8F,
143                 0xB5,0xC5,0x5D,0xF0,0x6F,0x4C,0x52,0xC9,
144                 0xDE,0x2B,0xCB,0xF6,0x95,0x58,0x17,0x18,
145                 0x39,0x95,0x49,0x7C,0xEA,0x95,0x6A,0xE5,
146                 0x15,0xD2,0x26,0x18,0x98,0xFA,0x05,0x10,
147                 0x15,0x72,0x8E,0x5A,0x8A,0xAC,0xAA,0x68,
148                 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
149                 };
150         return BN_bin2bn(RFC3526_PRIME_2048,sizeof(RFC3526_PRIME_2048),bn);
151         }
152
153 /*-
154  * "3072-bit MODP Group" from RFC3526, Section 4.
155  *
156  * The prime is: 2^3072 - 2^3008 - 1 + 2^64 * { [2^2942 pi] + 1690314 }
157  *
158  * RFC3526 specifies a generator of 2.
159  */
160
161 BIGNUM *get_rfc3526_prime_3072(BIGNUM *bn)
162         {
163         static const unsigned char RFC3526_PRIME_3072[]={
164                 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
165                 0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x34,
166                 0xC4,0xC6,0x62,0x8B,0x80,0xDC,0x1C,0xD1,
167                 0x29,0x02,0x4E,0x08,0x8A,0x67,0xCC,0x74,
168                 0x02,0x0B,0xBE,0xA6,0x3B,0x13,0x9B,0x22,
169                 0x51,0x4A,0x08,0x79,0x8E,0x34,0x04,0xDD,
170                 0xEF,0x95,0x19,0xB3,0xCD,0x3A,0x43,0x1B,
171                 0x30,0x2B,0x0A,0x6D,0xF2,0x5F,0x14,0x37,
172                 0x4F,0xE1,0x35,0x6D,0x6D,0x51,0xC2,0x45,
173                 0xE4,0x85,0xB5,0x76,0x62,0x5E,0x7E,0xC6,
174                 0xF4,0x4C,0x42,0xE9,0xA6,0x37,0xED,0x6B,
175                 0x0B,0xFF,0x5C,0xB6,0xF4,0x06,0xB7,0xED,
176                 0xEE,0x38,0x6B,0xFB,0x5A,0x89,0x9F,0xA5,
177                 0xAE,0x9F,0x24,0x11,0x7C,0x4B,0x1F,0xE6,
178                 0x49,0x28,0x66,0x51,0xEC,0xE4,0x5B,0x3D,
179                 0xC2,0x00,0x7C,0xB8,0xA1,0x63,0xBF,0x05,
180                 0x98,0xDA,0x48,0x36,0x1C,0x55,0xD3,0x9A,
181                 0x69,0x16,0x3F,0xA8,0xFD,0x24,0xCF,0x5F,
182                 0x83,0x65,0x5D,0x23,0xDC,0xA3,0xAD,0x96,
183                 0x1C,0x62,0xF3,0x56,0x20,0x85,0x52,0xBB,
184                 0x9E,0xD5,0x29,0x07,0x70,0x96,0x96,0x6D,
185                 0x67,0x0C,0x35,0x4E,0x4A,0xBC,0x98,0x04,
186                 0xF1,0x74,0x6C,0x08,0xCA,0x18,0x21,0x7C,
187                 0x32,0x90,0x5E,0x46,0x2E,0x36,0xCE,0x3B,
188                 0xE3,0x9E,0x77,0x2C,0x18,0x0E,0x86,0x03,
189                 0x9B,0x27,0x83,0xA2,0xEC,0x07,0xA2,0x8F,
190                 0xB5,0xC5,0x5D,0xF0,0x6F,0x4C,0x52,0xC9,
191                 0xDE,0x2B,0xCB,0xF6,0x95,0x58,0x17,0x18,
192                 0x39,0x95,0x49,0x7C,0xEA,0x95,0x6A,0xE5,
193                 0x15,0xD2,0x26,0x18,0x98,0xFA,0x05,0x10,
194                 0x15,0x72,0x8E,0x5A,0x8A,0xAA,0xC4,0x2D,
195                 0xAD,0x33,0x17,0x0D,0x04,0x50,0x7A,0x33,
196                 0xA8,0x55,0x21,0xAB,0xDF,0x1C,0xBA,0x64,
197                 0xEC,0xFB,0x85,0x04,0x58,0xDB,0xEF,0x0A,
198                 0x8A,0xEA,0x71,0x57,0x5D,0x06,0x0C,0x7D,
199                 0xB3,0x97,0x0F,0x85,0xA6,0xE1,0xE4,0xC7,
200                 0xAB,0xF5,0xAE,0x8C,0xDB,0x09,0x33,0xD7,
201                 0x1E,0x8C,0x94,0xE0,0x4A,0x25,0x61,0x9D,
202                 0xCE,0xE3,0xD2,0x26,0x1A,0xD2,0xEE,0x6B,
203                 0xF1,0x2F,0xFA,0x06,0xD9,0x8A,0x08,0x64,
204                 0xD8,0x76,0x02,0x73,0x3E,0xC8,0x6A,0x64,
205                 0x52,0x1F,0x2B,0x18,0x17,0x7B,0x20,0x0C,
206                 0xBB,0xE1,0x17,0x57,0x7A,0x61,0x5D,0x6C,
207                 0x77,0x09,0x88,0xC0,0xBA,0xD9,0x46,0xE2,
208                 0x08,0xE2,0x4F,0xA0,0x74,0xE5,0xAB,0x31,
209                 0x43,0xDB,0x5B,0xFC,0xE0,0xFD,0x10,0x8E,
210                 0x4B,0x82,0xD1,0x20,0xA9,0x3A,0xD2,0xCA,
211                 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
212                 };
213         return BN_bin2bn(RFC3526_PRIME_3072,sizeof(RFC3526_PRIME_3072),bn);
214         }
215
216 /*-
217  * "4096-bit MODP Group" from RFC3526, Section 5.
218  *
219  * The prime is: 2^4096 - 2^4032 - 1 + 2^64 * { [2^3966 pi] + 240904 }
220  *
221  * RFC3526 specifies a generator of 2.
222  */
223
224 BIGNUM *get_rfc3526_prime_4096(BIGNUM *bn)
225         {
226         static const unsigned char RFC3526_PRIME_4096[]={
227                 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
228                 0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x34,
229                 0xC4,0xC6,0x62,0x8B,0x80,0xDC,0x1C,0xD1,
230                 0x29,0x02,0x4E,0x08,0x8A,0x67,0xCC,0x74,
231                 0x02,0x0B,0xBE,0xA6,0x3B,0x13,0x9B,0x22,
232                 0x51,0x4A,0x08,0x79,0x8E,0x34,0x04,0xDD,
233                 0xEF,0x95,0x19,0xB3,0xCD,0x3A,0x43,0x1B,
234                 0x30,0x2B,0x0A,0x6D,0xF2,0x5F,0x14,0x37,
235                 0x4F,0xE1,0x35,0x6D,0x6D,0x51,0xC2,0x45,
236                 0xE4,0x85,0xB5,0x76,0x62,0x5E,0x7E,0xC6,
237                 0xF4,0x4C,0x42,0xE9,0xA6,0x37,0xED,0x6B,
238                 0x0B,0xFF,0x5C,0xB6,0xF4,0x06,0xB7,0xED,
239                 0xEE,0x38,0x6B,0xFB,0x5A,0x89,0x9F,0xA5,
240                 0xAE,0x9F,0x24,0x11,0x7C,0x4B,0x1F,0xE6,
241                 0x49,0x28,0x66,0x51,0xEC,0xE4,0x5B,0x3D,
242                 0xC2,0x00,0x7C,0xB8,0xA1,0x63,0xBF,0x05,
243                 0x98,0xDA,0x48,0x36,0x1C,0x55,0xD3,0x9A,
244                 0x69,0x16,0x3F,0xA8,0xFD,0x24,0xCF,0x5F,
245                 0x83,0x65,0x5D,0x23,0xDC,0xA3,0xAD,0x96,
246                 0x1C,0x62,0xF3,0x56,0x20,0x85,0x52,0xBB,
247                 0x9E,0xD5,0x29,0x07,0x70,0x96,0x96,0x6D,
248                 0x67,0x0C,0x35,0x4E,0x4A,0xBC,0x98,0x04,
249                 0xF1,0x74,0x6C,0x08,0xCA,0x18,0x21,0x7C,
250                 0x32,0x90,0x5E,0x46,0x2E,0x36,0xCE,0x3B,
251                 0xE3,0x9E,0x77,0x2C,0x18,0x0E,0x86,0x03,
252                 0x9B,0x27,0x83,0xA2,0xEC,0x07,0xA2,0x8F,
253                 0xB5,0xC5,0x5D,0xF0,0x6F,0x4C,0x52,0xC9,
254                 0xDE,0x2B,0xCB,0xF6,0x95,0x58,0x17,0x18,
255                 0x39,0x95,0x49,0x7C,0xEA,0x95,0x6A,0xE5,
256                 0x15,0xD2,0x26,0x18,0x98,0xFA,0x05,0x10,
257                 0x15,0x72,0x8E,0x5A,0x8A,0xAA,0xC4,0x2D,
258                 0xAD,0x33,0x17,0x0D,0x04,0x50,0x7A,0x33,
259                 0xA8,0x55,0x21,0xAB,0xDF,0x1C,0xBA,0x64,
260                 0xEC,0xFB,0x85,0x04,0x58,0xDB,0xEF,0x0A,
261                 0x8A,0xEA,0x71,0x57,0x5D,0x06,0x0C,0x7D,
262                 0xB3,0x97,0x0F,0x85,0xA6,0xE1,0xE4,0xC7,
263                 0xAB,0xF5,0xAE,0x8C,0xDB,0x09,0x33,0xD7,
264                 0x1E,0x8C,0x94,0xE0,0x4A,0x25,0x61,0x9D,
265                 0xCE,0xE3,0xD2,0x26,0x1A,0xD2,0xEE,0x6B,
266                 0xF1,0x2F,0xFA,0x06,0xD9,0x8A,0x08,0x64,
267                 0xD8,0x76,0x02,0x73,0x3E,0xC8,0x6A,0x64,
268                 0x52,0x1F,0x2B,0x18,0x17,0x7B,0x20,0x0C,
269                 0xBB,0xE1,0x17,0x57,0x7A,0x61,0x5D,0x6C,
270                 0x77,0x09,0x88,0xC0,0xBA,0xD9,0x46,0xE2,
271                 0x08,0xE2,0x4F,0xA0,0x74,0xE5,0xAB,0x31,
272                 0x43,0xDB,0x5B,0xFC,0xE0,0xFD,0x10,0x8E,
273                 0x4B,0x82,0xD1,0x20,0xA9,0x21,0x08,0x01,
274                 0x1A,0x72,0x3C,0x12,0xA7,0x87,0xE6,0xD7,
275                 0x88,0x71,0x9A,0x10,0xBD,0xBA,0x5B,0x26,
276                 0x99,0xC3,0x27,0x18,0x6A,0xF4,0xE2,0x3C,
277                 0x1A,0x94,0x68,0x34,0xB6,0x15,0x0B,0xDA,
278                 0x25,0x83,0xE9,0xCA,0x2A,0xD4,0x4C,0xE8,
279                 0xDB,0xBB,0xC2,0xDB,0x04,0xDE,0x8E,0xF9,
280                 0x2E,0x8E,0xFC,0x14,0x1F,0xBE,0xCA,0xA6,
281                 0x28,0x7C,0x59,0x47,0x4E,0x6B,0xC0,0x5D,
282                 0x99,0xB2,0x96,0x4F,0xA0,0x90,0xC3,0xA2,
283                 0x23,0x3B,0xA1,0x86,0x51,0x5B,0xE7,0xED,
284                 0x1F,0x61,0x29,0x70,0xCE,0xE2,0xD7,0xAF,
285                 0xB8,0x1B,0xDD,0x76,0x21,0x70,0x48,0x1C,
286                 0xD0,0x06,0x91,0x27,0xD5,0xB0,0x5A,0xA9,
287                 0x93,0xB4,0xEA,0x98,0x8D,0x8F,0xDD,0xC1,
288                 0x86,0xFF,0xB7,0xDC,0x90,0xA6,0xC0,0x8F,
289                 0x4D,0xF4,0x35,0xC9,0x34,0x06,0x31,0x99,
290                 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
291                 };
292         return BN_bin2bn(RFC3526_PRIME_4096,sizeof(RFC3526_PRIME_4096),bn);
293         }
294
295 /*-
296  * "6144-bit MODP Group" from RFC3526, Section 6.
297  *
298  * The prime is: 2^6144 - 2^6080 - 1 + 2^64 * { [2^6014 pi] + 929484 }
299  *
300  * RFC3526 specifies a generator of 2.
301  */
302
303 BIGNUM *get_rfc3526_prime_6144(BIGNUM *bn)
304         {
305         static const unsigned char RFC3526_PRIME_6144[]={
306                 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
307                 0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x34,
308                 0xC4,0xC6,0x62,0x8B,0x80,0xDC,0x1C,0xD1,
309                 0x29,0x02,0x4E,0x08,0x8A,0x67,0xCC,0x74,
310                 0x02,0x0B,0xBE,0xA6,0x3B,0x13,0x9B,0x22,
311                 0x51,0x4A,0x08,0x79,0x8E,0x34,0x04,0xDD,
312                 0xEF,0x95,0x19,0xB3,0xCD,0x3A,0x43,0x1B,
313                 0x30,0x2B,0x0A,0x6D,0xF2,0x5F,0x14,0x37,
314                 0x4F,0xE1,0x35,0x6D,0x6D,0x51,0xC2,0x45,
315                 0xE4,0x85,0xB5,0x76,0x62,0x5E,0x7E,0xC6,
316                 0xF4,0x4C,0x42,0xE9,0xA6,0x37,0xED,0x6B,
317                 0x0B,0xFF,0x5C,0xB6,0xF4,0x06,0xB7,0xED,
318                 0xEE,0x38,0x6B,0xFB,0x5A,0x89,0x9F,0xA5,
319                 0xAE,0x9F,0x24,0x11,0x7C,0x4B,0x1F,0xE6,
320                 0x49,0x28,0x66,0x51,0xEC,0xE4,0x5B,0x3D,
321                 0xC2,0x00,0x7C,0xB8,0xA1,0x63,0xBF,0x05,
322                 0x98,0xDA,0x48,0x36,0x1C,0x55,0xD3,0x9A,
323                 0x69,0x16,0x3F,0xA8,0xFD,0x24,0xCF,0x5F,
324                 0x83,0x65,0x5D,0x23,0xDC,0xA3,0xAD,0x96,
325                 0x1C,0x62,0xF3,0x56,0x20,0x85,0x52,0xBB,
326                 0x9E,0xD5,0x29,0x07,0x70,0x96,0x96,0x6D,
327                 0x67,0x0C,0x35,0x4E,0x4A,0xBC,0x98,0x04,
328                 0xF1,0x74,0x6C,0x08,0xCA,0x18,0x21,0x7C,
329                 0x32,0x90,0x5E,0x46,0x2E,0x36,0xCE,0x3B,
330                 0xE3,0x9E,0x77,0x2C,0x18,0x0E,0x86,0x03,
331                 0x9B,0x27,0x83,0xA2,0xEC,0x07,0xA2,0x8F,
332                 0xB5,0xC5,0x5D,0xF0,0x6F,0x4C,0x52,0xC9,
333                 0xDE,0x2B,0xCB,0xF6,0x95,0x58,0x17,0x18,
334                 0x39,0x95,0x49,0x7C,0xEA,0x95,0x6A,0xE5,
335                 0x15,0xD2,0x26,0x18,0x98,0xFA,0x05,0x10,
336                 0x15,0x72,0x8E,0x5A,0x8A,0xAA,0xC4,0x2D,
337                 0xAD,0x33,0x17,0x0D,0x04,0x50,0x7A,0x33,
338                 0xA8,0x55,0x21,0xAB,0xDF,0x1C,0xBA,0x64,
339                 0xEC,0xFB,0x85,0x04,0x58,0xDB,0xEF,0x0A,
340                 0x8A,0xEA,0x71,0x57,0x5D,0x06,0x0C,0x7D,
341                 0xB3,0x97,0x0F,0x85,0xA6,0xE1,0xE4,0xC7,
342                 0xAB,0xF5,0xAE,0x8C,0xDB,0x09,0x33,0xD7,
343                 0x1E,0x8C,0x94,0xE0,0x4A,0x25,0x61,0x9D,
344                 0xCE,0xE3,0xD2,0x26,0x1A,0xD2,0xEE,0x6B,
345                 0xF1,0x2F,0xFA,0x06,0xD9,0x8A,0x08,0x64,
346                 0xD8,0x76,0x02,0x73,0x3E,0xC8,0x6A,0x64,
347                 0x52,0x1F,0x2B,0x18,0x17,0x7B,0x20,0x0C,
348                 0xBB,0xE1,0x17,0x57,0x7A,0x61,0x5D,0x6C,
349                 0x77,0x09,0x88,0xC0,0xBA,0xD9,0x46,0xE2,
350                 0x08,0xE2,0x4F,0xA0,0x74,0xE5,0xAB,0x31,
351                 0x43,0xDB,0x5B,0xFC,0xE0,0xFD,0x10,0x8E,
352                 0x4B,0x82,0xD1,0x20,0xA9,0x21,0x08,0x01,
353                 0x1A,0x72,0x3C,0x12,0xA7,0x87,0xE6,0xD7,
354                 0x88,0x71,0x9A,0x10,0xBD,0xBA,0x5B,0x26,
355                 0x99,0xC3,0x27,0x18,0x6A,0xF4,0xE2,0x3C,
356                 0x1A,0x94,0x68,0x34,0xB6,0x15,0x0B,0xDA,
357                 0x25,0x83,0xE9,0xCA,0x2A,0xD4,0x4C,0xE8,
358                 0xDB,0xBB,0xC2,0xDB,0x04,0xDE,0x8E,0xF9,
359                 0x2E,0x8E,0xFC,0x14,0x1F,0xBE,0xCA,0xA6,
360                 0x28,0x7C,0x59,0x47,0x4E,0x6B,0xC0,0x5D,
361                 0x99,0xB2,0x96,0x4F,0xA0,0x90,0xC3,0xA2,
362                 0x23,0x3B,0xA1,0x86,0x51,0x5B,0xE7,0xED,
363                 0x1F,0x61,0x29,0x70,0xCE,0xE2,0xD7,0xAF,
364                 0xB8,0x1B,0xDD,0x76,0x21,0x70,0x48,0x1C,
365                 0xD0,0x06,0x91,0x27,0xD5,0xB0,0x5A,0xA9,
366                 0x93,0xB4,0xEA,0x98,0x8D,0x8F,0xDD,0xC1,
367                 0x86,0xFF,0xB7,0xDC,0x90,0xA6,0xC0,0x8F,
368                 0x4D,0xF4,0x35,0xC9,0x34,0x02,0x84,0x92,
369                 0x36,0xC3,0xFA,0xB4,0xD2,0x7C,0x70,0x26,
370                 0xC1,0xD4,0xDC,0xB2,0x60,0x26,0x46,0xDE,
371                 0xC9,0x75,0x1E,0x76,0x3D,0xBA,0x37,0xBD,
372                 0xF8,0xFF,0x94,0x06,0xAD,0x9E,0x53,0x0E,
373                 0xE5,0xDB,0x38,0x2F,0x41,0x30,0x01,0xAE,
374                 0xB0,0x6A,0x53,0xED,0x90,0x27,0xD8,0x31,
375                 0x17,0x97,0x27,0xB0,0x86,0x5A,0x89,0x18,
376                 0xDA,0x3E,0xDB,0xEB,0xCF,0x9B,0x14,0xED,
377                 0x44,0xCE,0x6C,0xBA,0xCE,0xD4,0xBB,0x1B,
378                 0xDB,0x7F,0x14,0x47,0xE6,0xCC,0x25,0x4B,
379                 0x33,0x20,0x51,0x51,0x2B,0xD7,0xAF,0x42,
380                 0x6F,0xB8,0xF4,0x01,0x37,0x8C,0xD2,0xBF,
381                 0x59,0x83,0xCA,0x01,0xC6,0x4B,0x92,0xEC,
382                 0xF0,0x32,0xEA,0x15,0xD1,0x72,0x1D,0x03,
383                 0xF4,0x82,0xD7,0xCE,0x6E,0x74,0xFE,0xF6,
384                 0xD5,0x5E,0x70,0x2F,0x46,0x98,0x0C,0x82,
385                 0xB5,0xA8,0x40,0x31,0x90,0x0B,0x1C,0x9E,
386                 0x59,0xE7,0xC9,0x7F,0xBE,0xC7,0xE8,0xF3,
387                 0x23,0xA9,0x7A,0x7E,0x36,0xCC,0x88,0xBE,
388                 0x0F,0x1D,0x45,0xB7,0xFF,0x58,0x5A,0xC5,
389                 0x4B,0xD4,0x07,0xB2,0x2B,0x41,0x54,0xAA,
390                 0xCC,0x8F,0x6D,0x7E,0xBF,0x48,0xE1,0xD8,
391                 0x14,0xCC,0x5E,0xD2,0x0F,0x80,0x37,0xE0,
392                 0xA7,0x97,0x15,0xEE,0xF2,0x9B,0xE3,0x28,
393                 0x06,0xA1,0xD5,0x8B,0xB7,0xC5,0xDA,0x76,
394                 0xF5,0x50,0xAA,0x3D,0x8A,0x1F,0xBF,0xF0,
395                 0xEB,0x19,0xCC,0xB1,0xA3,0x13,0xD5,0x5C,
396                 0xDA,0x56,0xC9,0xEC,0x2E,0xF2,0x96,0x32,
397                 0x38,0x7F,0xE8,0xD7,0x6E,0x3C,0x04,0x68,
398                 0x04,0x3E,0x8F,0x66,0x3F,0x48,0x60,0xEE,
399                 0x12,0xBF,0x2D,0x5B,0x0B,0x74,0x74,0xD6,
400                 0xE6,0x94,0xF9,0x1E,0x6D,0xCC,0x40,0x24,
401                 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
402                 };
403         return BN_bin2bn(RFC3526_PRIME_6144,sizeof(RFC3526_PRIME_6144),bn);
404         }
405
406 /*-
407  * "8192-bit MODP Group" from RFC3526, Section 7.
408  *
409  * The prime is: 2^8192 - 2^8128 - 1 + 2^64 * { [2^8062 pi] + 4743158 }
410  *
411  * RFC3526 specifies a generator of 2.
412  */
413
414 BIGNUM *get_rfc3526_prime_8192(BIGNUM *bn)
415         {
416         static const unsigned char RFC3526_PRIME_8192[]={
417                 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
418                 0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x34,
419                 0xC4,0xC6,0x62,0x8B,0x80,0xDC,0x1C,0xD1,
420                 0x29,0x02,0x4E,0x08,0x8A,0x67,0xCC,0x74,
421                 0x02,0x0B,0xBE,0xA6,0x3B,0x13,0x9B,0x22,
422                 0x51,0x4A,0x08,0x79,0x8E,0x34,0x04,0xDD,
423                 0xEF,0x95,0x19,0xB3,0xCD,0x3A,0x43,0x1B,
424                 0x30,0x2B,0x0A,0x6D,0xF2,0x5F,0x14,0x37,
425                 0x4F,0xE1,0x35,0x6D,0x6D,0x51,0xC2,0x45,
426                 0xE4,0x85,0xB5,0x76,0x62,0x5E,0x7E,0xC6,
427                 0xF4,0x4C,0x42,0xE9,0xA6,0x37,0xED,0x6B,
428                 0x0B,0xFF,0x5C,0xB6,0xF4,0x06,0xB7,0xED,
429                 0xEE,0x38,0x6B,0xFB,0x5A,0x89,0x9F,0xA5,
430                 0xAE,0x9F,0x24,0x11,0x7C,0x4B,0x1F,0xE6,
431                 0x49,0x28,0x66,0x51,0xEC,0xE4,0x5B,0x3D,
432                 0xC2,0x00,0x7C,0xB8,0xA1,0x63,0xBF,0x05,
433                 0x98,0xDA,0x48,0x36,0x1C,0x55,0xD3,0x9A,
434                 0x69,0x16,0x3F,0xA8,0xFD,0x24,0xCF,0x5F,
435                 0x83,0x65,0x5D,0x23,0xDC,0xA3,0xAD,0x96,
436                 0x1C,0x62,0xF3,0x56,0x20,0x85,0x52,0xBB,
437                 0x9E,0xD5,0x29,0x07,0x70,0x96,0x96,0x6D,
438                 0x67,0x0C,0x35,0x4E,0x4A,0xBC,0x98,0x04,
439                 0xF1,0x74,0x6C,0x08,0xCA,0x18,0x21,0x7C,
440                 0x32,0x90,0x5E,0x46,0x2E,0x36,0xCE,0x3B,
441                 0xE3,0x9E,0x77,0x2C,0x18,0x0E,0x86,0x03,
442                 0x9B,0x27,0x83,0xA2,0xEC,0x07,0xA2,0x8F,
443                 0xB5,0xC5,0x5D,0xF0,0x6F,0x4C,0x52,0xC9,
444                 0xDE,0x2B,0xCB,0xF6,0x95,0x58,0x17,0x18,
445                 0x39,0x95,0x49,0x7C,0xEA,0x95,0x6A,0xE5,
446                 0x15,0xD2,0x26,0x18,0x98,0xFA,0x05,0x10,
447                 0x15,0x72,0x8E,0x5A,0x8A,0xAA,0xC4,0x2D,
448                 0xAD,0x33,0x17,0x0D,0x04,0x50,0x7A,0x33,
449                 0xA8,0x55,0x21,0xAB,0xDF,0x1C,0xBA,0x64,
450                 0xEC,0xFB,0x85,0x04,0x58,0xDB,0xEF,0x0A,
451                 0x8A,0xEA,0x71,0x57,0x5D,0x06,0x0C,0x7D,
452                 0xB3,0x97,0x0F,0x85,0xA6,0xE1,0xE4,0xC7,
453                 0xAB,0xF5,0xAE,0x8C,0xDB,0x09,0x33,0xD7,
454                 0x1E,0x8C,0x94,0xE0,0x4A,0x25,0x61,0x9D,
455                 0xCE,0xE3,0xD2,0x26,0x1A,0xD2,0xEE,0x6B,
456                 0xF1,0x2F,0xFA,0x06,0xD9,0x8A,0x08,0x64,
457                 0xD8,0x76,0x02,0x73,0x3E,0xC8,0x6A,0x64,
458                 0x52,0x1F,0x2B,0x18,0x17,0x7B,0x20,0x0C,
459                 0xBB,0xE1,0x17,0x57,0x7A,0x61,0x5D,0x6C,
460                 0x77,0x09,0x88,0xC0,0xBA,0xD9,0x46,0xE2,
461                 0x08,0xE2,0x4F,0xA0,0x74,0xE5,0xAB,0x31,
462                 0x43,0xDB,0x5B,0xFC,0xE0,0xFD,0x10,0x8E,
463                 0x4B,0x82,0xD1,0x20,0xA9,0x21,0x08,0x01,
464                 0x1A,0x72,0x3C,0x12,0xA7,0x87,0xE6,0xD7,
465                 0x88,0x71,0x9A,0x10,0xBD,0xBA,0x5B,0x26,
466                 0x99,0xC3,0x27,0x18,0x6A,0xF4,0xE2,0x3C,
467                 0x1A,0x94,0x68,0x34,0xB6,0x15,0x0B,0xDA,
468                 0x25,0x83,0xE9,0xCA,0x2A,0xD4,0x4C,0xE8,
469                 0xDB,0xBB,0xC2,0xDB,0x04,0xDE,0x8E,0xF9,
470                 0x2E,0x8E,0xFC,0x14,0x1F,0xBE,0xCA,0xA6,
471                 0x28,0x7C,0x59,0x47,0x4E,0x6B,0xC0,0x5D,
472                 0x99,0xB2,0x96,0x4F,0xA0,0x90,0xC3,0xA2,
473                 0x23,0x3B,0xA1,0x86,0x51,0x5B,0xE7,0xED,
474                 0x1F,0x61,0x29,0x70,0xCE,0xE2,0xD7,0xAF,
475                 0xB8,0x1B,0xDD,0x76,0x21,0x70,0x48,0x1C,
476                 0xD0,0x06,0x91,0x27,0xD5,0xB0,0x5A,0xA9,
477                 0x93,0xB4,0xEA,0x98,0x8D,0x8F,0xDD,0xC1,
478                 0x86,0xFF,0xB7,0xDC,0x90,0xA6,0xC0,0x8F,
479                 0x4D,0xF4,0x35,0xC9,0x34,0x02,0x84,0x92,
480                 0x36,0xC3,0xFA,0xB4,0xD2,0x7C,0x70,0x26,
481                 0xC1,0xD4,0xDC,0xB2,0x60,0x26,0x46,0xDE,
482                 0xC9,0x75,0x1E,0x76,0x3D,0xBA,0x37,0xBD,
483                 0xF8,0xFF,0x94,0x06,0xAD,0x9E,0x53,0x0E,
484                 0xE5,0xDB,0x38,0x2F,0x41,0x30,0x01,0xAE,
485                 0xB0,0x6A,0x53,0xED,0x90,0x27,0xD8,0x31,
486                 0x17,0x97,0x27,0xB0,0x86,0x5A,0x89,0x18,
487                 0xDA,0x3E,0xDB,0xEB,0xCF,0x9B,0x14,0xED,
488                 0x44,0xCE,0x6C,0xBA,0xCE,0xD4,0xBB,0x1B,
489                 0xDB,0x7F,0x14,0x47,0xE6,0xCC,0x25,0x4B,
490                 0x33,0x20,0x51,0x51,0x2B,0xD7,0xAF,0x42,
491                 0x6F,0xB8,0xF4,0x01,0x37,0x8C,0xD2,0xBF,
492                 0x59,0x83,0xCA,0x01,0xC6,0x4B,0x92,0xEC,
493                 0xF0,0x32,0xEA,0x15,0xD1,0x72,0x1D,0x03,
494                 0xF4,0x82,0xD7,0xCE,0x6E,0x74,0xFE,0xF6,
495                 0xD5,0x5E,0x70,0x2F,0x46,0x98,0x0C,0x82,
496                 0xB5,0xA8,0x40,0x31,0x90,0x0B,0x1C,0x9E,
497                 0x59,0xE7,0xC9,0x7F,0xBE,0xC7,0xE8,0xF3,
498                 0x23,0xA9,0x7A,0x7E,0x36,0xCC,0x88,0xBE,
499                 0x0F,0x1D,0x45,0xB7,0xFF,0x58,0x5A,0xC5,
500                 0x4B,0xD4,0x07,0xB2,0x2B,0x41,0x54,0xAA,
501                 0xCC,0x8F,0x6D,0x7E,0xBF,0x48,0xE1,0xD8,
502                 0x14,0xCC,0x5E,0xD2,0x0F,0x80,0x37,0xE0,
503                 0xA7,0x97,0x15,0xEE,0xF2,0x9B,0xE3,0x28,
504                 0x06,0xA1,0xD5,0x8B,0xB7,0xC5,0xDA,0x76,
505                 0xF5,0x50,0xAA,0x3D,0x8A,0x1F,0xBF,0xF0,
506                 0xEB,0x19,0xCC,0xB1,0xA3,0x13,0xD5,0x5C,
507                 0xDA,0x56,0xC9,0xEC,0x2E,0xF2,0x96,0x32,
508                 0x38,0x7F,0xE8,0xD7,0x6E,0x3C,0x04,0x68,
509                 0x04,0x3E,0x8F,0x66,0x3F,0x48,0x60,0xEE,
510                 0x12,0xBF,0x2D,0x5B,0x0B,0x74,0x74,0xD6,
511                 0xE6,0x94,0xF9,0x1E,0x6D,0xBE,0x11,0x59,
512                 0x74,0xA3,0x92,0x6F,0x12,0xFE,0xE5,0xE4,
513                 0x38,0x77,0x7C,0xB6,0xA9,0x32,0xDF,0x8C,
514                 0xD8,0xBE,0xC4,0xD0,0x73,0xB9,0x31,0xBA,
515                 0x3B,0xC8,0x32,0xB6,0x8D,0x9D,0xD3,0x00,
516                 0x74,0x1F,0xA7,0xBF,0x8A,0xFC,0x47,0xED,
517                 0x25,0x76,0xF6,0x93,0x6B,0xA4,0x24,0x66,
518                 0x3A,0xAB,0x63,0x9C,0x5A,0xE4,0xF5,0x68,
519                 0x34,0x23,0xB4,0x74,0x2B,0xF1,0xC9,0x78,
520                 0x23,0x8F,0x16,0xCB,0xE3,0x9D,0x65,0x2D,
521                 0xE3,0xFD,0xB8,0xBE,0xFC,0x84,0x8A,0xD9,
522                 0x22,0x22,0x2E,0x04,0xA4,0x03,0x7C,0x07,
523                 0x13,0xEB,0x57,0xA8,0x1A,0x23,0xF0,0xC7,
524                 0x34,0x73,0xFC,0x64,0x6C,0xEA,0x30,0x6B,
525                 0x4B,0xCB,0xC8,0x86,0x2F,0x83,0x85,0xDD,
526                 0xFA,0x9D,0x4B,0x7F,0xA2,0xC0,0x87,0xE8,
527                 0x79,0x68,0x33,0x03,0xED,0x5B,0xDD,0x3A,
528                 0x06,0x2B,0x3C,0xF5,0xB3,0xA2,0x78,0xA6,
529                 0x6D,0x2A,0x13,0xF8,0x3F,0x44,0xF8,0x2D,
530                 0xDF,0x31,0x0E,0xE0,0x74,0xAB,0x6A,0x36,
531                 0x45,0x97,0xE8,0x99,0xA0,0x25,0x5D,0xC1,
532                 0x64,0xF3,0x1C,0xC5,0x08,0x46,0x85,0x1D,
533                 0xF9,0xAB,0x48,0x19,0x5D,0xED,0x7E,0xA1,
534                 0xB1,0xD5,0x10,0xBD,0x7E,0xE7,0x4D,0x73,
535                 0xFA,0xF3,0x6B,0xC3,0x1E,0xCF,0xA2,0x68,
536                 0x35,0x90,0x46,0xF4,0xEB,0x87,0x9F,0x92,
537                 0x40,0x09,0x43,0x8B,0x48,0x1C,0x6C,0xD7,
538                 0x88,0x9A,0x00,0x2E,0xD5,0xEE,0x38,0x2B,
539                 0xC9,0x19,0x0D,0xA6,0xFC,0x02,0x6E,0x47,
540                 0x95,0x58,0xE4,0x47,0x56,0x77,0xE9,0xAA,
541                 0x9E,0x30,0x50,0xE2,0x76,0x56,0x94,0xDF,
542                 0xC8,0x1F,0x56,0xE8,0x80,0xB9,0x6E,0x71,
543                 0x60,0xC9,0x80,0xDD,0x98,0xED,0xD3,0xDF,
544                 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
545                 };
546         return BN_bin2bn(RFC3526_PRIME_8192,sizeof(RFC3526_PRIME_8192),bn);
547         }
548