1/*
2 * Copyright (c) 2000-2001,2011,2014 Apple Inc. All Rights Reserved.
3 *
4 * The contents of this file constitute Original Code as defined in and are
5 * subject to the Apple Public Source License Version 1.2 (the 'License').
6 * You may not use this file except in compliance with the License. Please obtain
7 * a copy of the License at http://www.apple.com/publicsource and read it before
8 * using this file.
9 *
10 * This Original Code and all software distributed under the License are
11 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS
12 * OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT
13 * LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
14 * PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. Please see the License for the
15 * specific language governing rights and limitations under the License.
16 */
17
18
19/* Auto generated by bn_prime.pl */
20/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
21 * All rights reserved.
22 *
23 * This package is an SSL implementation written
24 * by Eric Young (eay@cryptsoft.com).
25 * The implementation was written so as to conform with Netscapes SSL.
26 *
27 * This library is free for commercial and non-commercial use as long as
28 * the following conditions are aheared to.  The following conditions
29 * apply to all code found in this distribution, be it the RC4, RSA,
30 * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
31 * included with this distribution is covered by the same copyright terms
32 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
33 *
34 * Copyright remains Eric Young's, and as such any Copyright notices in
35 * the code are not to be removed.
36 * If this package is used in a product, Eric Young should be given attribution
37 * as the author of the parts of the library used.
38 * This can be in the form of a textual message at program startup or
39 * in documentation (online or textual) provided with the package.
40 *
41 * Redistribution and use in source and binary forms, with or without
42 * modification, are permitted provided that the following conditions
43 * are met:
44 * 1. Redistributions of source code must retain the copyright
45 *    notice, this list of conditions and the following disclaimer.
46 * 2. Redistributions in binary form must reproduce the above copyright
47 *    notice, this list of conditions and the following disclaimer in the
48 *    documentation and/or other materials provided with the distribution.
49 * 3. All advertising materials mentioning features or use of this software
50 *    must display the following acknowledgement:
51 *    "This product includes cryptographic software written by
52 *     Eric Young (eay@cryptsoft.com)"
53 *    The word 'cryptographic' can be left out if the rouines from the library
54 *    being used are not cryptographic related :-).
55 * 4. If you include any Windows specific code (or a derivative thereof) from
56 *    the apps directory (application code) you must include an acknowledgement:
57 *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
58 *
59 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
60 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
61 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
62 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
63 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
64 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
65 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
66 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
67 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
68 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
69 * SUCH DAMAGE.
70 *
71 * The licence and distribution terms for any publically available version or
72 * derivative of this code cannot be changed.  i.e. this code cannot simply be
73 * copied and put under another distribution licence
74 * [including the GNU Public Licence.]
75 */
76
77#ifndef EIGHT_BIT
78#define NUMPRIMES 2048
79#else
80#define NUMPRIMES 54
81#endif
82static const unsigned int primes[NUMPRIMES]=
83	{
84	   2,   3,   5,   7,  11,  13,  17,  19,
85	  23,  29,  31,  37,  41,  43,  47,  53,
86	  59,  61,  67,  71,  73,  79,  83,  89,
87	  97, 101, 103, 107, 109, 113, 127, 131,
88	 137, 139, 149, 151, 157, 163, 167, 173,
89	 179, 181, 191, 193, 197, 199, 211, 223,
90	 227, 229, 233, 239, 241, 251,
91#ifndef EIGHT_BIT
92	 257, 263,
93	 269, 271, 277, 281, 283, 293, 307, 311,
94	 313, 317, 331, 337, 347, 349, 353, 359,
95	 367, 373, 379, 383, 389, 397, 401, 409,
96	 419, 421, 431, 433, 439, 443, 449, 457,
97	 461, 463, 467, 479, 487, 491, 499, 503,
98	 509, 521, 523, 541, 547, 557, 563, 569,
99	 571, 577, 587, 593, 599, 601, 607, 613,
100	 617, 619, 631, 641, 643, 647, 653, 659,
101	 661, 673, 677, 683, 691, 701, 709, 719,
102	 727, 733, 739, 743, 751, 757, 761, 769,
103	 773, 787, 797, 809, 811, 821, 823, 827,
104	 829, 839, 853, 857, 859, 863, 877, 881,
105	 883, 887, 907, 911, 919, 929, 937, 941,
106	 947, 953, 967, 971, 977, 983, 991, 997,
107	1009,1013,1019,1021,1031,1033,1039,1049,
108	1051,1061,1063,1069,1087,1091,1093,1097,
109	1103,1109,1117,1123,1129,1151,1153,1163,
110	1171,1181,1187,1193,1201,1213,1217,1223,
111	1229,1231,1237,1249,1259,1277,1279,1283,
112	1289,1291,1297,1301,1303,1307,1319,1321,
113	1327,1361,1367,1373,1381,1399,1409,1423,
114	1427,1429,1433,1439,1447,1451,1453,1459,
115	1471,1481,1483,1487,1489,1493,1499,1511,
116	1523,1531,1543,1549,1553,1559,1567,1571,
117	1579,1583,1597,1601,1607,1609,1613,1619,
118	1621,1627,1637,1657,1663,1667,1669,1693,
119	1697,1699,1709,1721,1723,1733,1741,1747,
120	1753,1759,1777,1783,1787,1789,1801,1811,
121	1823,1831,1847,1861,1867,1871,1873,1877,
122	1879,1889,1901,1907,1913,1931,1933,1949,
123	1951,1973,1979,1987,1993,1997,1999,2003,
124	2011,2017,2027,2029,2039,2053,2063,2069,
125	2081,2083,2087,2089,2099,2111,2113,2129,
126	2131,2137,2141,2143,2153,2161,2179,2203,
127	2207,2213,2221,2237,2239,2243,2251,2267,
128	2269,2273,2281,2287,2293,2297,2309,2311,
129	2333,2339,2341,2347,2351,2357,2371,2377,
130	2381,2383,2389,2393,2399,2411,2417,2423,
131	2437,2441,2447,2459,2467,2473,2477,2503,
132	2521,2531,2539,2543,2549,2551,2557,2579,
133	2591,2593,2609,2617,2621,2633,2647,2657,
134	2659,2663,2671,2677,2683,2687,2689,2693,
135	2699,2707,2711,2713,2719,2729,2731,2741,
136	2749,2753,2767,2777,2789,2791,2797,2801,
137	2803,2819,2833,2837,2843,2851,2857,2861,
138	2879,2887,2897,2903,2909,2917,2927,2939,
139	2953,2957,2963,2969,2971,2999,3001,3011,
140	3019,3023,3037,3041,3049,3061,3067,3079,
141	3083,3089,3109,3119,3121,3137,3163,3167,
142	3169,3181,3187,3191,3203,3209,3217,3221,
143	3229,3251,3253,3257,3259,3271,3299,3301,
144	3307,3313,3319,3323,3329,3331,3343,3347,
145	3359,3361,3371,3373,3389,3391,3407,3413,
146	3433,3449,3457,3461,3463,3467,3469,3491,
147	3499,3511,3517,3527,3529,3533,3539,3541,
148	3547,3557,3559,3571,3581,3583,3593,3607,
149	3613,3617,3623,3631,3637,3643,3659,3671,
150	3673,3677,3691,3697,3701,3709,3719,3727,
151	3733,3739,3761,3767,3769,3779,3793,3797,
152	3803,3821,3823,3833,3847,3851,3853,3863,
153	3877,3881,3889,3907,3911,3917,3919,3923,
154	3929,3931,3943,3947,3967,3989,4001,4003,
155	4007,4013,4019,4021,4027,4049,4051,4057,
156	4073,4079,4091,4093,4099,4111,4127,4129,
157	4133,4139,4153,4157,4159,4177,4201,4211,
158	4217,4219,4229,4231,4241,4243,4253,4259,
159	4261,4271,4273,4283,4289,4297,4327,4337,
160	4339,4349,4357,4363,4373,4391,4397,4409,
161	4421,4423,4441,4447,4451,4457,4463,4481,
162	4483,4493,4507,4513,4517,4519,4523,4547,
163	4549,4561,4567,4583,4591,4597,4603,4621,
164	4637,4639,4643,4649,4651,4657,4663,4673,
165	4679,4691,4703,4721,4723,4729,4733,4751,
166	4759,4783,4787,4789,4793,4799,4801,4813,
167	4817,4831,4861,4871,4877,4889,4903,4909,
168	4919,4931,4933,4937,4943,4951,4957,4967,
169	4969,4973,4987,4993,4999,5003,5009,5011,
170	5021,5023,5039,5051,5059,5077,5081,5087,
171	5099,5101,5107,5113,5119,5147,5153,5167,
172	5171,5179,5189,5197,5209,5227,5231,5233,
173	5237,5261,5273,5279,5281,5297,5303,5309,
174	5323,5333,5347,5351,5381,5387,5393,5399,
175	5407,5413,5417,5419,5431,5437,5441,5443,
176	5449,5471,5477,5479,5483,5501,5503,5507,
177	5519,5521,5527,5531,5557,5563,5569,5573,
178	5581,5591,5623,5639,5641,5647,5651,5653,
179	5657,5659,5669,5683,5689,5693,5701,5711,
180	5717,5737,5741,5743,5749,5779,5783,5791,
181	5801,5807,5813,5821,5827,5839,5843,5849,
182	5851,5857,5861,5867,5869,5879,5881,5897,
183	5903,5923,5927,5939,5953,5981,5987,6007,
184	6011,6029,6037,6043,6047,6053,6067,6073,
185	6079,6089,6091,6101,6113,6121,6131,6133,
186	6143,6151,6163,6173,6197,6199,6203,6211,
187	6217,6221,6229,6247,6257,6263,6269,6271,
188	6277,6287,6299,6301,6311,6317,6323,6329,
189	6337,6343,6353,6359,6361,6367,6373,6379,
190	6389,6397,6421,6427,6449,6451,6469,6473,
191	6481,6491,6521,6529,6547,6551,6553,6563,
192	6569,6571,6577,6581,6599,6607,6619,6637,
193	6653,6659,6661,6673,6679,6689,6691,6701,
194	6703,6709,6719,6733,6737,6761,6763,6779,
195	6781,6791,6793,6803,6823,6827,6829,6833,
196	6841,6857,6863,6869,6871,6883,6899,6907,
197	6911,6917,6947,6949,6959,6961,6967,6971,
198	6977,6983,6991,6997,7001,7013,7019,7027,
199	7039,7043,7057,7069,7079,7103,7109,7121,
200	7127,7129,7151,7159,7177,7187,7193,7207,
201	7211,7213,7219,7229,7237,7243,7247,7253,
202	7283,7297,7307,7309,7321,7331,7333,7349,
203	7351,7369,7393,7411,7417,7433,7451,7457,
204	7459,7477,7481,7487,7489,7499,7507,7517,
205	7523,7529,7537,7541,7547,7549,7559,7561,
206	7573,7577,7583,7589,7591,7603,7607,7621,
207	7639,7643,7649,7669,7673,7681,7687,7691,
208	7699,7703,7717,7723,7727,7741,7753,7757,
209	7759,7789,7793,7817,7823,7829,7841,7853,
210	7867,7873,7877,7879,7883,7901,7907,7919,
211	7927,7933,7937,7949,7951,7963,7993,8009,
212	8011,8017,8039,8053,8059,8069,8081,8087,
213	8089,8093,8101,8111,8117,8123,8147,8161,
214	8167,8171,8179,8191,8209,8219,8221,8231,
215	8233,8237,8243,8263,8269,8273,8287,8291,
216	8293,8297,8311,8317,8329,8353,8363,8369,
217	8377,8387,8389,8419,8423,8429,8431,8443,
218	8447,8461,8467,8501,8513,8521,8527,8537,
219	8539,8543,8563,8573,8581,8597,8599,8609,
220	8623,8627,8629,8641,8647,8663,8669,8677,
221	8681,8689,8693,8699,8707,8713,8719,8731,
222	8737,8741,8747,8753,8761,8779,8783,8803,
223	8807,8819,8821,8831,8837,8839,8849,8861,
224	8863,8867,8887,8893,8923,8929,8933,8941,
225	8951,8963,8969,8971,8999,9001,9007,9011,
226	9013,9029,9041,9043,9049,9059,9067,9091,
227	9103,9109,9127,9133,9137,9151,9157,9161,
228	9173,9181,9187,9199,9203,9209,9221,9227,
229	9239,9241,9257,9277,9281,9283,9293,9311,
230	9319,9323,9337,9341,9343,9349,9371,9377,
231	9391,9397,9403,9413,9419,9421,9431,9433,
232	9437,9439,9461,9463,9467,9473,9479,9491,
233	9497,9511,9521,9533,9539,9547,9551,9587,
234	9601,9613,9619,9623,9629,9631,9643,9649,
235	9661,9677,9679,9689,9697,9719,9721,9733,
236	9739,9743,9749,9767,9769,9781,9787,9791,
237	9803,9811,9817,9829,9833,9839,9851,9857,
238	9859,9871,9883,9887,9901,9907,9923,9929,
239	9931,9941,9949,9967,9973,10007,10009,10037,
240	10039,10061,10067,10069,10079,10091,10093,10099,
241	10103,10111,10133,10139,10141,10151,10159,10163,
242	10169,10177,10181,10193,10211,10223,10243,10247,
243	10253,10259,10267,10271,10273,10289,10301,10303,
244	10313,10321,10331,10333,10337,10343,10357,10369,
245	10391,10399,10427,10429,10433,10453,10457,10459,
246	10463,10477,10487,10499,10501,10513,10529,10531,
247	10559,10567,10589,10597,10601,10607,10613,10627,
248	10631,10639,10651,10657,10663,10667,10687,10691,
249	10709,10711,10723,10729,10733,10739,10753,10771,
250	10781,10789,10799,10831,10837,10847,10853,10859,
251	10861,10867,10883,10889,10891,10903,10909,10937,
252	10939,10949,10957,10973,10979,10987,10993,11003,
253	11027,11047,11057,11059,11069,11071,11083,11087,
254	11093,11113,11117,11119,11131,11149,11159,11161,
255	11171,11173,11177,11197,11213,11239,11243,11251,
256	11257,11261,11273,11279,11287,11299,11311,11317,
257	11321,11329,11351,11353,11369,11383,11393,11399,
258	11411,11423,11437,11443,11447,11467,11471,11483,
259	11489,11491,11497,11503,11519,11527,11549,11551,
260	11579,11587,11593,11597,11617,11621,11633,11657,
261	11677,11681,11689,11699,11701,11717,11719,11731,
262	11743,11777,11779,11783,11789,11801,11807,11813,
263	11821,11827,11831,11833,11839,11863,11867,11887,
264	11897,11903,11909,11923,11927,11933,11939,11941,
265	11953,11959,11969,11971,11981,11987,12007,12011,
266	12037,12041,12043,12049,12071,12073,12097,12101,
267	12107,12109,12113,12119,12143,12149,12157,12161,
268	12163,12197,12203,12211,12227,12239,12241,12251,
269	12253,12263,12269,12277,12281,12289,12301,12323,
270	12329,12343,12347,12373,12377,12379,12391,12401,
271	12409,12413,12421,12433,12437,12451,12457,12473,
272	12479,12487,12491,12497,12503,12511,12517,12527,
273	12539,12541,12547,12553,12569,12577,12583,12589,
274	12601,12611,12613,12619,12637,12641,12647,12653,
275	12659,12671,12689,12697,12703,12713,12721,12739,
276	12743,12757,12763,12781,12791,12799,12809,12821,
277	12823,12829,12841,12853,12889,12893,12899,12907,
278	12911,12917,12919,12923,12941,12953,12959,12967,
279	12973,12979,12983,13001,13003,13007,13009,13033,
280	13037,13043,13049,13063,13093,13099,13103,13109,
281	13121,13127,13147,13151,13159,13163,13171,13177,
282	13183,13187,13217,13219,13229,13241,13249,13259,
283	13267,13291,13297,13309,13313,13327,13331,13337,
284	13339,13367,13381,13397,13399,13411,13417,13421,
285	13441,13451,13457,13463,13469,13477,13487,13499,
286	13513,13523,13537,13553,13567,13577,13591,13597,
287	13613,13619,13627,13633,13649,13669,13679,13681,
288	13687,13691,13693,13697,13709,13711,13721,13723,
289	13729,13751,13757,13759,13763,13781,13789,13799,
290	13807,13829,13831,13841,13859,13873,13877,13879,
291	13883,13901,13903,13907,13913,13921,13931,13933,
292	13963,13967,13997,13999,14009,14011,14029,14033,
293	14051,14057,14071,14081,14083,14087,14107,14143,
294	14149,14153,14159,14173,14177,14197,14207,14221,
295	14243,14249,14251,14281,14293,14303,14321,14323,
296	14327,14341,14347,14369,14387,14389,14401,14407,
297	14411,14419,14423,14431,14437,14447,14449,14461,
298	14479,14489,14503,14519,14533,14537,14543,14549,
299	14551,14557,14561,14563,14591,14593,14621,14627,
300	14629,14633,14639,14653,14657,14669,14683,14699,
301	14713,14717,14723,14731,14737,14741,14747,14753,
302	14759,14767,14771,14779,14783,14797,14813,14821,
303	14827,14831,14843,14851,14867,14869,14879,14887,
304	14891,14897,14923,14929,14939,14947,14951,14957,
305	14969,14983,15013,15017,15031,15053,15061,15073,
306	15077,15083,15091,15101,15107,15121,15131,15137,
307	15139,15149,15161,15173,15187,15193,15199,15217,
308	15227,15233,15241,15259,15263,15269,15271,15277,
309	15287,15289,15299,15307,15313,15319,15329,15331,
310	15349,15359,15361,15373,15377,15383,15391,15401,
311	15413,15427,15439,15443,15451,15461,15467,15473,
312	15493,15497,15511,15527,15541,15551,15559,15569,
313	15581,15583,15601,15607,15619,15629,15641,15643,
314	15647,15649,15661,15667,15671,15679,15683,15727,
315	15731,15733,15737,15739,15749,15761,15767,15773,
316	15787,15791,15797,15803,15809,15817,15823,15859,
317	15877,15881,15887,15889,15901,15907,15913,15919,
318	15923,15937,15959,15971,15973,15991,16001,16007,
319	16033,16057,16061,16063,16067,16069,16073,16087,
320	16091,16097,16103,16111,16127,16139,16141,16183,
321	16187,16189,16193,16217,16223,16229,16231,16249,
322	16253,16267,16273,16301,16319,16333,16339,16349,
323	16361,16363,16369,16381,16411,16417,16421,16427,
324	16433,16447,16451,16453,16477,16481,16487,16493,
325	16519,16529,16547,16553,16561,16567,16573,16603,
326	16607,16619,16631,16633,16649,16651,16657,16661,
327	16673,16691,16693,16699,16703,16729,16741,16747,
328	16759,16763,16787,16811,16823,16829,16831,16843,
329	16871,16879,16883,16889,16901,16903,16921,16927,
330	16931,16937,16943,16963,16979,16981,16987,16993,
331	17011,17021,17027,17029,17033,17041,17047,17053,
332	17077,17093,17099,17107,17117,17123,17137,17159,
333	17167,17183,17189,17191,17203,17207,17209,17231,
334	17239,17257,17291,17293,17299,17317,17321,17327,
335	17333,17341,17351,17359,17377,17383,17387,17389,
336	17393,17401,17417,17419,17431,17443,17449,17467,
337	17471,17477,17483,17489,17491,17497,17509,17519,
338	17539,17551,17569,17573,17579,17581,17597,17599,
339	17609,17623,17627,17657,17659,17669,17681,17683,
340	17707,17713,17729,17737,17747,17749,17761,17783,
341	17789,17791,17807,17827,17837,17839,17851,17863,
342#endif
343	};
344