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