1656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#!/usr/local/bin/perl 2656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# bn_prime.pl 3656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 4656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project$num=2048; 5656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project$num=$ARGV[0] if ($#ARGV >= 0); 6656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 7656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectpush(@primes,2); 8656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project$p=1; 9656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectloop: while ($#primes < $num-1) 10656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project { 11656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project $p+=2; 12656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project $s=int(sqrt($p)); 13656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 14656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project for ($i=0; defined($primes[$i]) && $primes[$i]<=$s; $i++) 15656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project { 16656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project next loop if (($p%$primes[$i]) == 0); 17656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project } 18656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project push(@primes,$p); 19656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project } 20656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 21656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# print <<"EOF"; 22656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# /* Auto generated by bn_prime.pl */ 23656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# /* Copyright (C) 1995-1997 Eric Young (eay\@mincom.oz.au). 24656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# * All rights reserved. 25656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# * Copyright remains Eric Young's, and as such any Copyright notices in 26656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# * the code are not to be removed. 27656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# * See the COPYRIGHT file in the SSLeay distribution for more details. 28656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# */ 29656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# 30656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# EOF 31656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 32656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectprint <<\EOF; 33656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Auto generated by bn_prime.pl */ 34656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 35656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * All rights reserved. 36656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 37656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * This package is an SSL implementation written 38656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * by Eric Young (eay@cryptsoft.com). 39656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * The implementation was written so as to conform with Netscapes SSL. 40656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 41656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * This library is free for commercial and non-commercial use as long as 42656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * the following conditions are aheared to. The following conditions 43656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * apply to all code found in this distribution, be it the RC4, RSA, 44656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * lhash, DES, etc., code; not just the SSL code. The SSL documentation 45656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * included with this distribution is covered by the same copyright terms 46656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * except that the holder is Tim Hudson (tjh@cryptsoft.com). 47656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 48656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Copyright remains Eric Young's, and as such any Copyright notices in 49656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * the code are not to be removed. 50656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * If this package is used in a product, Eric Young should be given attribution 51656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * as the author of the parts of the library used. 52656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * This can be in the form of a textual message at program startup or 53656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * in documentation (online or textual) provided with the package. 54656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 55656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Redistribution and use in source and binary forms, with or without 56656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * modification, are permitted provided that the following conditions 57656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * are met: 58656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 1. Redistributions of source code must retain the copyright 59656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * notice, this list of conditions and the following disclaimer. 60656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright 61656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * notice, this list of conditions and the following disclaimer in the 62656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * documentation and/or other materials provided with the distribution. 63656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 3. All advertising materials mentioning features or use of this software 64656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * must display the following acknowledgement: 65656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * "This product includes cryptographic software written by 66656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Eric Young (eay@cryptsoft.com)" 67656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * The word 'cryptographic' can be left out if the rouines from the library 68656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * being used are not cryptographic related :-). 69656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 4. If you include any Windows specific code (or a derivative thereof) from 70656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * the apps directory (application code) you must include an acknowledgement: 71656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 72656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 73656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 74656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 75656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 76656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 77656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 78656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 79656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 80656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 81656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 82656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 83656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * SUCH DAMAGE. 84656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 85656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * The licence and distribution terms for any publically available version or 86656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * derivative of this code cannot be changed. i.e. this code cannot simply be 87656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * copied and put under another distribution licence 88656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * [including the GNU Public Licence.] 89656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */ 90656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 91656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectEOF 92656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 93656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectfor ($i=0; $i <= $#primes; $i++) 94656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project { 95656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project if ($primes[$i] > 256) 96656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project { 97656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project $eight=$i; 98656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project last; 99656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project } 100656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project } 101656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 102656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectprintf "#ifndef EIGHT_BIT\n"; 103656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectprintf "#define NUMPRIMES %d\n",$num; 104656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectprintf "typedef unsigned short prime_t;\n"; 105656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectprintf "#else\n"; 106656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectprintf "#define NUMPRIMES %d\n",$eight; 107656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectprintf "typedef unsigned char prime_t;\n"; 108656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectprintf "#endif\n"; 109656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectprint "static const prime_t primes[NUMPRIMES]=\n\t{\n\t"; 110656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project$init=0; 111656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectfor ($i=0; $i <= $#primes; $i++) 112656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project { 113656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project printf "\n#ifndef EIGHT_BIT\n\t" if ($primes[$i] > 256) && !($init++); 114656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project printf("\n\t") if (($i%8) == 0) && ($i != 0); 115656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project printf("%4d,",$primes[$i]); 116656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project } 117656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectprint "\n#endif\n\t};\n"; 118656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 119656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 120