Move all autogenerated header file parts to crypto/opensslconf.h.
authorUlf Möller <ulf@openssl.org>
Wed, 21 Apr 1999 17:31:05 +0000 (17:31 +0000)
committerUlf Möller <ulf@openssl.org>
Wed, 21 Apr 1999 17:31:05 +0000 (17:31 +0000)
23 files changed:
CHANGES
Configure
STATUS
crypto/bf/bf_locl.h [new file with mode: 0644]
crypto/bf/bf_locl.org [deleted file]
crypto/bn/bn.h [new file with mode: 0644]
crypto/bn/bn.org [deleted file]
crypto/des/des.h [new file with mode: 0644]
crypto/des/des.org [deleted file]
crypto/des/des_locl.h [new file with mode: 0644]
crypto/des/des_locl.org [deleted file]
crypto/idea/idea.h [new file with mode: 0644]
crypto/idea/idea.org [deleted file]
crypto/md2/md2.h [new file with mode: 0644]
crypto/md2/md2.org [deleted file]
crypto/objects/obj_dat.h
crypto/pem/pem.h
crypto/rc2/rc2.h [new file with mode: 0644]
crypto/rc2/rc2.org [deleted file]
crypto/rc4/rc4.h [new file with mode: 0644]
crypto/rc4/rc4.org [deleted file]
crypto/rc4/rc4_locl.h [new file with mode: 0644]
crypto/rc4/rc4_locl.org [deleted file]

diff --git a/CHANGES b/CHANGES
index 602165cd49beda5136832e2982ea51fd7bc1195e..ee8a65a36823e862b62172c32fd25170d6e480b2 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -5,6 +5,9 @@
 
  Changes between 0.9.2b and 0.9.3
 
+  *) Move the autogenerated header file parts to crypto/opensslconf.h.
+     [Ulf Möller]
+
   *) Fix new 56-bit DES export ciphersuites: they were using 7 bytes instead of
      8 of keying material. Merlin has also confirmed interop with this fix
      between OpenSSL and Baltimore C/SSL 2.0 and J/SSL 2.0.
