add missing file
[openssl.git] / crypto / bn / bn_const.c
1 /* crypto/bn/knownprimes.c */
2 /* Insert boilerplate */
3
4 #include "bn.h"
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 static const char RFC2409_PRIME_768[] =
14         "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1"
15         "29024E088A67CC74020BBEA63B139B22514A08798E3404DD"
16         "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245"
17         "E485B576625E7EC6F44C42E9A63A3620FFFFFFFFFFFFFFFF";
18
19 /* "Second Oakley Default Group" from RFC2409, section 6.2.
20  *
21  * The prime is: 2^1024 - 2^960 - 1 + 2^64 * { [2^894 pi] + 129093 }.
22  *
23  * RFC2409 specifies a generator of 2.
24  * RFC2412 specifies a generator of 22.
25  */
26 static const char RFC2409_PRIME_1024[] =
27         "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1"
28         "29024E088A67CC74020BBEA63B139B22514A08798E3404DD"
29         "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245"
30         "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED"
31         "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE65381"
32         "FFFFFFFFFFFFFFFF";
33
34 /* "1536-bit MODP Group" from RFC3526, Section 2.
35  *
36  * The prime is: 2^1536 - 2^1472 - 1 + 2^64 * { [2^1406 pi] + 741804 }
37  *
38  * RFC3526 specifies a generator of 2.
39  * RFC2312 specifies a generator of 22.
40  */
41 static const char RFC3526_PRIME_1536[] =
42         "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1"
43         "29024E088A67CC74020BBEA63B139B22514A08798E3404DD"
44         "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245"
45         "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED"
46         "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D"
47         "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F"
48         "83655D23DCA3AD961C62F356208552BB9ED529077096966D"
49         "670C354E4ABC9804F1746C08CA237327FFFFFFFFFFFFFFFF";
50
51 /* "2048-bit MODP Group" from RFC3526, Section 3.
52  *
53  * The prime is: 2^2048 - 2^1984 - 1 + 2^64 * { [2^1918 pi] + 124476 }
54  *
55  * RFC3526 specifies a generator of 2.
56  */
57 static const char RFC3526_PRIME_2048[] =
58         "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1"
59         "29024E088A67CC74020BBEA63B139B22514A08798E3404DD"
60         "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245"
61         "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED"
62         "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D"
63         "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F"
64         "83655D23DCA3AD961C62F356208552BB9ED529077096966D"
65         "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B"
66         "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9"
67         "DE2BCBF6955817183995497CEA956AE515D2261898FA0510"
68         "15728E5A8AACAA68FFFFFFFFFFFFFFFF";
69
70 /* "3072-bit MODP Group" from RFC3526, Section 4.
71  *
72  * The prime is: 2^3072 - 2^3008 - 1 + 2^64 * { [2^2942 pi] + 1690314 }
73  *
74  * RFC3526 specifies a generator of 2.
75  */
76 static const char RFC3526_PRIME_3072[] =
77         "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1"
78         "29024E088A67CC74020BBEA63B139B22514A08798E3404DD"
79         "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245"
80         "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED"
81         "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D"
82         "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F"
83         "83655D23DCA3AD961C62F356208552BB9ED529077096966D"
84         "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B"
85         "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9"
86         "DE2BCBF6955817183995497CEA956AE515D2261898FA0510"
87         "15728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64"
88         "ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7"
89         "ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6B"
90         "F12FFA06D98A0864D87602733EC86A64521F2B18177B200C"
91         "BBE117577A615D6C770988C0BAD946E208E24FA074E5AB31"
92         "43DB5BFCE0FD108E4B82D120A93AD2CAFFFFFFFFFFFFFFFF";
93
94 /* "4096-bit MODP Group" from RFC3526, Section 5.
95  *
96  * The prime is: 2^4096 - 2^4032 - 1 + 2^64 * { [2^3966 pi] + 240904 }
97  *
98  * RFC3526 specifies a generator of 2.
99  */
100 static const char RFC3526_PRIME_4096[] =
101         "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1"
102         "29024E088A67CC74020BBEA63B139B22514A08798E3404DD"
103         "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245"
104         "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED"
105         "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D"
106         "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F"
107         "83655D23DCA3AD961C62F356208552BB9ED529077096966D"
108         "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B"
109         "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9"
110         "DE2BCBF6955817183995497CEA956AE515D2261898FA0510"
111         "15728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64"
112         "ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7"
113         "ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6B"
114         "F12FFA06D98A0864D87602733EC86A64521F2B18177B200C"
115         "BBE117577A615D6C770988C0BAD946E208E24FA074E5AB31"
116         "43DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D7"
117         "88719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA"
118         "2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6"
119         "287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED"
120         "1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA9"
121         "93B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934063199"
122         "FFFFFFFFFFFFFFFF";
123
124 /* "6144-bit MODP Group" from RFC3526, Section 6.
125  *
126  * The prime is: 2^6144 - 2^6080 - 1 + 2^64 * { [2^6014 pi] + 929484 }
127  *
128  * RFC3526 specifies a generator of 2.
129  */
130 static const char RFC3526_PRIME_6144[] =
131         "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E08"
132         "8A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B"
133         "302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9"
134         "A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE6"
135         "49286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8"
136         "FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D"
137         "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C"
138         "180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF695581718"
139         "3995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D"
140         "04507A33A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7D"
141         "B3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E04A25619DCEE3D226"
142         "1AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B18177B200C"
143         "BBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5BFC"
144         "E0FD108E4B82D120A92108011A723C12A787E6D788719A10BDBA5B26"
145         "99C327186AF4E23C1A946834B6150BDA2583E9CA2AD44CE8DBBBC2DB"
146         "04DE8EF92E8EFC141FBECAA6287C59474E6BC05D99B2964FA090C3A2"
147         "233BA186515BE7ED1F612970CEE2D7AFB81BDD762170481CD0069127"
148         "D5B05AA993B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934028492"
149         "36C3FAB4D27C7026C1D4DCB2602646DEC9751E763DBA37BDF8FF9406"
150         "AD9E530EE5DB382F413001AEB06A53ED9027D831179727B0865A8918"
151         "DA3EDBEBCF9B14ED44CE6CBACED4BB1BDB7F1447E6CC254B33205151"
152         "2BD7AF426FB8F401378CD2BF5983CA01C64B92ECF032EA15D1721D03"
153         "F482D7CE6E74FEF6D55E702F46980C82B5A84031900B1C9E59E7C97F"
154         "BEC7E8F323A97A7E36CC88BE0F1D45B7FF585AC54BD407B22B4154AA"
155         "CC8F6D7EBF48E1D814CC5ED20F8037E0A79715EEF29BE32806A1D58B"
156         "B7C5DA76F550AA3D8A1FBFF0EB19CCB1A313D55CDA56C9EC2EF29632"
157         "387FE8D76E3C0468043E8F663F4860EE12BF2D5B0B7474D6E694F91E"
158         "6DCC4024FFFFFFFFFFFFFFFF";
159
160 /* "8192-bit MODP Group" from RFC3526, Section 7.
161  *
162  * The prime is: 2^8192 - 2^8128 - 1 + 2^64 * { [2^8062 pi] + 4743158 }
163  *
164  * RFC3526 specifies a generator of 2.
165  */
166 static const char RFC3526_PRIME_8192[] =
167         "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1"
168         "29024E088A67CC74020BBEA63B139B22514A08798E3404DD"
169         "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245"
170         "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED"
171         "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D"
172         "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F"
173         "83655D23DCA3AD961C62F356208552BB9ED529077096966D"
174         "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B"
175         "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9"
176         "DE2BCBF6955817183995497CEA956AE515D2261898FA0510"
177         "15728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64"
178         "ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7"
179         "ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6B"
180         "F12FFA06D98A0864D87602733EC86A64521F2B18177B200C"
181         "BBE117577A615D6C770988C0BAD946E208E24FA074E5AB31"
182         "43DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D7"
183         "88719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA"
184         "2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6"
185         "287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED"
186         "1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA9"
187         "93B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934028492"
188         "36C3FAB4D27C7026C1D4DCB2602646DEC9751E763DBA37BD"
189         "F8FF9406AD9E530EE5DB382F413001AEB06A53ED9027D831"
190         "179727B0865A8918DA3EDBEBCF9B14ED44CE6CBACED4BB1B"
191         "DB7F1447E6CC254B332051512BD7AF426FB8F401378CD2BF"
192         "5983CA01C64B92ECF032EA15D1721D03F482D7CE6E74FEF6"
193         "D55E702F46980C82B5A84031900B1C9E59E7C97FBEC7E8F3"
194         "23A97A7E36CC88BE0F1D45B7FF585AC54BD407B22B4154AA"
195         "CC8F6D7EBF48E1D814CC5ED20F8037E0A79715EEF29BE328"
196         "06A1D58BB7C5DA76F550AA3D8A1FBFF0EB19CCB1A313D55C"
197         "DA56C9EC2EF29632387FE8D76E3C0468043E8F663F4860EE"
198         "12BF2D5B0B7474D6E694F91E6DBE115974A3926F12FEE5E4"
199         "38777CB6A932DF8CD8BEC4D073B931BA3BC832B68D9DD300"
200         "741FA7BF8AFC47ED2576F6936BA424663AAB639C5AE4F568"
201         "3423B4742BF1C978238F16CBE39D652DE3FDB8BEFC848AD9"
202         "22222E04A4037C0713EB57A81A23F0C73473FC646CEA306B"
203         "4BCBC8862F8385DDFA9D4B7FA2C087E879683303ED5BDD3A"
204         "062B3CF5B3A278A66D2A13F83F44F82DDF310EE074AB6A36"
205         "4597E899A0255DC164F31CC50846851DF9AB48195DED7EA1"
206         "B1D510BD7EE74D73FAF36BC31ECFA268359046F4EB879F92"
207         "4009438B481C6CD7889A002ED5EE382BC9190DA6FC026E47"
208         "9558E4475677E9AA9E3050E2765694DFC81F56E880B96E71"
209         "60C980DD98EDD3DFFFFFFFFFFFFFFFFF";
210
211 int get_rfc2409_prime_768(BIGNUM **bn)
212         {
213         return BN_hex2bn(bn,RFC2409_PRIME_768);
214         }
215
216 int get_rfc2409_prime_1024(BIGNUM **bn)
217         {
218         return BN_hex2bn(bn,RFC2409_PRIME_1024);
219         }
220
221 int get_rfc3526_prime_1536(BIGNUM **bn)
222         {
223         return BN_hex2bn(bn,RFC3526_PRIME_1536);
224         }
225
226 int get_rfc3526_prime_2048(BIGNUM **bn)
227         {
228         return BN_hex2bn(bn,RFC3526_PRIME_2048);
229         }
230
231 int get_rfc3526_prime_3072(BIGNUM **bn)
232         {
233         return BN_hex2bn(bn,RFC3526_PRIME_3072);
234         }
235
236 int get_rfc3526_prime_4096(BIGNUM **bn)
237         {
238         return BN_hex2bn(bn,RFC3526_PRIME_4096);
239         }
240
241 int get_rfc3526_prime_6144(BIGNUM **bn)
242         {
243         return BN_hex2bn(bn,RFC3526_PRIME_6144);
244         }
245
246 int get_rfc3526_prime_8192(BIGNUM **bn)
247         {
248         return BN_hex2bn(bn,RFC3526_PRIME_8192);
249         }