/src/openssl30/crypto/bn/bn_const.c
Line | Count | Source |
1 | | /* |
2 | | * Copyright 2005-2021 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 | | |
10 | | #include <openssl/bn.h> |
11 | | #include "crypto/bn_dh.h" |
12 | | |
13 | 0 | #define COPY_BN(dst, src) (dst != NULL) ? BN_copy(dst, &src) : BN_dup(&src) |
14 | | |
15 | | /*- |
16 | | * "First Oakley Default Group" from RFC2409, section 6.1. |
17 | | * |
18 | | * The prime is: 2^768 - 2 ^704 - 1 + 2^64 * { [2^638 pi] + 149686 } |
19 | | * |
20 | | * RFC2409 specifies a generator of 2. |
21 | | * RFC2412 specifies a generator of of 22. |
22 | | */ |
23 | | |
24 | | BIGNUM *BN_get_rfc2409_prime_768(BIGNUM *bn) |
25 | 0 | { |
26 | 0 | static const unsigned char RFC2409_PRIME_768[] = { |
27 | 0 | 0xFF, |
28 | 0 | 0xFF, |
29 | 0 | 0xFF, |
30 | 0 | 0xFF, |
31 | 0 | 0xFF, |
32 | 0 | 0xFF, |
33 | 0 | 0xFF, |
34 | 0 | 0xFF, |
35 | 0 | 0xC9, |
36 | 0 | 0x0F, |
37 | 0 | 0xDA, |
38 | 0 | 0xA2, |
39 | 0 | 0x21, |
40 | 0 | 0x68, |
41 | 0 | 0xC2, |
42 | 0 | 0x34, |
43 | 0 | 0xC4, |
44 | 0 | 0xC6, |
45 | 0 | 0x62, |
46 | 0 | 0x8B, |
47 | 0 | 0x80, |
48 | 0 | 0xDC, |
49 | 0 | 0x1C, |
50 | 0 | 0xD1, |
51 | 0 | 0x29, |
52 | 0 | 0x02, |
53 | 0 | 0x4E, |
54 | 0 | 0x08, |
55 | 0 | 0x8A, |
56 | 0 | 0x67, |
57 | 0 | 0xCC, |
58 | 0 | 0x74, |
59 | 0 | 0x02, |
60 | 0 | 0x0B, |
61 | 0 | 0xBE, |
62 | 0 | 0xA6, |
63 | 0 | 0x3B, |
64 | 0 | 0x13, |
65 | 0 | 0x9B, |
66 | 0 | 0x22, |
67 | 0 | 0x51, |
68 | 0 | 0x4A, |
69 | 0 | 0x08, |
70 | 0 | 0x79, |
71 | 0 | 0x8E, |
72 | 0 | 0x34, |
73 | 0 | 0x04, |
74 | 0 | 0xDD, |
75 | 0 | 0xEF, |
76 | 0 | 0x95, |
77 | 0 | 0x19, |
78 | 0 | 0xB3, |
79 | 0 | 0xCD, |
80 | 0 | 0x3A, |
81 | 0 | 0x43, |
82 | 0 | 0x1B, |
83 | 0 | 0x30, |
84 | 0 | 0x2B, |
85 | 0 | 0x0A, |
86 | 0 | 0x6D, |
87 | 0 | 0xF2, |
88 | 0 | 0x5F, |
89 | 0 | 0x14, |
90 | 0 | 0x37, |
91 | 0 | 0x4F, |
92 | 0 | 0xE1, |
93 | 0 | 0x35, |
94 | 0 | 0x6D, |
95 | 0 | 0x6D, |
96 | 0 | 0x51, |
97 | 0 | 0xC2, |
98 | 0 | 0x45, |
99 | 0 | 0xE4, |
100 | 0 | 0x85, |
101 | 0 | 0xB5, |
102 | 0 | 0x76, |
103 | 0 | 0x62, |
104 | 0 | 0x5E, |
105 | 0 | 0x7E, |
106 | 0 | 0xC6, |
107 | 0 | 0xF4, |
108 | 0 | 0x4C, |
109 | 0 | 0x42, |
110 | 0 | 0xE9, |
111 | 0 | 0xA6, |
112 | 0 | 0x3A, |
113 | 0 | 0x36, |
114 | 0 | 0x20, |
115 | 0 | 0xFF, |
116 | 0 | 0xFF, |
117 | 0 | 0xFF, |
118 | 0 | 0xFF, |
119 | 0 | 0xFF, |
120 | 0 | 0xFF, |
121 | 0 | 0xFF, |
122 | 0 | 0xFF, |
123 | 0 | }; |
124 | 0 | return BN_bin2bn(RFC2409_PRIME_768, sizeof(RFC2409_PRIME_768), bn); |
125 | 0 | } |
126 | | |
127 | | /*- |
128 | | * "Second Oakley Default Group" from RFC2409, section 6.2. |
129 | | * |
130 | | * The prime is: 2^1024 - 2^960 - 1 + 2^64 * { [2^894 pi] + 129093 }. |
131 | | * |
132 | | * RFC2409 specifies a generator of 2. |
133 | | * RFC2412 specifies a generator of 22. |
134 | | */ |
135 | | |
136 | | BIGNUM *BN_get_rfc2409_prime_1024(BIGNUM *bn) |
137 | 0 | { |
138 | 0 | static const unsigned char RFC2409_PRIME_1024[] = { |
139 | 0 | 0xFF, |
140 | 0 | 0xFF, |
141 | 0 | 0xFF, |
142 | 0 | 0xFF, |
143 | 0 | 0xFF, |
144 | 0 | 0xFF, |
145 | 0 | 0xFF, |
146 | 0 | 0xFF, |
147 | 0 | 0xC9, |
148 | 0 | 0x0F, |
149 | 0 | 0xDA, |
150 | 0 | 0xA2, |
151 | 0 | 0x21, |
152 | 0 | 0x68, |
153 | 0 | 0xC2, |
154 | 0 | 0x34, |
155 | 0 | 0xC4, |
156 | 0 | 0xC6, |
157 | 0 | 0x62, |
158 | 0 | 0x8B, |
159 | 0 | 0x80, |
160 | 0 | 0xDC, |
161 | 0 | 0x1C, |
162 | 0 | 0xD1, |
163 | 0 | 0x29, |
164 | 0 | 0x02, |
165 | 0 | 0x4E, |
166 | 0 | 0x08, |
167 | 0 | 0x8A, |
168 | 0 | 0x67, |
169 | 0 | 0xCC, |
170 | 0 | 0x74, |
171 | 0 | 0x02, |
172 | 0 | 0x0B, |
173 | 0 | 0xBE, |
174 | 0 | 0xA6, |
175 | 0 | 0x3B, |
176 | 0 | 0x13, |
177 | 0 | 0x9B, |
178 | 0 | 0x22, |
179 | 0 | 0x51, |
180 | 0 | 0x4A, |
181 | 0 | 0x08, |
182 | 0 | 0x79, |
183 | 0 | 0x8E, |
184 | 0 | 0x34, |
185 | 0 | 0x04, |
186 | 0 | 0xDD, |
187 | 0 | 0xEF, |
188 | 0 | 0x95, |
189 | 0 | 0x19, |
190 | 0 | 0xB3, |
191 | 0 | 0xCD, |
192 | 0 | 0x3A, |
193 | 0 | 0x43, |
194 | 0 | 0x1B, |
195 | 0 | 0x30, |
196 | 0 | 0x2B, |
197 | 0 | 0x0A, |
198 | 0 | 0x6D, |
199 | 0 | 0xF2, |
200 | 0 | 0x5F, |
201 | 0 | 0x14, |
202 | 0 | 0x37, |
203 | 0 | 0x4F, |
204 | 0 | 0xE1, |
205 | 0 | 0x35, |
206 | 0 | 0x6D, |
207 | 0 | 0x6D, |
208 | 0 | 0x51, |
209 | 0 | 0xC2, |
210 | 0 | 0x45, |
211 | 0 | 0xE4, |
212 | 0 | 0x85, |
213 | 0 | 0xB5, |
214 | 0 | 0x76, |
215 | 0 | 0x62, |
216 | 0 | 0x5E, |
217 | 0 | 0x7E, |
218 | 0 | 0xC6, |
219 | 0 | 0xF4, |
220 | 0 | 0x4C, |
221 | 0 | 0x42, |
222 | 0 | 0xE9, |
223 | 0 | 0xA6, |
224 | 0 | 0x37, |
225 | 0 | 0xED, |
226 | 0 | 0x6B, |
227 | 0 | 0x0B, |
228 | 0 | 0xFF, |
229 | 0 | 0x5C, |
230 | 0 | 0xB6, |
231 | 0 | 0xF4, |
232 | 0 | 0x06, |
233 | 0 | 0xB7, |
234 | 0 | 0xED, |
235 | 0 | 0xEE, |
236 | 0 | 0x38, |
237 | 0 | 0x6B, |
238 | 0 | 0xFB, |
239 | 0 | 0x5A, |
240 | 0 | 0x89, |
241 | 0 | 0x9F, |
242 | 0 | 0xA5, |
243 | 0 | 0xAE, |
244 | 0 | 0x9F, |
245 | 0 | 0x24, |
246 | 0 | 0x11, |
247 | 0 | 0x7C, |
248 | 0 | 0x4B, |
249 | 0 | 0x1F, |
250 | 0 | 0xE6, |
251 | 0 | 0x49, |
252 | 0 | 0x28, |
253 | 0 | 0x66, |
254 | 0 | 0x51, |
255 | 0 | 0xEC, |
256 | 0 | 0xE6, |
257 | 0 | 0x53, |
258 | 0 | 0x81, |
259 | 0 | 0xFF, |
260 | 0 | 0xFF, |
261 | 0 | 0xFF, |
262 | 0 | 0xFF, |
263 | 0 | 0xFF, |
264 | 0 | 0xFF, |
265 | 0 | 0xFF, |
266 | 0 | 0xFF, |
267 | 0 | }; |
268 | 0 | return BN_bin2bn(RFC2409_PRIME_1024, sizeof(RFC2409_PRIME_1024), bn); |
269 | 0 | } |
270 | | |
271 | | /*- |
272 | | * "1536-bit MODP Group" from RFC3526, Section 2. |
273 | | * |
274 | | * The prime is: 2^1536 - 2^1472 - 1 + 2^64 * { [2^1406 pi] + 741804 } |
275 | | * |
276 | | * RFC3526 specifies a generator of 2. |
277 | | * RFC2312 specifies a generator of 22. |
278 | | */ |
279 | | |
280 | | BIGNUM *BN_get_rfc3526_prime_1536(BIGNUM *bn) |
281 | 0 | { |
282 | 0 | return COPY_BN(bn, ossl_bignum_modp_1536_p); |
283 | 0 | } |
284 | | |
285 | | /*- |
286 | | * "2048-bit MODP Group" from RFC3526, Section 3. |
287 | | * |
288 | | * The prime is: 2^2048 - 2^1984 - 1 + 2^64 * { [2^1918 pi] + 124476 } |
289 | | * |
290 | | * RFC3526 specifies a generator of 2. |
291 | | */ |
292 | | |
293 | | BIGNUM *BN_get_rfc3526_prime_2048(BIGNUM *bn) |
294 | 0 | { |
295 | 0 | return COPY_BN(bn, ossl_bignum_modp_2048_p); |
296 | 0 | } |
297 | | |
298 | | /*- |
299 | | * "3072-bit MODP Group" from RFC3526, Section 4. |
300 | | * |
301 | | * The prime is: 2^3072 - 2^3008 - 1 + 2^64 * { [2^2942 pi] + 1690314 } |
302 | | * |
303 | | * RFC3526 specifies a generator of 2. |
304 | | */ |
305 | | |
306 | | BIGNUM *BN_get_rfc3526_prime_3072(BIGNUM *bn) |
307 | 0 | { |
308 | 0 | return COPY_BN(bn, ossl_bignum_modp_3072_p); |
309 | 0 | } |
310 | | |
311 | | /*- |
312 | | * "4096-bit MODP Group" from RFC3526, Section 5. |
313 | | * |
314 | | * The prime is: 2^4096 - 2^4032 - 1 + 2^64 * { [2^3966 pi] + 240904 } |
315 | | * |
316 | | * RFC3526 specifies a generator of 2. |
317 | | */ |
318 | | |
319 | | BIGNUM *BN_get_rfc3526_prime_4096(BIGNUM *bn) |
320 | 0 | { |
321 | 0 | return COPY_BN(bn, ossl_bignum_modp_4096_p); |
322 | 0 | } |
323 | | |
324 | | /*- |
325 | | * "6144-bit MODP Group" from RFC3526, Section 6. |
326 | | * |
327 | | * The prime is: 2^6144 - 2^6080 - 1 + 2^64 * { [2^6014 pi] + 929484 } |
328 | | * |
329 | | * RFC3526 specifies a generator of 2. |
330 | | */ |
331 | | |
332 | | BIGNUM *BN_get_rfc3526_prime_6144(BIGNUM *bn) |
333 | 0 | { |
334 | 0 | return COPY_BN(bn, ossl_bignum_modp_6144_p); |
335 | 0 | } |
336 | | |
337 | | /*- |
338 | | * "8192-bit MODP Group" from RFC3526, Section 7. |
339 | | * |
340 | | * The prime is: 2^8192 - 2^8128 - 1 + 2^64 * { [2^8062 pi] + 4743158 } |
341 | | * |
342 | | * RFC3526 specifies a generator of 2. |
343 | | */ |
344 | | |
345 | | BIGNUM *BN_get_rfc3526_prime_8192(BIGNUM *bn) |
346 | 0 | { |
347 | | return COPY_BN(bn, ossl_bignum_modp_8192_p); |
348 | 0 | } |