index 04ad6f7bfc8d28f08005de0494f46d359171f61f..b4e8925bb0c68b937cd9a07d4a79cc725719fbcf 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -91,17 +91,16 @@ my %table=(
 "debug-ben",   "gcc:-DBN_DEBUG -DREF_CHECK -DCRYPTO_MDEBUG -O2 -Wall -Wshadow -Werror -pipe:::::",
 "debug-ben-strict",    "gcc:-DBN_DEBUG -DREF_CHECK -DCRYPTO_MDEBUG -DCONST_STRICT -O2 -Wall -Wshadow -Werror -Wpointer-arith -Wcast-qual -Wwrite-strings -pipe:::::",
 "debug-rse","cc:-DTERMIOS -DL_ENDIAN -pipe -O -g -ggdb3 -Wall::BN_LLONG $x86_gcc_des $x86_gcc_opts:$x86_elf_asm",
-"debug-solaris-sparc-gcc","gcc:-O3 -g -mv8 -Wall -DB_ENDIAN:-lsocket -lnsl:BN_LLONG RC4_CHAR DES_UNROLL BF_PTR:::",
 "dist",                "cc:-O:::::",
 
 # Basic configs that should work on any box
 "gcc",         "gcc:-O3::BN_LLONG:::",
 "cc",          "cc:-O:::::",
 
-
 # Solaris setups
 "solaris-x86-gcc","gcc:-O3 -fomit-frame-pointer -m486 -Wall -DL_ENDIAN:-lsocket -lnsl:BN_LLONG $x86_gcc_des $x86_gcc_opts:$x86_sol_asm",
 "solaris-sparc-gcc","gcc:-O3 -fomit-frame-pointer -mv8 -Wall -DB_ENDIAN:-lsocket -lnsl:BN_LLONG RC4_CHAR DES_UNROLL BF_PTR:asm/sparcv8.o::",
+"debug-solaris-sparc-gcc","gcc:-O3 -g -mv8 -Wall -DB_ENDIAN:-lsocket -lnsl:BN_LLONG RC4_CHAR DES_UNROLL BF_PTR:::",
 
 # DO NOT use /xO[34] on sparc with SC3.0. 
 # It is broken, and will not pass the tests
@@ -223,11 +222,11 @@ my %table=(
 "VC-WIN32","cl:::BN_LLONG RC4_INDEX ${x86_gcc_opts}:::",
 "VC-WIN16","cl:::MD2_CHAR DES_UNROLL DES_PTR RC4_INDEX THIRTY_TWO_BIT:::",
 "VC-W31-16","cl:::BN_LLONG MD2_CHAR DES_UNROLL DES_PTR RC4_INDEX SIXTEEN_BIT:::",
-"VC-W31-32","cl:::MD2_CHAR DES_UNROLL DES_PTR RC4_INDEX THIRTY_TWO_BIT:::",
+"VC-W31-32","cl:::BN_LLONG MD2_CHAR DES_UNROLL DES_PTR RC4_INDEX THIRTY_TWO_BIT:::",
 "VC-MSDOS","cl:::BN_LLONG MD2_CHAR DES_UNROLL DES_PTR RC4_INDEX SIXTEEN_BIT:::",
 
 # Borland C++ 4.5
-"BC-32","bcc32:::DES_PTR RC4_INDEX:::",
+"BC-32","bcc32:::BN_LLONG DES_PTR RC4_INDEX:::",
 "BC-16","bcc:::BN_LLONG DES_PTR RC4_INDEX SIXTEEN_BIT:::",
 
 # CygWin32
@@ -246,25 +245,10 @@ my %table=(
 
 );
 
-# Miscellaneous hacks: this is designed to allow environments where the "one
-# makefile" option does not auto build all files.
-## # The first six fields are the hard coded versions of the stuff generated by
-## # ctx_size for pem.h: that is EVP_ENCODE_CTX_SIZE, EVP_MD_SIZE EVP_MD_CTX_SIZE,
-## # EVP_CIPHER_SIZE, EVP_CIPHER_CTX_SIZE and EVP_MAX_MD_SIZE respectively.
-# If the seventh field is 1 then auto generate
-# crypto/date.h
-# Need to add Win16 and others here.
-
-my %misc_table = (
-"VC-WIN32",    "96:60:152:40:4212:20:1",
-"VC-NT",       "96:60:152:40:4212:20:1"
-);
-
 my @WinTargets=qw(VC-NT VC-WIN32 VC-WIN16 VC-W31-16 VC-W31-32 VC-MSDOS BC-32
        BC-16 CygWin32);
 
 my $no_asm=0;
-my $postfix="org";
 my $Makefile="Makefile.ssl";
 my $des_locl="crypto/des/des_locl.h";
 my $des        ="crypto/des/des.h";
@@ -481,10 +465,8 @@ foreach (sort split(/\s+/,$bn_ops))
        ($b64l,$b64,$b32,$b16,$b8)=(0,0,0,0,1) if /EIGHT_BIT/;
        }
 
-((my $in=$bn) =~ s/\.([^.]+)/.$postfix/);
-my $n=&file_new($bn);
-open(IN,"<".$in) || die "unable to read $bn:$!\n";
-open(OUT,">$n") || die "unable to read $n:$!\n";
+open(IN,'<crypto/opensslconf.h.in') || die "unable to read crypto/opensslconf.h.in:$!\n";
+open(OUT,'>crypto/opensslconf.h') || die "unable to create crypto/opensslconf.h:$!\n";
 while (<IN>)
        {
        if      (/^#((define)|(undef))\s+SIXTY_FOUR_BIT_LONG/)
@@ -499,38 +481,10 @@ while (<IN>)
                { printf OUT "#%s EIGHT_BIT\n",($b8)?"define":"undef"; }
        elsif   (/^#((define)|(undef))\s+BN_LLONG\s*$/)
                { printf OUT "#%s BN_LLONG\n",($bn_ll)?"define":"undef"; }
-       else
-               { print OUT $_; }
-       }
-close(IN);
-close(OUT);
-&Rename($bn,&file_old($bn));
-&Rename($n,$bn);
-
-(($in=$des) =~ s/\.([^.]+)/.$postfix/);
-$n=&file_new($des);
-open(IN,"<".$in) || die "unable to read $des:$!\n";
-open(OUT,">$n") || die "unable to read $n:$!\n";
-while (<IN>)
-       {
-       if      (/^\#define\s+DES_LONG\s+.*/)
+       elsif   (/^\#define\s+DES_LONG\s+.*/)
                { printf OUT "#define DES_LONG unsigned %s\n",
                        ($des_int)?'int':'long'; }
-       else
-               { print OUT $_; }
-       }
-close(IN);
-close(OUT);
-&Rename($des,&file_old($des));
-&Rename($n,$des);
-
-(($in=$des_locl) =~ s/\.([^.]+)/.$postfix/);
-$n=&file_new($des_locl);
-open(IN,"<".$in) || die "unable to read $des_locl:$!\n";
-open(OUT,">$n") || die "unable to read $n:$!\n";
-while (<IN>)
-       {
-       if      (/^\#(define|undef)\s+DES_PTR/)
+       elsif   (/^\#(define|undef)\s+DES_PTR/)
                { printf OUT "#%s DES_PTR\n",($des_ptr)?'define':'undef'; }
        elsif   (/^\#(define|undef)\s+DES_RISC1/)
                { printf OUT "#%s DES_RISC1\n",($des_risc1)?'define':'undef'; }
@@ -538,158 +492,28 @@ while (<IN>)
                { printf OUT "#%s DES_RISC2\n",($des_risc2)?'define':'undef'; }
        elsif   (/^\#(define|undef)\s+DES_UNROLL/)
                { printf OUT "#%s DES_UNROLL\n",($des_unroll)?'define':'undef'; }
-       else
-               { print OUT $_; }
-       }
-close(IN);
-close(OUT);
-&Rename($des_locl,&file_old($des_locl));
-&Rename($n,$des_locl);
-
-(($in=$rc4) =~ s/\.([^.]+)/.$postfix/);
-$n=&file_new($rc4);
-open(IN,"<".$in) || die "unable to read $rc4:$!\n";
-open(OUT,">$n") || die "unable to read $n:$!\n";
-while (<IN>)
-       {
-       if      (/^#define\s+RC4_INT\s/)
+       elsif   (/^#define\s+RC4_INT\s/)
                { printf OUT "#define RC4_INT unsigned %s\n",$type[$rc4_int]; }
-       else
-               { print OUT $_; }
-       }
-close(IN);
-close(OUT);
-&Rename($rc4,&file_old($rc4));
-&Rename($n,$rc4);
-
-(($in=$rc4_locl) =~ s/\.([^.]+)/.$postfix/);
-$n=&file_new($rc4_locl);
-open(IN,"<".$in) || die "unable to read $rc4_locl:$!\n";
-open(OUT,">$n") || die "unable to read $n:$!\n";
-while (<IN>)
-       {
-       if      (/^#((define)|(undef))\s+RC4_INDEX/)
+       elsif   (/^#((define)|(undef))\s+RC4_INDEX/)
                { printf OUT "#%s RC4_INDEX\n",($rc4_idx)?"define":"undef"; }
-       else
-               { print OUT $_; }
-       }
-close(IN);
-close(OUT);
-&Rename($rc4_locl,&file_old($rc4_locl));
-&Rename($n,$rc4_locl);
-
-(($in=$md2) =~ s/\.([^.]+)/.$postfix/);
-$n=&file_new($md2);
-open(IN,"<".$in) || die "unable to read $bn:$!\n";
-open(OUT,">$n") || die "unable to read $n:$!\n";
-while (<IN>)
-       {
-       if      (/^#define\s+MD2_INT\s/)
+       elsif   (/^#define\s+MD2_INT\s/)
                { printf OUT "#define MD2_INT unsigned %s\n",$type[$md2_int]; }
-       else
-               { print OUT $_; }
-       }
-close(IN);
-close(OUT);
-&Rename($md2,&file_old($md2));
-&Rename($n,$md2);
-
-(($in=$idea) =~ s/\.([^.]+)/.$postfix/);
-$n=&file_new($idea);
-open(IN,"<".$in) || die "unable to read $idea:$!\n";
-open(OUT,">$n") || die "unable to read $n:$!\n";
-while (<IN>)
-       {
-       if      (/^#define\s+IDEA_INT\s/)
+       elsif   (/^#define\s+IDEA_INT\s/)
                {printf OUT "#define IDEA_INT unsigned %s\n",$type[$idea_int];}
-       else
-               { print OUT $_; }
-       }
-close(IN);
-close(OUT);
-&Rename($idea,&file_old($idea));
-&Rename($n,$idea);
-
-(($in=$rc2) =~ s/\.([^.]+)/.$postfix/);
-$n=&file_new($rc2);
-open(IN,"<".$in) || die "unable to read $rc2:$!\n";
-open(OUT,">$n") || die "unable to read $n:$!\n";
-while (<IN>)
-       {
-       if      (/^#define\s+RC2_INT\s/)
+       elsif   (/^#define\s+RC2_INT\s/)
                {printf OUT "#define RC2_INT unsigned %s\n",$type[$rc2_int];}
-       else
-               { print OUT $_; }
-       }
-close(IN);
-close(OUT);
-&Rename($rc2,&file_old($rc2));
-&Rename($n,$rc2);
-
-(($in=$bf) =~ s/\.([^.]+)/.$postfix/);
-$n=&file_new($bf);
-open(IN,"<".$in) || die "unable to read $bf:$!\n";
-open(OUT,">$n") || die "unable to read $n:$!\n";
-while (<IN>)
-       {
-       if (/^#(define|undef)\s+BF_PTR/)
+       elsif (/^#(define|undef)\s+BF_PTR/)
                {
                printf OUT "#undef BF_PTR\n" if $bf_ptr == 0;
                printf OUT "#define BF_PTR\n" if $bf_ptr == 1;
                printf OUT "#define BF_PTR2\n" if $bf_ptr == 2;
-               }
+               }
        else
                { print OUT $_; }
        }
-close(IN);
-close(OUT);
-&Rename($bf,&file_old($bf));
-&Rename($n,$bf);
-
-# Now the miscellaneous fixups
-
-if(defined $misc_table{$target}) {
-       my ($enc_ctx, $md_size, $md_ctx_size, $cipher_size, $cipher_ctx_size,
-               $max_md_size, $date_fix) = 
-               split(/\s*:\s*/,$misc_table{$target} . ":", -1);
-
-## #print "EVP_ENCODE_CTX_SIZE $enc_ctx\n";
-## #print "EVP_MD_SIZE $md_size\n";
-## #print "EVP_MD_CTX_SIZE $md_ctx_size\n";
-## #print "EVP_CIPHER_SIZE $cipher_size\n";
-## #print "EVP_CIPHER_CTX_SIZE $cipher_ctx_size\n";
-## #print "EVP_MAX_MD_SIZE $max_md_size\n";
-#printf "Date fix: %s\n", $date_fix ? "Yes" : "No";
 
 # Fix the date
 
-if($date_fix) {
-       open (OUT,">crypto/date.h") || die "Can't open date.h";
-       printf OUT "#define DATE \"%s\"\n", scalar gmtime();
-       close(OUT);
-}
-
-## open (IN, "crypto/pem/pem.org") || die "Can't open crypto/pem/pem.org";
-## open (OUT, ">crypto/pem/pem.h") || die "Can't create crypto/pem/pem.h";
-## 
-## # Now fix up pem.h
-## while(<IN>) {
-##     chop;
-##     s/^(#define EVP_ENCODE_CTX_SIZE).*$/$1 $enc_ctx/;
-##     s/^(#define EVP_MD_SIZE).*$/$1 $md_size/;
-##     s/^(#define EVP_MD_CTX_SIZE).*$/$1 $md_ctx_size/;
-##     s/^(#define EVP_CIPHER_SIZE).*$/$1 $cipher_size/;
-##     s/^(#define EVP_CIPHER_CTX_SIZE).*$/$1 $cipher_ctx_size/;
-##     s/^(#define EVP_MAX_MD_SIZE).*$/$1 $max_md_size/;
-##     print OUT "$_\n";
-## }
-## 
-## close (IN);
-## close (OUT);
-
-
-}
-
 print "SIXTY_FOUR_BIT_LONG mode\n" if $b64l;
 print "SIXTY_FOUR_BIT mode\n" if $b64;
 print "THIRTY_TWO_BIT mode\n" if $b32;
@@ -709,6 +533,12 @@ print "RC2 uses u$type[$rc2_int]\n" if $rc2_int != $def_int;
 print "BF_PTR used\n" if $bf_ptr == 1; 
 print "BF_PTR2 used\n" if $bf_ptr == 2; 
 
+if($IsWindows) {
+       open (OUT,">crypto/date.h") || die "Can't open date.h";
+       printf OUT "#define DATE \"%s\"\n", scalar gmtime();
+       close(OUT);
+}
+
 system 'make -f Makefile.ssl links' if !$IsWindows;
 
 exit(0);
@@ -727,19 +557,6 @@ sub bad_target
        print STDERR "\n";
        }
 
-sub Rename
-       {
-       my($from,$to)=@_;
-       unlink($to);
-       if(!rename($from,$to))
-           {
-            -e $from && die "unable to rename $from to $to:$!\n";
-           }
-       }
-
-sub file_new { my($a)=@_; $a =~ s/(\.[^.]+$|$)/.new/; $a; }
-sub file_old { my($a)=@_; $a =~ s/(\.[^.]+$|$)/.old/; $a; }
-
 sub which
        {
        my($name)=@_;
diff --git a/STATUS b/STATUS
index 6ce1f1519de045ff3abbb879ad377dd7bb9b82b8..b1a8a2ec1f6cc10539930b13f357d35b9c416a25 100644 (file)
--- a/STATUS
+++ b/STATUS
@@ -1,6 +1,6 @@
 
   OpenSSL STATUS                           Last modified at
-  ______________                           $Date: 1999/04/16 23:57:00 $
+  ______________                           $Date: 1999/04/21 17:30:41 $
 
   DEVELOPMENT STATE
 
 
     o Compilation warnings: ctype-related int vs. char
     o Compilation error: "unsigned long*" and "int*" under AIX
-    o Undefined BN symbols in assembler stuff on Solaris
-      (see posting "openssl-SNAP-19990308-2130 on Solaris-2.6 SC4" in openssl-dev)
-    o BN assembler code in r3000.s, mips*.s and pa-risc*.s is broken
     o BSD/OS: assembler functions must not have leading underscores
-    o Niels Poppe reports that RSA fails with alpha.s
-       o exptest fails with irix64-*
+       o exptest and rsa_oaep_test fail with irix64-*
       (Don Badrak <dbadrak@geo.census.gov>: "Re: Problems to compile openssl
          on IRIX 6.2", openssl-users)
     o BN_add test fails on Caldera OpenLinux 1.3
   AVAILABLE PATCHES
 
     o OCSP (titchenert@certco.com) 
-    o unsigned vs. non-unsigned (levitte@stacken.kth.se)
     o Install prefix for packagers (dharris@drh.net)
     o getenv in ca.c and x509_def.c (jaltman@watsun.cc.columbia.edu)
     o linux dynamic libs (colin@field.medicine.adelaide.edu.au)
     o MingW support (niklas@canit.se)
-    o SPARC v8 assembler implementations of bn_asm.c
-      (appro@fy.chalmers.se)
 
   IN PROGRESS
 
                       itself. Then we can avoid a lot of those platform checks
                       which are currently in Configure.
 
-       2. The xxx.org -> xxx.h generation:
-          It's not obvious for which file xxx.org is the source.
-          Suggestion: Rename xxx.org to xxx.h.in (Autoconf style), this way
-                      one sees that xxx.h.in is the input for xxx.h
-
-          Status: Mark +1
-
     o  The installation under "make install" produces a very
        installation layout: $prefix/certs and $prefix/private dirs.  That's
        not nice. Ralf suggests to move the two certs and private dirs either
diff --git a/crypto/bf/bf_locl.h b/crypto/bf/bf_locl.h
new file mode 100644 (file)
index 0000000..418ff04
--- /dev/null
@@ -0,0 +1,206 @@
+/* crypto/bf/bf_locl.org */
+/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
+ * All rights reserved.
+ *
+ * This package is an SSL implementation written
+ * by Eric Young (eay@cryptsoft.com).
+ * The implementation was written so as to conform with Netscapes SSL.
+ * 
+ * This library is free for commercial and non-commercial use as long as
+ * the following conditions are aheared to.  The following conditions
+ * apply to all code found in this distribution, be it the RC4, RSA,
+ * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
+ * included with this distribution is covered by the same copyright terms
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
+ * 
+ * Copyright remains Eric Young's, and as such any Copyright notices in
+ * the code are not to be removed.
+ * If this package is used in a product, Eric Young should be given attribution
+ * as the author of the parts of the library used.
+ * This can be in the form of a textual message at program startup or
+ * in documentation (online or textual) provided with the package.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    "This product includes cryptographic software written by
+ *     Eric Young (eay@cryptsoft.com)"
+ *    The word 'cryptographic' can be left out if the rouines from the library
+ *    being used are not cryptographic related :-).
+ * 4. If you include any Windows specific code (or a derivative thereof) from 
+ *    the apps directory (application code) you must include an acknowledgement:
+ *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
+ * 
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * 
+ * The licence and distribution terms for any publically available version or
+ * derivative of this code cannot be changed.  i.e. this code cannot simply be
+ * copied and put under another distribution licence
+ * [including the GNU Public Licence.]
+ */
+
+#ifndef _HEADER_BF_LOCL_H
+#define _HEADER_BF_LOCL_H
+#include "opensslconf.h" /* BF_PTR, BF_PTR2 */
+
+#undef c2l
+#define c2l(c,l)       (l =((unsigned long)(*((c)++)))    , \
+                        l|=((unsigned long)(*((c)++)))<< 8L, \
+                        l|=((unsigned long)(*((c)++)))<<16L, \
+                        l|=((unsigned long)(*((c)++)))<<24L)
+
+/* NOTE - c is not incremented as per c2l */
+#undef c2ln
+#define c2ln(c,l1,l2,n)        { \
+                       c+=n; \
+                       l1=l2=0; \
+                       switch (n) { \
+                       case 8: l2 =((unsigned long)(*(--(c))))<<24L; \
+                       case 7: l2|=((unsigned long)(*(--(c))))<<16L; \
+                       case 6: l2|=((unsigned long)(*(--(c))))<< 8L; \
+                       case 5: l2|=((unsigned long)(*(--(c))));     \
+                       case 4: l1 =((unsigned long)(*(--(c))))<<24L; \
+                       case 3: l1|=((unsigned long)(*(--(c))))<<16L; \
+                       case 2: l1|=((unsigned long)(*(--(c))))<< 8L; \
+                       case 1: l1|=((unsigned long)(*(--(c))));     \
+                               } \
+                       }
+
+#undef l2c
+#define l2c(l,c)       (*((c)++)=(unsigned char)(((l)     )&0xff), \
+                        *((c)++)=(unsigned char)(((l)>> 8L)&0xff), \
+                        *((c)++)=(unsigned char)(((l)>>16L)&0xff), \
+                        *((c)++)=(unsigned char)(((l)>>24L)&0xff))
+
+/* NOTE - c is not incremented as per l2c */
+#undef l2cn
+#define l2cn(l1,l2,c,n)        { \
+                       c+=n; \
+                       switch (n) { \
+                       case 8: *(--(c))=(unsigned char)(((l2)>>24L)&0xff); \
+                       case 7: *(--(c))=(unsigned char)(((l2)>>16L)&0xff); \
+                       case 6: *(--(c))=(unsigned char)(((l2)>> 8L)&0xff); \
+                       case 5: *(--(c))=(unsigned char)(((l2)     )&0xff); \
+                       case 4: *(--(c))=(unsigned char)(((l1)>>24L)&0xff); \
+                       case 3: *(--(c))=(unsigned char)(((l1)>>16L)&0xff); \
+                       case 2: *(--(c))=(unsigned char)(((l1)>> 8L)&0xff); \
+                       case 1: *(--(c))=(unsigned char)(((l1)     )&0xff); \
+                               } \
+                       }
+
+/* NOTE - c is not incremented as per n2l */
+#define n2ln(c,l1,l2,n)        { \
+                       c+=n; \
+                       l1=l2=0; \
+                       switch (n) { \
+                       case 8: l2 =((unsigned long)(*(--(c))))    ; \
+                       case 7: l2|=((unsigned long)(*(--(c))))<< 8; \
+                       case 6: l2|=((unsigned long)(*(--(c))))<<16; \
+                       case 5: l2|=((unsigned long)(*(--(c))))<<24; \
+                       case 4: l1 =((unsigned long)(*(--(c))))    ; \
+                       case 3: l1|=((unsigned long)(*(--(c))))<< 8; \
+                       case 2: l1|=((unsigned long)(*(--(c))))<<16; \
+                       case 1: l1|=((unsigned long)(*(--(c))))<<24; \
+                               } \
+                       }
+
+/* NOTE - c is not incremented as per l2n */
+#define l2nn(l1,l2,c,n)        { \
+                       c+=n; \
+                       switch (n) { \
+                       case 8: *(--(c))=(unsigned char)(((l2)    )&0xff); \
+                       case 7: *(--(c))=(unsigned char)(((l2)>> 8)&0xff); \
+                       case 6: *(--(c))=(unsigned char)(((l2)>>16)&0xff); \
+                       case 5: *(--(c))=(unsigned char)(((l2)>>24)&0xff); \
+                       case 4: *(--(c))=(unsigned char)(((l1)    )&0xff); \
+                       case 3: *(--(c))=(unsigned char)(((l1)>> 8)&0xff); \
+                       case 2: *(--(c))=(unsigned char)(((l1)>>16)&0xff); \
+                       case 1: *(--(c))=(unsigned char)(((l1)>>24)&0xff); \
+                               } \
+                       }
+
+#undef n2l
+#define n2l(c,l)        (l =((unsigned long)(*((c)++)))<<24L, \
+                         l|=((unsigned long)(*((c)++)))<<16L, \
+                         l|=((unsigned long)(*((c)++)))<< 8L, \
+                         l|=((unsigned long)(*((c)++))))
+
+#undef l2n
+#define l2n(l,c)        (*((c)++)=(unsigned char)(((l)>>24L)&0xff), \
+                         *((c)++)=(unsigned char)(((l)>>16L)&0xff), \
+                         *((c)++)=(unsigned char)(((l)>> 8L)&0xff), \
+                         *((c)++)=(unsigned char)(((l)     )&0xff))
+
+/* This is actually a big endian algorithm, the most significate byte
+ * is used to lookup array 0 */
+
+#define BF_M   0x3fc
+#define BF_0   22L
+#define BF_1   14L
+#define BF_2    6L
+#define BF_3    2L /* left shift */
+
+#if defined(BF_PTR2)
+
+/* This is basically a special pentium verson */
+#define BF_ENC(LL,R,S,P) \
+       { \
+       BF_LONG t,u,v; \
+       u=R>>BF_0; \
+       v=R>>BF_1; \
+       u&=BF_M; \
+       v&=BF_M; \
+       t=  *(BF_LONG *)((unsigned char *)&(S[  0])+u); \
+       u=R>>BF_2; \
+       t+= *(BF_LONG *)((unsigned char *)&(S[256])+v); \
+       v=R<<BF_3; \
+       u&=BF_M; \
+       v&=BF_M; \
+       t^= *(BF_LONG *)((unsigned char *)&(S[512])+u); \
+       LL^=P; \
+       t+= *(BF_LONG *)((unsigned char *)&(S[768])+v); \
+       LL^=t; \
+       }
+
+#elif defined(BF_PTR)
+
+/* This is normally very good */
+
+#define BF_ENC(LL,R,S,P) \
+       LL^=P; \
+       LL^= (((*(BF_LONG *)((unsigned char *)&(S[  0])+((R>>BF_0)&BF_M))+ \
+               *(BF_LONG *)((unsigned char *)&(S[256])+((R>>BF_1)&BF_M)))^ \
+               *(BF_LONG *)((unsigned char *)&(S[512])+((R>>BF_2)&BF_M)))+ \
+               *(BF_LONG *)((unsigned char *)&(S[768])+((R<<BF_3)&BF_M)));
+#else
+
+/* This will always work, even on 64 bit machines and strangly enough,
+ * on the Alpha it is faster than the pointer versions (both 32 and 64
+ * versions of BF_LONG) */
+
+#define BF_ENC(LL,R,S,P) \
+       LL^=P; \
+       LL^=((( S[        (int)(R>>24L)      ] + \
+               S[0x0100+((int)(R>>16L)&0xff)])^ \
+               S[0x0200+((int)(R>> 8L)&0xff)])+ \
+               S[0x0300+((int)(R     )&0xff)])&0xffffffffL;
+#endif
+
+#endif
diff --git a/crypto/bf/bf_locl.org b/crypto/bf/bf_locl.org
deleted file mode 100644 (file)
index bd62084..0000000
+++ /dev/null
@@ -1,230 +0,0 @@
-/* crypto/bf/bf_locl.org */
-/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
- * All rights reserved.
- *
- * This package is an SSL implementation written
- * by Eric Young (eay@cryptsoft.com).
- * The implementation was written so as to conform with Netscapes SSL.
- * 
- * This library is free for commercial and non-commercial use as long as
- * the following conditions are aheared to.  The following conditions
- * apply to all code found in this distribution, be it the RC4, RSA,
- * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
- * included with this distribution is covered by the same copyright terms
- * except that the holder is Tim Hudson (tjh@cryptsoft.com).
- * 
- * Copyright remains Eric Young's, and as such any Copyright notices in
- * the code are not to be removed.
- * If this package is used in a product, Eric Young should be given attribution
- * as the author of the parts of the library used.
- * This can be in the form of a textual message at program startup or
- * in documentation (online or textual) provided with the package.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    "This product includes cryptographic software written by
- *     Eric Young (eay@cryptsoft.com)"
- *    The word 'cryptographic' can be left out if the rouines from the library
- *    being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from 
- *    the apps directory (application code) you must include an acknowledgement:
- *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- * 
- * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
- * The licence and distribution terms for any publically available version or
- * derivative of this code cannot be changed.  i.e. this code cannot simply be
- * copied and put under another distribution licence
- * [including the GNU Public Licence.]
- */
-
-/* WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
- *
- * Always modify bf_locl.org since bf_locl.h is automatically generated from
- * it during SSLeay configuration.
- *
- * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
- */
-
-/* Special defines which change the way the code is built depending on the
-   CPU and OS.  For SGI machines you can use _MIPS_SZLONG (32 or 64) to find
-   even newer MIPS CPU's, but at the moment one size fits all for
-   optimization options.  Older Sparc's work better with only UNROLL, but
-   there's no way to tell at compile time what it is you're running on */
-
-#if defined( sun )                    /* Newer Sparc's */
-#  define BF_PTR
-#elif defined( __ultrix )     /* Older MIPS */
-#  define BF_PTR
-#elif defined( __sgi )                /* Newer MIPS */
-#  define BF_PTR
-#endif /* Systems-specific speed defines */
-
-#undef c2l
-#define c2l(c,l)       (l =((unsigned long)(*((c)++)))    , \
-                        l|=((unsigned long)(*((c)++)))<< 8L, \
-                        l|=((unsigned long)(*((c)++)))<<16L, \
-                        l|=((unsigned long)(*((c)++)))<<24L)
-
-/* NOTE - c is not incremented as per c2l */
-#undef c2ln
-#define c2ln(c,l1,l2,n)        { \
-                       c+=n; \
-                       l1=l2=0; \
-                       switch (n) { \
-                       case 8: l2 =((unsigned long)(*(--(c))))<<24L; \
-                       case 7: l2|=((unsigned long)(*(--(c))))<<16L; \
-                       case 6: l2|=((unsigned long)(*(--(c))))<< 8L; \
-                       case 5: l2|=((unsigned long)(*(--(c))));     \
-                       case 4: l1 =((unsigned long)(*(--(c))))<<24L; \
-                       case 3: l1|=((unsigned long)(*(--(c))))<<16L; \
-                       case 2: l1|=((unsigned long)(*(--(c))))<< 8L; \
-                       case 1: l1|=((unsigned long)(*(--(c))));     \
-                               } \
-                       }
-
-#undef l2c
-#define l2c(l,c)       (*((c)++)=(unsigned char)(((l)     )&0xff), \
-                        *((c)++)=(unsigned char)(((l)>> 8L)&0xff), \
-                        *((c)++)=(unsigned char)(((l)>>16L)&0xff), \
-                        *((c)++)=(unsigned char)(((l)>>24L)&0xff))
-
-/* NOTE - c is not incremented as per l2c */
-#undef l2cn
-#define l2cn(l1,l2,c,n)        { \
-                       c+=n; \
-                       switch (n) { \
-                       case 8: *(--(c))=(unsigned char)(((l2)>>24L)&0xff); \
-                       case 7: *(--(c))=(unsigned char)(((l2)>>16L)&0xff); \
-                       case 6: *(--(c))=(unsigned char)(((l2)>> 8L)&0xff); \
-                       case 5: *(--(c))=(unsigned char)(((l2)     )&0xff); \
-                       case 4: *(--(c))=(unsigned char)(((l1)>>24L)&0xff); \
-                       case 3: *(--(c))=(unsigned char)(((l1)>>16L)&0xff); \
-                       case 2: *(--(c))=(unsigned char)(((l1)>> 8L)&0xff); \
-                       case 1: *(--(c))=(unsigned char)(((l1)     )&0xff); \
-                               } \
-                       }
-
-/* NOTE - c is not incremented as per n2l */
-#define n2ln(c,l1,l2,n)        { \
-                       c+=n; \
-                       l1=l2=0; \
-                       switch (n) { \
-                       case 8: l2 =((unsigned long)(*(--(c))))    ; \
-                       case 7: l2|=((unsigned long)(*(--(c))))<< 8; \
-                       case 6: l2|=((unsigned long)(*(--(c))))<<16; \
-                       case 5: l2|=((unsigned long)(*(--(c))))<<24; \
-                       case 4: l1 =((unsigned long)(*(--(c))))    ; \
-                       case 3: l1|=((unsigned long)(*(--(c))))<< 8; \
-                       case 2: l1|=((unsigned long)(*(--(c))))<<16; \
-                       case 1: l1|=((unsigned long)(*(--(c))))<<24; \
-                               } \
-                       }
-
-/* NOTE - c is not incremented as per l2n */
-#define l2nn(l1,l2,c,n)        { \
-                       c+=n; \
-                       switch (n) { \
-                       case 8: *(--(c))=(unsigned char)(((l2)    )&0xff); \
-                       case 7: *(--(c))=(unsigned char)(((l2)>> 8)&0xff); \
-                       case 6: *(--(c))=(unsigned char)(((l2)>>16)&0xff); \
-                       case 5: *(--(c))=(unsigned char)(((l2)>>24)&0xff); \
-                       case 4: *(--(c))=(unsigned char)(((l1)    )&0xff); \
-                       case 3: *(--(c))=(unsigned char)(((l1)>> 8)&0xff); \
-                       case 2: *(--(c))=(unsigned char)(((l1)>>16)&0xff); \
-                       case 1: *(--(c))=(unsigned char)(((l1)>>24)&0xff); \
-                               } \
-                       }
-
-#undef n2l
-#define n2l(c,l)        (l =((unsigned long)(*((c)++)))<<24L, \
-                         l|=((unsigned long)(*((c)++)))<<16L, \
-                         l|=((unsigned long)(*((c)++)))<< 8L, \
-                         l|=((unsigned long)(*((c)++))))
-
-#undef l2n
-#define l2n(l,c)        (*((c)++)=(unsigned char)(((l)>>24L)&0xff), \
-                         *((c)++)=(unsigned char)(((l)>>16L)&0xff), \
-                         *((c)++)=(unsigned char)(((l)>> 8L)&0xff), \
-                         *((c)++)=(unsigned char)(((l)     )&0xff))
-
-/* This is actually a big endian algorithm, the most significate byte
- * is used to lookup array 0 */
-
-/* use BF_PTR2 for intel boxes,
- * BF_PTR for sparc and MIPS/SGI
- * use nothing for Alpha and HP.
- */
-#if !defined(BF_PTR) && !defined(BF_PTR2)
-#undef BF_PTR
-#endif
-
-#define BF_M   0x3fc
-#define BF_0   22L
-#define BF_1   14L
-#define BF_2    6L
-#define BF_3    2L /* left shift */
-
-#if defined(BF_PTR2)
-
-/* This is basically a special pentium verson */
-#define BF_ENC(LL,R,S,P) \
-       { \
-       BF_LONG t,u,v; \
-       u=R>>BF_0; \
-       v=R>>BF_1; \
-       u&=BF_M; \
-       v&=BF_M; \
-       t=  *(BF_LONG *)((unsigned char *)&(S[  0])+u); \
-       u=R>>BF_2; \
-       t+= *(BF_LONG *)((unsigned char *)&(S[256])+v); \
-       v=R<<BF_3; \
-       u&=BF_M; \
-       v&=BF_M; \
-       t^= *(BF_LONG *)((unsigned char *)&(S[512])+u); \
-       LL^=P; \
-       t+= *(BF_LONG *)((unsigned char *)&(S[768])+v); \
-       LL^=t; \
-       }
-
-#elif defined(BF_PTR)
-
-/* This is normally very good */
-
-#define BF_ENC(LL,R,S,P) \
-       LL^=P; \
-       LL^= (((*(BF_LONG *)((unsigned char *)&(S[  0])+((R>>BF_0)&BF_M))+ \
-               *(BF_LONG *)((unsigned char *)&(S[256])+((R>>BF_1)&BF_M)))^ \
-               *(BF_LONG *)((unsigned char *)&(S[512])+((R>>BF_2)&BF_M)))+ \
-               *(BF_LONG *)((unsigned char *)&(S[768])+((R<<BF_3)&BF_M)));
-#else
-
-/* This will always work, even on 64 bit machines and strangly enough,
- * on the Alpha it is faster than the pointer versions (both 32 and 64
- * versions of BF_LONG) */
-
-#define BF_ENC(LL,R,S,P) \
-       LL^=P; \
-       LL^=((( S[        (int)(R>>24L)      ] + \
-               S[0x0100+((int)(R>>16L)&0xff)])^ \
-               S[0x0200+((int)(R>> 8L)&0xff)])+ \
-               S[0x0300+((int)(R     )&0xff)])&0xffffffffL;
-#endif
diff --git a/crypto/bn/bn.h b/crypto/bn/bn.h
new file mode 100644 (file)
index 0000000..136bf55
--- /dev/null
@@ -0,0 +1,583 @@
+/* crypto/bn/bn.org */
+/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
+ * All rights reserved.
+ *
+ * This package is an SSL implementation written
+ * by Eric Young (eay@cryptsoft.com).
+ * The implementation was written so as to conform with Netscapes SSL.
+ * 
+ * This library is free for commercial and non-commercial use as long as
+ * the following conditions are aheared to.  The following conditions
+ * apply to all code found in this distribution, be it the RC4, RSA,
+ * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
+ * included with this distribution is covered by the same copyright terms
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
+ * 
+ * Copyright remains Eric Young's, and as such any Copyright notices in
+ * the code are not to be removed.
+ * If this package is used in a product, Eric Young should be given attribution
+ * as the author of the parts of the library used.
+ * This can be in the form of a textual message at program startup or
+ * in documentation (online or textual) provided with the package.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    "This product includes cryptographic software written by
+ *     Eric Young (eay@cryptsoft.com)"
+ *    The word 'cryptographic' can be left out if the rouines from the library
+ *    being used are not cryptographic related :-).
+ * 4. If you include any Windows specific code (or a derivative thereof) from 
+ *    the apps directory (application code) you must include an acknowledgement:
+ *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
+ * 
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * 
+ * The licence and distribution terms for any publically available version or
+ * derivative of this code cannot be changed.  i.e. this code cannot simply be
+ * copied and put under another distribution licence
+ * [including the GNU Public Licence.]
+ */
+
+#ifndef HEADER_BN_H
+#define HEADER_BN_H
+
+#include "opensslconf.h"
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
+#define BN_MUL_COMBA
+#define BN_SQR_COMBA
+#define BN_RECURSION
+#define RECP_MUL_MOD
+#define MONT_MUL_MOD
+
+/* This next option uses the C libraries (2 word)/(1 word) function.
+ * If it is not defined, I use my C version (which is slower).
+ * The reason for this flag is that when the particular C compiler
+ * library routine is used, and the library is linked with a different
+ * compiler, the library is missing.  This mostly happens when the
+ * library is built with gcc and then linked using nornal cc.  This would
+ * be a common occurance because gcc normally produces code that is
+ * 2 times faster than system compilers for the big number stuff.
+ * For machines with only one compiler (or shared libraries), this should
+ * be on.  Again this in only really a problem on machines
+ * using "long long's", are 32bit, and are not using my assember code. */
+#if defined(MSDOS) || defined(WINDOWS) || defined(linux)
+#define BN_DIV2W
+#endif
+
+/* assuming long is 64bit - this is the DEC Alpha
+ * unsigned long long is only 64 bits :-(, don't define
+ * BN_LLONG for the DEC Alpha */
+#ifdef SIXTY_FOUR_BIT_LONG
+#define BN_ULLONG      unsigned long long
+#define BN_ULONG       unsigned long
+#define BN_LONG                long
+#define BN_BITS                128
+#define BN_BYTES       8
+#define BN_BITS2       64
+#define BN_BITS4       32
+#define BN_MASK                (0xffffffffffffffffffffffffffffffffLL)
+#define BN_MASK2       (0xffffffffffffffffL)
+#define BN_MASK2l      (0xffffffffL)
+#define BN_MASK2h      (0xffffffff00000000L)
+#define BN_MASK2h1     (0xffffffff80000000L)
+#define BN_TBIT                (0x8000000000000000L)
+#define BN_DEC_CONV    (10000000000000000000UL)
+#define BN_DEC_FMT1    "%lu"
+#define BN_DEC_FMT2    "%019lu"
+#define BN_DEC_NUM     19
+#endif
+
+/* This is where the long long data type is 64 bits, but long is 32.
+ * For machines where there are 64bit registers, this is the mode to use.
+ * IRIX, on R4000 and above should use this mode, along with the relevent
+ * assember code :-).  Do NOT define BN_ULLONG.
+ */
+#ifdef SIXTY_FOUR_BIT
+#define BN_LLONG
+/* #define BN_ULLONG   unsigned long long */
+#define BN_ULONG       unsigned long long
+#define BN_LONG                long long
+#define BN_BITS                128
+#define BN_BYTES       8
+#define BN_BITS2       64
+#define BN_BITS4       32
+#define BN_MASK2       (0xffffffffffffffffLL)
+#define BN_MASK2l      (0xffffffffL)
+#define BN_MASK2h      (0xffffffff00000000LL)
+#define BN_MASK2h1     (0xffffffff80000000LL)
+#define BN_TBIT                (0x8000000000000000LL)
+#define BN_DEC_CONV    (10000000000000000000LL)
+#define BN_DEC_FMT1    "%llu"
+#define BN_DEC_FMT2    "%019llu"
+#define BN_DEC_NUM     19
+#endif
+
+#ifdef THIRTY_TWO_BIT
+#ifdef WIN32
+#define BN_ULLONG      unsigned _int64
+#else
+#define BN_ULLONG      unsigned long long
+#endif
+#define BN_ULONG       unsigned long
+#define BN_LONG                long
+#define BN_BITS                64
+#define BN_BYTES       4
+#define BN_BITS2       32
+#define BN_BITS4       16
+#ifdef WIN32
+/* VC++ doesn't like the LL suffix */
+#define BN_MASK                (0xffffffffffffffffL)
+#else
+#define BN_MASK                (0xffffffffffffffffLL)
+#endif
+#define BN_MASK2       (0xffffffffL)
+#define BN_MASK2l      (0xffff)
+#define BN_MASK2h1     (0xffff8000L)
+#define BN_MASK2h      (0xffff0000L)
+#define BN_TBIT                (0x80000000L)
+#define BN_DEC_CONV    (1000000000L)
+#define BN_DEC_FMT1    "%lu"
+#define BN_DEC_FMT2    "%09lu"
+#define BN_DEC_NUM     9
+#endif
+
+#ifdef SIXTEEN_BIT
+#ifndef BN_DIV2W
+#define BN_DIV2W
+#endif
+#define BN_ULLONG      unsigned long
+#define BN_ULONG       unsigned short
+#define BN_LONG                short
+#define BN_BITS                32
+#define BN_BYTES       2
+#define BN_BITS2       16
+#define BN_BITS4       8
+#define BN_MASK                (0xffffffff)
+#define BN_MASK2       (0xffff)
+#define BN_MASK2l      (0xff)
+#define BN_MASK2h1     (0xff80)
+#define BN_MASK2h      (0xff00)
+#define BN_TBIT                (0x8000)
+#define BN_DEC_CONV    (100000)
+#define BN_DEC_FMT1    "%u"
+#define BN_DEC_FMT2    "%05u"
+#define BN_DEC_NUM     5
+#endif
+
+#ifdef EIGHT_BIT
+#ifndef BN_DIV2W
+#define BN_DIV2W
+#endif
+#define BN_ULLONG      unsigned short
+#define BN_ULONG       unsigned char
+#define BN_LONG                char
+#define BN_BITS                16
+#define BN_BYTES       1
+#define BN_BITS2       8
+#define BN_BITS4       4
+#define BN_MASK                (0xffff)
+#define BN_MASK2       (0xff)
+#define BN_MASK2l      (0xf)
+#define BN_MASK2h1     (0xf8)
+#define BN_MASK2h      (0xf0)
+#define BN_TBIT                (0x80)
+#define BN_DEC_CONV    (100)
+#define BN_DEC_FMT1    "%u"
+#define BN_DEC_FMT2    "%02u"
+#define BN_DEC_NUM     2
+#endif
+
+#define BN_DEFAULT_BITS        1280
+
+#ifdef BIGNUM
+#undef BIGNUM
+#endif
+
+#define BN_FLG_MALLOCED                0x01
+#define BN_FLG_STATIC_DATA     0x02
+#define BN_FLG_FREE            0x8000  /* used for debuging */
+#define BN_set_flags(b,n)      ((b)->flags|=(n))
+#define BN_get_flags(b,n)      ((b)->flags&(n))
+
+typedef struct bignum_st
+       {
+       BN_ULONG *d;    /* Pointer to an array of 'BN_BITS2' bit chunks. */
+       int top;        /* Index of last used d +1. */
+       /* The next are internal book keeping for bn_expand. */
+       int max;        /* Size of the d array. */
+       int neg;        /* one if the number is negative */
+       int flags;
+       } BIGNUM;
+
+/* Used for temp variables */
+#define BN_CTX_NUM     12
+typedef struct bignum_ctx
+       {
+       int tos;
+       BIGNUM bn[BN_CTX_NUM+1];
+       int flags;
+       } BN_CTX;
+
+typedef struct bn_blinding_st
+       {
+       int init;
+       BIGNUM *A;
+       BIGNUM *Ai;
+       BIGNUM *mod; /* just a reference */
+       } BN_BLINDING;
+
+/* Used for montgomery multiplication */
+typedef struct bn_mont_ctx_st
+        {
+       int use_word;   /* 0 for word form, 1 for long form */
+        int ri;         /* number of bits in R */
+        BIGNUM RR;     /* used to convert to montgomery form */
+        BIGNUM N;      /* The modulus */
+        BIGNUM Ni;     /* The inverse of N */
+       BN_ULONG n0;    /* word form of inverse, normally only one of
+                        * Ni or n0 is defined */
+       int flags;
+        } BN_MONT_CTX;
+
+/* Used for reciprocal division/mod functions
+ * It cannot be shared between threads
+ */
+typedef struct bn_recp_ctx_st
+       {
+       BIGNUM N;       /* the divisor */
+       BIGNUM Nr;      /* the reciprocal */
+       int num_bits;
+       int shift;
+       int flags;
+       } BN_RECP_CTX;
+
+#define BN_to_montgomery(r,a,mont,ctx) BN_mod_mul_montgomery(\
+       r,a,&((mont)->RR),(mont),ctx)
+
+#define BN_prime_checks                (5)
+
+#define BN_num_bytes(a)        ((BN_num_bits(a)+7)/8)
+#define BN_is_word(a,w)        (((a)->top == 1) && ((a)->d[0] == (BN_ULONG)(w)))
+#define BN_is_zero(a)  (((a)->top == 0) || BN_is_word(a,0))
+#define BN_is_one(a)   (BN_is_word((a),1))
+#define BN_is_odd(a)   (((a)->top > 0) && ((a)->d[0] & 1))
+#define BN_one(a)      (BN_set_word((a),1))
+#define BN_zero(a)     (BN_set_word((a),0))
+
+/*#define BN_ascii2bn(a)       BN_hex2bn(a) */
+/*#define BN_bn2ascii(a)       BN_bn2hex(a) */
+
+#define bn_expand(n,b) ((((((b+BN_BITS2-1))/BN_BITS2)) <= (n)->max)?\
+       (n):bn_expand2((n),(b)/BN_BITS2+1))
+#define bn_wexpand(n,b) (((b) <= (n)->max)?(n):bn_expand2((n),(b)))
+
+#define bn_fix_top(a) \
+        { \
+        BN_ULONG *ftl; \
+       if ((a)->top > 0) \
+               { \
+               for (ftl= &((a)->d[(a)->top-1]); (a)->top > 0; (a)->top--) \
+               if (*(ftl--)) break; \
+               } \
+       }
+
+#ifndef NOPROTO
+BIGNUM *BN_value_one(void);
+char * BN_options(void);
+BN_CTX *BN_CTX_new(void);
+void   BN_CTX_init(BN_CTX *c);
+void   BN_CTX_free(BN_CTX *c);
+int     BN_rand(BIGNUM *rnd, int bits, int top,int bottom);
+int    BN_num_bits(BIGNUM *a);
+int    BN_num_bits_word(BN_ULONG);
+BIGNUM *BN_new(void);
+void   BN_init(BIGNUM *);
+void   BN_clear_free(BIGNUM *a);
+BIGNUM *BN_copy(BIGNUM *a, BIGNUM *b);
+BIGNUM *BN_bin2bn(unsigned char *s,int len,BIGNUM *ret);
+int    BN_bn2bin(BIGNUM *a, unsigned char *to);
+BIGNUM *BN_mpi2bn(unsigned char *s,int len,BIGNUM *ret);
+int    BN_bn2mpi(BIGNUM *a, unsigned char *to);
+int    BN_sub(BIGNUM *r, BIGNUM *a, BIGNUM *b);
+int    BN_usub(BIGNUM *r, BIGNUM *a, BIGNUM *b);
+int    BN_uadd(BIGNUM *r, BIGNUM *a, BIGNUM *b);
+int    BN_add(BIGNUM *r, BIGNUM *a, BIGNUM *b);
+int    BN_mod(BIGNUM *rem, BIGNUM *m, BIGNUM *d, BN_CTX *ctx);
+int    BN_div(BIGNUM *dv, BIGNUM *rem, BIGNUM *m, BIGNUM *d, BN_CTX *ctx);
+int    BN_mul(BIGNUM *r, BIGNUM *a, BIGNUM *b,BN_CTX *ctx);
+int    BN_sqr(BIGNUM *r, BIGNUM *a,BN_CTX *ctx);
+BN_ULONG BN_mod_word(BIGNUM *a, BN_ULONG w);
+BN_ULONG BN_div_word(BIGNUM *a, BN_ULONG w);
+int    BN_mul_word(BIGNUM *a, BN_ULONG w);
+int    BN_add_word(BIGNUM *a, BN_ULONG w);
+int    BN_sub_word(BIGNUM *a, BN_ULONG w);
+int    BN_set_word(BIGNUM *a, BN_ULONG w);
+BN_ULONG BN_get_word(BIGNUM *a);
+int    BN_cmp(BIGNUM *a, BIGNUM *b);
+void   BN_free(BIGNUM *a);
+int    BN_is_bit_set(BIGNUM *a, int n);
+int    BN_lshift(BIGNUM *r, BIGNUM *a, int n);
+int    BN_lshift1(BIGNUM *r, BIGNUM *a);
+int    BN_exp(BIGNUM *r, BIGNUM *a, BIGNUM *p,BN_CTX *ctx);
+int    BN_mod_exp(BIGNUM *r, BIGNUM *a, BIGNUM *p, BIGNUM *m,BN_CTX *ctx);
+int    BN_mod_exp_mont(BIGNUM *r, BIGNUM *a, BIGNUM *p, BIGNUM *m,BN_CTX *ctx,
+               BN_MONT_CTX *m_ctx);
+int    BN_mod_exp2_mont(BIGNUM *r, BIGNUM *a1, BIGNUM *p1,BIGNUM *a2,
+               BIGNUM *p2,BIGNUM *m,BN_CTX *ctx,BN_MONT_CTX *m_ctx);
+int    BN_mod_exp_simple(BIGNUM *r, BIGNUM *a, BIGNUM *p,
+       BIGNUM *m,BN_CTX *ctx);
+int    BN_mask_bits(BIGNUM *a,int n);
+int    BN_mod_mul(BIGNUM *ret, BIGNUM *a, BIGNUM *b, BIGNUM *m,
+       BN_CTX *ctx);
+#ifndef WIN16
+int    BN_print_fp(FILE *fp, BIGNUM *a);
+#endif
+#ifdef HEADER_BIO_H
+int    BN_print(BIO *fp, BIGNUM *a);
+#else
+int    BN_print(char *fp, BIGNUM *a);
+#endif
+int    BN_reciprocal(BIGNUM *r, BIGNUM *m, int len, BN_CTX *ctx);
+int    BN_rshift(BIGNUM *r, BIGNUM *a, int n);
+int    BN_rshift1(BIGNUM *r, BIGNUM *a);
+void   BN_clear(BIGNUM *a);
+BIGNUM *bn_expand2(BIGNUM *b, int bits);
+BIGNUM *BN_dup(BIGNUM *a);
+int    BN_ucmp(BIGNUM *a, BIGNUM *b);
+int    BN_set_bit(BIGNUM *a, int n);
+int    BN_clear_bit(BIGNUM *a, int n);
+char * BN_bn2hex(BIGNUM *a);
+char * BN_bn2dec(BIGNUM *a);
+int    BN_hex2bn(BIGNUM **a,char *str);
+int    BN_dec2bn(BIGNUM **a,char *str);
+int    BN_gcd(BIGNUM *r,BIGNUM *in_a,BIGNUM *in_b,BN_CTX *ctx);
+BIGNUM *BN_mod_inverse(BIGNUM *ret,BIGNUM *a, BIGNUM *n,BN_CTX *ctx);
+BIGNUM *BN_generate_prime(BIGNUM *ret,int bits,int strong,BIGNUM *add,
+               BIGNUM *rem,void (*callback)(int,int,char *),char *cb_arg);
+int    BN_is_prime(BIGNUM *p,int nchecks,void (*callback)(int,int,char *),
+               BN_CTX *ctx,char *cb_arg);
+void   ERR_load_BN_strings(void );
+
+BN_ULONG bn_mul_add_words(BN_ULONG *rp, BN_ULONG *ap, int num, BN_ULONG w);
+BN_ULONG bn_mul_words(BN_ULONG *rp, BN_ULONG *ap, int num, BN_ULONG w);
+void     bn_sqr_words(BN_ULONG *rp, BN_ULONG *ap, int num);
+BN_ULONG bn_div_words(BN_ULONG h, BN_ULONG l, BN_ULONG d);
+BN_ULONG bn_add_words(BN_ULONG *rp, BN_ULONG *ap, BN_ULONG *bp,int num);
+BN_ULONG bn_sub_words(BN_ULONG *rp, BN_ULONG *ap, BN_ULONG *bp,int num);
+
+BN_MONT_CTX *BN_MONT_CTX_new(void );
+void BN_MONT_CTX_init(BN_MONT_CTX *ctx);
+int BN_mod_mul_montgomery(BIGNUM *r,BIGNUM *a,BIGNUM *b,BN_MONT_CTX *mont,
+       BN_CTX *ctx);
+int BN_from_montgomery(BIGNUM *r,BIGNUM *a,BN_MONT_CTX *mont,BN_CTX *ctx);
+void BN_MONT_CTX_free(BN_MONT_CTX *mont);
+int BN_MONT_CTX_set(BN_MONT_CTX *mont,BIGNUM *modulus,BN_CTX *ctx);
+BN_MONT_CTX *BN_MONT_CTX_copy(BN_MONT_CTX *to,BN_MONT_CTX *from);
+
+BN_BLINDING *BN_BLINDING_new(BIGNUM *A,BIGNUM *Ai,BIGNUM *mod);
+void BN_BLINDING_free(BN_BLINDING *b);
+int BN_BLINDING_update(BN_BLINDING *b,BN_CTX *ctx);
+int BN_BLINDING_convert(BIGNUM *n, BN_BLINDING *r, BN_CTX *ctx);
+int BN_BLINDING_invert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx);
+
+void BN_set_params(int mul,int high,int low,int mont);
+int BN_get_params(int which); /* 0, mul, 1 high, 2 low, 3 mont */
+
+void bn_mul_normal(BN_ULONG *r,BN_ULONG *a,int na,BN_ULONG *b,int nb);
+void bn_mul_comba8(BN_ULONG *r,BN_ULONG *a,BN_ULONG *b);
+void bn_mul_comba4(BN_ULONG *r,BN_ULONG *a,BN_ULONG *b);
+void bn_sqr_normal(BN_ULONG *r, BN_ULONG *a, int n, BN_ULONG *tmp);
+void bn_sqr_comba8(BN_ULONG *r,BN_ULONG *a);
+void bn_sqr_comba4(BN_ULONG *r,BN_ULONG *a);
+int bn_cmp_words(BN_ULONG *a,BN_ULONG *b,int n);
+void bn_mul_recursive(BN_ULONG *r,BN_ULONG *a,BN_ULONG *b,int n2,BN_ULONG *t);
+void bn_mul_part_recursive(BN_ULONG *r,BN_ULONG *a,BN_ULONG *b,
+       int tn, int n,BN_ULONG *t);
+void bn_sqr_recursive(BN_ULONG *r,BN_ULONG *a, int n2, BN_ULONG *t);
+void bn_mul_low_normal(BN_ULONG *r,BN_ULONG *a,BN_ULONG *b, int n);
+
+void   BN_RECP_CTX_init(BN_RECP_CTX *recp);
+BN_RECP_CTX *BN_RECP_CTX_new(void);
+void   BN_RECP_CTX_free(BN_RECP_CTX *recp);
+int    BN_RECP_CTX_set(BN_RECP_CTX *recp,BIGNUM *rdiv,BN_CTX *ctx);
+int    BN_mod_mul_reciprocal(BIGNUM *r, BIGNUM *x, BIGNUM *y,
+               BN_RECP_CTX *recp,BN_CTX *ctx);
+int    BN_mod_exp_recp(BIGNUM *r, BIGNUM *a, BIGNUM *p, BIGNUM *m,BN_CTX *ctx);
+int    BN_div_recp(BIGNUM *dv, BIGNUM *rem, BIGNUM *m,
+               BN_RECP_CTX *recp, BN_CTX *ctx);
+
+
+#else
+
+BIGNUM *BN_value_one();
+char * BN_options();
+BN_CTX *BN_CTX_new();
+void   BN_CTX_init();
+void   BN_CTX_free();
+int     BN_rand();
+int    BN_num_bits();
+int    BN_num_bits_word();
+BIGNUM *BN_new();
+void   BN_init();
+void   BN_clear_free();
+BIGNUM *BN_copy();
+BIGNUM *BN_bin2bn();
+int    BN_bn2bin();
+BIGNUM *BN_mpi2bn();
+int    BN_bn2mpi();
+int    BN_sub();
+int    BN_usub();
+int    BN_uadd();
+int    BN_add();
+int    BN_mod();
+int    BN_div();
+int    BN_mul();
+int    BN_sqr();
+BN_ULONG BN_mod_word();
+BN_ULONG BN_div_word();
+int    BN_add_word();
+int    BN_sub_word();
+int    BN_mul_word();
+int    BN_set_word();
+unsigned long BN_get_word();
+int    BN_cmp();
+void   BN_free();
+int    BN_is_bit_set();
+int    BN_lshift();
+int    BN_lshift1();
+int    BN_exp();
+int    BN_mod_exp();
+int    BN_mod_exp_mont();
+int    BN_mod_exp_recp();
+int    BN_mod_exp_simple();
+int    BN_mask_bits();
+int    BN_mod_mul_reciprocal();
+int    BN_mod_mul();
+#ifndef WIN16
+int    BN_print_fp();
+#endif
+int    BN_print();
+int    BN_reciprocal();
+int    BN_rshift();
+int    BN_rshift1();
+void   BN_clear();
+BIGNUM *bn_expand2();
+BIGNUM *BN_dup();
+int    BN_ucmp();
+int    BN_set_bit();
+int    BN_clear_bit();
+char * BN_bn2hex();
+char * BN_bn2dec();
+int    BN_hex2bn();
+int    BN_dec2bn();
+int    BN_gcd();
+BIGNUM *BN_mod_inverse();
+BIGNUM *BN_generate_prime();
+int    BN_is_prime();
+void   ERR_load_BN_strings();
+
+BN_ULONG bn_mul_add_words();
+BN_ULONG bn_mul_words();
+void     bn_sqr_words();
+BN_ULONG bn_div_words();
+BN_ULONG bn_add_words();
+BN_ULONG bn_sub_words();
+
+int BN_mod_mul_montgomery();
+int BN_from_montgomery();
+BN_MONT_CTX *BN_MONT_CTX_new();
+void BN_MONT_CTX_init();
+void BN_MONT_CTX_free();
+int BN_MONT_CTX_set();
+BN_MONT_CTX *BN_MONT_CTX_copy();
+
+BN_BLINDING *BN_BLINDING_new();
+void BN_BLINDING_free();
+int BN_BLINDING_update();
+int BN_BLINDING_convert();
+int BN_BLINDING_invert();
+
+void BN_set_params();
+int BN_get_params();
+
+void bn_mul_normal();
+void bn_mul_comba8();
+void bn_mul_comba4();
+void bn_sqr_normal();
+void bn_sqr_comba8();
+void bn_sqr_comba4();
+int bn_cmp_words();
+void bn_mul_recursive();
+void bn_mul_part_recursive();
+void bn_sqr_recursive();
+void bn_mul_low_normal();
+
+void   BN_RECP_CTX_init();
+BN_RECP_CTX *BN_RECP_CTX_new();
+void   BN_RECP_CTX_free();
+int    BN_RECP_CTX_set();
+int    BN_mod_mul_reciprocal();
+int    BN_mod_exp_recp();
+int    BN_div_recp();
+
+#endif
+
+/* BEGIN ERROR CODES */
+/* Error codes for the BN functions. */
+
+/* Function codes. */
+#define BN_F_BN_BLINDING_CONVERT                        100
+#define BN_F_BN_BLINDING_INVERT                                 101
+#define BN_F_BN_BLINDING_NEW                            102
+#define BN_F_BN_BLINDING_UPDATE                                 103
+#define BN_F_BN_BN2DEC                                  104
+#define BN_F_BN_BN2HEX                                  105
+#define BN_F_BN_CTX_NEW                                         106
+#define BN_F_BN_DIV                                     107
+#define BN_F_BN_EXPAND2                                         108
+#define BN_F_BN_MOD_EXP_MONT                            109
+#define BN_F_BN_MOD_INVERSE                             110
+#define BN_F_BN_MOD_MUL_RECIPROCAL                      111
+#define BN_F_BN_MPI2BN                                  112
+#define BN_F_BN_NEW                                     113
+#define BN_F_BN_RAND                                    114
+#define BN_F_BN_USUB                                    115
+
+/* Reason codes. */
+#define BN_R_ARG2_LT_ARG3                               100
+#define BN_R_BAD_RECIPROCAL                             101
+#define BN_R_CALLED_WITH_EVEN_MODULUS                   102
+#define BN_R_DIV_BY_ZERO                                103
+#define BN_R_ENCODING_ERROR                             104
+#define BN_R_EXPAND_ON_STATIC_BIGNUM_DATA               105
+#define BN_R_INVALID_LENGTH                             106
+#define BN_R_NOT_INITIALIZED                            107
+#define BN_R_NO_INVERSE                                         108
+#ifdef  __cplusplus
+}
+#endif
+#endif
+
diff --git a/crypto/bn/bn.org b/crypto/bn/bn.org
deleted file mode 100644 (file)
index 393fae5..0000000
+++ /dev/null
@@ -1,606 +0,0 @@
-/* crypto/bn/bn.org */
-/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
- * All rights reserved.
- *
- * This package is an SSL implementation written
- * by Eric Young (eay@cryptsoft.com).
- * The implementation was written so as to conform with Netscapes SSL.
- * 
- * This library is free for commercial and non-commercial use as long as
- * the following conditions are aheared to.  The following conditions
- * apply to all code found in this distribution, be it the RC4, RSA,
- * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
- * included with this distribution is covered by the same copyright terms
- * except that the holder is Tim Hudson (tjh@cryptsoft.com).
- * 
- * Copyright remains Eric Young's, and as such any Copyright notices in
- * the code are not to be removed.
- * If this package is used in a product, Eric Young should be given attribution
- * as the author of the parts of the library used.
- * This can be in the form of a textual message at program startup or
- * in documentation (online or textual) provided with the package.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    "This product includes cryptographic software written by
- *     Eric Young (eay@cryptsoft.com)"
- *    The word 'cryptographic' can be left out if the rouines from the library
- *    being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from 
- *    the apps directory (application code) you must include an acknowledgement:
- *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- * 
- * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
- * The licence and distribution terms for any publically available version or
- * derivative of this code cannot be changed.  i.e. this code cannot simply be
- * copied and put under another distribution licence
- * [including the GNU Public Licence.]
- */
-
-/* WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING 
- *
- * Always modify bn.org since bn.h is automatically generated from
- * it during SSLeay configuration.
- *
- * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
- */
-
-#ifndef HEADER_BN_H
-#define HEADER_BN_H
-
-#ifdef  __cplusplus
-extern "C" {
-#endif
-
-#undef BN_LLONG
-
-#ifdef WIN32
-#define BN_LLONG /* This comment stops Configure mutilating things */
-#endif
-
-#define BN_MUL_COMBA
-#define BN_SQR_COMBA
-#define BN_RECURSION
-#define RECP_MUL_MOD
-#define MONT_MUL_MOD
-
-/* This next option uses the C libraries (2 word)/(1 word) function.
- * If it is not defined, I use my C version (which is slower).
- * The reason for this flag is that when the particular C compiler
- * library routine is used, and the library is linked with a different
- * compiler, the library is missing.  This mostly happens when the
- * library is built with gcc and then linked using nornal cc.  This would
- * be a common occurance because gcc normally produces code that is
- * 2 times faster than system compilers for the big number stuff.
- * For machines with only one compiler (or shared libraries), this should
- * be on.  Again this in only really a problem on machines
- * using "long long's", are 32bit, and are not using my assember code. */
-#if defined(MSDOS) || defined(WINDOWS) || defined(linux)
-#define BN_DIV2W
-#endif
-
-/* Only one for the following should be defined */
-/* The prime number generation stuff may not work when
- * EIGHT_BIT but I don't care since I've only used this mode
- * for debuging the bignum libraries */
-#undef SIXTY_FOUR_BIT_LONG
-#undef SIXTY_FOUR_BIT
-#define THIRTY_TWO_BIT
-#undef SIXTEEN_BIT
-#undef EIGHT_BIT
-
-
-/* assuming long is 64bit - this is the DEC Alpha
- * unsigned long long is only 64 bits :-(, don't define
- * BN_LLONG for the DEC Alpha */
-#ifdef SIXTY_FOUR_BIT_LONG
-#define BN_ULLONG      unsigned long long
-#define BN_ULONG       unsigned long
-#define BN_LONG                long
-#define BN_BITS                128
-#define BN_BYTES       8
-#define BN_BITS2       64
-#define BN_BITS4       32
-#define BN_MASK                (0xffffffffffffffffffffffffffffffffLL)
-#define BN_MASK2       (0xffffffffffffffffL)
-#define BN_MASK2l      (0xffffffffL)
-#define BN_MASK2h      (0xffffffff00000000L)
-#define BN_MASK2h1     (0xffffffff80000000L)
-#define BN_TBIT                (0x8000000000000000L)
-#define BN_DEC_CONV    (10000000000000000000UL)
-#define BN_DEC_FMT1    "%lu"
-#define BN_DEC_FMT2    "%019lu"
-#define BN_DEC_NUM     19
-#endif
-
-/* This is where the long long data type is 64 bits, but long is 32.
- * For machines where there are 64bit registers, this is the mode to use.
- * IRIX, on R4000 and above should use this mode, along with the relevent
- * assember code :-).  Do NOT define BN_ULLONG.
- */
-#ifdef SIXTY_FOUR_BIT
-#undef BN_LLONG
-/* #define BN_ULLONG   unsigned long long */
-#define BN_ULONG       unsigned long long
-#define BN_LONG                long long
-#define BN_BITS                128
-#define BN_BYTES       8
-#define BN_BITS2       64
-#define BN_BITS4       32
-#define BN_MASK2       (0xffffffffffffffffLL)
-#define BN_MASK2l      (0xffffffffL)
-#define BN_MASK2h      (0xffffffff00000000LL)
-#define BN_MASK2h1     (0xffffffff80000000LL)
-#define BN_TBIT                (0x8000000000000000LL)
-#define BN_DEC_CONV    (10000000000000000000LL)
-#define BN_DEC_FMT1    "%llu"
-#define BN_DEC_FMT2    "%019llu"
-#define BN_DEC_NUM     19
-#endif
-
-#ifdef THIRTY_TWO_BIT
-#ifdef WIN32
-#define BN_ULLONG      unsigned _int64
-#else
-#define BN_ULLONG      unsigned long long
-#endif
-#define BN_ULONG       unsigned long
-#define BN_LONG                long
-#define BN_BITS                64
-#define BN_BYTES       4
-#define BN_BITS2       32
-#define BN_BITS4       16
-#ifdef WIN32
-/* VC++ doesn't like the LL suffix */
-#define BN_MASK                (0xffffffffffffffffL)
-#else
-#define BN_MASK                (0xffffffffffffffffLL)
-#endif
-#define BN_MASK2       (0xffffffffL)
-#define BN_MASK2l      (0xffff)
-#define BN_MASK2h1     (0xffff8000L)
-#define BN_MASK2h      (0xffff0000L)
-#define BN_TBIT                (0x80000000L)
-#define BN_DEC_CONV    (1000000000L)
-#define BN_DEC_FMT1    "%lu"
-#define BN_DEC_FMT2    "%09lu"
-#define BN_DEC_NUM     9
-#endif
-
-#ifdef SIXTEEN_BIT
-#ifndef BN_DIV2W
-#define BN_DIV2W
-#endif
-#define BN_ULLONG      unsigned long
-#define BN_ULONG       unsigned short
-#define BN_LONG                short
-#define BN_BITS                32
-#define BN_BYTES       2
-#define BN_BITS2       16
-#define BN_BITS4       8
-#define BN_MASK                (0xffffffff)
-#define BN_MASK2       (0xffff)
-#define BN_MASK2l      (0xff)
-#define BN_MASK2h1     (0xff80)
-#define BN_MASK2h      (0xff00)
-#define BN_TBIT                (0x8000)
-#define BN_DEC_CONV    (100000)
-#define BN_DEC_FMT1    "%u"
-#define BN_DEC_FMT2    "%05u"
-#define BN_DEC_NUM     5
-#endif
-
-#ifdef EIGHT_BIT
-#ifndef BN_DIV2W
-#define BN_DIV2W
-#endif
-#define BN_ULLONG      unsigned short
-#define BN_ULONG       unsigned char
-#define BN_LONG                char
-#define BN_BITS                16
-#define BN_BYTES       1
-#define BN_BITS2       8
-#define BN_BITS4       4
-#define BN_MASK                (0xffff)
-#define BN_MASK2       (0xff)
-#define BN_MASK2l      (0xf)
-#define BN_MASK2h1     (0xf8)
-#define BN_MASK2h      (0xf0)
-#define BN_TBIT                (0x80)
-#define BN_DEC_CONV    (100)
-#define BN_DEC_FMT1    "%u"
-#define BN_DEC_FMT2    "%02u"
-#define BN_DEC_NUM     2
-#endif
-
-#define BN_DEFAULT_BITS        1280
-
-#ifdef BIGNUM
-#undef BIGNUM
-#endif
-
-#define BN_FLG_MALLOCED                0x01
-#define BN_FLG_STATIC_DATA     0x02
-#define BN_FLG_FREE            0x8000  /* used for debuging */
-#define BN_set_flags(b,n)      ((b)->flags|=(n))
-#define BN_get_flags(b,n)      ((b)->flags&(n))
-
-typedef struct bignum_st
-       {
-       BN_ULONG *d;    /* Pointer to an array of 'BN_BITS2' bit chunks. */
-       int top;        /* Index of last used d +1. */
-       /* The next are internal book keeping for bn_expand. */
-       int max;        /* Size of the d array. */
-       int neg;        /* one if the number is negative */
-       int flags;
-       } BIGNUM;
-
-/* Used for temp variables */
-#define BN_CTX_NUM     12
-typedef struct bignum_ctx
-       {
-       int tos;
-       BIGNUM bn[BN_CTX_NUM+1];
-       int flags;
-       } BN_CTX;
-
-typedef struct bn_blinding_st
-       {
-       int init;
-       BIGNUM *A;
-       BIGNUM *Ai;
-       BIGNUM *mod; /* just a reference */
-       } BN_BLINDING;
-
-/* Used for montgomery multiplication */
-typedef struct bn_mont_ctx_st
-        {
-       int use_word;   /* 0 for word form, 1 for long form */
-        int ri;         /* number of bits in R */
-        BIGNUM RR;     /* used to convert to montgomery form */
-        BIGNUM N;      /* The modulus */
-        BIGNUM Ni;     /* The inverse of N */
-       BN_ULONG n0;    /* word form of inverse, normally only one of
-                        * Ni or n0 is defined */
-       int flags;
-        } BN_MONT_CTX;
-
-/* Used for reciprocal division/mod functions
- * It cannot be shared between threads
- */
-typedef struct bn_recp_ctx_st
-       {
-       BIGNUM N;       /* the divisor */
-       BIGNUM Nr;      /* the reciprocal */
-       int num_bits;
-       int shift;
-       int flags;
-       } BN_RECP_CTX;
-
-#define BN_to_montgomery(r,a,mont,ctx) BN_mod_mul_montgomery(\
-       r,a,&((mont)->RR),(mont),ctx)
-
-#define BN_prime_checks                (5)
-
-#define BN_num_bytes(a)        ((BN_num_bits(a)+7)/8)
-#define BN_is_word(a,w)        (((a)->top == 1) && ((a)->d[0] == (BN_ULONG)(w)))
-#define BN_is_zero(a)  (((a)->top == 0) || BN_is_word(a,0))
-#define BN_is_one(a)   (BN_is_word((a),1))
-#define BN_is_odd(a)   (((a)->top > 0) && ((a)->d[0] & 1))
-#define BN_one(a)      (BN_set_word((a),1))
-#define BN_zero(a)     (BN_set_word((a),0))
-
-/*#define BN_ascii2bn(a)       BN_hex2bn(a) */
-/*#define BN_bn2ascii(a)       BN_bn2hex(a) */
-
-#define bn_expand(n,b) ((((((b+BN_BITS2-1))/BN_BITS2)) <= (n)->max)?\
-       (n):bn_expand2((n),(b)/BN_BITS2+1))
-#define bn_wexpand(n,b) (((b) <= (n)->max)?(n):bn_expand2((n),(b)))
-
-#define bn_fix_top(a) \
-        { \
-        BN_ULONG *ftl; \
-       if ((a)->top > 0) \
-               { \
-               for (ftl= &((a)->d[(a)->top-1]); (a)->top > 0; (a)->top--) \
-               if (*(ftl--)) break; \
-               } \
-       }
-
-#ifndef NOPROTO
-BIGNUM *BN_value_one(void);
-char * BN_options(void);
-BN_CTX *BN_CTX_new(void);
-void   BN_CTX_init(BN_CTX *c);
-void   BN_CTX_free(BN_CTX *c);
-int     BN_rand(BIGNUM *rnd, int bits, int top,int bottom);
-int    BN_num_bits(BIGNUM *a);
-int    BN_num_bits_word(BN_ULONG);
-BIGNUM *BN_new(void);
-void   BN_init(BIGNUM *);
-void   BN_clear_free(BIGNUM *a);
-BIGNUM *BN_copy(BIGNUM *a, BIGNUM *b);
-BIGNUM *BN_bin2bn(unsigned char *s,int len,BIGNUM *ret);
-int    BN_bn2bin(BIGNUM *a, unsigned char *to);
-BIGNUM *BN_mpi2bn(unsigned char *s,int len,BIGNUM *ret);
-int    BN_bn2mpi(BIGNUM *a, unsigned char *to);
-int    BN_sub(BIGNUM *r, BIGNUM *a, BIGNUM *b);
-int    BN_usub(BIGNUM *r, BIGNUM *a, BIGNUM *b);
-int    BN_uadd(BIGNUM *r, BIGNUM *a, BIGNUM *b);
-int    BN_add(BIGNUM *r, BIGNUM *a, BIGNUM *b);
-int    BN_mod(BIGNUM *rem, BIGNUM *m, BIGNUM *d, BN_CTX *ctx);
-int    BN_div(BIGNUM *dv, BIGNUM *rem, BIGNUM *m, BIGNUM *d, BN_CTX *ctx);
-int    BN_mul(BIGNUM *r, BIGNUM *a, BIGNUM *b,BN_CTX *ctx);
-int    BN_sqr(BIGNUM *r, BIGNUM *a,BN_CTX *ctx);
-BN_ULONG BN_mod_word(BIGNUM *a, BN_ULONG w);
-BN_ULONG BN_div_word(BIGNUM *a, BN_ULONG w);
-int    BN_mul_word(BIGNUM *a, BN_ULONG w);
-int    BN_add_word(BIGNUM *a, BN_ULONG w);
-int    BN_sub_word(BIGNUM *a, BN_ULONG w);
-int    BN_set_word(BIGNUM *a, BN_ULONG w);
-BN_ULONG BN_get_word(BIGNUM *a);
-int    BN_cmp(BIGNUM *a, BIGNUM *b);
-void   BN_free(BIGNUM *a);
-int    BN_is_bit_set(BIGNUM *a, int n);
-int    BN_lshift(BIGNUM *r, BIGNUM *a, int n);
-int    BN_lshift1(BIGNUM *r, BIGNUM *a);
-int    BN_exp(BIGNUM *r, BIGNUM *a, BIGNUM *p,BN_CTX *ctx);
-int    BN_mod_exp(BIGNUM *r, BIGNUM *a, BIGNUM *p, BIGNUM *m,BN_CTX *ctx);
-int    BN_mod_exp_mont(BIGNUM *r, BIGNUM *a, BIGNUM *p, BIGNUM *m,BN_CTX *ctx,
-               BN_MONT_CTX *m_ctx);
-int    BN_mod_exp2_mont(BIGNUM *r, BIGNUM *a1, BIGNUM *p1,BIGNUM *a2,
-               BIGNUM *p2,BIGNUM *m,BN_CTX *ctx,BN_MONT_CTX *m_ctx);
-int    BN_mod_exp_simple(BIGNUM *r, BIGNUM *a, BIGNUM *p,
-       BIGNUM *m,BN_CTX *ctx);
-int    BN_mask_bits(BIGNUM *a,int n);
-int    BN_mod_mul(BIGNUM *ret, BIGNUM *a, BIGNUM *b, BIGNUM *m,
-       BN_CTX *ctx);
-#ifndef WIN16
-int    BN_print_fp(FILE *fp, BIGNUM *a);
-#endif
-#ifdef HEADER_BIO_H
-int    BN_print(BIO *fp, BIGNUM *a);
-#else
-int    BN_print(char *fp, BIGNUM *a);
-#endif
-int    BN_reciprocal(BIGNUM *r, BIGNUM *m, int len, BN_CTX *ctx);
-int    BN_rshift(BIGNUM *r, BIGNUM *a, int n);
-int    BN_rshift1(BIGNUM *r, BIGNUM *a);
-void   BN_clear(BIGNUM *a);
-BIGNUM *bn_expand2(BIGNUM *b, int bits);
-BIGNUM *BN_dup(BIGNUM *a);
-int    BN_ucmp(BIGNUM *a, BIGNUM *b);
-int    BN_set_bit(BIGNUM *a, int n);
-int    BN_clear_bit(BIGNUM *a, int n);
-char * BN_bn2hex(BIGNUM *a);
-char * BN_bn2dec(BIGNUM *a);
-int    BN_hex2bn(BIGNUM **a,char *str);
-int    BN_dec2bn(BIGNUM **a,char *str);
-int    BN_gcd(BIGNUM *r,BIGNUM *in_a,BIGNUM *in_b,BN_CTX *ctx);
-BIGNUM *BN_mod_inverse(BIGNUM *ret,BIGNUM *a, BIGNUM *n,BN_CTX *ctx);
-BIGNUM *BN_generate_prime(BIGNUM *ret,int bits,int strong,BIGNUM *add,
-               BIGNUM *rem,void (*callback)(int,int,char *),char *cb_arg);
-int    BN_is_prime(BIGNUM *p,int nchecks,void (*callback)(int,int,char *),
-               BN_CTX *ctx,char *cb_arg);
-void   ERR_load_BN_strings(void );
-
-BN_ULONG bn_mul_add_words(BN_ULONG *rp, BN_ULONG *ap, int num, BN_ULONG w);
-BN_ULONG bn_mul_words(BN_ULONG *rp, BN_ULONG *ap, int num, BN_ULONG w);
-void     bn_sqr_words(BN_ULONG *rp, BN_ULONG *ap, int num);
-BN_ULONG bn_div_words(BN_ULONG h, BN_ULONG l, BN_ULONG d);
-BN_ULONG bn_add_words(BN_ULONG *rp, BN_ULONG *ap, BN_ULONG *bp,int num);
-BN_ULONG bn_sub_words(BN_ULONG *rp, BN_ULONG *ap, BN_ULONG *bp,int num);
-
-BN_MONT_CTX *BN_MONT_CTX_new(void );
-void BN_MONT_CTX_init(BN_MONT_CTX *ctx);
-int BN_mod_mul_montgomery(BIGNUM *r,BIGNUM *a,BIGNUM *b,BN_MONT_CTX *mont,
-       BN_CTX *ctx);
-int BN_from_montgomery(BIGNUM *r,BIGNUM *a,BN_MONT_CTX *mont,BN_CTX *ctx);
-void BN_MONT_CTX_free(BN_MONT_CTX *mont);
-int BN_MONT_CTX_set(BN_MONT_CTX *mont,BIGNUM *modulus,BN_CTX *ctx);
-BN_MONT_CTX *BN_MONT_CTX_copy(BN_MONT_CTX *to,BN_MONT_CTX *from);
-
-BN_BLINDING *BN_BLINDING_new(BIGNUM *A,BIGNUM *Ai,BIGNUM *mod);
-void BN_BLINDING_free(BN_BLINDING *b);
-int BN_BLINDING_update(BN_BLINDING *b,BN_CTX *ctx);
-int BN_BLINDING_convert(BIGNUM *n, BN_BLINDING *r, BN_CTX *ctx);
-int BN_BLINDING_invert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx);
-
-void BN_set_params(int mul,int high,int low,int mont);
-int BN_get_params(int which); /* 0, mul, 1 high, 2 low, 3 mont */
-
-void bn_mul_normal(BN_ULONG *r,BN_ULONG *a,int na,BN_ULONG *b,int nb);
-void bn_mul_comba8(BN_ULONG *r,BN_ULONG *a,BN_ULONG *b);
-void bn_mul_comba4(BN_ULONG *r,BN_ULONG *a,BN_ULONG *b);
-void bn_sqr_normal(BN_ULONG *r, BN_ULONG *a, int n, BN_ULONG *tmp);
-void bn_sqr_comba8(BN_ULONG *r,BN_ULONG *a);
-void bn_sqr_comba4(BN_ULONG *r,BN_ULONG *a);
-int bn_cmp_words(BN_ULONG *a,BN_ULONG *b,int n);
-void bn_mul_recursive(BN_ULONG *r,BN_ULONG *a,BN_ULONG *b,int n2,BN_ULONG *t);
-void bn_mul_part_recursive(BN_ULONG *r,BN_ULONG *a,BN_ULONG *b,
-       int tn, int n,BN_ULONG *t);
-void bn_sqr_recursive(BN_ULONG *r,BN_ULONG *a, int n2, BN_ULONG *t);
-void bn_mul_low_normal(BN_ULONG *r,BN_ULONG *a,BN_ULONG *b, int n);
-
-void   BN_RECP_CTX_init(BN_RECP_CTX *recp);
-BN_RECP_CTX *BN_RECP_CTX_new(void);
-void   BN_RECP_CTX_free(BN_RECP_CTX *recp);
-int    BN_RECP_CTX_set(BN_RECP_CTX *recp,BIGNUM *rdiv,BN_CTX *ctx);
-int    BN_mod_mul_reciprocal(BIGNUM *r, BIGNUM *x, BIGNUM *y,
-               BN_RECP_CTX *recp,BN_CTX *ctx);
-int    BN_mod_exp_recp(BIGNUM *r, BIGNUM *a, BIGNUM *p, BIGNUM *m,BN_CTX *ctx);
-int    BN_div_recp(BIGNUM *dv, BIGNUM *rem, BIGNUM *m,
-               BN_RECP_CTX *recp, BN_CTX *ctx);
-
-
-#else
-
-BIGNUM *BN_value_one();
-char * BN_options();
-BN_CTX *BN_CTX_new();
-void   BN_CTX_init();
-void   BN_CTX_free();
-int     BN_rand();
-int    BN_num_bits();
-int    BN_num_bits_word();
-BIGNUM *BN_new();
-void   BN_init();
-void   BN_clear_free();
-BIGNUM *BN_copy();
-BIGNUM *BN_bin2bn();
-int    BN_bn2bin();
-BIGNUM *BN_mpi2bn();
-int    BN_bn2mpi();
-int    BN_sub();
-int    BN_usub();
-int    BN_uadd();
-int    BN_add();
-int    BN_mod();
-int    BN_div();
-int    BN_mul();
-int    BN_sqr();
-BN_ULONG BN_mod_word();
-BN_ULONG BN_div_word();
-int    BN_add_word();
-int    BN_sub_word();
-int    BN_mul_word();
-int    BN_set_word();
-unsigned long BN_get_word();
-int    BN_cmp();
-void   BN_free();
-int    BN_is_bit_set();
-int    BN_lshift();
-int    BN_lshift1();
-int    BN_exp();
-int    BN_mod_exp();
-int    BN_mod_exp_mont();
-int    BN_mod_exp_recp();
-int    BN_mod_exp_simple();
-int    BN_mask_bits();
-int    BN_mod_mul_reciprocal();
-int    BN_mod_mul();
-#ifndef WIN16
-int    BN_print_fp();
-#endif
-int    BN_print();
-int    BN_reciprocal();
-int    BN_rshift();
-int    BN_rshift1();
-void   BN_clear();
-BIGNUM *bn_expand2();
-BIGNUM *BN_dup();
-int    BN_ucmp();
-int    BN_set_bit();
-int    BN_clear_bit();
-char * BN_bn2hex();
-char * BN_bn2dec();
-int    BN_hex2bn();
-int    BN_dec2bn();
-int    BN_gcd();
-BIGNUM *BN_mod_inverse();
-BIGNUM *BN_generate_prime();
-int    BN_is_prime();
-void   ERR_load_BN_strings();
-
-BN_ULONG bn_mul_add_words();
-BN_ULONG bn_mul_words();
-void     bn_sqr_words();
-BN_ULONG bn_div_words();
-BN_ULONG bn_add_words();
-BN_ULONG bn_sub_words();
-
-int BN_mod_mul_montgomery();
-int BN_from_montgomery();
-BN_MONT_CTX *BN_MONT_CTX_new();
-void BN_MONT_CTX_init();
-void BN_MONT_CTX_free();
-int BN_MONT_CTX_set();
-BN_MONT_CTX *BN_MONT_CTX_copy();
-
-BN_BLINDING *BN_BLINDING_new();
-void BN_BLINDING_free();
-int BN_BLINDING_update();
-int BN_BLINDING_convert();
-int BN_BLINDING_invert();
-
-void BN_set_params();
-int BN_get_params();
-
-void bn_mul_normal();
-void bn_mul_comba8();
-void bn_mul_comba4();
-void bn_sqr_normal();
-void bn_sqr_comba8();
-void bn_sqr_comba4();
-int bn_cmp_words();
-void bn_mul_recursive();
-void bn_mul_part_recursive();
-void bn_sqr_recursive();
-void bn_mul_low_normal();
-
-void   BN_RECP_CTX_init();
-BN_RECP_CTX *BN_RECP_CTX_new();
-void   BN_RECP_CTX_free();
-int    BN_RECP_CTX_set();
-int    BN_mod_mul_reciprocal();
-int    BN_mod_exp_recp();
-int    BN_div_recp();
-
-#endif
-
-/* BEGIN ERROR CODES */
-/* Error codes for the BN functions. */
-
-/* Function codes. */
-#define BN_F_BN_BLINDING_CONVERT                        100
-#define BN_F_BN_BLINDING_INVERT                                 101
-#define BN_F_BN_BLINDING_NEW                            102
-#define BN_F_BN_BLINDING_UPDATE                                 103
-#define BN_F_BN_BN2DEC                                  104
-#define BN_F_BN_BN2HEX                                  105
-#define BN_F_BN_CTX_NEW                                         106
-#define BN_F_BN_DIV                                     107
-#define BN_F_BN_EXPAND2                                         108
-#define BN_F_BN_MOD_EXP_MONT                            109
-#define BN_F_BN_MOD_INVERSE                             110
-#define BN_F_BN_MOD_MUL_RECIPROCAL                      111
-#define BN_F_BN_MPI2BN                                  112
-#define BN_F_BN_NEW                                     113
-#define BN_F_BN_RAND                                    114
-#define BN_F_BN_USUB                                    115
-
-/* Reason codes. */
-#define BN_R_ARG2_LT_ARG3                               100
-#define BN_R_BAD_RECIPROCAL                             101
-#define BN_R_CALLED_WITH_EVEN_MODULUS                   102
-#define BN_R_DIV_BY_ZERO                                103
-#define BN_R_ENCODING_ERROR                             104
-#define BN_R_EXPAND_ON_STATIC_BIGNUM_DATA               105
-#define BN_R_INVALID_LENGTH                             106
-#define BN_R_NOT_INITIALIZED                            107
-#define BN_R_NO_INVERSE                                         108
-#ifdef  __cplusplus
-}
-#endif
-#endif
-
diff --git a/crypto/des/des.h b/crypto/des/des.h
new file mode 100644 (file)
index 0000000..c9f6792
--- /dev/null
@@ -0,0 +1,302 @@
+/* crypto/des/des.org */
+/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
+ * All rights reserved.
+ *
+ * This package is an SSL implementation written
+ * by Eric Young (eay@cryptsoft.com).
+ * The implementation was written so as to conform with Netscapes SSL.
+ * 
+ * This library is free for commercial and non-commercial use as long as
+ * the following conditions are aheared to.  The following conditions
+ * apply to all code found in this distribution, be it the RC4, RSA,
+ * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
+ * included with this distribution is covered by the same copyright terms
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
+ * 
+ * Copyright remains Eric Young's, and as such any Copyright notices in
+ * the code are not to be removed.
+ * If this package is used in a product, Eric Young should be given attribution
+ * as the author of the parts of the library used.
+ * This can be in the form of a textual message at program startup or
+ * in documentation (online or textual) provided with the package.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    "This product includes cryptographic software written by
+ *     Eric Young (eay@cryptsoft.com)"
+ *    The word 'cryptographic' can be left out if the rouines from the library
+ *    being used are not cryptographic related :-).
+ * 4. If you include any Windows specific code (or a derivative thereof) from 
+ *    the apps directory (application code) you must include an acknowledgement:
+ *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
+ * 
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * 
+ * The licence and distribution terms for any publically available version or
+ * derivative of this code cannot be changed.  i.e. this code cannot simply be
+ * copied and put under another distribution licence
+ * [including the GNU Public Licence.]
+ */
+
+#ifndef HEADER_DES_H
+#define HEADER_DES_H
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
+#include <stdio.h>
+#include "opensslconf.h" /* DES_LONG */
+
+typedef unsigned char des_cblock[8];
+typedef unsigned char *des_cblocks; /* Unfortunately there's no way to say that
+                                      we want a multiple of 8 */
+typedef struct des_ks_struct
+       {
+       union   {
+               des_cblock _;
+               /* make sure things are correct size on machines with
+                * 8 byte longs */
+               DES_LONG pad[2];
+               } ks;
+#undef _
+#define _      ks._
+       int weak_key;
+       } des_key_schedule[16];
+
+#define DES_KEY_SZ     (sizeof(des_cblock))
+#define DES_SCHEDULE_SZ (sizeof(des_key_schedule))
+
+#define DES_ENCRYPT    1
+#define DES_DECRYPT    0
+
+#define DES_CBC_MODE   0
+#define DES_PCBC_MODE  1
+
+#define des_ecb2_encrypt(i,o,k1,k2,e) \
+       des_ecb3_encrypt((i),(o),(k1),(k2),(k1),(e))
+
+#define des_ede2_cbc_encrypt(i,o,l,k1,k2,iv,e) \
+       des_ede3_cbc_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(e))
+
+#define des_ede2_cfb64_encrypt(i,o,l,k1,k2,iv,n,e) \
+       des_ede3_cfb64_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(n),(e))
+
+#define des_ede2_ofb64_encrypt(i,o,l,k1,k2,iv,n) \
+       des_ede3_ofb64_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(n))
+
+#define C_Block des_cblock
+#define Key_schedule des_key_schedule
+#ifdef KERBEROS
+#define ENCRYPT DES_ENCRYPT
+#define DECRYPT DES_DECRYPT
+#endif
+#define KEY_SZ DES_KEY_SZ
+#define string_to_key des_string_to_key
+#define read_pw_string des_read_pw_string
+#define random_key des_random_key
+#define pcbc_encrypt des_pcbc_encrypt
+#define set_key des_set_key
+#define key_sched des_key_sched
+#define ecb_encrypt des_ecb_encrypt
+#define cbc_encrypt des_cbc_encrypt
+#define ncbc_encrypt des_ncbc_encrypt
+#define xcbc_encrypt des_xcbc_encrypt
+#define cbc_cksum des_cbc_cksum
+#define quad_cksum des_quad_cksum
+
+/* For compatibility with the MIT lib - eay 20/05/92 */
+typedef des_key_schedule bit_64;
+#define des_fixup_key_parity des_set_odd_parity
+#define des_check_key_parity check_parity
+
+extern int des_check_key;      /* defaults to false */
+extern int des_rw_mode;                /* defaults to DES_PCBC_MODE */
+extern int des_set_weak_key_flag; /* set the weak key flag */
+
+#ifndef NOPROTO
+const char *des_options(void);
+void des_ecb3_encrypt(const des_cblock input, des_cblock output,
+                     des_key_schedule ks1,des_key_schedule ks2,
+                     des_key_schedule ks3, int enc);
+DES_LONG des_cbc_cksum(const unsigned char *input,des_cblock output,
+                      long length,des_key_schedule schedule,
+                      const des_cblock ivec);
+void des_cbc_encrypt(const unsigned char *input,unsigned char *output,
+                    long length,des_key_schedule schedule,des_cblock ivec,
+                    int enc);
+void des_ncbc_encrypt(const unsigned char *input,unsigned char *output,
+                     long length,des_key_schedule schedule,des_cblock ivec,
+                     int enc);
+void des_xcbc_encrypt(const unsigned char *input,unsigned char *output,
+                     long length,des_key_schedule schedule,des_cblock ivec,
+                     const des_cblock inw,const des_cblock outw,int enc);
+void des_cfb_encrypt(const unsigned char *in,unsigned char *out,int numbits,
+                    long length,des_key_schedule schedule,des_cblock ivec,
+                    int enc);
+void des_ecb_encrypt(const des_cblock input,des_cblock output,
+                    des_key_schedule ks,int enc);
+void des_encrypt(DES_LONG *data,des_key_schedule ks, int enc);
+void des_encrypt2(DES_LONG *data,des_key_schedule ks, int enc);
+void des_encrypt3(DES_LONG *data, des_key_schedule ks1,
+       des_key_schedule ks2, des_key_schedule ks3);
+void des_decrypt3(DES_LONG *data, des_key_schedule ks1,
+       des_key_schedule ks2, des_key_schedule ks3);
+void des_ede3_cbc_encrypt(const unsigned char *input,unsigned char *output, 
+                         long length,
+                         des_key_schedule ks1,des_key_schedule ks2,
+                         des_key_schedule ks3,des_cblock ivec,int enc);
+void des_ede3_cbcm_encrypt(const unsigned char *in,unsigned char *out,
+                          long length,
+                          des_key_schedule ks1,des_key_schedule ks2,
+                          des_key_schedule ks3,
+                          des_cblock ivec1,des_cblock ivec2,
+                          int enc);
+void des_ede3_cfb64_encrypt(const unsigned char *in,unsigned char *out,
+                           long length,des_key_schedule ks1,
+                           des_key_schedule ks2,des_key_schedule ks3,
+                           des_cblock ivec,int *num,int enc);
+void des_ede3_ofb64_encrypt(const unsigned char *in,unsigned char *out,
+                           long length,des_key_schedule ks1,
+                           des_key_schedule ks2,des_key_schedule ks3,
+                           des_cblock ivec,int *num);
+
+void des_xwhite_in2out(const des_cblock des_key,const des_cblock in_white,
+                      des_cblock out_white);
+
+int des_enc_read(int fd,char *buf,int len,des_key_schedule sched,
+                des_cblock iv);
+int des_enc_write(int fd,const char *buf,int len,des_key_schedule sched,
+                 des_cblock iv);
+char *des_fcrypt(const char *buf,const char *salt, char *ret);
+#if defined(PERL5) || defined(__FreeBSD__)
+char *des_crypt(const char *buf,const char *salt);
+#else
+/* some stupid compilers complain because I have declared char instead
+ * of const char */
+#ifdef HEADER_DES_LOCL_H
+char *crypt(const char *buf,const char *salt);
+#else
+char *crypt();
+#endif
+#endif
+void des_ofb_encrypt(const unsigned char *in,unsigned char *out,int numbits,
+                    long length,des_key_schedule schedule,des_cblock ivec);
+void des_pcbc_encrypt(const unsigned char *input,unsigned char *output,
+                     long length,des_key_schedule schedule,des_cblock ivec,
+                     int enc);
+DES_LONG des_quad_cksum(const unsigned char *input,des_cblocks output,
+                       long length,int out_count,des_cblock seed);
+void des_random_seed(des_cblock key);
+void des_random_key(des_cblock ret);
+int des_read_password(des_cblock key,const char *prompt,int verify);
+int des_read_2passwords(des_cblock key1,des_cblock key2,
+                       const char *prompt,int verify);
+int des_read_pw_string(char *buf,int length,const char *prompt,int verify);
+void des_set_odd_parity(des_cblock key);
+int des_is_weak_key(const des_cblock key);
+int des_set_key(const des_cblock key,des_key_schedule schedule);
+int des_key_sched(const des_cblock key,des_key_schedule schedule);
+void des_string_to_key(const char *str,des_cblock key);
+void des_string_to_2keys(const char *str,des_cblock key1,des_cblock key2);
+void des_cfb64_encrypt(const unsigned char *in,unsigned char *out,long length,
+                      des_key_schedule schedule,des_cblock ivec,int *num,
+                      int enc);
+void des_ofb64_encrypt(const unsigned char *in,unsigned char *out,long length,
+                      des_key_schedule schedule,des_cblock ivec,int *num);
+int des_read_pw(char *buf,char *buff,int size,const char *prompt,int verify);
+
+/* Extra functions from Mark Murray <mark@grondar.za> */
+void des_cblock_print_file(const des_cblock cb, FILE *fp);
+/* The following functions are not in the normal unix build or the
+ * SSLeay build.  When using the SSLeay build, use RAND_seed()
+ * and RAND_bytes() instead. */
+int des_new_random_key(des_cblock *key);
+void des_init_random_number_generator(des_cblock *key);
+void des_set_random_generator_seed(des_cblock *key);
+void des_set_sequence_number(des_cblock new_sequence_number);
+void des_generate_random_block(des_cblock *block);
+
+#else
+
+char *des_options();
+void des_ecb3_encrypt();
+DES_LONG des_cbc_cksum();
+void des_cbc_encrypt();
+void des_ncbc_encrypt();
+void des_xcbc_encrypt();
+void des_cfb_encrypt();
+void des_ede3_cfb64_encrypt();
+void des_ede3_ofb64_encrypt();
+void des_ecb_encrypt();
+void des_encrypt();
+void des_encrypt2();
+void des_encrypt3();
+void des_decrypt3();
+void des_ede3_cbc_encrypt();
+void des_ede3_cbcm_encrypt();
+int des_enc_read();
+int des_enc_write();
+char *des_fcrypt();
+#ifdef PERL5
+char *des_crypt();
+#else
+char *crypt();
+#endif
+void des_ofb_encrypt();
+void des_pcbc_encrypt();
+DES_LONG des_quad_cksum();
+void des_random_seed();
+void des_random_key();
+int des_read_password();
+int des_read_2passwords();
+int des_read_pw_string();
+void des_set_odd_parity();
+int des_is_weak_key();
+int des_set_key();
+int des_key_sched();
+void des_string_to_key();
+void des_string_to_2keys();
+void des_cfb64_encrypt();
+void des_ofb64_encrypt();
+int des_read_pw();
+void des_xwhite_in2out();
+
+/* Extra functions from Mark Murray <mark@grondar.za> */
+void des_cblock_print_file();
+/* The following functions are not in the normal unix build or the
+ * SSLeay build.  When using the SSLeay build, use RAND_seed()
+ * and RAND_bytes() instead. */
+#ifdef FreeBSD
+int des_new_random_key();
+void des_init_random_number_generator();
+void des_set_random_generator_seed();
+void des_set_sequence_number();
+void des_generate_random_block();
+#endif
+
+#endif
+
+#ifdef  __cplusplus
+}
+#endif
+
+#endif
diff --git a/crypto/des/des.org b/crypto/des/des.org
deleted file mode 100644 (file)
index 0e84c6e..0000000
+++ /dev/null
@@ -1,321 +0,0 @@
-/* crypto/des/des.org */
-/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
- * All rights reserved.
- *
- * This package is an SSL implementation written
- * by Eric Young (eay@cryptsoft.com).
- * The implementation was written so as to conform with Netscapes SSL.
- * 
- * This library is free for commercial and non-commercial use as long as
- * the following conditions are aheared to.  The following conditions
- * apply to all code found in this distribution, be it the RC4, RSA,
- * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
- * included with this distribution is covered by the same copyright terms
- * except that the holder is Tim Hudson (tjh@cryptsoft.com).
- * 
- * Copyright remains Eric Young's, and as such any Copyright notices in
- * the code are not to be removed.
- * If this package is used in a product, Eric Young should be given attribution
- * as the author of the parts of the library used.
- * This can be in the form of a textual message at program startup or
- * in documentation (online or textual) provided with the package.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    "This product includes cryptographic software written by
- *     Eric Young (eay@cryptsoft.com)"
- *    The word 'cryptographic' can be left out if the rouines from the library
- *    being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from 
- *    the apps directory (application code) you must include an acknowledgement:
- *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- * 
- * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
- * The licence and distribution terms for any publically available version or
- * derivative of this code cannot be changed.  i.e. this code cannot simply be
- * copied and put under another distribution licence
- * [including the GNU Public Licence.]
- */
-
-/* WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING 
- *
- * Always modify des.org since des.h is automatically generated from
- * it during SSLeay configuration.
- *
- * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
- */
-
-#ifndef HEADER_DES_H
-#define HEADER_DES_H
-
-#ifdef  __cplusplus
-extern "C" {
-#endif
-
-#include <stdio.h>
-
-/* If this is set to 'unsigned int' on a DEC Alpha, this gives about a
- * %20 speed up (longs are 8 bytes, int's are 4). */
-#ifndef DES_LONG
-#define DES_LONG unsigned long
-#endif
-
-typedef unsigned char des_cblock[8];
-typedef unsigned char *des_cblocks; /* Unfortunately there's no way to say that
-                                      we want a multiple of 8 */
-typedef struct des_ks_struct
-       {
-       union   {
-               des_cblock _;
-               /* make sure things are correct size on machines with
-                * 8 byte longs */
-               DES_LONG pad[2];
-               } ks;
-#undef _
-#define _      ks._
-       int weak_key;
-       } des_key_schedule[16];
-
-#define DES_KEY_SZ     (sizeof(des_cblock))
-#define DES_SCHEDULE_SZ (sizeof(des_key_schedule))
-
-#define DES_ENCRYPT    1
-#define DES_DECRYPT    0
-
-#define DES_CBC_MODE   0
-#define DES_PCBC_MODE  1
-
-#define des_ecb2_encrypt(i,o,k1,k2,e) \
-       des_ecb3_encrypt((i),(o),(k1),(k2),(k1),(e))
-
-#define des_ede2_cbc_encrypt(i,o,l,k1,k2,iv,e) \
-       des_ede3_cbc_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(e))
-
-#define des_ede2_cfb64_encrypt(i,o,l,k1,k2,iv,n,e) \
-       des_ede3_cfb64_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(n),(e))
-
-#define des_ede2_ofb64_encrypt(i,o,l,k1,k2,iv,n) \
-       des_ede3_ofb64_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(n))
-
-#define C_Block des_cblock
-#define Key_schedule des_key_schedule
-#ifdef KERBEROS
-#define ENCRYPT DES_ENCRYPT
-#define DECRYPT DES_DECRYPT
-#endif
-#define KEY_SZ DES_KEY_SZ
-#define string_to_key des_string_to_key
-#define read_pw_string des_read_pw_string
-#define random_key des_random_key
-#define pcbc_encrypt des_pcbc_encrypt
-#define set_key des_set_key
-#define key_sched des_key_sched
-#define ecb_encrypt des_ecb_encrypt
-#define cbc_encrypt des_cbc_encrypt
-#define ncbc_encrypt des_ncbc_encrypt
-#define xcbc_encrypt des_xcbc_encrypt
-#define cbc_cksum des_cbc_cksum
-#define quad_cksum des_quad_cksum
-
-/* For compatibility with the MIT lib - eay 20/05/92 */
-typedef des_key_schedule bit_64;
-#define des_fixup_key_parity des_set_odd_parity
-#define des_check_key_parity check_parity
-
-extern int des_check_key;      /* defaults to false */
-extern int des_rw_mode;                /* defaults to DES_PCBC_MODE */
-extern int des_set_weak_key_flag; /* set the weak key flag */
-
-/* The next line is used to disable full ANSI prototypes, if your
- * compiler has problems with the prototypes, make sure this line always
- * evaluates to true :-) */
-#if defined(MSDOS) || defined(__STDC__)
-#undef NOPROTO
-#endif
-#ifndef NOPROTO
-const char *des_options(void);
-void des_ecb3_encrypt(const des_cblock input, des_cblock output,
-                     des_key_schedule ks1,des_key_schedule ks2,
-                     des_key_schedule ks3, int enc);
-DES_LONG des_cbc_cksum(const unsigned char *input,des_cblock output,
-                      long length,des_key_schedule schedule,
-                      const des_cblock ivec);
-void des_cbc_encrypt(const unsigned char *input,unsigned char *output,
-                    long length,des_key_schedule schedule,des_cblock ivec,
-                    int enc);
-void des_ncbc_encrypt(const unsigned char *input,unsigned char *output,
-                     long length,des_key_schedule schedule,des_cblock ivec,
-                     int enc);
-void des_xcbc_encrypt(const unsigned char *input,unsigned char *output,
-                     long length,des_key_schedule schedule,des_cblock ivec,
-                     const des_cblock inw,const des_cblock outw,int enc);
-void des_cfb_encrypt(const unsigned char *in,unsigned char *out,int numbits,
-                    long length,des_key_schedule schedule,des_cblock ivec,
-                    int enc);
-void des_ecb_encrypt(const des_cblock input,des_cblock output,
-                    des_key_schedule ks,int enc);
-void des_encrypt(DES_LONG *data,des_key_schedule ks, int enc);
-void des_encrypt2(DES_LONG *data,des_key_schedule ks, int enc);
-void des_encrypt3(DES_LONG *data, des_key_schedule ks1,
-       des_key_schedule ks2, des_key_schedule ks3);
-void des_decrypt3(DES_LONG *data, des_key_schedule ks1,
-       des_key_schedule ks2, des_key_schedule ks3);
-void des_ede3_cbc_encrypt(const unsigned char *input,unsigned char *output, 
-                         long length,
-                         des_key_schedule ks1,des_key_schedule ks2,
-                         des_key_schedule ks3,des_cblock ivec,int enc);
-void des_ede3_cbcm_encrypt(const unsigned char *in,unsigned char *out,
-                          long length,
-                          des_key_schedule ks1,des_key_schedule ks2,
-                          des_key_schedule ks3,
-                          des_cblock ivec1,des_cblock ivec2,
-                          int enc);
-void des_ede3_cfb64_encrypt(const unsigned char *in,unsigned char *out,
-                           long length,des_key_schedule ks1,
-                           des_key_schedule ks2,des_key_schedule ks3,
-                           des_cblock ivec,int *num,int enc);
-void des_ede3_ofb64_encrypt(const unsigned char *in,unsigned char *out,
-                           long length,des_key_schedule ks1,
-                           des_key_schedule ks2,des_key_schedule ks3,
-                           des_cblock ivec,int *num);
-
-void des_xwhite_in2out(const des_cblock des_key,const des_cblock in_white,
-                      des_cblock out_white);
-
-int des_enc_read(int fd,char *buf,int len,des_key_schedule sched,
-                des_cblock iv);
-int des_enc_write(int fd,const char *buf,int len,des_key_schedule sched,
-                 des_cblock iv);
-char *des_fcrypt(const char *buf,const char *salt, char *ret);
-#if defined(PERL5) || defined(__FreeBSD__)
-char *des_crypt(const char *buf,const char *salt);
-#else
-/* some stupid compilers complain because I have declared char instead
- * of const char */
-#ifdef HEADER_DES_LOCL_H
-char *crypt(const char *buf,const char *salt);
-#else
-char *crypt();
-#endif
-#endif
-void des_ofb_encrypt(const unsigned char *in,unsigned char *out,int numbits,
-                    long length,des_key_schedule schedule,des_cblock ivec);
-void des_pcbc_encrypt(const unsigned char *input,unsigned char *output,
-                     long length,des_key_schedule schedule,des_cblock ivec,
-                     int enc);
-DES_LONG des_quad_cksum(const unsigned char *input,des_cblocks output,
-                       long length,int out_count,des_cblock seed);
-void des_random_seed(des_cblock key);
-void des_random_key(des_cblock ret);
-int des_read_password(des_cblock key,const char *prompt,int verify);
-int des_read_2passwords(des_cblock key1,des_cblock key2,
-                       const char *prompt,int verify);
-int des_read_pw_string(char *buf,int length,const char *prompt,int verify);
-void des_set_odd_parity(des_cblock key);
-int des_is_weak_key(const des_cblock key);
-int des_set_key(const des_cblock key,des_key_schedule schedule);
-int des_key_sched(const des_cblock key,des_key_schedule schedule);
-void des_string_to_key(const char *str,des_cblock key);
-void des_string_to_2keys(const char *str,des_cblock key1,des_cblock key2);
-void des_cfb64_encrypt(const unsigned char *in,unsigned char *out,long length,
-                      des_key_schedule schedule,des_cblock ivec,int *num,
-                      int enc);
-void des_ofb64_encrypt(const unsigned char *in,unsigned char *out,long length,
-                      des_key_schedule schedule,des_cblock ivec,int *num);
-int des_read_pw(char *buf,char *buff,int size,const char *prompt,int verify);
-
-/* Extra functions from Mark Murray <mark@grondar.za> */
-void des_cblock_print_file(const des_cblock cb, FILE *fp);
-/* The following functions are not in the normal unix build or the
- * SSLeay build.  When using the SSLeay build, use RAND_seed()
- * and RAND_bytes() instead. */
-int des_new_random_key(des_cblock *key);
-void des_init_random_number_generator(des_cblock *key);
-void des_set_random_generator_seed(des_cblock *key);
-void des_set_sequence_number(des_cblock new_sequence_number);
-void des_generate_random_block(des_cblock *block);
-
-#else
-
-char *des_options();
-void des_ecb3_encrypt();
-DES_LONG des_cbc_cksum();
-void des_cbc_encrypt();
-void des_ncbc_encrypt();
-void des_xcbc_encrypt();
-void des_cfb_encrypt();
-void des_ede3_cfb64_encrypt();
-void des_ede3_ofb64_encrypt();
-void des_ecb_encrypt();
-void des_encrypt();
-void des_encrypt2();
-void des_encrypt3();
-void des_decrypt3();
-void des_ede3_cbc_encrypt();
-void des_ede3_cbcm_encrypt();
-int des_enc_read();
-int des_enc_write();
-char *des_fcrypt();
-#ifdef PERL5
-char *des_crypt();
-#else
-char *crypt();
-#endif
-void des_ofb_encrypt();
-void des_pcbc_encrypt();
-DES_LONG des_quad_cksum();
-void des_random_seed();
-void des_random_key();
-int des_read_password();
-int des_read_2passwords();
-int des_read_pw_string();
-void des_set_odd_parity();
-int des_is_weak_key();
-int des_set_key();
-int des_key_sched();
-void des_string_to_key();
-void des_string_to_2keys();
-void des_cfb64_encrypt();
-void des_ofb64_encrypt();
-int des_read_pw();
-void des_xwhite_in2out();
-
-/* Extra functions from Mark Murray <mark@grondar.za> */
-void des_cblock_print_file();
-/* The following functions are not in the normal unix build or the
- * SSLeay build.  When using the SSLeay build, use RAND_seed()
- * and RAND_bytes() instead. */
-#ifdef FreeBSD
-int des_new_random_key();
-void des_init_random_number_generator();
-void des_set_random_generator_seed();
-void des_set_sequence_number();
-void des_generate_random_block();
-#endif
-
-#endif
-
-#ifdef  __cplusplus
-}
-#endif
-
-#endif
diff --git a/crypto/des/des_locl.h b/crypto/des/des_locl.h
new file mode 100644 (file)
index 0000000..d01c704
--- /dev/null
@@ -0,0 +1,440 @@
+/* crypto/des/des_locl.org */
+/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
+ * All rights reserved.
+ *
+ * This package is an SSL implementation written
+ * by Eric Young (eay@cryptsoft.com).
+ * The implementation was written so as to conform with Netscapes SSL.
+ * 
+ * This library is free for commercial and non-commercial use as long as
+ * the following conditions are aheared to.  The following conditions
+ * apply to all code found in this distribution, be it the RC4, RSA,
+ * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
+ * included with this distribution is covered by the same copyright terms
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
+ * 
+ * Copyright remains Eric Young's, and as such any Copyright notices in
+ * the code are not to be removed.
+ * If this package is used in a product, Eric Young should be given attribution
+ * as the author of the parts of the library used.
+ * This can be in the form of a textual message at program startup or
+ * in documentation (online or textual) provided with the package.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    "This product includes cryptographic software written by
+ *     Eric Young (eay@cryptsoft.com)"
+ *    The word 'cryptographic' can be left out if the rouines from the library
+ *    being used are not cryptographic related :-).
+ * 4. If you include any Windows specific code (or a derivative thereof) from 
+ *    the apps directory (application code) you must include an acknowledgement:
+ *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
+ * 
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * 
+ * The licence and distribution terms for any publically available version or
+ * derivative of this code cannot be changed.  i.e. this code cannot simply be
+ * copied and put under another distribution licence
+ * [including the GNU Public Licence.]
+ */
+
+#ifndef HEADER_DES_LOCL_H
+#define HEADER_DES_LOCL_H
+
+#if defined(WIN32) || defined(WIN16)
+#ifndef MSDOS
+#define MSDOS
+#endif
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#ifndef MSDOS
+#include <unistd.h>
+#endif
+#include "des.h"
+
+#include "opensslconf.h"
+
+#ifdef MSDOS           /* Visual C++ 2.1 (Windows NT/95) */
+#include <stdlib.h>
+#include <errno.h>
+#include <time.h>
+#include <io.h>
+#ifndef RAND
+#define RAND
+#endif
+#undef NOPROTO
+#endif
+
+#if defined(__STDC__) || defined(VMS) || defined(M_XENIX) || defined(MSDOS)
+#include <string.h>
+#endif
+
+#ifndef RAND
+#define RAND
+#endif
+
+#ifdef linux
+#undef RAND
+#endif
+
+#ifdef MSDOS
+#define getpid() 2
+#define RAND
+#undef NOPROTO
+#endif
+
+#if defined(NOCONST)
+#define const
+#endif
+
+#ifdef __STDC__
+#undef NOPROTO
+#endif
+
+#ifdef RAND
+#define srandom(s) srand(s)
+#define random rand
+#endif
+
+#define ITERATIONS 16
+#define HALF_ITERATIONS 8
+
+/* used in des_read and des_write */
+#define MAXWRITE       (1024*16)
+#define BSIZE          (MAXWRITE+4)
+
+#define c2l(c,l)       (l =((DES_LONG)(*((c)++)))    , \
+                        l|=((DES_LONG)(*((c)++)))<< 8L, \
+                        l|=((DES_LONG)(*((c)++)))<<16L, \
+                        l|=((DES_LONG)(*((c)++)))<<24L)
+
+/* NOTE - c is not incremented as per c2l */
+#define c2ln(c,l1,l2,n)        { \
+                       c+=n; \
+                       l1=l2=0; \
+                       switch (n) { \
+                       case 8: l2 =((DES_LONG)(*(--(c))))<<24L; \
+                       case 7: l2|=((DES_LONG)(*(--(c))))<<16L; \
+                       case 6: l2|=((DES_LONG)(*(--(c))))<< 8L; \
+                       case 5: l2|=((DES_LONG)(*(--(c))));     \
+                       case 4: l1 =((DES_LONG)(*(--(c))))<<24L; \
+                       case 3: l1|=((DES_LONG)(*(--(c))))<<16L; \
+                       case 2: l1|=((DES_LONG)(*(--(c))))<< 8L; \
+                       case 1: l1|=((DES_LONG)(*(--(c))));     \
+                               } \
+                       }
+
+#define l2c(l,c)       (*((c)++)=(unsigned char)(((l)     )&0xff), \
+                        *((c)++)=(unsigned char)(((l)>> 8L)&0xff), \
+                        *((c)++)=(unsigned char)(((l)>>16L)&0xff), \
+                        *((c)++)=(unsigned char)(((l)>>24L)&0xff))
+
+/* replacements for htonl and ntohl since I have no idea what to do
+ * when faced with machines with 8 byte longs. */
+#define HDRSIZE 4
+
+#define n2l(c,l)       (l =((DES_LONG)(*((c)++)))<<24L, \
+                        l|=((DES_LONG)(*((c)++)))<<16L, \
+                        l|=((DES_LONG)(*((c)++)))<< 8L, \
+                        l|=((DES_LONG)(*((c)++))))
+
+#define l2n(l,c)       (*((c)++)=(unsigned char)(((l)>>24L)&0xff), \
+                        *((c)++)=(unsigned char)(((l)>>16L)&0xff), \
+                        *((c)++)=(unsigned char)(((l)>> 8L)&0xff), \
+                        *((c)++)=(unsigned char)(((l)     )&0xff))
+
+/* NOTE - c is not incremented as per l2c */
+#define l2cn(l1,l2,c,n)        { \
+                       c+=n; \
+                       switch (n) { \
+                       case 8: *(--(c))=(unsigned char)(((l2)>>24L)&0xff); \
+                       case 7: *(--(c))=(unsigned char)(((l2)>>16L)&0xff); \
+                       case 6: *(--(c))=(unsigned char)(((l2)>> 8L)&0xff); \
+                       case 5: *(--(c))=(unsigned char)(((l2)     )&0xff); \
+                       case 4: *(--(c))=(unsigned char)(((l1)>>24L)&0xff); \
+                       case 3: *(--(c))=(unsigned char)(((l1)>>16L)&0xff); \
+                       case 2: *(--(c))=(unsigned char)(((l1)>> 8L)&0xff); \
+                       case 1: *(--(c))=(unsigned char)(((l1)     )&0xff); \
+                               } \
+                       }
+
+#if defined(WIN32)
+#define        ROTATE(a,n)     (_lrotr(a,n))
+#else
+#define        ROTATE(a,n)     (((a)>>(n))+((a)<<(32-(n))))
+#endif
+
+/* Don't worry about the LOAD_DATA() stuff, that is used by
+ * fcrypt() to add it's little bit to the front */
+
+#ifdef DES_FCRYPT
+
+#define LOAD_DATA_tmp(R,S,u,t,E0,E1) \
+       { DES_LONG tmp; LOAD_DATA(R,S,u,t,E0,E1,tmp); }
+
+#define LOAD_DATA(R,S,u,t,E0,E1,tmp) \
+       t=R^(R>>16L); \
+       u=t&E0; t&=E1; \
+       tmp=(u<<16); u^=R^s[S  ]; u^=tmp; \
+       tmp=(t<<16); t^=R^s[S+1]; t^=tmp
+#else
+#define LOAD_DATA_tmp(a,b,c,d,e,f) LOAD_DATA(a,b,c,d,e,f,g)
+#define LOAD_DATA(R,S,u,t,E0,E1,tmp) \
+       u=R^s[S  ]; \
+       t=R^s[S+1]
+#endif
+
+/* The changes to this macro may help or hinder, depending on the
+ * compiler and the achitecture.  gcc2 always seems to do well :-).
+ * Inspired by Dana How <how@isl.stanford.edu>
+ * DO NOT use the alternative version on machines with 8 byte longs.
+ * It does not seem to work on the Alpha, even when DES_LONG is 4
+ * bytes, probably an issue of accessing non-word aligned objects :-( */
+#ifdef DES_PTR
+
+/* It recently occured to me that 0^0^0^0^0^0^0 == 0, so there
+ * is no reason to not xor all the sub items together.  This potentially
+ * saves a register since things can be xored directly into L */
+
+#if defined(DES_RISC1) || defined(DES_RISC2)
+#ifdef DES_RISC1
+#define D_ENCRYPT(LL,R,S) { \
+       unsigned int u1,u2,u3; \
+       LOAD_DATA(R,S,u,t,E0,E1,u1); \
+       u2=(int)u>>8L; \
+       u1=(int)u&0xfc; \
+       u2&=0xfc; \
+       t=ROTATE(t,4); \
+       u>>=16L; \
+       LL^= *(const DES_LONG *)(des_SP      +u1); \
+       LL^= *(const DES_LONG *)(des_SP+0x200+u2); \
+       u3=(int)(u>>8L); \
+       u1=(int)u&0xfc; \
+       u3&=0xfc; \
+       LL^= *(const DES_LONG *)(des_SP+0x400+u1); \
+       LL^= *(const DES_LONG *)(des_SP+0x600+u3); \
+       u2=(int)t>>8L; \
+       u1=(int)t&0xfc; \
+       u2&=0xfc; \
+       t>>=16L; \
+       LL^= *(const DES_LONG *)(des_SP+0x100+u1); \
+       LL^= *(const DES_LONG *)(des_SP+0x300+u2); \
+       u3=(int)t>>8L; \
+       u1=(int)t&0xfc; \
+       u3&=0xfc; \
+       LL^= *(const DES_LONG *)(des_SP+0x500+u1); \
+       LL^= *(const DES_LONG *)(des_SP+0x700+u3); }
+#endif
+#ifdef DES_RISC2
+#define D_ENCRYPT(LL,R,S) { \
+       unsigned int u1,u2,s1,s2; \
+       LOAD_DATA(R,S,u,t,E0,E1,u1); \
+       u2=(int)u>>8L; \
+       u1=(int)u&0xfc; \
+       u2&=0xfc; \
+       t=ROTATE(t,4); \
+       LL^= *(const DES_LONG *)(des_SP      +u1); \
+       LL^= *(const DES_LONG *)(des_SP+0x200+u2); \
+       s1=(int)(u>>16L); \
+       s2=(int)(u>>24L); \
+       s1&=0xfc; \
+       s2&=0xfc; \
+       LL^= *(const DES_LONG *)(des_SP+0x400+s1); \
+       LL^= *(const DES_LONG *)(des_SP+0x600+s2); \
+       u2=(int)t>>8L; \
+       u1=(int)t&0xfc; \
+       u2&=0xfc; \
+       LL^= *(const DES_LONG *)(des_SP+0x100+u1); \
+       LL^= *(const DES_LONG *)(des_SP+0x300+u2); \
+       s1=(int)(t>>16L); \
+       s2=(int)(t>>24L); \
+       s1&=0xfc; \
+       s2&=0xfc; \
+       LL^= *(const DES_LONG *)(des_SP+0x500+s1); \
+       LL^= *(const DES_LONG *)(des_SP+0x700+s2); }
+#endif
+#else
+#define D_ENCRYPT(LL,R,S) { \
+       LOAD_DATA_tmp(R,S,u,t,E0,E1); \
+       t=ROTATE(t,4); \
+       LL^= \
+       *(const DES_LONG *)(des_SP      +((u     )&0xfc))^ \
+       *(const DES_LONG *)(des_SP+0x200+((u>> 8L)&0xfc))^ \
+       *(const DES_LONG *)(des_SP+0x400+((u>>16L)&0xfc))^ \
+       *(const DES_LONG *)(des_SP+0x600+((u>>24L)&0xfc))^ \
+       *(const DES_LONG *)(des_SP+0x100+((t     )&0xfc))^ \
+       *(const DES_LONG *)(des_SP+0x300+((t>> 8L)&0xfc))^ \
+       *(const DES_LONG *)(des_SP+0x500+((t>>16L)&0xfc))^ \
+       *(const DES_LONG *)(des_SP+0x700+((t>>24L)&0xfc)); }
+#endif
+
+#else /* original version */
+
+#if defined(DES_RISC1) || defined(DES_RISC2)
+#ifdef DES_RISC1
+#define D_ENCRYPT(LL,R,S) {\
+       unsigned int u1,u2,u3; \
+       LOAD_DATA(R,S,u,t,E0,E1,u1); \
+       u>>=2L; \
+       t=ROTATE(t,6); \
+       u2=(int)u>>8L; \
+       u1=(int)u&0x3f; \
+       u2&=0x3f; \
+       u>>=16L; \
+       LL^=des_SPtrans[0][u1]; \
+       LL^=des_SPtrans[2][u2]; \
+       u3=(int)u>>8L; \
+       u1=(int)u&0x3f; \
+       u3&=0x3f; \
+       LL^=des_SPtrans[4][u1]; \
+       LL^=des_SPtrans[6][u3]; \
+       u2=(int)t>>8L; \
+       u1=(int)t&0x3f; \
+       u2&=0x3f; \
+       t>>=16L; \
+       LL^=des_SPtrans[1][u1]; \
+       LL^=des_SPtrans[3][u2]; \
+       u3=(int)t>>8L; \
+       u1=(int)t&0x3f; \
+       u3&=0x3f; \
+       LL^=des_SPtrans[5][u1]; \
+       LL^=des_SPtrans[7][u3]; }
+#endif
+#ifdef DES_RISC2
+#define D_ENCRYPT(LL,R,S) {\
+       unsigned int u1,u2,s1,s2; \
+       LOAD_DATA(R,S,u,t,E0,E1,u1); \
+       u>>=2L; \
+       t=ROTATE(t,6); \
+       u2=(int)u>>8L; \
+       u1=(int)u&0x3f; \
+       u2&=0x3f; \
+       LL^=des_SPtrans[0][u1]; \
+       LL^=des_SPtrans[2][u2]; \
+       s1=(int)u>>16L; \
+       s2=(int)u>>24L; \
+       s1&=0x3f; \
+       s2&=0x3f; \
+       LL^=des_SPtrans[4][s1]; \
+       LL^=des_SPtrans[6][s2]; \
+       u2=(int)t>>8L; \
+       u1=(int)t&0x3f; \
+       u2&=0x3f; \
+       LL^=des_SPtrans[1][u1]; \
+       LL^=des_SPtrans[3][u2]; \
+       s1=(int)t>>16; \
+       s2=(int)t>>24L; \
+       s1&=0x3f; \
+       s2&=0x3f; \
+       LL^=des_SPtrans[5][s1]; \
+       LL^=des_SPtrans[7][s2]; }
+#endif
+
+#else
+
+#define D_ENCRYPT(LL,R,S) {\
+       LOAD_DATA_tmp(R,S,u,t,E0,E1); \
+       t=ROTATE(t,4); \
+       LL^=\
+               des_SPtrans[0][(u>> 2L)&0x3f]^ \
+               des_SPtrans[2][(u>>10L)&0x3f]^ \
+               des_SPtrans[4][(u>>18L)&0x3f]^ \
+               des_SPtrans[6][(u>>26L)&0x3f]^ \
+               des_SPtrans[1][(t>> 2L)&0x3f]^ \
+               des_SPtrans[3][(t>>10L)&0x3f]^ \
+               des_SPtrans[5][(t>>18L)&0x3f]^ \
+               des_SPtrans[7][(t>>26L)&0x3f]; }
+#endif
+#endif
+
+       /* IP and FP
+        * The problem is more of a geometric problem that random bit fiddling.
+        0  1  2  3  4  5  6  7      62 54 46 38 30 22 14  6
+        8  9 10 11 12 13 14 15      60 52 44 36 28 20 12  4
+       16 17 18 19 20 21 22 23      58 50 42 34 26 18 10  2
+       24 25 26 27 28 29 30 31  to  56 48 40 32 24 16  8  0
+
+       32 33 34 35 36 37 38 39      63 55 47 39 31 23 15  7
+       40 41 42 43 44 45 46 47      61 53 45 37 29 21 13  5
+       48 49 50 51 52 53 54 55      59 51 43 35 27 19 11  3
+       56 57 58 59 60 61 62 63      57 49 41 33 25 17  9  1
+
+       The output has been subject to swaps of the form
+       0 1 -> 3 1 but the odd and even bits have been put into
+       2 3    2 0
+       different words.  The main trick is to remember that
+       t=((l>>size)^r)&(mask);
+       r^=t;
+       l^=(t<<size);
+       can be used to swap and move bits between words.
+
+       So l =  0  1  2  3  r = 16 17 18 19
+               4  5  6  7      20 21 22 23
+               8  9 10 11      24 25 26 27
+              12 13 14 15      28 29 30 31
+       becomes (for size == 2 and mask == 0x3333)
+          t =   2^16  3^17 -- --   l =  0  1 16 17  r =  2  3 18 19
+                6^20  7^21 -- --        4  5 20 21       6  7 22 23
+               10^24 11^25 -- --        8  9 24 25      10 11 24 25
+               14^28 15^29 -- --       12 13 28 29      14 15 28 29
+
+       Thanks for hints from Richard Outerbridge - he told me IP&FP
+       could be done in 15 xor, 10 shifts and 5 ands.
+       When I finally started to think of the problem in 2D
+       I first got ~42 operations without xors.  When I remembered
+       how to use xors :-) I got it to its final state.
+       */
+#define PERM_OP(a,b,t,n,m) ((t)=((((a)>>(n))^(b))&(m)),\
+       (b)^=(t),\
+       (a)^=((t)<<(n)))
+
+#define IP(l,r) \
+       { \
+       register DES_LONG tt; \
+       PERM_OP(r,l,tt, 4,0x0f0f0f0fL); \
+       PERM_OP(l,r,tt,16,0x0000ffffL); \
+       PERM_OP(r,l,tt, 2,0x33333333L); \
+       PERM_OP(l,r,tt, 8,0x00ff00ffL); \
+       PERM_OP(r,l,tt, 1,0x55555555L); \
+       }
+
+#define FP(l,r) \
+       { \
+       register DES_LONG tt; \
+       PERM_OP(l,r,tt, 1,0x55555555L); \
+       PERM_OP(r,l,tt, 8,0x00ff00ffL); \
+       PERM_OP(l,r,tt, 2,0x33333333L); \
+       PERM_OP(r,l,tt,16,0x0000ffffL); \
+       PERM_OP(l,r,tt, 4,0x0f0f0f0fL); \
+       }
+
+extern const DES_LONG des_SPtrans[8][64];
+
+#ifndef NOPROTO
+void fcrypt_body(DES_LONG *out,des_key_schedule ks,
+       DES_LONG Eswap0, DES_LONG Eswap1);
+#else
+void fcrypt_body();
+#endif
+
+#endif
diff --git a/crypto/des/des_locl.org b/crypto/des/des_locl.org
deleted file mode 100644 (file)
index c9e8be3..0000000
+++ /dev/null
@@ -1,516 +0,0 @@
-/* crypto/des/des_locl.org */
-/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
- * All rights reserved.
- *
- * This package is an SSL implementation written
- * by Eric Young (eay@cryptsoft.com).
- * The implementation was written so as to conform with Netscapes SSL.
- * 
- * This library is free for commercial and non-commercial use as long as
- * the following conditions are aheared to.  The following conditions
- * apply to all code found in this distribution, be it the RC4, RSA,
- * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
- * included with this distribution is covered by the same copyright terms
- * except that the holder is Tim Hudson (tjh@cryptsoft.com).
- * 
- * Copyright remains Eric Young's, and as such any Copyright notices in
- * the code are not to be removed.
- * If this package is used in a product, Eric Young should be given attribution
- * as the author of the parts of the library used.
- * This can be in the form of a textual message at program startup or
- * in documentation (online or textual) provided with the package.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    "This product includes cryptographic software written by
- *     Eric Young (eay@cryptsoft.com)"
- *    The word 'cryptographic' can be left out if the rouines from the library
- *    being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from 
- *    the apps directory (application code) you must include an acknowledgement:
- *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- * 
- * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
- * The licence and distribution terms for any publically available version or
- * derivative of this code cannot be changed.  i.e. this code cannot simply be
- * copied and put under another distribution licence
- * [including the GNU Public Licence.]
- */
-
-/* WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
- *
- * Always modify des_locl.org since des_locl.h is automatically generated from
- * it during SSLeay configuration.
- *
- * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
- */
-
-#ifndef HEADER_DES_LOCL_H
-#define HEADER_DES_LOCL_H
-
-#if defined(WIN32) || defined(WIN16)
-#ifndef MSDOS
-#define MSDOS
-#endif
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#ifndef MSDOS
-#include <unistd.h>
-#endif
-#include "des.h"
-
-#ifndef DES_DEFAULT_OPTIONS
-/* the following is tweaked from a config script, that is why it is a
- * protected undef/define */
-#ifndef DES_PTR
-#undef DES_PTR
-#endif
-
-/* This helps C compiler generate the correct code for multiple functional
- * units.  It reduces register dependancies at the expense of 2 more
- * registers */
-#ifndef DES_RISC1
-#undef DES_RISC1
-#endif
-
-#ifndef DES_RISC2
-#undef DES_RISC2
-#endif
-
-#if defined(DES_RISC1) && defined(DES_RISC2)
-YOU SHOULD NOT HAVE BOTH DES_RISC1 AND DES_RISC2 DEFINED!!!!!
-#endif
-
-/* Unroll the inner loop, this sometimes helps, sometimes hinders.
- * Very mucy CPU dependant */
-#ifndef DES_UNROLL
-#undef DES_UNROLL
-#endif
-
-/* These default values were supplied by
- * Peter Gutman <pgut001@cs.auckland.ac.nz>
- * They are only used if nothing else has been defined */
-#if !defined(DES_PTR) && !defined(DES_RISC1) && !defined(DES_RISC2) && !defined(DES_UNROLL)
-/* Special defines which change the way the code is built depending on the
-   CPU and OS.  For SGI machines you can use _MIPS_SZLONG (32 or 64) to find
-   even newer MIPS CPU's, but at the moment one size fits all for
-   optimization options.  Older Sparc's work better with only UNROLL, but
-   there's no way to tell at compile time what it is you're running on */
-#if defined( sun )             /* Newer Sparc's */
-#  define DES_PTR
-#  define DES_RISC1
-#  define DES_UNROLL
-#elif defined( __ultrix )      /* Older MIPS */
-#  define DES_PTR
-#  define DES_RISC2
-#  define DES_UNROLL
-#elif defined( __osf1__ )      /* Alpha */
-#  define DES_PTR
-#  define DES_RISC2
-#elif defined ( _AIX )         /* RS6000 */
-  /* Unknown */
-#elif defined( __hpux )                /* HP-PA */
-  /* Unknown */
-#elif defined( __aux )         /* 68K */
-  /* Unknown */
-#elif defined( __dgux )                /* 88K (but P6 in latest boxes) */
-#  define DES_UNROLL
-#elif defined( __sgi )         /* Newer MIPS */
-#  define DES_PTR
-#  define DES_RISC2
-#  define DES_UNROLL
-#elif defined( i386 )          /* x86 boxes, should be gcc */
-#  define DES_PTR
-#  define DES_RISC1
-#  define DES_UNROLL
-#endif /* Systems-specific speed defines */
-#endif
-
-#endif /* DES_DEFAULT_OPTIONS */
-
-#ifdef MSDOS           /* Visual C++ 2.1 (Windows NT/95) */
-#include <stdlib.h>
-#include <errno.h>
-#include <time.h>
-#include <io.h>
-#ifndef RAND
-#define RAND
-#endif
-#undef NOPROTO
-#endif
-
-#if defined(__STDC__) || defined(VMS) || defined(M_XENIX) || defined(MSDOS)
-#include <string.h>
-#endif
-
-#ifndef RAND
-#define RAND
-#endif
-
-#ifdef linux
-#undef RAND
-#endif
-
-#ifdef MSDOS
-#define getpid() 2
-#define RAND
-#undef NOPROTO
-#endif
-
-#if defined(NOCONST)
-#define const
-#endif
-
-#ifdef __STDC__
-#undef NOPROTO
-#endif
-
-#ifdef RAND
-#define srandom(s) srand(s)
-#define random rand
-#endif
-
-#define ITERATIONS 16
-#define HALF_ITERATIONS 8
-
-/* used in des_read and des_write */
-#define MAXWRITE       (1024*16)
-#define BSIZE          (MAXWRITE+4)
-
-#define c2l(c,l)       (l =((DES_LONG)(*((c)++)))    , \
-                        l|=((DES_LONG)(*((c)++)))<< 8L, \
-                        l|=((DES_LONG)(*((c)++)))<<16L, \
-                        l|=((DES_LONG)(*((c)++)))<<24L)
-
-/* NOTE - c is not incremented as per c2l */
-#define c2ln(c,l1,l2,n)        { \
-                       c+=n; \
-                       l1=l2=0; \
-                       switch (n) { \
-                       case 8: l2 =((DES_LONG)(*(--(c))))<<24L; \
-                       case 7: l2|=((DES_LONG)(*(--(c))))<<16L; \
-                       case 6: l2|=((DES_LONG)(*(--(c))))<< 8L; \
-                       case 5: l2|=((DES_LONG)(*(--(c))));     \
-                       case 4: l1 =((DES_LONG)(*(--(c))))<<24L; \
-                       case 3: l1|=((DES_LONG)(*(--(c))))<<16L; \
-                       case 2: l1|=((DES_LONG)(*(--(c))))<< 8L; \
-                       case 1: l1|=((DES_LONG)(*(--(c))));     \
-                               } \
-                       }
-
-#define l2c(l,c)       (*((c)++)=(unsigned char)(((l)     )&0xff), \
-                        *((c)++)=(unsigned char)(((l)>> 8L)&0xff), \
-                        *((c)++)=(unsigned char)(((l)>>16L)&0xff), \
-                        *((c)++)=(unsigned char)(((l)>>24L)&0xff))
-
-/* replacements for htonl and ntohl since I have no idea what to do
- * when faced with machines with 8 byte longs. */
-#define HDRSIZE 4
-
-#define n2l(c,l)       (l =((DES_LONG)(*((c)++)))<<24L, \
-                        l|=((DES_LONG)(*((c)++)))<<16L, \
-                        l|=((DES_LONG)(*((c)++)))<< 8L, \
-                        l|=((DES_LONG)(*((c)++))))
-
-#define l2n(l,c)       (*((c)++)=(unsigned char)(((l)>>24L)&0xff), \
-                        *((c)++)=(unsigned char)(((l)>>16L)&0xff), \
-                        *((c)++)=(unsigned char)(((l)>> 8L)&0xff), \
-                        *((c)++)=(unsigned char)(((l)     )&0xff))
-
-/* NOTE - c is not incremented as per l2c */
-#define l2cn(l1,l2,c,n)        { \
-                       c+=n; \
-                       switch (n) { \
-                       case 8: *(--(c))=(unsigned char)(((l2)>>24L)&0xff); \
-                       case 7: *(--(c))=(unsigned char)(((l2)>>16L)&0xff); \
-                       case 6: *(--(c))=(unsigned char)(((l2)>> 8L)&0xff); \
-                       case 5: *(--(c))=(unsigned char)(((l2)     )&0xff); \
-                       case 4: *(--(c))=(unsigned char)(((l1)>>24L)&0xff); \
-                       case 3: *(--(c))=(unsigned char)(((l1)>>16L)&0xff); \
-                       case 2: *(--(c))=(unsigned char)(((l1)>> 8L)&0xff); \
-                       case 1: *(--(c))=(unsigned char)(((l1)     )&0xff); \
-                               } \
-                       }
-
-#if defined(WIN32)
-#define        ROTATE(a,n)     (_lrotr(a,n))
-#else
-#define        ROTATE(a,n)     (((a)>>(n))+((a)<<(32-(n))))
-#endif
-
-/* Don't worry about the LOAD_DATA() stuff, that is used by
- * fcrypt() to add it's little bit to the front */
-
-#ifdef DES_FCRYPT
-
-#define LOAD_DATA_tmp(R,S,u,t,E0,E1) \
-       { DES_LONG tmp; LOAD_DATA(R,S,u,t,E0,E1,tmp); }
-
-#define LOAD_DATA(R,S,u,t,E0,E1,tmp) \
-       t=R^(R>>16L); \
-       u=t&E0; t&=E1; \
-       tmp=(u<<16); u^=R^s[S  ]; u^=tmp; \
-       tmp=(t<<16); t^=R^s[S+1]; t^=tmp
-#else
-#define LOAD_DATA_tmp(a,b,c,d,e,f) LOAD_DATA(a,b,c,d,e,f,g)
-#define LOAD_DATA(R,S,u,t,E0,E1,tmp) \
-       u=R^s[S  ]; \
-       t=R^s[S+1]
-#endif
-
-/* The changes to this macro may help or hinder, depending on the
- * compiler and the achitecture.  gcc2 always seems to do well :-).
- * Inspired by Dana How <how@isl.stanford.edu>
- * DO NOT use the alternative version on machines with 8 byte longs.
- * It does not seem to work on the Alpha, even when DES_LONG is 4
- * bytes, probably an issue of accessing non-word aligned objects :-( */
-#ifdef DES_PTR
-
-/* It recently occured to me that 0^0^0^0^0^0^0 == 0, so there
- * is no reason to not xor all the sub items together.  This potentially
- * saves a register since things can be xored directly into L */
-
-#if defined(DES_RISC1) || defined(DES_RISC2)
-#ifdef DES_RISC1
-#define D_ENCRYPT(LL,R,S) { \
-       unsigned int u1,u2,u3; \
-       LOAD_DATA(R,S,u,t,E0,E1,u1); \
-       u2=(int)u>>8L; \
-       u1=(int)u&0xfc; \
-       u2&=0xfc; \
-       t=ROTATE(t,4); \
-       u>>=16L; \
-       LL^= *(const DES_LONG *)(des_SP      +u1); \
-       LL^= *(const DES_LONG *)(des_SP+0x200+u2); \
-       u3=(int)(u>>8L); \
-       u1=(int)u&0xfc; \
-       u3&=0xfc; \
-       LL^= *(const DES_LONG *)(des_SP+0x400+u1); \
-       LL^= *(const DES_LONG *)(des_SP+0x600+u3); \
-       u2=(int)t>>8L; \
-       u1=(int)t&0xfc; \
-       u2&=0xfc; \
-       t>>=16L; \
-       LL^= *(const DES_LONG *)(des_SP+0x100+u1); \
-       LL^= *(const DES_LONG *)(des_SP+0x300+u2); \
-       u3=(int)t>>8L; \
-       u1=(int)t&0xfc; \
-       u3&=0xfc; \
-       LL^= *(const DES_LONG *)(des_SP+0x500+u1); \
-       LL^= *(const DES_LONG *)(des_SP+0x700+u3); }
-#endif
-#ifdef DES_RISC2
-#define D_ENCRYPT(LL,R,S) { \
-       unsigned int u1,u2,s1,s2; \
-       LOAD_DATA(R,S,u,t,E0,E1,u1); \
-       u2=(int)u>>8L; \
-       u1=(int)u&0xfc; \
-       u2&=0xfc; \
-       t=ROTATE(t,4); \
-       LL^= *(const DES_LONG *)(des_SP      +u1); \
-       LL^= *(const DES_LONG *)(des_SP+0x200+u2); \
-       s1=(int)(u>>16L); \
-       s2=(int)(u>>24L); \
-       s1&=0xfc; \
-       s2&=0xfc; \
-       LL^= *(const DES_LONG *)(des_SP+0x400+s1); \
-       LL^= *(const DES_LONG *)(des_SP+0x600+s2); \
-       u2=(int)t>>8L; \
-       u1=(int)t&0xfc; \
-       u2&=0xfc; \
-       LL^= *(const DES_LONG *)(des_SP+0x100+u1); \
-       LL^= *(const DES_LONG *)(des_SP+0x300+u2); \
-       s1=(int)(t>>16L); \
-       s2=(int)(t>>24L); \
-       s1&=0xfc; \
-       s2&=0xfc; \
-       LL^= *(const DES_LONG *)(des_SP+0x500+s1); \
-       LL^= *(const DES_LONG *)(des_SP+0x700+s2); }
-#endif
-#else
-#define D_ENCRYPT(LL,R,S) { \
-       LOAD_DATA_tmp(R,S,u,t,E0,E1); \
-       t=ROTATE(t,4); \
-       LL^= \
-       *(const DES_LONG *)(des_SP      +((u     )&0xfc))^ \
-       *(const DES_LONG *)(des_SP+0x200+((u>> 8L)&0xfc))^ \
-       *(const DES_LONG *)(des_SP+0x400+((u>>16L)&0xfc))^ \
-       *(const DES_LONG *)(des_SP+0x600+((u>>24L)&0xfc))^ \
-       *(const DES_LONG *)(des_SP+0x100+((t     )&0xfc))^ \
-       *(const DES_LONG *)(des_SP+0x300+((t>> 8L)&0xfc))^ \
-       *(const DES_LONG *)(des_SP+0x500+((t>>16L)&0xfc))^ \
-       *(const DES_LONG *)(des_SP+0x700+((t>>24L)&0xfc)); }
-#endif
-
-#else /* original version */
-
-#if defined(DES_RISC1) || defined(DES_RISC2)
-#ifdef DES_RISC1
-#define D_ENCRYPT(LL,R,S) {\
-       unsigned int u1,u2,u3; \
-       LOAD_DATA(R,S,u,t,E0,E1,u1); \
-       u>>=2L; \
-       t=ROTATE(t,6); \
-       u2=(int)u>>8L; \
-       u1=(int)u&0x3f; \
-       u2&=0x3f; \
-       u>>=16L; \
-       LL^=des_SPtrans[0][u1]; \
-       LL^=des_SPtrans[2][u2]; \
-       u3=(int)u>>8L; \
-       u1=(int)u&0x3f; \
-       u3&=0x3f; \
-       LL^=des_SPtrans[4][u1]; \
-       LL^=des_SPtrans[6][u3]; \
-       u2=(int)t>>8L; \
-       u1=(int)t&0x3f; \
-       u2&=0x3f; \
-       t>>=16L; \
-       LL^=des_SPtrans[1][u1]; \
-       LL^=des_SPtrans[3][u2]; \
-       u3=(int)t>>8L; \
-       u1=(int)t&0x3f; \
-       u3&=0x3f; \
-       LL^=des_SPtrans[5][u1]; \
-       LL^=des_SPtrans[7][u3]; }
-#endif
-#ifdef DES_RISC2
-#define D_ENCRYPT(LL,R,S) {\
-       unsigned int u1,u2,s1,s2; \
-       LOAD_DATA(R,S,u,t,E0,E1,u1); \
-       u>>=2L; \
-       t=ROTATE(t,6); \
-       u2=(int)u>>8L; \
-       u1=(int)u&0x3f; \
-       u2&=0x3f; \
-       LL^=des_SPtrans[0][u1]; \
-       LL^=des_SPtrans[2][u2]; \
-       s1=(int)u>>16L; \
-       s2=(int)u>>24L; \
-       s1&=0x3f; \
-       s2&=0x3f; \
-       LL^=des_SPtrans[4][s1]; \
-       LL^=des_SPtrans[6][s2]; \
-       u2=(int)t>>8L; \
-       u1=(int)t&0x3f; \
-       u2&=0x3f; \
-       LL^=des_SPtrans[1][u1]; \
-       LL^=des_SPtrans[3][u2]; \
-       s1=(int)t>>16; \
-       s2=(int)t>>24L; \
-       s1&=0x3f; \
-       s2&=0x3f; \
-       LL^=des_SPtrans[5][s1]; \
-       LL^=des_SPtrans[7][s2]; }
-#endif
-
-#else
-
-#define D_ENCRYPT(LL,R,S) {\
-       LOAD_DATA_tmp(R,S,u,t,E0,E1); \
-       t=ROTATE(t,4); \
-       LL^=\
-               des_SPtrans[0][(u>> 2L)&0x3f]^ \
-               des_SPtrans[2][(u>>10L)&0x3f]^ \
-               des_SPtrans[4][(u>>18L)&0x3f]^ \
-               des_SPtrans[6][(u>>26L)&0x3f]^ \
-               des_SPtrans[1][(t>> 2L)&0x3f]^ \
-               des_SPtrans[3][(t>>10L)&0x3f]^ \
-               des_SPtrans[5][(t>>18L)&0x3f]^ \
-               des_SPtrans[7][(t>>26L)&0x3f]; }
-#endif
-#endif
-
-       /* IP and FP
-        * The problem is more of a geometric problem that random bit fiddling.
-        0  1  2  3  4  5  6  7      62 54 46 38 30 22 14  6
-        8  9 10 11 12 13 14 15      60 52 44 36 28 20 12  4
-       16 17 18 19 20 21 22 23      58 50 42 34 26 18 10  2
-       24 25 26 27 28 29 30 31  to  56 48 40 32 24 16  8  0
-
-       32 33 34 35 36 37 38 39      63 55 47 39 31 23 15  7
-       40 41 42 43 44 45 46 47      61 53 45 37 29 21 13  5
-       48 49 50 51 52 53 54 55      59 51 43 35 27 19 11  3
-       56 57 58 59 60 61 62 63      57 49 41 33 25 17  9  1
-
-       The output has been subject to swaps of the form
-       0 1 -> 3 1 but the odd and even bits have been put into
-       2 3    2 0
-       different words.  The main trick is to remember that
-       t=((l>>size)^r)&(mask);
-       r^=t;
-       l^=(t<<size);
-       can be used to swap and move bits between words.
-
-       So l =  0  1  2  3  r = 16 17 18 19
-               4  5  6  7      20 21 22 23
-               8  9 10 11      24 25 26 27
-              12 13 14 15      28 29 30 31
-       becomes (for size == 2 and mask == 0x3333)
-          t =   2^16  3^17 -- --   l =  0  1 16 17  r =  2  3 18 19
-                6^20  7^21 -- --        4  5 20 21       6  7 22 23
-               10^24 11^25 -- --        8  9 24 25      10 11 24 25
-               14^28 15^29 -- --       12 13 28 29      14 15 28 29
-
-       Thanks for hints from Richard Outerbridge - he told me IP&FP
-       could be done in 15 xor, 10 shifts and 5 ands.
-       When I finally started to think of the problem in 2D
-       I first got ~42 operations without xors.  When I remembered
-       how to use xors :-) I got it to its final state.
-       */
-#define PERM_OP(a,b,t,n,m) ((t)=((((a)>>(n))^(b))&(m)),\
-       (b)^=(t),\
-       (a)^=((t)<<(n)))
-
-#define IP(l,r) \
-       { \
-       register DES_LONG tt; \
-       PERM_OP(r,l,tt, 4,0x0f0f0f0fL); \
-       PERM_OP(l,r,tt,16,0x0000ffffL); \
-       PERM_OP(r,l,tt, 2,0x33333333L); \
-       PERM_OP(l,r,tt, 8,0x00ff00ffL); \
-       PERM_OP(r,l,tt, 1,0x55555555L); \
-       }
-
-#define FP(l,r) \
-       { \
-       register DES_LONG tt; \
-       PERM_OP(l,r,tt, 1,0x55555555L); \
-       PERM_OP(r,l,tt, 8,0x00ff00ffL); \
-       PERM_OP(l,r,tt, 2,0x33333333L); \
-       PERM_OP(r,l,tt,16,0x0000ffffL); \
-       PERM_OP(l,r,tt, 4,0x0f0f0f0fL); \
-       }
-
-extern const DES_LONG des_SPtrans[8][64];
-
-#ifndef NOPROTO
-void fcrypt_body(DES_LONG *out,des_key_schedule ks,
-       DES_LONG Eswap0, DES_LONG Eswap1);
-#else
-void fcrypt_body();
-#endif
-
-#endif
diff --git a/crypto/idea/idea.h b/crypto/idea/idea.h
new file mode 100644 (file)
index 0000000..59a9fa3
--- /dev/null
@@ -0,0 +1,107 @@
+/* crypto/idea/idea.org */
+/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
+ * All rights reserved.
+ *
+ * This package is an SSL implementation written
+ * by Eric Young (eay@cryptsoft.com).
+ * The implementation was written so as to conform with Netscapes SSL.
+ * 
+ * This library is free for commercial and non-commercial use as long as
+ * the following conditions are aheared to.  The following conditions
+ * apply to all code found in this distribution, be it the RC4, RSA,
+ * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
+ * included with this distribution is covered by the same copyright terms
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
+ * 
+ * Copyright remains Eric Young's, and as such any Copyright notices in
+ * the code are not to be removed.
+ * If this package is used in a product, Eric Young should be given attribution
+ * as the author of the parts of the library used.
+ * This can be in the form of a textual message at program startup or
+ * in documentation (online or textual) provided with the package.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    "This product includes cryptographic software written by
+ *     Eric Young (eay@cryptsoft.com)"
+ *    The word 'cryptographic' can be left out if the rouines from the library
+ *    being used are not cryptographic related :-).
+ * 4. If you include any Windows specific code (or a derivative thereof) from 
+ *    the apps directory (application code) you must include an acknowledgement:
+ *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
+ * 
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * 
+ * The licence and distribution terms for any publically available version or
+ * derivative of this code cannot be changed.  i.e. this code cannot simply be
+ * copied and put under another distribution licence
+ * [including the GNU Public Licence.]
+ */
+
+#ifndef HEADER_IDEA_H
+#define HEADER_IDEA_H
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
+#define IDEA_ENCRYPT   1
+#define IDEA_DECRYPT   0
+
+#include "opensslconf.h" /* IDEA_INT */
+#define IDEA_BLOCK     8
+#define IDEA_KEY_LENGTH        16
+
+typedef struct idea_key_st
+       {
+       IDEA_INT data[9][6];
+       } IDEA_KEY_SCHEDULE;
+
+#ifndef NOPROTO
+const char *idea_options(void);
+void idea_ecb_encrypt(unsigned char *in, unsigned char *out,
+       IDEA_KEY_SCHEDULE *ks);
+void idea_set_encrypt_key(unsigned char *key, IDEA_KEY_SCHEDULE *ks);
+void idea_set_decrypt_key(IDEA_KEY_SCHEDULE *ek, IDEA_KEY_SCHEDULE *dk);
+void idea_cbc_encrypt(unsigned char *in, unsigned char *out,
+       long length, IDEA_KEY_SCHEDULE *ks, unsigned char *iv,int enc);
+void idea_cfb64_encrypt(unsigned char *in, unsigned char *out,
+       long length, IDEA_KEY_SCHEDULE *ks, unsigned char *iv,
+       int *num,int enc);
+void idea_ofb64_encrypt(unsigned char *in, unsigned char *out,
+       long length, IDEA_KEY_SCHEDULE *ks, unsigned char *iv, int *num);
+void idea_encrypt(unsigned long *in, IDEA_KEY_SCHEDULE *ks);
+#else
+const char *idea_options();
+void idea_ecb_encrypt();
+void idea_set_encrypt_key();
+void idea_set_decrypt_key();
+void idea_cbc_encrypt();
+void idea_cfb64_encrypt();
+void idea_ofb64_encrypt();
+void idea_encrypt();
+#endif
+
+#ifdef  __cplusplus
+}
+#endif
+
+#endif
diff --git a/crypto/idea/idea.org b/crypto/idea/idea.org
deleted file mode 100644 (file)
index 5b3084f..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-/* crypto/idea/idea.org */
-/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
- * All rights reserved.
- *
- * This package is an SSL implementation written
- * by Eric Young (eay@cryptsoft.com).
- * The implementation was written so as to conform with Netscapes SSL.
- * 
- * This library is free for commercial and non-commercial use as long as
- * the following conditions are aheared to.  The following conditions
- * apply to all code found in this distribution, be it the RC4, RSA,
- * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
- * included with this distribution is covered by the same copyright terms
- * except that the holder is Tim Hudson (tjh@cryptsoft.com).
- * 
- * Copyright remains Eric Young's, and as such any Copyright notices in
- * the code are not to be removed.
- * If this package is used in a product, Eric Young should be given attribution
- * as the author of the parts of the library used.
- * This can be in the form of a textual message at program startup or
- * in documentation (online or textual) provided with the package.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    "This product includes cryptographic software written by
- *     Eric Young (eay@cryptsoft.com)"
- *    The word 'cryptographic' can be left out if the rouines from the library
- *    being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from 
- *    the apps directory (application code) you must include an acknowledgement:
- *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- * 
- * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
- * The licence and distribution terms for any publically available version or
- * derivative of this code cannot be changed.  i.e. this code cannot simply be
- * copied and put under another distribution licence
- * [including the GNU Public Licence.]
- */
-
-/* WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
- *
- * Always modify idea.org since idea.h is automatically generated from 
- * it during SSLeay configuration.
- *
- * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
- */
-
-
-#ifndef HEADER_IDEA_H
-#define HEADER_IDEA_H
-
-#ifdef  __cplusplus
-extern "C" {
-#endif
-
-#define IDEA_ENCRYPT   1
-#define IDEA_DECRYPT   0
-
-#define IDEA_INT unsigned int
-#define IDEA_BLOCK     8
-#define IDEA_KEY_LENGTH        16
-
-typedef struct idea_key_st
-       {
-       IDEA_INT data[9][6];
-       } IDEA_KEY_SCHEDULE;
-
-#ifndef NOPROTO
-const char *idea_options(void);
-void idea_ecb_encrypt(unsigned char *in, unsigned char *out,
-       IDEA_KEY_SCHEDULE *ks);
-void idea_set_encrypt_key(unsigned char *key, IDEA_KEY_SCHEDULE *ks);
-void idea_set_decrypt_key(IDEA_KEY_SCHEDULE *ek, IDEA_KEY_SCHEDULE *dk);
-void idea_cbc_encrypt(unsigned char *in, unsigned char *out,
-       long length, IDEA_KEY_SCHEDULE *ks, unsigned char *iv,int enc);
-void idea_cfb64_encrypt(unsigned char *in, unsigned char *out,
-       long length, IDEA_KEY_SCHEDULE *ks, unsigned char *iv,
-       int *num,int enc);
-void idea_ofb64_encrypt(unsigned char *in, unsigned char *out,
-       long length, IDEA_KEY_SCHEDULE *ks, unsigned char *iv, int *num);
-void idea_encrypt(unsigned long *in, IDEA_KEY_SCHEDULE *ks);
-#else
-const char *idea_options();
-void idea_ecb_encrypt();
-void idea_set_encrypt_key();
-void idea_set_decrypt_key();
-void idea_cbc_encrypt();
-void idea_cfb64_encrypt();
-void idea_ofb64_encrypt();
-void idea_encrypt();
-#endif
-
-#ifdef  __cplusplus
-}
-#endif
-
-#endif
diff --git a/crypto/md2/md2.h b/crypto/md2/md2.h
new file mode 100644 (file)
index 0000000..1a0079f
--- /dev/null
@@ -0,0 +1,96 @@
+/* crypto/md/md2.org */
+/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
+ * All rights reserved.
+ *
+ * This package is an SSL implementation written
+ * by Eric Young (eay@cryptsoft.com).
+ * The implementation was written so as to conform with Netscapes SSL.
+ * 
+ * This library is free for commercial and non-commercial use as long as
+ * the following conditions are aheared to.  The following conditions
+ * apply to all code found in this distribution, be it the RC4, RSA,
+ * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
+ * included with this distribution is covered by the same copyright terms
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
+ * 
+ * Copyright remains Eric Young's, and as such any Copyright notices in
+ * the code are not to be removed.
+ * If this package is used in a product, Eric Young should be given attribution
+ * as the author of the parts of the library used.
+ * This can be in the form of a textual message at program startup or
+ * in documentation (online or textual) provided with the package.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    "This product includes cryptographic software written by
+ *     Eric Young (eay@cryptsoft.com)"
+ *    The word 'cryptographic' can be left out if the rouines from the library
+ *    being used are not cryptographic related :-).
+ * 4. If you include any Windows specific code (or a derivative thereof) from 
+ *    the apps directory (application code) you must include an acknowledgement:
+ *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
+ * 
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * 
+ * The licence and distribution terms for any publically available version or
+ * derivative of this code cannot be changed.  i.e. this code cannot simply be
+ * copied and put under another distribution licence
+ * [including the GNU Public Licence.]
+ */
+
+#ifndef HEADER_MD2_H
+#define HEADER_MD2_H
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
+#define MD2_DIGEST_LENGTH      16
+#define MD2_BLOCK              16
+#include "opensslconf.h" /* MD2_INT */
+
+typedef struct MD2state_st
+       {
+       int num;
+       unsigned char data[MD2_BLOCK];
+       MD2_INT cksm[MD2_BLOCK];
+       MD2_INT state[MD2_BLOCK];
+       } MD2_CTX;
+
+#ifndef NOPROTO
+const char *MD2_options(void);
+void MD2_Init(MD2_CTX *c);
+void MD2_Update(MD2_CTX *c, register unsigned char *data, unsigned long len);
+void MD2_Final(unsigned char *md, MD2_CTX *c);
+unsigned char *MD2(unsigned char *d, unsigned long n,unsigned char *md);
+#else
+const char *MD2_options();
+void MD2_Init();
+void MD2_Update();
+void MD2_Final();
+unsigned char *MD2();
+#endif
+
+#ifdef  __cplusplus
+}
+#endif
+
+#endif
diff --git a/crypto/md2/md2.org b/crypto/md2/md2.org
deleted file mode 100644 (file)
index de0c7c3..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-/* crypto/md/md2.org */
-/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
- * All rights reserved.
- *
- * This package is an SSL implementation written
- * by Eric Young (eay@cryptsoft.com).
- * The implementation was written so as to conform with Netscapes SSL.
- * 
- * This library is free for commercial and non-commercial use as long as
- * the following conditions are aheared to.  The following conditions
- * apply to all code found in this distribution, be it the RC4, RSA,
- * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
- * included with this distribution is covered by the same copyright terms
- * except that the holder is Tim Hudson (tjh@cryptsoft.com).
- * 
- * Copyright remains Eric Young's, and as such any Copyright notices in
- * the code are not to be removed.
- * If this package is used in a product, Eric Young should be given attribution
- * as the author of the parts of the library used.
- * This can be in the form of a textual message at program startup or
- * in documentation (online or textual) provided with the package.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    "This product includes cryptographic software written by
- *     Eric Young (eay@cryptsoft.com)"
- *    The word 'cryptographic' can be left out if the rouines from the library
- *    being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from 
- *    the apps directory (application code) you must include an acknowledgement:
- *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- * 
- * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
- * The licence and distribution terms for any publically available version or
- * derivative of this code cannot be changed.  i.e. this code cannot simply be
- * copied and put under another distribution licence
- * [including the GNU Public Licence.]
- */
-
-/* WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
- *
- * Always modify md2.org since md2.h is automatically generated from 
- * it during SSLeay configuration.
- *
- * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
- */
-
-
-#ifndef HEADER_MD2_H
-#define HEADER_MD2_H
-
-#ifdef  __cplusplus
-extern "C" {
-#endif
-
-#define MD2_DIGEST_LENGTH      16
-#define MD2_BLOCK              16
-
-#define MD2_INT unsigned int
-
-typedef struct MD2state_st
-       {
-       int num;
-       unsigned char data[MD2_BLOCK];
-       MD2_INT cksm[MD2_BLOCK];
-       MD2_INT state[MD2_BLOCK];
-       } MD2_CTX;
-
-#ifndef NOPROTO
-const char *MD2_options(void);
-void MD2_Init(MD2_CTX *c);
-void MD2_Update(MD2_CTX *c, register unsigned char *data, unsigned long len);
-void MD2_Final(unsigned char *md, MD2_CTX *c);
-unsigned char *MD2(unsigned char *d, unsigned long n,unsigned char *md);
-#else
-const char *MD2_options();
-void MD2_Init();
-void MD2_Update();
-void MD2_Final();
-unsigned char *MD2();
-#endif
-
-#ifdef  __cplusplus
-}
-#endif
-
-#endif
index 10a6304af5d52862079c7279baf4d2e7efd6e8e8..03ba60c255748adf12004b770643084685946f00 100644 (file)
@@ -761,8 +761,8 @@ static ASN1_OBJECT *obj_objs[NUM_OBJ]={
 &(nid_objs[19]),/* OBJ_rsa                          2 5 8 1 1 */
 &(nid_objs[96]),/* OBJ_mdc2WithRSA                  2 5 8 3 100 */
 &(nid_objs[95]),/* OBJ_mdc2                         2 5 8 3 101 */
-&(nid_objs[124]),/* OBJ_rle_compression              1 1 1 1 666.1 */
 &(nid_objs[125]),/* OBJ_zlib_compression             1 1 1 1 666.2 */
+&(nid_objs[124]),/* OBJ_rle_compression              1 1 1 1 666.1 */
 &(nid_objs[104]),/* OBJ_md5WithRSA                   1 3 14 3 2 3 */
 &(nid_objs[29]),/* OBJ_des_ecb                      1 3 14 3 2 6 */
 &(nid_objs[31]),/* OBJ_des_cbc                      1 3 14 3 2 7 */
index fa6495176d965fef60c536c2f1d9a9cf98e6ef1e..c85942a5c39242837fa30db6816b145932b95124 100644 (file)
  * [including the GNU Public Licence.]
  */
 
-/* WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING 
- *
- * Always modify pem.org since pem.h is automatically generated from
- * it during SSLeay configuration.
- *
- * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
- */
-
 #ifndef HEADER_PEM_H
 #define HEADER_PEM_H
 
diff --git a/crypto/rc2/rc2.h b/crypto/rc2/rc2.h
new file mode 100644 (file)
index 0000000..507a896
--- /dev/null
@@ -0,0 +1,108 @@
+/* crypto/rc2/rc2.org */
+/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
+ * All rights reserved.
+ *
+ * This package is an SSL implementation written
+ * by Eric Young (eay@cryptsoft.com).
+ * The implementation was written so as to conform with Netscapes SSL.
+ * 
+ * This library is free for commercial and non-commercial use as long as
+ * the following conditions are aheared to.  The following conditions
+ * apply to all code found in this distribution, be it the RC4, RSA,
+ * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
+ * included with this distribution is covered by the same copyright terms
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
+ * 
+ * Copyright remains Eric Young's, and as such any Copyright notices in
+ * the code are not to be removed.
+ * If this package is used in a product, Eric Young should be given attribution
+ * as the author of the parts of the library used.
+ * This can be in the form of a textual message at program startup or
+ * in documentation (online or textual) provided with the package.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    "This product includes cryptographic software written by
+ *     Eric Young (eay@cryptsoft.com)"
+ *    The word 'cryptographic' can be left out if the rouines from the library
+ *    being used are not cryptographic related :-).
+ * 4. If you include any Windows specific code (or a derivative thereof) from 
+ *    the apps directory (application code) you must include an acknowledgement:
+ *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
+ * 
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * 
+ * The licence and distribution terms for any publically available version or
+ * derivative of this code cannot be changed.  i.e. this code cannot simply be
+ * copied and put under another distribution licence
+ * [including the GNU Public Licence.]
+ */
+
+#ifndef HEADER_RC2_H
+#define HEADER_RC2_H
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
+#define RC2_ENCRYPT    1
+#define RC2_DECRYPT    0
+
+#include "opensslconf.h" /* RC2_INT */
+#define RC2_BLOCK      8
+#define RC2_KEY_LENGTH 16
+
+typedef struct rc2_key_st
+       {
+       RC2_INT data[64];
+       } RC2_KEY;
+
+#ifndef NOPROTO
+void RC2_set_key(RC2_KEY *key, int len, unsigned char *data,int bits);
+void RC2_ecb_encrypt(unsigned char *in,unsigned char *out,RC2_KEY *key,
+       int enc);
+void RC2_encrypt(unsigned long *data,RC2_KEY *key);
+void RC2_decrypt(unsigned long *data,RC2_KEY *key);
+void RC2_cbc_encrypt(unsigned char *in, unsigned char *out, long length,
+       RC2_KEY *ks, unsigned char *iv, int enc);
+void RC2_cfb64_encrypt(unsigned char *in, unsigned char *out, long length,
+       RC2_KEY *schedule, unsigned char *ivec, int *num, int enc);
+void RC2_ofb64_encrypt(unsigned char *in, unsigned char *out, long length,
+       RC2_KEY *schedule, unsigned char *ivec, int *num);
+
+#else
+
+void RC2_set_key();
+void RC2_ecb_encrypt();
+void RC2_encrypt();
+void RC2_decrypt();
+void RC2_cbc_encrypt();
+void RC2_cfb64_encrypt();
+void RC2_ofb64_encrypt();
+
+#endif
+
+#ifdef  __cplusplus
+}
+#endif
+
+#endif
diff --git a/crypto/rc2/rc2.org b/crypto/rc2/rc2.org
deleted file mode 100644 (file)
index 37354cf..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-/* crypto/rc2/rc2.org */
-/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
- * All rights reserved.
- *
- * This package is an SSL implementation written
- * by Eric Young (eay@cryptsoft.com).
- * The implementation was written so as to conform with Netscapes SSL.
- * 
- * This library is free for commercial and non-commercial use as long as
- * the following conditions are aheared to.  The following conditions
- * apply to all code found in this distribution, be it the RC4, RSA,
- * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
- * included with this distribution is covered by the same copyright terms
- * except that the holder is Tim Hudson (tjh@cryptsoft.com).
- * 
- * Copyright remains Eric Young's, and as such any Copyright notices in
- * the code are not to be removed.
- * If this package is used in a product, Eric Young should be given attribution
- * as the author of the parts of the library used.
- * This can be in the form of a textual message at program startup or
- * in documentation (online or textual) provided with the package.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    "This product includes cryptographic software written by
- *     Eric Young (eay@cryptsoft.com)"
- *    The word 'cryptographic' can be left out if the rouines from the library
- *    being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from 
- *    the apps directory (application code) you must include an acknowledgement:
- *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- * 
- * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
- * The licence and distribution terms for any publically available version or
- * derivative of this code cannot be changed.  i.e. this code cannot simply be
- * copied and put under another distribution licence
- * [including the GNU Public Licence.]
- */
-
-/* WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING 
- *
- * Always modify rc2.org since rc2.h is automatically generated from
- * it during SSLeay configuration.
- *
- * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
- */
-
-#ifndef HEADER_RC2_H
-#define HEADER_RC2_H
-
-#ifdef  __cplusplus
-extern "C" {
-#endif
-
-#define RC2_ENCRYPT    1
-#define RC2_DECRYPT    0
-
-/* I need to put in a mod for the alpha - eay */
-#define RC2_INT unsigned short
-
-#define RC2_BLOCK      8
-#define RC2_KEY_LENGTH 16
-
-typedef struct rc2_key_st
-       {
-       RC2_INT data[64];
-       } RC2_KEY;
-
-#ifndef NOPROTO
-void RC2_set_key(RC2_KEY *key, int len, unsigned char *data,int bits);
-void RC2_ecb_encrypt(unsigned char *in,unsigned char *out,RC2_KEY *key,
-       int enc);
-void RC2_encrypt(unsigned long *data,RC2_KEY *key);
-void RC2_decrypt(unsigned long *data,RC2_KEY *key);
-void RC2_cbc_encrypt(unsigned char *in, unsigned char *out, long length,
-       RC2_KEY *ks, unsigned char *iv, int enc);
-void RC2_cfb64_encrypt(unsigned char *in, unsigned char *out, long length,
-       RC2_KEY *schedule, unsigned char *ivec, int *num, int enc);
-void RC2_ofb64_encrypt(unsigned char *in, unsigned char *out, long length,
-       RC2_KEY *schedule, unsigned char *ivec, int *num);
-
-#else
-
-void RC2_set_key();
-void RC2_ecb_encrypt();
-void RC2_encrypt();
-void RC2_decrypt();
-void RC2_cbc_encrypt();
-void RC2_cfb64_encrypt();
-void RC2_ofb64_encrypt();
-
-#endif
-
-#ifdef  __cplusplus
-}
-#endif
-
-#endif
diff --git a/crypto/rc4/rc4.h b/crypto/rc4/rc4.h
new file mode 100644 (file)
index 0000000..7dee732
--- /dev/null
@@ -0,0 +1,93 @@
+/* crypto/rc4/rc4.org */
+/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
+ * All rights reserved.
+ *
+ * This package is an SSL implementation written
+ * by Eric Young (eay@cryptsoft.com).
+ * The implementation was written so as to conform with Netscapes SSL.
+ * 
+ * This library is free for commercial and non-commercial use as long as
+ * the following conditions are aheared to.  The following conditions
+ * apply to all code found in this distribution, be it the RC4, RSA,
+ * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
+ * included with this distribution is covered by the same copyright terms
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
+ * 
+ * Copyright remains Eric Young's, and as such any Copyright notices in
+ * the code are not to be removed.
+ * If this package is used in a product, Eric Young should be given attribution
+ * as the author of the parts of the library used.
+ * This can be in the form of a textual message at program startup or
+ * in documentation (online or textual) provided with the package.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    "This product includes cryptographic software written by
+ *     Eric Young (eay@cryptsoft.com)"
+ *    The word 'cryptographic' can be left out if the rouines from the library
+ *    being used are not cryptographic related :-).
+ * 4. If you include any Windows specific code (or a derivative thereof) from 
+ *    the apps directory (application code) you must include an acknowledgement:
+ *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
+ * 
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * 
+ * The licence and distribution terms for any publically available version or
+ * derivative of this code cannot be changed.  i.e. this code cannot simply be
+ * copied and put under another distribution licence
+ * [including the GNU Public Licence.]
+ */
+
+#ifndef HEADER_RC4_H
+#define HEADER_RC4_H
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
+#include "opensslconf.h" /* RC4_INT */
+
+typedef struct rc4_key_st
+       {
+       RC4_INT x,y;
+       RC4_INT data[256];
+       } RC4_KEY;
+
+#ifndef NOPROTO
+const char *RC4_options(void);
+void RC4_set_key(RC4_KEY *key, int len, unsigned char *data);
+void RC4(RC4_KEY *key, unsigned long len, unsigned char *indata,
+               unsigned char *outdata);
+
+#else
+
+const char *RC4_options();
+void RC4_set_key();
+void RC4();
+
+#endif
+
+#ifdef  __cplusplus
+}
+#endif
+
+#endif
diff --git a/crypto/rc4/rc4.org b/crypto/rc4/rc4.org
deleted file mode 100644 (file)
index bf5fd3d..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-/* crypto/rc4/rc4.org */
-/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
- * All rights reserved.
- *
- * This package is an SSL implementation written
- * by Eric Young (eay@cryptsoft.com).
- * The implementation was written so as to conform with Netscapes SSL.
- * 
- * This library is free for commercial and non-commercial use as long as
- * the following conditions are aheared to.  The following conditions
- * apply to all code found in this distribution, be it the RC4, RSA,
- * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
- * included with this distribution is covered by the same copyright terms
- * except that the holder is Tim Hudson (tjh@cryptsoft.com).
- * 
- * Copyright remains Eric Young's, and as such any Copyright notices in
- * the code are not to be removed.
- * If this package is used in a product, Eric Young should be given attribution
- * as the author of the parts of the library used.
- * This can be in the form of a textual message at program startup or
- * in documentation (online or textual) provided with the package.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    "This product includes cryptographic software written by
- *     Eric Young (eay@cryptsoft.com)"
- *    The word 'cryptographic' can be left out if the rouines from the library
- *    being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from 
- *    the apps directory (application code) you must include an acknowledgement:
- *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- * 
- * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
- * The licence and distribution terms for any publically available version or
- * derivative of this code cannot be changed.  i.e. this code cannot simply be
- * copied and put under another distribution licence
- * [including the GNU Public Licence.]
- */
-
-/* WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
- *
- * Always modify rc4.org since rc4.h is automatically generated from
- * it during SSLeay configuration.
- *
- * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING 
- */
-
-#ifndef HEADER_RC4_H
-#define HEADER_RC4_H
-
-#ifdef  __cplusplus
-extern "C" {
-#endif
-
-/* using int types make the structure larger but make the code faster
- * on most boxes I have tested - up to %20 faster. */
-#define RC4_INT unsigned int
-
-typedef struct rc4_key_st
-       {
-       RC4_INT x,y;
-       RC4_INT data[256];
-       } RC4_KEY;
-
-#ifndef NOPROTO
-const char *RC4_options(void);
-void RC4_set_key(RC4_KEY *key, int len, unsigned char *data);
-void RC4(RC4_KEY *key, unsigned long len, unsigned char *indata,
-               unsigned char *outdata);
-
-#else
-
-const char *RC4_options();
-void RC4_set_key();
-void RC4();
-
-#endif
-
-#ifdef  __cplusplus
-}
-#endif
-
-#endif
diff --git a/crypto/rc4/rc4_locl.h b/crypto/rc4/rc4_locl.h
new file mode 100644 (file)
index 0000000..ecce6b9
--- /dev/null
@@ -0,0 +1,4 @@
+#ifndef _HEADER_RC4_LOCL_H
+#define _HEADER_RC4_LOCL_H
+#include "opensslconf.h"
+#endif
diff --git a/crypto/rc4/rc4_locl.org b/crypto/rc4/rc4_locl.org
deleted file mode 100644 (file)
index 1ef4455..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-/* crypto/rc4/rc4_locl.org */
-/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
- * All rights reserved.
- *
- * This package is an SSL implementation written
- * by Eric Young (eay@cryptsoft.com).
- * The implementation was written so as to conform with Netscapes SSL.
- * 
- * This library is free for commercial and non-commercial use as long as
- * the following conditions are aheared to.  The following conditions
- * apply to all code found in this distribution, be it the RC4, RSA,
- * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
- * included with this distribution is covered by the same copyright terms
- * except that the holder is Tim Hudson (tjh@cryptsoft.com).
- * 
- * Copyright remains Eric Young's, and as such any Copyright notices in
- * the code are not to be removed.
- * If this package is used in a product, Eric Young should be given attribution
- * as the author of the parts of the library used.
- * This can be in the form of a textual message at program startup or
- * in documentation (online or textual) provided with the package.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    "This product includes cryptographic software written by
- *     Eric Young (eay@cryptsoft.com)"
- *    The word 'cryptographic' can be left out if the rouines from the library
- *    being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from 
- *    the apps directory (application code) you must include an acknowledgement:
- *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- * 
- * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
- * The licence and distribution terms for any publically available version or
- * derivative of this code cannot be changed.  i.e. this code cannot simply be
- * copied and put under another distribution licence
- * [including the GNU Public Licence.]
- */
-
-/* WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
- *
- * Always modify bf_locl.org since bf_locl.h is automatically generated from
- * it during SSLeay configuration.
- *
- * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
- */
-
-/* if this is defined data[i] is used instead of *data, this is a %20
- * speedup on x86 */
-#undef RC4_INDEX
-