diff options
author | ryker <> | 1998-10-05 20:13:14 +0000 |
---|---|---|
committer | ryker <> | 1998-10-05 20:13:14 +0000 |
commit | aeeae06a79815dc190061534d47236cec09f9e32 (patch) | |
tree | 851692b9c2f9c04f077666855641900f19fdb217 /src/lib/libcrypto/bf | |
parent | a4f79641824cbf9f60ca9d1168d1fcc46717a82a (diff) | |
download | openbsd-aeeae06a79815dc190061534d47236cec09f9e32.tar.gz openbsd-aeeae06a79815dc190061534d47236cec09f9e32.tar.bz2 openbsd-aeeae06a79815dc190061534d47236cec09f9e32.zip |
Import of SSLeay-0.9.0b with RSA and IDEA stubbed + OpenBSD build
functionality for shared libs.
Note that routines such as sslv2_init and friends that use RSA will
not work due to lack of RSA in this library.
Needs documentation and help from ports for easy upgrade to full
functionality where legally possible.
Diffstat (limited to 'src/lib/libcrypto/bf')
-rw-r--r-- | src/lib/libcrypto/bf/COPYRIGHT | 46 | ||||
-rw-r--r-- | src/lib/libcrypto/bf/INSTALL | 14 | ||||
-rw-r--r-- | src/lib/libcrypto/bf/README | 8 | ||||
-rw-r--r-- | src/lib/libcrypto/bf/VERSION | 6 | ||||
-rw-r--r-- | src/lib/libcrypto/bf/asm/bf-586.pl | 136 | ||||
-rw-r--r-- | src/lib/libcrypto/bf/bf_cbc.c | 148 | ||||
-rw-r--r-- | src/lib/libcrypto/bf/bf_cfb64.c | 127 | ||||
-rw-r--r-- | src/lib/libcrypto/bf/bf_ecb.c | 98 | ||||
-rw-r--r-- | src/lib/libcrypto/bf/bf_enc.c | 241 | ||||
-rw-r--r-- | src/lib/libcrypto/bf/bf_ofb64.c | 115 | ||||
-rw-r--r-- | src/lib/libcrypto/bf/bf_pi.h | 325 | ||||
-rw-r--r-- | src/lib/libcrypto/bf/bf_skey.c | 119 | ||||
-rw-r--r-- | src/lib/libcrypto/bf/blowfish.h | 116 |
13 files changed, 1499 insertions, 0 deletions
diff --git a/src/lib/libcrypto/bf/COPYRIGHT b/src/lib/libcrypto/bf/COPYRIGHT new file mode 100644 index 0000000000..6857223506 --- /dev/null +++ b/src/lib/libcrypto/bf/COPYRIGHT | |||
@@ -0,0 +1,46 @@ | |||
1 | Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) | ||
2 | All rights reserved. | ||
3 | |||
4 | This package is an Blowfish implementation written | ||
5 | by Eric Young (eay@cryptsoft.com). | ||
6 | |||
7 | This library is free for commercial and non-commercial use as long as | ||
8 | the following conditions are aheared to. The following conditions | ||
9 | apply to all code found in this distribution. | ||
10 | |||
11 | Copyright remains Eric Young's, and as such any Copyright notices in | ||
12 | the code are not to be removed. | ||
13 | |||
14 | Redistribution and use in source and binary forms, with or without | ||
15 | modification, are permitted provided that the following conditions | ||
16 | are met: | ||
17 | 1. Redistributions of source code must retain the copyright | ||
18 | notice, this list of conditions and the following disclaimer. | ||
19 | 2. Redistributions in binary form must reproduce the above copyright | ||
20 | notice, this list of conditions and the following disclaimer in the | ||
21 | documentation and/or other materials provided with the distribution. | ||
22 | 3. All advertising materials mentioning features or use of this software | ||
23 | must display the following acknowledgement: | ||
24 | This product includes software developed by Eric Young (eay@cryptsoft.com) | ||
25 | |||
26 | THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
27 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
28 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
29 | ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
30 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
31 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
32 | OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
33 | HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
34 | LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
35 | OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
36 | SUCH DAMAGE. | ||
37 | |||
38 | The license and distribution terms for any publically available version or | ||
39 | derivative of this code cannot be changed. i.e. this code cannot simply be | ||
40 | copied and put under another distrubution license | ||
41 | [including the GNU Public License.] | ||
42 | |||
43 | The reason behind this being stated in this direct manner is past | ||
44 | experience in code simply being copied and the attribution removed | ||
45 | from it and then being distributed as part of other packages. This | ||
46 | implementation was a non-trivial and unpaid effort. | ||
diff --git a/src/lib/libcrypto/bf/INSTALL b/src/lib/libcrypto/bf/INSTALL new file mode 100644 index 0000000000..3b25923532 --- /dev/null +++ b/src/lib/libcrypto/bf/INSTALL | |||
@@ -0,0 +1,14 @@ | |||
1 | This Eric Young's blowfish implementation, taken from his SSLeay library | ||
2 | and made available as a separate library. | ||
3 | |||
4 | The version number (0.7.2m) is the SSLeay version that this library was | ||
5 | taken from. | ||
6 | |||
7 | To build, just unpack and type make. | ||
8 | If you are not using gcc, edit the Makefile. | ||
9 | If you are compiling for an x86 box, try the assembler (it needs improving). | ||
10 | There are also some compile time options that can improve performance, | ||
11 | these are documented in the Makefile. | ||
12 | |||
13 | eric 15-Apr-1997 | ||
14 | |||
diff --git a/src/lib/libcrypto/bf/README b/src/lib/libcrypto/bf/README new file mode 100644 index 0000000000..f2712fd0e7 --- /dev/null +++ b/src/lib/libcrypto/bf/README | |||
@@ -0,0 +1,8 @@ | |||
1 | This is a quick packaging up of my blowfish code into a library. | ||
2 | It has been lifted from SSLeay. | ||
3 | The copyright notices seem a little harsh because I have not spent the | ||
4 | time to rewrite the conditions from the normal SSLeay ones. | ||
5 | |||
6 | Basically if you just want to play with the library, not a problem. | ||
7 | |||
8 | eric 15-Apr-1997 | ||
diff --git a/src/lib/libcrypto/bf/VERSION b/src/lib/libcrypto/bf/VERSION new file mode 100644 index 0000000000..be995855e4 --- /dev/null +++ b/src/lib/libcrypto/bf/VERSION | |||
@@ -0,0 +1,6 @@ | |||
1 | The version numbers will follow my SSL implementation | ||
2 | |||
3 | 0.7.2r - Some reasonable default compiler options from | ||
4 | Peter Gutman <pgut001@cs.auckland.ac.nz> | ||
5 | |||
6 | 0.7.2m - the first release | ||
diff --git a/src/lib/libcrypto/bf/asm/bf-586.pl b/src/lib/libcrypto/bf/asm/bf-586.pl new file mode 100644 index 0000000000..5c7ab14ab0 --- /dev/null +++ b/src/lib/libcrypto/bf/asm/bf-586.pl | |||
@@ -0,0 +1,136 @@ | |||
1 | #!/usr/bin/perl | ||
2 | |||
3 | push(@INC,"perlasm","../../perlasm"); | ||
4 | require "x86asm.pl"; | ||
5 | require "cbc.pl"; | ||
6 | |||
7 | &asm_init($ARGV[0],"bf-586.pl"); | ||
8 | |||
9 | $BF_ROUNDS=16; | ||
10 | $BF_OFF=($BF_ROUNDS+2)*4; | ||
11 | $L="edi"; | ||
12 | $R="esi"; | ||
13 | $P="ebp"; | ||
14 | $tmp1="eax"; | ||
15 | $tmp2="ebx"; | ||
16 | $tmp3="ecx"; | ||
17 | $tmp4="edx"; | ||
18 | |||
19 | &BF_encrypt("BF_encrypt",1); | ||
20 | &BF_encrypt("BF_decrypt",0); | ||
21 | &cbc("BF_cbc_encrypt","BF_encrypt","BF_decrypt",1,4,5,3,-1,-1); | ||
22 | &asm_finish(); | ||
23 | |||
24 | sub BF_encrypt | ||
25 | { | ||
26 | local($name,$enc)=@_; | ||
27 | |||
28 | &function_begin_B($name,""); | ||
29 | |||
30 | &comment(""); | ||
31 | |||
32 | &push("ebp"); | ||
33 | &push("ebx"); | ||
34 | &mov($tmp2,&wparam(0)); | ||
35 | &mov($P,&wparam(1)); | ||
36 | &push("esi"); | ||
37 | &push("edi"); | ||
38 | |||
39 | &comment("Load the 2 words"); | ||
40 | &mov($L,&DWP(0,$tmp2,"",0)); | ||
41 | &mov($R,&DWP(4,$tmp2,"",0)); | ||
42 | |||
43 | &xor( $tmp1, $tmp1); | ||
44 | |||
45 | # encrypting part | ||
46 | |||
47 | if ($enc) | ||
48 | { | ||
49 | &mov($tmp2,&DWP(0,$P,"",0)); | ||
50 | &xor( $tmp3, $tmp3); | ||
51 | |||
52 | &xor($L,$tmp2); | ||
53 | for ($i=0; $i<$BF_ROUNDS; $i+=2) | ||
54 | { | ||
55 | &comment(""); | ||
56 | &comment("Round $i"); | ||
57 | &BF_ENCRYPT($i+1,$R,$L,$P,$tmp1,$tmp2,$tmp3,$tmp4,1); | ||
58 | |||
59 | &comment(""); | ||
60 | &comment("Round ".sprintf("%d",$i+1)); | ||
61 | &BF_ENCRYPT($i+2,$L,$R,$P,$tmp1,$tmp2,$tmp3,$tmp4,1); | ||
62 | } | ||
63 | # &mov($tmp1,&wparam(0)); In last loop | ||
64 | &mov($tmp4,&DWP(($BF_ROUNDS+1)*4,$P,"",0)); | ||
65 | } | ||
66 | else | ||
67 | { | ||
68 | &mov($tmp2,&DWP(($BF_ROUNDS+1)*4,$P,"",0)); | ||
69 | &xor( $tmp3, $tmp3); | ||
70 | |||
71 | &xor($L,$tmp2); | ||
72 | for ($i=$BF_ROUNDS; $i>0; $i-=2) | ||
73 | { | ||
74 | &comment(""); | ||
75 | &comment("Round $i"); | ||
76 | &BF_ENCRYPT($i,$R,$L,$P,$tmp1,$tmp2,$tmp3,$tmp4,0); | ||
77 | &comment(""); | ||
78 | &comment("Round ".sprintf("%d",$i-1)); | ||
79 | &BF_ENCRYPT($i-1,$L,$R,$P,$tmp1,$tmp2,$tmp3,$tmp4,0); | ||
80 | } | ||
81 | # &mov($tmp1,&wparam(0)); In last loop | ||
82 | &mov($tmp4,&DWP(0,$P,"",0)); | ||
83 | } | ||
84 | |||
85 | &xor($R,$tmp4); | ||
86 | &mov(&DWP(4,$tmp1,"",0),$L); | ||
87 | |||
88 | &mov(&DWP(0,$tmp1,"",0),$R); | ||
89 | &function_end($name); | ||
90 | } | ||
91 | |||
92 | sub BF_ENCRYPT | ||
93 | { | ||
94 | local($i,$L,$R,$P,$tmp1,$tmp2,$tmp3,$tmp4,$enc)=@_; | ||
95 | |||
96 | &mov( $tmp4, &DWP(&n2a($i*4),$P,"",0)); # for next round | ||
97 | |||
98 | &mov( $tmp2, $R); | ||
99 | &xor( $L, $tmp4); | ||
100 | |||
101 | &shr( $tmp2, 16); | ||
102 | &mov( $tmp4, $R); | ||
103 | |||
104 | &movb( &LB($tmp1), &HB($tmp2)); # A | ||
105 | &and( $tmp2, 0xff); # B | ||
106 | |||
107 | &movb( &LB($tmp3), &HB($tmp4)); # C | ||
108 | &and( $tmp4, 0xff); # D | ||
109 | |||
110 | &mov( $tmp1, &DWP(&n2a($BF_OFF+0x0000),$P,$tmp1,4)); | ||
111 | &mov( $tmp2, &DWP(&n2a($BF_OFF+0x0400),$P,$tmp2,4)); | ||
112 | |||
113 | &add( $tmp2, $tmp1); | ||
114 | &mov( $tmp1, &DWP(&n2a($BF_OFF+0x0800),$P,$tmp3,4)); | ||
115 | |||
116 | &xor( $tmp2, $tmp1); | ||
117 | &mov( $tmp4, &DWP(&n2a($BF_OFF+0x0C00),$P,$tmp4,4)); | ||
118 | |||
119 | &add( $tmp2, $tmp4); | ||
120 | if (($enc && ($i != 16)) || ((!$enc) && ($i != 1))) | ||
121 | { &xor( $tmp1, $tmp1); } | ||
122 | else | ||
123 | { | ||
124 | &comment("Load parameter 0 ($i) enc=$enc"); | ||
125 | &mov($tmp1,&wparam(0)); | ||
126 | } # In last loop | ||
127 | |||
128 | &xor( $L, $tmp2); | ||
129 | # delay | ||
130 | } | ||
131 | |||
132 | sub n2a | ||
133 | { | ||
134 | sprintf("%d",$_[0]); | ||
135 | } | ||
136 | |||
diff --git a/src/lib/libcrypto/bf/bf_cbc.c b/src/lib/libcrypto/bf/bf_cbc.c new file mode 100644 index 0000000000..e0fa9ad763 --- /dev/null +++ b/src/lib/libcrypto/bf/bf_cbc.c | |||
@@ -0,0 +1,148 @@ | |||
1 | /* crypto/bf/bf_cbc.c */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #include "blowfish.h" | ||
60 | #include "bf_locl.h" | ||
61 | |||
62 | void BF_cbc_encrypt(in, out, length, ks, iv, encrypt) | ||
63 | unsigned char *in; | ||
64 | unsigned char *out; | ||
65 | long length; | ||
66 | BF_KEY *ks; | ||
67 | unsigned char *iv; | ||
68 | int encrypt; | ||
69 | { | ||
70 | register BF_LONG tin0,tin1; | ||
71 | register BF_LONG tout0,tout1,xor0,xor1; | ||
72 | register long l=length; | ||
73 | BF_LONG tin[2]; | ||
74 | |||
75 | if (encrypt) | ||
76 | { | ||
77 | n2l(iv,tout0); | ||
78 | n2l(iv,tout1); | ||
79 | iv-=8; | ||
80 | for (l-=8; l>=0; l-=8) | ||
81 | { | ||
82 | n2l(in,tin0); | ||
83 | n2l(in,tin1); | ||
84 | tin0^=tout0; | ||
85 | tin1^=tout1; | ||
86 | tin[0]=tin0; | ||
87 | tin[1]=tin1; | ||
88 | BF_encrypt(tin,ks); | ||
89 | tout0=tin[0]; | ||
90 | tout1=tin[1]; | ||
91 | l2n(tout0,out); | ||
92 | l2n(tout1,out); | ||
93 | } | ||
94 | if (l != -8) | ||
95 | { | ||
96 | n2ln(in,tin0,tin1,l+8); | ||
97 | tin0^=tout0; | ||
98 | tin1^=tout1; | ||
99 | tin[0]=tin0; | ||
100 | tin[1]=tin1; | ||
101 | BF_encrypt(tin,ks); | ||
102 | tout0=tin[0]; | ||
103 | tout1=tin[1]; | ||
104 | l2n(tout0,out); | ||
105 | l2n(tout1,out); | ||
106 | } | ||
107 | l2n(tout0,iv); | ||
108 | l2n(tout1,iv); | ||
109 | } | ||
110 | else | ||
111 | { | ||
112 | n2l(iv,xor0); | ||
113 | n2l(iv,xor1); | ||
114 | iv-=8; | ||
115 | for (l-=8; l>=0; l-=8) | ||
116 | { | ||
117 | n2l(in,tin0); | ||
118 | n2l(in,tin1); | ||
119 | tin[0]=tin0; | ||
120 | tin[1]=tin1; | ||
121 | BF_decrypt(tin,ks); | ||
122 | tout0=tin[0]^xor0; | ||
123 | tout1=tin[1]^xor1; | ||
124 | l2n(tout0,out); | ||
125 | l2n(tout1,out); | ||
126 | xor0=tin0; | ||
127 | xor1=tin1; | ||
128 | } | ||
129 | if (l != -8) | ||
130 | { | ||
131 | n2l(in,tin0); | ||
132 | n2l(in,tin1); | ||
133 | tin[0]=tin0; | ||
134 | tin[1]=tin1; | ||
135 | BF_decrypt(tin,ks); | ||
136 | tout0=tin[0]^xor0; | ||
137 | tout1=tin[1]^xor1; | ||
138 | l2nn(tout0,tout1,out,l+8); | ||
139 | xor0=tin0; | ||
140 | xor1=tin1; | ||
141 | } | ||
142 | l2n(xor0,iv); | ||
143 | l2n(xor1,iv); | ||
144 | } | ||
145 | tin0=tin1=tout0=tout1=xor0=xor1=0; | ||
146 | tin[0]=tin[1]=0; | ||
147 | } | ||
148 | |||
diff --git a/src/lib/libcrypto/bf/bf_cfb64.c b/src/lib/libcrypto/bf/bf_cfb64.c new file mode 100644 index 0000000000..f9c66e7ced --- /dev/null +++ b/src/lib/libcrypto/bf/bf_cfb64.c | |||
@@ -0,0 +1,127 @@ | |||
1 | /* crypto/bf/bf_cfb64.c */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #include "blowfish.h" | ||
60 | #include "bf_locl.h" | ||
61 | |||
62 | /* The input and output encrypted as though 64bit cfb mode is being | ||
63 | * used. The extra state information to record how much of the | ||
64 | * 64bit block we have used is contained in *num; | ||
65 | */ | ||
66 | |||
67 | void BF_cfb64_encrypt(in, out, length, schedule, ivec, num, encrypt) | ||
68 | unsigned char *in; | ||
69 | unsigned char *out; | ||
70 | long length; | ||
71 | BF_KEY *schedule; | ||
72 | unsigned char *ivec; | ||
73 | int *num; | ||
74 | int encrypt; | ||
75 | { | ||
76 | register BF_LONG v0,v1,t; | ||
77 | register int n= *num; | ||
78 | register long l=length; | ||
79 | BF_LONG ti[2]; | ||
80 | unsigned char *iv,c,cc; | ||
81 | |||
82 | iv=(unsigned char *)ivec; | ||
83 | if (encrypt) | ||
84 | { | ||
85 | while (l--) | ||
86 | { | ||
87 | if (n == 0) | ||
88 | { | ||
89 | n2l(iv,v0); ti[0]=v0; | ||
90 | n2l(iv,v1); ti[1]=v1; | ||
91 | BF_encrypt((BF_LONG *)ti,schedule); | ||
92 | iv=(unsigned char *)ivec; | ||
93 | t=ti[0]; l2n(t,iv); | ||
94 | t=ti[1]; l2n(t,iv); | ||
95 | iv=(unsigned char *)ivec; | ||
96 | } | ||
97 | c= *(in++)^iv[n]; | ||
98 | *(out++)=c; | ||
99 | iv[n]=c; | ||
100 | n=(n+1)&0x07; | ||
101 | } | ||
102 | } | ||
103 | else | ||
104 | { | ||
105 | while (l--) | ||
106 | { | ||
107 | if (n == 0) | ||
108 | { | ||
109 | n2l(iv,v0); ti[0]=v0; | ||
110 | n2l(iv,v1); ti[1]=v1; | ||
111 | BF_encrypt((BF_LONG *)ti,schedule); | ||
112 | iv=(unsigned char *)ivec; | ||
113 | t=ti[0]; l2n(t,iv); | ||
114 | t=ti[1]; l2n(t,iv); | ||
115 | iv=(unsigned char *)ivec; | ||
116 | } | ||
117 | cc= *(in++); | ||
118 | c=iv[n]; | ||
119 | iv[n]=cc; | ||
120 | *(out++)=c^cc; | ||
121 | n=(n+1)&0x07; | ||
122 | } | ||
123 | } | ||
124 | v0=v1=ti[0]=ti[1]=t=c=cc=0; | ||
125 | *num=n; | ||
126 | } | ||
127 | |||
diff --git a/src/lib/libcrypto/bf/bf_ecb.c b/src/lib/libcrypto/bf/bf_ecb.c new file mode 100644 index 0000000000..6d16360bd9 --- /dev/null +++ b/src/lib/libcrypto/bf/bf_ecb.c | |||
@@ -0,0 +1,98 @@ | |||
1 | /* crypto/bf/bf_ecb.c */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #include "blowfish.h" | ||
60 | #include "bf_locl.h" | ||
61 | |||
62 | /* Blowfish as implemented from 'Blowfish: Springer-Verlag paper' | ||
63 | * (From LECTURE NOTES IN COIMPUTER SCIENCE 809, FAST SOFTWARE ENCRYPTION, | ||
64 | * CAMBRIDGE SECURITY WORKSHOP, CAMBRIDGE, U.K., DECEMBER 9-11, 1993) | ||
65 | */ | ||
66 | |||
67 | char *BF_version="BlowFish part of SSLeay 0.9.0b 29-Jun-1998"; | ||
68 | |||
69 | char *BF_options() | ||
70 | { | ||
71 | #ifdef BF_PTR | ||
72 | return("blowfish(ptr)"); | ||
73 | #elif defined(BF_PTR2) | ||
74 | return("blowfish(ptr2)"); | ||
75 | #else | ||
76 | return("blowfish(idx)"); | ||
77 | #endif | ||
78 | } | ||
79 | |||
80 | void BF_ecb_encrypt(in, out, ks, encrypt) | ||
81 | unsigned char *in; | ||
82 | unsigned char *out; | ||
83 | BF_KEY *ks; | ||
84 | int encrypt; | ||
85 | { | ||
86 | BF_LONG l,d[2]; | ||
87 | |||
88 | n2l(in,l); d[0]=l; | ||
89 | n2l(in,l); d[1]=l; | ||
90 | if (encrypt) | ||
91 | BF_encrypt(d,ks); | ||
92 | else | ||
93 | BF_decrypt(d,ks); | ||
94 | l=d[0]; l2n(l,out); | ||
95 | l=d[1]; l2n(l,out); | ||
96 | l=d[0]=d[1]=0; | ||
97 | } | ||
98 | |||
diff --git a/src/lib/libcrypto/bf/bf_enc.c b/src/lib/libcrypto/bf/bf_enc.c new file mode 100644 index 0000000000..66a8604c59 --- /dev/null +++ b/src/lib/libcrypto/bf/bf_enc.c | |||
@@ -0,0 +1,241 @@ | |||
1 | /* crypto/bf/bf_enc.c */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #include "blowfish.h" | ||
60 | #include "bf_locl.h" | ||
61 | |||
62 | /* Blowfish as implemented from 'Blowfish: Springer-Verlag paper' | ||
63 | * (From LECTURE NOTES IN COIMPUTER SCIENCE 809, FAST SOFTWARE ENCRYPTION, | ||
64 | * CAMBRIDGE SECURITY WORKSHOP, CAMBRIDGE, U.K., DECEMBER 9-11, 1993) | ||
65 | */ | ||
66 | |||
67 | #if (BF_ROUNDS != 16) && (BF_ROUNDS != 20) | ||
68 | If you set BF_ROUNDS to some value other than 16 or 20, you will have | ||
69 | to modify the code. | ||
70 | #endif | ||
71 | |||
72 | void BF_encrypt(data,key) | ||
73 | BF_LONG *data; | ||
74 | BF_KEY *key; | ||
75 | { | ||
76 | register BF_LONG l,r,*p,*s; | ||
77 | |||
78 | p=key->P; | ||
79 | s= &(key->S[0]); | ||
80 | l=data[0]; | ||
81 | r=data[1]; | ||
82 | |||
83 | l^=p[0]; | ||
84 | BF_ENC(r,l,s,p[ 1]); | ||
85 | BF_ENC(l,r,s,p[ 2]); | ||
86 | BF_ENC(r,l,s,p[ 3]); | ||
87 | BF_ENC(l,r,s,p[ 4]); | ||
88 | BF_ENC(r,l,s,p[ 5]); | ||
89 | BF_ENC(l,r,s,p[ 6]); | ||
90 | BF_ENC(r,l,s,p[ 7]); | ||
91 | BF_ENC(l,r,s,p[ 8]); | ||
92 | BF_ENC(r,l,s,p[ 9]); | ||
93 | BF_ENC(l,r,s,p[10]); | ||
94 | BF_ENC(r,l,s,p[11]); | ||
95 | BF_ENC(l,r,s,p[12]); | ||
96 | BF_ENC(r,l,s,p[13]); | ||
97 | BF_ENC(l,r,s,p[14]); | ||
98 | BF_ENC(r,l,s,p[15]); | ||
99 | BF_ENC(l,r,s,p[16]); | ||
100 | #if BF_ROUNDS == 20 | ||
101 | BF_ENC(r,l,s,p[17]); | ||
102 | BF_ENC(l,r,s,p[18]); | ||
103 | BF_ENC(r,l,s,p[19]); | ||
104 | BF_ENC(l,r,s,p[20]); | ||
105 | #endif | ||
106 | r^=p[BF_ROUNDS+1]; | ||
107 | |||
108 | data[1]=l&0xffffffffL; | ||
109 | data[0]=r&0xffffffffL; | ||
110 | } | ||
111 | |||
112 | #ifndef BF_DEFAULT_OPTIONS | ||
113 | |||
114 | void BF_decrypt(data,key) | ||
115 | BF_LONG *data; | ||
116 | BF_KEY *key; | ||
117 | { | ||
118 | register BF_LONG l,r,*p,*s; | ||
119 | |||
120 | p=key->P; | ||
121 | s= &(key->S[0]); | ||
122 | l=data[0]; | ||
123 | r=data[1]; | ||
124 | |||
125 | l^=p[BF_ROUNDS+1]; | ||
126 | #if BF_ROUNDS == 20 | ||
127 | BF_ENC(r,l,s,p[20]); | ||
128 | BF_ENC(l,r,s,p[19]); | ||
129 | BF_ENC(r,l,s,p[18]); | ||
130 | BF_ENC(l,r,s,p[17]); | ||
131 | #endif | ||
132 | BF_ENC(r,l,s,p[16]); | ||
133 | BF_ENC(l,r,s,p[15]); | ||
134 | BF_ENC(r,l,s,p[14]); | ||
135 | BF_ENC(l,r,s,p[13]); | ||
136 | BF_ENC(r,l,s,p[12]); | ||
137 | BF_ENC(l,r,s,p[11]); | ||
138 | BF_ENC(r,l,s,p[10]); | ||
139 | BF_ENC(l,r,s,p[ 9]); | ||
140 | BF_ENC(r,l,s,p[ 8]); | ||
141 | BF_ENC(l,r,s,p[ 7]); | ||
142 | BF_ENC(r,l,s,p[ 6]); | ||
143 | BF_ENC(l,r,s,p[ 5]); | ||
144 | BF_ENC(r,l,s,p[ 4]); | ||
145 | BF_ENC(l,r,s,p[ 3]); | ||
146 | BF_ENC(r,l,s,p[ 2]); | ||
147 | BF_ENC(l,r,s,p[ 1]); | ||
148 | r^=p[0]; | ||
149 | |||
150 | data[1]=l&0xffffffffL; | ||
151 | data[0]=r&0xffffffffL; | ||
152 | } | ||
153 | |||
154 | void BF_cbc_encrypt(in, out, length, ks, iv, encrypt) | ||
155 | unsigned char *in; | ||
156 | unsigned char *out; | ||
157 | long length; | ||
158 | BF_KEY *ks; | ||
159 | unsigned char *iv; | ||
160 | int encrypt; | ||
161 | { | ||
162 | register BF_LONG tin0,tin1; | ||
163 | register BF_LONG tout0,tout1,xor0,xor1; | ||
164 | register long l=length; | ||
165 | BF_LONG tin[2]; | ||
166 | |||
167 | if (encrypt) | ||
168 | { | ||
169 | n2l(iv,tout0); | ||
170 | n2l(iv,tout1); | ||
171 | iv-=8; | ||
172 | for (l-=8; l>=0; l-=8) | ||
173 | { | ||
174 | n2l(in,tin0); | ||
175 | n2l(in,tin1); | ||
176 | tin0^=tout0; | ||
177 | tin1^=tout1; | ||
178 | tin[0]=tin0; | ||
179 | tin[1]=tin1; | ||
180 | BF_encrypt(tin,ks); | ||
181 | tout0=tin[0]; | ||
182 | tout1=tin[1]; | ||
183 | l2n(tout0,out); | ||
184 | l2n(tout1,out); | ||
185 | } | ||
186 | if (l != -8) | ||
187 | { | ||
188 | n2ln(in,tin0,tin1,l+8); | ||
189 | tin0^=tout0; | ||
190 | tin1^=tout1; | ||
191 | tin[0]=tin0; | ||
192 | tin[1]=tin1; | ||
193 | BF_encrypt(tin,ks); | ||
194 | tout0=tin[0]; | ||
195 | tout1=tin[1]; | ||
196 | l2n(tout0,out); | ||
197 | l2n(tout1,out); | ||
198 | } | ||
199 | l2n(tout0,iv); | ||
200 | l2n(tout1,iv); | ||
201 | } | ||
202 | else | ||
203 | { | ||
204 | n2l(iv,xor0); | ||
205 | n2l(iv,xor1); | ||
206 | iv-=8; | ||
207 | for (l-=8; l>=0; l-=8) | ||
208 | { | ||
209 | n2l(in,tin0); | ||
210 | n2l(in,tin1); | ||
211 | tin[0]=tin0; | ||
212 | tin[1]=tin1; | ||
213 | BF_decrypt(tin,ks); | ||
214 | tout0=tin[0]^xor0; | ||
215 | tout1=tin[1]^xor1; | ||
216 | l2n(tout0,out); | ||
217 | l2n(tout1,out); | ||
218 | xor0=tin0; | ||
219 | xor1=tin1; | ||
220 | } | ||
221 | if (l != -8) | ||
222 | { | ||
223 | n2l(in,tin0); | ||
224 | n2l(in,tin1); | ||
225 | tin[0]=tin0; | ||
226 | tin[1]=tin1; | ||
227 | BF_decrypt(tin,ks); | ||
228 | tout0=tin[0]^xor0; | ||
229 | tout1=tin[1]^xor1; | ||
230 | l2nn(tout0,tout1,out,l+8); | ||
231 | xor0=tin0; | ||
232 | xor1=tin1; | ||
233 | } | ||
234 | l2n(xor0,iv); | ||
235 | l2n(xor1,iv); | ||
236 | } | ||
237 | tin0=tin1=tout0=tout1=xor0=xor1=0; | ||
238 | tin[0]=tin[1]=0; | ||
239 | } | ||
240 | |||
241 | #endif | ||
diff --git a/src/lib/libcrypto/bf/bf_ofb64.c b/src/lib/libcrypto/bf/bf_ofb64.c new file mode 100644 index 0000000000..5d844ac760 --- /dev/null +++ b/src/lib/libcrypto/bf/bf_ofb64.c | |||
@@ -0,0 +1,115 @@ | |||
1 | /* crypto/bf/bf_ofb64.c */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #include "blowfish.h" | ||
60 | #include "bf_locl.h" | ||
61 | |||
62 | /* The input and output encrypted as though 64bit ofb mode is being | ||
63 | * used. The extra state information to record how much of the | ||
64 | * 64bit block we have used is contained in *num; | ||
65 | */ | ||
66 | void BF_ofb64_encrypt(in, out, length, schedule, ivec, num) | ||
67 | unsigned char *in; | ||
68 | unsigned char *out; | ||
69 | long length; | ||
70 | BF_KEY *schedule; | ||
71 | unsigned char *ivec; | ||
72 | int *num; | ||
73 | { | ||
74 | register BF_LONG v0,v1,t; | ||
75 | register int n= *num; | ||
76 | register long l=length; | ||
77 | unsigned char d[8]; | ||
78 | register char *dp; | ||
79 | BF_LONG ti[2]; | ||
80 | unsigned char *iv; | ||
81 | int save=0; | ||
82 | |||
83 | iv=(unsigned char *)ivec; | ||
84 | n2l(iv,v0); | ||
85 | n2l(iv,v1); | ||
86 | ti[0]=v0; | ||
87 | ti[1]=v1; | ||
88 | dp=(char *)d; | ||
89 | l2n(v0,dp); | ||
90 | l2n(v1,dp); | ||
91 | while (l--) | ||
92 | { | ||
93 | if (n == 0) | ||
94 | { | ||
95 | BF_encrypt((BF_LONG *)ti,schedule); | ||
96 | dp=(char *)d; | ||
97 | t=ti[0]; l2n(t,dp); | ||
98 | t=ti[1]; l2n(t,dp); | ||
99 | save++; | ||
100 | } | ||
101 | *(out++)= *(in++)^d[n]; | ||
102 | n=(n+1)&0x07; | ||
103 | } | ||
104 | if (save) | ||
105 | { | ||
106 | v0=ti[0]; | ||
107 | v1=ti[1]; | ||
108 | iv=(unsigned char *)ivec; | ||
109 | l2n(v0,iv); | ||
110 | l2n(v1,iv); | ||
111 | } | ||
112 | t=v0=v1=ti[0]=ti[1]=0; | ||
113 | *num=n; | ||
114 | } | ||
115 | |||
diff --git a/src/lib/libcrypto/bf/bf_pi.h b/src/lib/libcrypto/bf/bf_pi.h new file mode 100644 index 0000000000..417b935538 --- /dev/null +++ b/src/lib/libcrypto/bf/bf_pi.h | |||
@@ -0,0 +1,325 @@ | |||
1 | /* crypto/bf/bf_pi.h */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | static BF_KEY bf_init= { | ||
60 | { | ||
61 | 0x243f6a88L, 0x85a308d3L, 0x13198a2eL, 0x03707344L, | ||
62 | 0xa4093822L, 0x299f31d0L, 0x082efa98L, 0xec4e6c89L, | ||
63 | 0x452821e6L, 0x38d01377L, 0xbe5466cfL, 0x34e90c6cL, | ||
64 | 0xc0ac29b7L, 0xc97c50ddL, 0x3f84d5b5L, 0xb5470917L, | ||
65 | 0x9216d5d9L, 0x8979fb1b | ||
66 | },{ | ||
67 | 0xd1310ba6L, 0x98dfb5acL, 0x2ffd72dbL, 0xd01adfb7L, | ||
68 | 0xb8e1afedL, 0x6a267e96L, 0xba7c9045L, 0xf12c7f99L, | ||
69 | 0x24a19947L, 0xb3916cf7L, 0x0801f2e2L, 0x858efc16L, | ||
70 | 0x636920d8L, 0x71574e69L, 0xa458fea3L, 0xf4933d7eL, | ||
71 | 0x0d95748fL, 0x728eb658L, 0x718bcd58L, 0x82154aeeL, | ||
72 | 0x7b54a41dL, 0xc25a59b5L, 0x9c30d539L, 0x2af26013L, | ||
73 | 0xc5d1b023L, 0x286085f0L, 0xca417918L, 0xb8db38efL, | ||
74 | 0x8e79dcb0L, 0x603a180eL, 0x6c9e0e8bL, 0xb01e8a3eL, | ||
75 | 0xd71577c1L, 0xbd314b27L, 0x78af2fdaL, 0x55605c60L, | ||
76 | 0xe65525f3L, 0xaa55ab94L, 0x57489862L, 0x63e81440L, | ||
77 | 0x55ca396aL, 0x2aab10b6L, 0xb4cc5c34L, 0x1141e8ceL, | ||
78 | 0xa15486afL, 0x7c72e993L, 0xb3ee1411L, 0x636fbc2aL, | ||
79 | 0x2ba9c55dL, 0x741831f6L, 0xce5c3e16L, 0x9b87931eL, | ||
80 | 0xafd6ba33L, 0x6c24cf5cL, 0x7a325381L, 0x28958677L, | ||
81 | 0x3b8f4898L, 0x6b4bb9afL, 0xc4bfe81bL, 0x66282193L, | ||
82 | 0x61d809ccL, 0xfb21a991L, 0x487cac60L, 0x5dec8032L, | ||
83 | 0xef845d5dL, 0xe98575b1L, 0xdc262302L, 0xeb651b88L, | ||
84 | 0x23893e81L, 0xd396acc5L, 0x0f6d6ff3L, 0x83f44239L, | ||
85 | 0x2e0b4482L, 0xa4842004L, 0x69c8f04aL, 0x9e1f9b5eL, | ||
86 | 0x21c66842L, 0xf6e96c9aL, 0x670c9c61L, 0xabd388f0L, | ||
87 | 0x6a51a0d2L, 0xd8542f68L, 0x960fa728L, 0xab5133a3L, | ||
88 | 0x6eef0b6cL, 0x137a3be4L, 0xba3bf050L, 0x7efb2a98L, | ||
89 | 0xa1f1651dL, 0x39af0176L, 0x66ca593eL, 0x82430e88L, | ||
90 | 0x8cee8619L, 0x456f9fb4L, 0x7d84a5c3L, 0x3b8b5ebeL, | ||
91 | 0xe06f75d8L, 0x85c12073L, 0x401a449fL, 0x56c16aa6L, | ||
92 | 0x4ed3aa62L, 0x363f7706L, 0x1bfedf72L, 0x429b023dL, | ||
93 | 0x37d0d724L, 0xd00a1248L, 0xdb0fead3L, 0x49f1c09bL, | ||
94 | 0x075372c9L, 0x80991b7bL, 0x25d479d8L, 0xf6e8def7L, | ||
95 | 0xe3fe501aL, 0xb6794c3bL, 0x976ce0bdL, 0x04c006baL, | ||
96 | 0xc1a94fb6L, 0x409f60c4L, 0x5e5c9ec2L, 0x196a2463L, | ||
97 | 0x68fb6fafL, 0x3e6c53b5L, 0x1339b2ebL, 0x3b52ec6fL, | ||
98 | 0x6dfc511fL, 0x9b30952cL, 0xcc814544L, 0xaf5ebd09L, | ||
99 | 0xbee3d004L, 0xde334afdL, 0x660f2807L, 0x192e4bb3L, | ||
100 | 0xc0cba857L, 0x45c8740fL, 0xd20b5f39L, 0xb9d3fbdbL, | ||
101 | 0x5579c0bdL, 0x1a60320aL, 0xd6a100c6L, 0x402c7279L, | ||
102 | 0x679f25feL, 0xfb1fa3ccL, 0x8ea5e9f8L, 0xdb3222f8L, | ||
103 | 0x3c7516dfL, 0xfd616b15L, 0x2f501ec8L, 0xad0552abL, | ||
104 | 0x323db5faL, 0xfd238760L, 0x53317b48L, 0x3e00df82L, | ||
105 | 0x9e5c57bbL, 0xca6f8ca0L, 0x1a87562eL, 0xdf1769dbL, | ||
106 | 0xd542a8f6L, 0x287effc3L, 0xac6732c6L, 0x8c4f5573L, | ||
107 | 0x695b27b0L, 0xbbca58c8L, 0xe1ffa35dL, 0xb8f011a0L, | ||
108 | 0x10fa3d98L, 0xfd2183b8L, 0x4afcb56cL, 0x2dd1d35bL, | ||
109 | 0x9a53e479L, 0xb6f84565L, 0xd28e49bcL, 0x4bfb9790L, | ||
110 | 0xe1ddf2daL, 0xa4cb7e33L, 0x62fb1341L, 0xcee4c6e8L, | ||
111 | 0xef20cadaL, 0x36774c01L, 0xd07e9efeL, 0x2bf11fb4L, | ||
112 | 0x95dbda4dL, 0xae909198L, 0xeaad8e71L, 0x6b93d5a0L, | ||
113 | 0xd08ed1d0L, 0xafc725e0L, 0x8e3c5b2fL, 0x8e7594b7L, | ||
114 | 0x8ff6e2fbL, 0xf2122b64L, 0x8888b812L, 0x900df01cL, | ||
115 | 0x4fad5ea0L, 0x688fc31cL, 0xd1cff191L, 0xb3a8c1adL, | ||
116 | 0x2f2f2218L, 0xbe0e1777L, 0xea752dfeL, 0x8b021fa1L, | ||
117 | 0xe5a0cc0fL, 0xb56f74e8L, 0x18acf3d6L, 0xce89e299L, | ||
118 | 0xb4a84fe0L, 0xfd13e0b7L, 0x7cc43b81L, 0xd2ada8d9L, | ||
119 | 0x165fa266L, 0x80957705L, 0x93cc7314L, 0x211a1477L, | ||
120 | 0xe6ad2065L, 0x77b5fa86L, 0xc75442f5L, 0xfb9d35cfL, | ||
121 | 0xebcdaf0cL, 0x7b3e89a0L, 0xd6411bd3L, 0xae1e7e49L, | ||
122 | 0x00250e2dL, 0x2071b35eL, 0x226800bbL, 0x57b8e0afL, | ||
123 | 0x2464369bL, 0xf009b91eL, 0x5563911dL, 0x59dfa6aaL, | ||
124 | 0x78c14389L, 0xd95a537fL, 0x207d5ba2L, 0x02e5b9c5L, | ||
125 | 0x83260376L, 0x6295cfa9L, 0x11c81968L, 0x4e734a41L, | ||
126 | 0xb3472dcaL, 0x7b14a94aL, 0x1b510052L, 0x9a532915L, | ||
127 | 0xd60f573fL, 0xbc9bc6e4L, 0x2b60a476L, 0x81e67400L, | ||
128 | 0x08ba6fb5L, 0x571be91fL, 0xf296ec6bL, 0x2a0dd915L, | ||
129 | 0xb6636521L, 0xe7b9f9b6L, 0xff34052eL, 0xc5855664L, | ||
130 | 0x53b02d5dL, 0xa99f8fa1L, 0x08ba4799L, 0x6e85076aL, | ||
131 | 0x4b7a70e9L, 0xb5b32944L, 0xdb75092eL, 0xc4192623L, | ||
132 | 0xad6ea6b0L, 0x49a7df7dL, 0x9cee60b8L, 0x8fedb266L, | ||
133 | 0xecaa8c71L, 0x699a17ffL, 0x5664526cL, 0xc2b19ee1L, | ||
134 | 0x193602a5L, 0x75094c29L, 0xa0591340L, 0xe4183a3eL, | ||
135 | 0x3f54989aL, 0x5b429d65L, 0x6b8fe4d6L, 0x99f73fd6L, | ||
136 | 0xa1d29c07L, 0xefe830f5L, 0x4d2d38e6L, 0xf0255dc1L, | ||
137 | 0x4cdd2086L, 0x8470eb26L, 0x6382e9c6L, 0x021ecc5eL, | ||
138 | 0x09686b3fL, 0x3ebaefc9L, 0x3c971814L, 0x6b6a70a1L, | ||
139 | 0x687f3584L, 0x52a0e286L, 0xb79c5305L, 0xaa500737L, | ||
140 | 0x3e07841cL, 0x7fdeae5cL, 0x8e7d44ecL, 0x5716f2b8L, | ||
141 | 0xb03ada37L, 0xf0500c0dL, 0xf01c1f04L, 0x0200b3ffL, | ||
142 | 0xae0cf51aL, 0x3cb574b2L, 0x25837a58L, 0xdc0921bdL, | ||
143 | 0xd19113f9L, 0x7ca92ff6L, 0x94324773L, 0x22f54701L, | ||
144 | 0x3ae5e581L, 0x37c2dadcL, 0xc8b57634L, 0x9af3dda7L, | ||
145 | 0xa9446146L, 0x0fd0030eL, 0xecc8c73eL, 0xa4751e41L, | ||
146 | 0xe238cd99L, 0x3bea0e2fL, 0x3280bba1L, 0x183eb331L, | ||
147 | 0x4e548b38L, 0x4f6db908L, 0x6f420d03L, 0xf60a04bfL, | ||
148 | 0x2cb81290L, 0x24977c79L, 0x5679b072L, 0xbcaf89afL, | ||
149 | 0xde9a771fL, 0xd9930810L, 0xb38bae12L, 0xdccf3f2eL, | ||
150 | 0x5512721fL, 0x2e6b7124L, 0x501adde6L, 0x9f84cd87L, | ||
151 | 0x7a584718L, 0x7408da17L, 0xbc9f9abcL, 0xe94b7d8cL, | ||
152 | 0xec7aec3aL, 0xdb851dfaL, 0x63094366L, 0xc464c3d2L, | ||
153 | 0xef1c1847L, 0x3215d908L, 0xdd433b37L, 0x24c2ba16L, | ||
154 | 0x12a14d43L, 0x2a65c451L, 0x50940002L, 0x133ae4ddL, | ||
155 | 0x71dff89eL, 0x10314e55L, 0x81ac77d6L, 0x5f11199bL, | ||
156 | 0x043556f1L, 0xd7a3c76bL, 0x3c11183bL, 0x5924a509L, | ||
157 | 0xf28fe6edL, 0x97f1fbfaL, 0x9ebabf2cL, 0x1e153c6eL, | ||
158 | 0x86e34570L, 0xeae96fb1L, 0x860e5e0aL, 0x5a3e2ab3L, | ||
159 | 0x771fe71cL, 0x4e3d06faL, 0x2965dcb9L, 0x99e71d0fL, | ||
160 | 0x803e89d6L, 0x5266c825L, 0x2e4cc978L, 0x9c10b36aL, | ||
161 | 0xc6150ebaL, 0x94e2ea78L, 0xa5fc3c53L, 0x1e0a2df4L, | ||
162 | 0xf2f74ea7L, 0x361d2b3dL, 0x1939260fL, 0x19c27960L, | ||
163 | 0x5223a708L, 0xf71312b6L, 0xebadfe6eL, 0xeac31f66L, | ||
164 | 0xe3bc4595L, 0xa67bc883L, 0xb17f37d1L, 0x018cff28L, | ||
165 | 0xc332ddefL, 0xbe6c5aa5L, 0x65582185L, 0x68ab9802L, | ||
166 | 0xeecea50fL, 0xdb2f953bL, 0x2aef7dadL, 0x5b6e2f84L, | ||
167 | 0x1521b628L, 0x29076170L, 0xecdd4775L, 0x619f1510L, | ||
168 | 0x13cca830L, 0xeb61bd96L, 0x0334fe1eL, 0xaa0363cfL, | ||
169 | 0xb5735c90L, 0x4c70a239L, 0xd59e9e0bL, 0xcbaade14L, | ||
170 | 0xeecc86bcL, 0x60622ca7L, 0x9cab5cabL, 0xb2f3846eL, | ||
171 | 0x648b1eafL, 0x19bdf0caL, 0xa02369b9L, 0x655abb50L, | ||
172 | 0x40685a32L, 0x3c2ab4b3L, 0x319ee9d5L, 0xc021b8f7L, | ||
173 | 0x9b540b19L, 0x875fa099L, 0x95f7997eL, 0x623d7da8L, | ||
174 | 0xf837889aL, 0x97e32d77L, 0x11ed935fL, 0x16681281L, | ||
175 | 0x0e358829L, 0xc7e61fd6L, 0x96dedfa1L, 0x7858ba99L, | ||
176 | 0x57f584a5L, 0x1b227263L, 0x9b83c3ffL, 0x1ac24696L, | ||
177 | 0xcdb30aebL, 0x532e3054L, 0x8fd948e4L, 0x6dbc3128L, | ||
178 | 0x58ebf2efL, 0x34c6ffeaL, 0xfe28ed61L, 0xee7c3c73L, | ||
179 | 0x5d4a14d9L, 0xe864b7e3L, 0x42105d14L, 0x203e13e0L, | ||
180 | 0x45eee2b6L, 0xa3aaabeaL, 0xdb6c4f15L, 0xfacb4fd0L, | ||
181 | 0xc742f442L, 0xef6abbb5L, 0x654f3b1dL, 0x41cd2105L, | ||
182 | 0xd81e799eL, 0x86854dc7L, 0xe44b476aL, 0x3d816250L, | ||
183 | 0xcf62a1f2L, 0x5b8d2646L, 0xfc8883a0L, 0xc1c7b6a3L, | ||
184 | 0x7f1524c3L, 0x69cb7492L, 0x47848a0bL, 0x5692b285L, | ||
185 | 0x095bbf00L, 0xad19489dL, 0x1462b174L, 0x23820e00L, | ||
186 | 0x58428d2aL, 0x0c55f5eaL, 0x1dadf43eL, 0x233f7061L, | ||
187 | 0x3372f092L, 0x8d937e41L, 0xd65fecf1L, 0x6c223bdbL, | ||
188 | 0x7cde3759L, 0xcbee7460L, 0x4085f2a7L, 0xce77326eL, | ||
189 | 0xa6078084L, 0x19f8509eL, 0xe8efd855L, 0x61d99735L, | ||
190 | 0xa969a7aaL, 0xc50c06c2L, 0x5a04abfcL, 0x800bcadcL, | ||
191 | 0x9e447a2eL, 0xc3453484L, 0xfdd56705L, 0x0e1e9ec9L, | ||
192 | 0xdb73dbd3L, 0x105588cdL, 0x675fda79L, 0xe3674340L, | ||
193 | 0xc5c43465L, 0x713e38d8L, 0x3d28f89eL, 0xf16dff20L, | ||
194 | 0x153e21e7L, 0x8fb03d4aL, 0xe6e39f2bL, 0xdb83adf7L, | ||
195 | 0xe93d5a68L, 0x948140f7L, 0xf64c261cL, 0x94692934L, | ||
196 | 0x411520f7L, 0x7602d4f7L, 0xbcf46b2eL, 0xd4a20068L, | ||
197 | 0xd4082471L, 0x3320f46aL, 0x43b7d4b7L, 0x500061afL, | ||
198 | 0x1e39f62eL, 0x97244546L, 0x14214f74L, 0xbf8b8840L, | ||
199 | 0x4d95fc1dL, 0x96b591afL, 0x70f4ddd3L, 0x66a02f45L, | ||
200 | 0xbfbc09ecL, 0x03bd9785L, 0x7fac6dd0L, 0x31cb8504L, | ||
201 | 0x96eb27b3L, 0x55fd3941L, 0xda2547e6L, 0xabca0a9aL, | ||
202 | 0x28507825L, 0x530429f4L, 0x0a2c86daL, 0xe9b66dfbL, | ||
203 | 0x68dc1462L, 0xd7486900L, 0x680ec0a4L, 0x27a18deeL, | ||
204 | 0x4f3ffea2L, 0xe887ad8cL, 0xb58ce006L, 0x7af4d6b6L, | ||
205 | 0xaace1e7cL, 0xd3375fecL, 0xce78a399L, 0x406b2a42L, | ||
206 | 0x20fe9e35L, 0xd9f385b9L, 0xee39d7abL, 0x3b124e8bL, | ||
207 | 0x1dc9faf7L, 0x4b6d1856L, 0x26a36631L, 0xeae397b2L, | ||
208 | 0x3a6efa74L, 0xdd5b4332L, 0x6841e7f7L, 0xca7820fbL, | ||
209 | 0xfb0af54eL, 0xd8feb397L, 0x454056acL, 0xba489527L, | ||
210 | 0x55533a3aL, 0x20838d87L, 0xfe6ba9b7L, 0xd096954bL, | ||
211 | 0x55a867bcL, 0xa1159a58L, 0xcca92963L, 0x99e1db33L, | ||
212 | 0xa62a4a56L, 0x3f3125f9L, 0x5ef47e1cL, 0x9029317cL, | ||
213 | 0xfdf8e802L, 0x04272f70L, 0x80bb155cL, 0x05282ce3L, | ||
214 | 0x95c11548L, 0xe4c66d22L, 0x48c1133fL, 0xc70f86dcL, | ||
215 | 0x07f9c9eeL, 0x41041f0fL, 0x404779a4L, 0x5d886e17L, | ||
216 | 0x325f51ebL, 0xd59bc0d1L, 0xf2bcc18fL, 0x41113564L, | ||
217 | 0x257b7834L, 0x602a9c60L, 0xdff8e8a3L, 0x1f636c1bL, | ||
218 | 0x0e12b4c2L, 0x02e1329eL, 0xaf664fd1L, 0xcad18115L, | ||
219 | 0x6b2395e0L, 0x333e92e1L, 0x3b240b62L, 0xeebeb922L, | ||
220 | 0x85b2a20eL, 0xe6ba0d99L, 0xde720c8cL, 0x2da2f728L, | ||
221 | 0xd0127845L, 0x95b794fdL, 0x647d0862L, 0xe7ccf5f0L, | ||
222 | 0x5449a36fL, 0x877d48faL, 0xc39dfd27L, 0xf33e8d1eL, | ||
223 | 0x0a476341L, 0x992eff74L, 0x3a6f6eabL, 0xf4f8fd37L, | ||
224 | 0xa812dc60L, 0xa1ebddf8L, 0x991be14cL, 0xdb6e6b0dL, | ||
225 | 0xc67b5510L, 0x6d672c37L, 0x2765d43bL, 0xdcd0e804L, | ||
226 | 0xf1290dc7L, 0xcc00ffa3L, 0xb5390f92L, 0x690fed0bL, | ||
227 | 0x667b9ffbL, 0xcedb7d9cL, 0xa091cf0bL, 0xd9155ea3L, | ||
228 | 0xbb132f88L, 0x515bad24L, 0x7b9479bfL, 0x763bd6ebL, | ||
229 | 0x37392eb3L, 0xcc115979L, 0x8026e297L, 0xf42e312dL, | ||
230 | 0x6842ada7L, 0xc66a2b3bL, 0x12754cccL, 0x782ef11cL, | ||
231 | 0x6a124237L, 0xb79251e7L, 0x06a1bbe6L, 0x4bfb6350L, | ||
232 | 0x1a6b1018L, 0x11caedfaL, 0x3d25bdd8L, 0xe2e1c3c9L, | ||
233 | 0x44421659L, 0x0a121386L, 0xd90cec6eL, 0xd5abea2aL, | ||
234 | 0x64af674eL, 0xda86a85fL, 0xbebfe988L, 0x64e4c3feL, | ||
235 | 0x9dbc8057L, 0xf0f7c086L, 0x60787bf8L, 0x6003604dL, | ||
236 | 0xd1fd8346L, 0xf6381fb0L, 0x7745ae04L, 0xd736fcccL, | ||
237 | 0x83426b33L, 0xf01eab71L, 0xb0804187L, 0x3c005e5fL, | ||
238 | 0x77a057beL, 0xbde8ae24L, 0x55464299L, 0xbf582e61L, | ||
239 | 0x4e58f48fL, 0xf2ddfda2L, 0xf474ef38L, 0x8789bdc2L, | ||
240 | 0x5366f9c3L, 0xc8b38e74L, 0xb475f255L, 0x46fcd9b9L, | ||
241 | 0x7aeb2661L, 0x8b1ddf84L, 0x846a0e79L, 0x915f95e2L, | ||
242 | 0x466e598eL, 0x20b45770L, 0x8cd55591L, 0xc902de4cL, | ||
243 | 0xb90bace1L, 0xbb8205d0L, 0x11a86248L, 0x7574a99eL, | ||
244 | 0xb77f19b6L, 0xe0a9dc09L, 0x662d09a1L, 0xc4324633L, | ||
245 | 0xe85a1f02L, 0x09f0be8cL, 0x4a99a025L, 0x1d6efe10L, | ||
246 | 0x1ab93d1dL, 0x0ba5a4dfL, 0xa186f20fL, 0x2868f169L, | ||
247 | 0xdcb7da83L, 0x573906feL, 0xa1e2ce9bL, 0x4fcd7f52L, | ||
248 | 0x50115e01L, 0xa70683faL, 0xa002b5c4L, 0x0de6d027L, | ||
249 | 0x9af88c27L, 0x773f8641L, 0xc3604c06L, 0x61a806b5L, | ||
250 | 0xf0177a28L, 0xc0f586e0L, 0x006058aaL, 0x30dc7d62L, | ||
251 | 0x11e69ed7L, 0x2338ea63L, 0x53c2dd94L, 0xc2c21634L, | ||
252 | 0xbbcbee56L, 0x90bcb6deL, 0xebfc7da1L, 0xce591d76L, | ||
253 | 0x6f05e409L, 0x4b7c0188L, 0x39720a3dL, 0x7c927c24L, | ||
254 | 0x86e3725fL, 0x724d9db9L, 0x1ac15bb4L, 0xd39eb8fcL, | ||
255 | 0xed545578L, 0x08fca5b5L, 0xd83d7cd3L, 0x4dad0fc4L, | ||
256 | 0x1e50ef5eL, 0xb161e6f8L, 0xa28514d9L, 0x6c51133cL, | ||
257 | 0x6fd5c7e7L, 0x56e14ec4L, 0x362abfceL, 0xddc6c837L, | ||
258 | 0xd79a3234L, 0x92638212L, 0x670efa8eL, 0x406000e0L, | ||
259 | 0x3a39ce37L, 0xd3faf5cfL, 0xabc27737L, 0x5ac52d1bL, | ||
260 | 0x5cb0679eL, 0x4fa33742L, 0xd3822740L, 0x99bc9bbeL, | ||
261 | 0xd5118e9dL, 0xbf0f7315L, 0xd62d1c7eL, 0xc700c47bL, | ||
262 | 0xb78c1b6bL, 0x21a19045L, 0xb26eb1beL, 0x6a366eb4L, | ||
263 | 0x5748ab2fL, 0xbc946e79L, 0xc6a376d2L, 0x6549c2c8L, | ||
264 | 0x530ff8eeL, 0x468dde7dL, 0xd5730a1dL, 0x4cd04dc6L, | ||
265 | 0x2939bbdbL, 0xa9ba4650L, 0xac9526e8L, 0xbe5ee304L, | ||
266 | 0xa1fad5f0L, 0x6a2d519aL, 0x63ef8ce2L, 0x9a86ee22L, | ||
267 | 0xc089c2b8L, 0x43242ef6L, 0xa51e03aaL, 0x9cf2d0a4L, | ||
268 | 0x83c061baL, 0x9be96a4dL, 0x8fe51550L, 0xba645bd6L, | ||
269 | 0x2826a2f9L, 0xa73a3ae1L, 0x4ba99586L, 0xef5562e9L, | ||
270 | 0xc72fefd3L, 0xf752f7daL, 0x3f046f69L, 0x77fa0a59L, | ||
271 | 0x80e4a915L, 0x87b08601L, 0x9b09e6adL, 0x3b3ee593L, | ||
272 | 0xe990fd5aL, 0x9e34d797L, 0x2cf0b7d9L, 0x022b8b51L, | ||
273 | 0x96d5ac3aL, 0x017da67dL, 0xd1cf3ed6L, 0x7c7d2d28L, | ||
274 | 0x1f9f25cfL, 0xadf2b89bL, 0x5ad6b472L, 0x5a88f54cL, | ||
275 | 0xe029ac71L, 0xe019a5e6L, 0x47b0acfdL, 0xed93fa9bL, | ||
276 | 0xe8d3c48dL, 0x283b57ccL, 0xf8d56629L, 0x79132e28L, | ||
277 | 0x785f0191L, 0xed756055L, 0xf7960e44L, 0xe3d35e8cL, | ||
278 | 0x15056dd4L, 0x88f46dbaL, 0x03a16125L, 0x0564f0bdL, | ||
279 | 0xc3eb9e15L, 0x3c9057a2L, 0x97271aecL, 0xa93a072aL, | ||
280 | 0x1b3f6d9bL, 0x1e6321f5L, 0xf59c66fbL, 0x26dcf319L, | ||
281 | 0x7533d928L, 0xb155fdf5L, 0x03563482L, 0x8aba3cbbL, | ||
282 | 0x28517711L, 0xc20ad9f8L, 0xabcc5167L, 0xccad925fL, | ||
283 | 0x4de81751L, 0x3830dc8eL, 0x379d5862L, 0x9320f991L, | ||
284 | 0xea7a90c2L, 0xfb3e7bceL, 0x5121ce64L, 0x774fbe32L, | ||
285 | 0xa8b6e37eL, 0xc3293d46L, 0x48de5369L, 0x6413e680L, | ||
286 | 0xa2ae0810L, 0xdd6db224L, 0x69852dfdL, 0x09072166L, | ||
287 | 0xb39a460aL, 0x6445c0ddL, 0x586cdecfL, 0x1c20c8aeL, | ||
288 | 0x5bbef7ddL, 0x1b588d40L, 0xccd2017fL, 0x6bb4e3bbL, | ||
289 | 0xdda26a7eL, 0x3a59ff45L, 0x3e350a44L, 0xbcb4cdd5L, | ||
290 | 0x72eacea8L, 0xfa6484bbL, 0x8d6612aeL, 0xbf3c6f47L, | ||
291 | 0xd29be463L, 0x542f5d9eL, 0xaec2771bL, 0xf64e6370L, | ||
292 | 0x740e0d8dL, 0xe75b1357L, 0xf8721671L, 0xaf537d5dL, | ||
293 | 0x4040cb08L, 0x4eb4e2ccL, 0x34d2466aL, 0x0115af84L, | ||
294 | 0xe1b00428L, 0x95983a1dL, 0x06b89fb4L, 0xce6ea048L, | ||
295 | 0x6f3f3b82L, 0x3520ab82L, 0x011a1d4bL, 0x277227f8L, | ||
296 | 0x611560b1L, 0xe7933fdcL, 0xbb3a792bL, 0x344525bdL, | ||
297 | 0xa08839e1L, 0x51ce794bL, 0x2f32c9b7L, 0xa01fbac9L, | ||
298 | 0xe01cc87eL, 0xbcc7d1f6L, 0xcf0111c3L, 0xa1e8aac7L, | ||
299 | 0x1a908749L, 0xd44fbd9aL, 0xd0dadecbL, 0xd50ada38L, | ||
300 | 0x0339c32aL, 0xc6913667L, 0x8df9317cL, 0xe0b12b4fL, | ||
301 | 0xf79e59b7L, 0x43f5bb3aL, 0xf2d519ffL, 0x27d9459cL, | ||
302 | 0xbf97222cL, 0x15e6fc2aL, 0x0f91fc71L, 0x9b941525L, | ||
303 | 0xfae59361L, 0xceb69cebL, 0xc2a86459L, 0x12baa8d1L, | ||
304 | 0xb6c1075eL, 0xe3056a0cL, 0x10d25065L, 0xcb03a442L, | ||
305 | 0xe0ec6e0eL, 0x1698db3bL, 0x4c98a0beL, 0x3278e964L, | ||
306 | 0x9f1f9532L, 0xe0d392dfL, 0xd3a0342bL, 0x8971f21eL, | ||
307 | 0x1b0a7441L, 0x4ba3348cL, 0xc5be7120L, 0xc37632d8L, | ||
308 | 0xdf359f8dL, 0x9b992f2eL, 0xe60b6f47L, 0x0fe3f11dL, | ||
309 | 0xe54cda54L, 0x1edad891L, 0xce6279cfL, 0xcd3e7e6fL, | ||
310 | 0x1618b166L, 0xfd2c1d05L, 0x848fd2c5L, 0xf6fb2299L, | ||
311 | 0xf523f357L, 0xa6327623L, 0x93a83531L, 0x56cccd02L, | ||
312 | 0xacf08162L, 0x5a75ebb5L, 0x6e163697L, 0x88d273ccL, | ||
313 | 0xde966292L, 0x81b949d0L, 0x4c50901bL, 0x71c65614L, | ||
314 | 0xe6c6c7bdL, 0x327a140aL, 0x45e1d006L, 0xc3f27b9aL, | ||
315 | 0xc9aa53fdL, 0x62a80f00L, 0xbb25bfe2L, 0x35bdd2f6L, | ||
316 | 0x71126905L, 0xb2040222L, 0xb6cbcf7cL, 0xcd769c2bL, | ||
317 | 0x53113ec0L, 0x1640e3d3L, 0x38abbd60L, 0x2547adf0L, | ||
318 | 0xba38209cL, 0xf746ce76L, 0x77afa1c5L, 0x20756060L, | ||
319 | 0x85cbfe4eL, 0x8ae88dd8L, 0x7aaaf9b0L, 0x4cf9aa7eL, | ||
320 | 0x1948c25cL, 0x02fb8a8cL, 0x01c36ae4L, 0xd6ebe1f9L, | ||
321 | 0x90d4f869L, 0xa65cdea0L, 0x3f09252dL, 0xc208e69fL, | ||
322 | 0xb74e6132L, 0xce77e25bL, 0x578fdfe3L, 0x3ac372e6L, | ||
323 | } | ||
324 | }; | ||
325 | |||
diff --git a/src/lib/libcrypto/bf/bf_skey.c b/src/lib/libcrypto/bf/bf_skey.c new file mode 100644 index 0000000000..86574c0acc --- /dev/null +++ b/src/lib/libcrypto/bf/bf_skey.c | |||
@@ -0,0 +1,119 @@ | |||
1 | /* crypto/bf/bf_skey.c */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include <string.h> | ||
61 | #include "blowfish.h" | ||
62 | #include "bf_locl.h" | ||
63 | #include "bf_pi.h" | ||
64 | |||
65 | void BF_set_key(key,len,data) | ||
66 | BF_KEY *key; | ||
67 | int len; | ||
68 | unsigned char *data; | ||
69 | { | ||
70 | int i; | ||
71 | BF_LONG *p,ri,in[2]; | ||
72 | unsigned char *d,*end; | ||
73 | |||
74 | |||
75 | memcpy((char *)key,(char *)&bf_init,sizeof(BF_KEY)); | ||
76 | p=key->P; | ||
77 | |||
78 | if (len > ((BF_ROUNDS+2)*4)) len=(BF_ROUNDS+2)*4; | ||
79 | |||
80 | d=data; | ||
81 | end= &(data[len]); | ||
82 | for (i=0; i<(BF_ROUNDS+2); i++) | ||
83 | { | ||
84 | ri= *(d++); | ||
85 | if (d >= end) d=data; | ||
86 | |||
87 | ri<<=8; | ||
88 | ri|= *(d++); | ||
89 | if (d >= end) d=data; | ||
90 | |||
91 | ri<<=8; | ||
92 | ri|= *(d++); | ||
93 | if (d >= end) d=data; | ||
94 | |||
95 | ri<<=8; | ||
96 | ri|= *(d++); | ||
97 | if (d >= end) d=data; | ||
98 | |||
99 | p[i]^=ri; | ||
100 | } | ||
101 | |||
102 | in[0]=0L; | ||
103 | in[1]=0L; | ||
104 | for (i=0; i<(BF_ROUNDS+2); i+=2) | ||
105 | { | ||
106 | BF_encrypt(in,key); | ||
107 | p[i ]=in[0]; | ||
108 | p[i+1]=in[1]; | ||
109 | } | ||
110 | |||
111 | p=key->S; | ||
112 | for (i=0; i<4*256; i+=2) | ||
113 | { | ||
114 | BF_encrypt(in,key); | ||
115 | p[i ]=in[0]; | ||
116 | p[i+1]=in[1]; | ||
117 | } | ||
118 | } | ||
119 | |||
diff --git a/src/lib/libcrypto/bf/blowfish.h b/src/lib/libcrypto/bf/blowfish.h new file mode 100644 index 0000000000..c4a8085a29 --- /dev/null +++ b/src/lib/libcrypto/bf/blowfish.h | |||
@@ -0,0 +1,116 @@ | |||
1 | /* crypto/bf/blowfish.h */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #ifndef HEADER_BLOWFISH_H | ||
60 | #define HEADER_BLOWFISH_H | ||
61 | |||
62 | #ifdef __cplusplus | ||
63 | extern "C" { | ||
64 | #endif | ||
65 | |||
66 | #define BF_ENCRYPT 1 | ||
67 | #define BF_DECRYPT 0 | ||
68 | |||
69 | /* If you make this 'unsigned int' the pointer variants will work on | ||
70 | * the Alpha, otherwise they will not. Strangly using the '8 byte' | ||
71 | * BF_LONG and the default 'non-pointer' inner loop is the best configuration | ||
72 | * for the Alpha */ | ||
73 | #define BF_LONG unsigned long | ||
74 | |||
75 | #define BF_ROUNDS 16 | ||
76 | #define BF_BLOCK 8 | ||
77 | |||
78 | typedef struct bf_key_st | ||
79 | { | ||
80 | BF_LONG P[BF_ROUNDS+2]; | ||
81 | BF_LONG S[4*256]; | ||
82 | } BF_KEY; | ||
83 | |||
84 | #ifndef NOPROTO | ||
85 | |||
86 | void BF_set_key(BF_KEY *key, int len, unsigned char *data); | ||
87 | void BF_ecb_encrypt(unsigned char *in,unsigned char *out,BF_KEY *key, | ||
88 | int enc); | ||
89 | void BF_encrypt(BF_LONG *data,BF_KEY *key); | ||
90 | void BF_decrypt(BF_LONG *data,BF_KEY *key); | ||
91 | void BF_cbc_encrypt(unsigned char *in, unsigned char *out, long length, | ||
92 | BF_KEY *ks, unsigned char *iv, int enc); | ||
93 | void BF_cfb64_encrypt(unsigned char *in, unsigned char *out, long length, | ||
94 | BF_KEY *schedule, unsigned char *ivec, int *num, int enc); | ||
95 | void BF_ofb64_encrypt(unsigned char *in, unsigned char *out, long length, | ||
96 | BF_KEY *schedule, unsigned char *ivec, int *num); | ||
97 | char *BF_options(void); | ||
98 | |||
99 | #else | ||
100 | |||
101 | void BF_set_key(); | ||
102 | void BF_ecb_encrypt(); | ||
103 | void BF_encrypt(); | ||
104 | void BF_decrypt(); | ||
105 | void BF_cbc_encrypt(); | ||
106 | void BF_cfb64_encrypt(); | ||
107 | void BF_ofb64_encrypt(); | ||
108 | char *BF_options(); | ||
109 | |||
110 | #endif | ||
111 | |||
112 | #ifdef __cplusplus | ||
113 | } | ||
114 | #endif | ||
115 | |||
116 | #endif | ||