diff options
author | beck <> | 1999-09-29 04:37:45 +0000 |
---|---|---|
committer | beck <> | 1999-09-29 04:37:45 +0000 |
commit | de8f24ea083384bb66b32ec105dc4743c5663cdf (patch) | |
tree | 1412176ae62a3cab2cf2b0b92150fcbceaac6092 /src/lib/libcrypto/bf/bf_enc.c | |
parent | cb929d29896bcb87c2a97417fbd03e50078fc178 (diff) | |
download | openbsd-de8f24ea083384bb66b32ec105dc4743c5663cdf.tar.gz openbsd-de8f24ea083384bb66b32ec105dc4743c5663cdf.tar.bz2 openbsd-de8f24ea083384bb66b32ec105dc4743c5663cdf.zip |
OpenSSL 0.9.4 merge
Diffstat (limited to 'src/lib/libcrypto/bf/bf_enc.c')
-rw-r--r-- | src/lib/libcrypto/bf/bf_enc.c | 93 |
1 files changed, 78 insertions, 15 deletions
diff --git a/src/lib/libcrypto/bf/bf_enc.c b/src/lib/libcrypto/bf/bf_enc.c index 66a8604c59..ee01834561 100644 --- a/src/lib/libcrypto/bf/bf_enc.c +++ b/src/lib/libcrypto/bf/bf_enc.c | |||
@@ -56,7 +56,7 @@ | |||
56 | * [including the GNU Public Licence.] | 56 | * [including the GNU Public Licence.] |
57 | */ | 57 | */ |
58 | 58 | ||
59 | #include "blowfish.h" | 59 | #include <openssl/blowfish.h> |
60 | #include "bf_locl.h" | 60 | #include "bf_locl.h" |
61 | 61 | ||
62 | /* Blowfish as implemented from 'Blowfish: Springer-Verlag paper' | 62 | /* Blowfish as implemented from 'Blowfish: Springer-Verlag paper' |
@@ -65,14 +65,13 @@ | |||
65 | */ | 65 | */ |
66 | 66 | ||
67 | #if (BF_ROUNDS != 16) && (BF_ROUNDS != 20) | 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 | 68 | #error If you set BF_ROUNDS to some value other than 16 or 20, you will have \ |
69 | to modify the code. | 69 | to modify the code. |
70 | #endif | 70 | #endif |
71 | 71 | ||
72 | void BF_encrypt(data,key) | 72 | void BF_encrypt(BF_LONG *data, BF_KEY *key) |
73 | BF_LONG *data; | ||
74 | BF_KEY *key; | ||
75 | { | 73 | { |
74 | #ifndef BF_PTR2 | ||
76 | register BF_LONG l,r,*p,*s; | 75 | register BF_LONG l,r,*p,*s; |
77 | 76 | ||
78 | p=key->P; | 77 | p=key->P; |
@@ -107,14 +106,48 @@ BF_KEY *key; | |||
107 | 106 | ||
108 | data[1]=l&0xffffffffL; | 107 | data[1]=l&0xffffffffL; |
109 | data[0]=r&0xffffffffL; | 108 | data[0]=r&0xffffffffL; |
109 | #else | ||
110 | register BF_LONG l,r,t,*k; | ||
111 | |||
112 | l=data[0]; | ||
113 | r=data[1]; | ||
114 | k=(BF_LONG*)key; | ||
115 | |||
116 | l^=k[0]; | ||
117 | BF_ENC(r,l,k, 1); | ||
118 | BF_ENC(l,r,k, 2); | ||
119 | BF_ENC(r,l,k, 3); | ||
120 | BF_ENC(l,r,k, 4); | ||
121 | BF_ENC(r,l,k, 5); | ||
122 | BF_ENC(l,r,k, 6); | ||
123 | BF_ENC(r,l,k, 7); | ||
124 | BF_ENC(l,r,k, 8); | ||
125 | BF_ENC(r,l,k, 9); | ||
126 | BF_ENC(l,r,k,10); | ||
127 | BF_ENC(r,l,k,11); | ||
128 | BF_ENC(l,r,k,12); | ||
129 | BF_ENC(r,l,k,13); | ||
130 | BF_ENC(l,r,k,14); | ||
131 | BF_ENC(r,l,k,15); | ||
132 | BF_ENC(l,r,k,16); | ||
133 | #if BF_ROUNDS == 20 | ||
134 | BF_ENC(r,l,k,17); | ||
135 | BF_ENC(l,r,k,18); | ||
136 | BF_ENC(r,l,k,19); | ||
137 | BF_ENC(l,r,k,20); | ||
138 | #endif | ||
139 | r^=k[BF_ROUNDS+1]; | ||
140 | |||
141 | data[1]=l&0xffffffffL; | ||
142 | data[0]=r&0xffffffffL; | ||
143 | #endif | ||
110 | } | 144 | } |
111 | 145 | ||
112 | #ifndef BF_DEFAULT_OPTIONS | 146 | #ifndef BF_DEFAULT_OPTIONS |
113 | 147 | ||
114 | void BF_decrypt(data,key) | 148 | void BF_decrypt(BF_LONG *data, BF_KEY *key) |
115 | BF_LONG *data; | ||
116 | BF_KEY *key; | ||
117 | { | 149 | { |
150 | #ifndef BF_PTR2 | ||
118 | register BF_LONG l,r,*p,*s; | 151 | register BF_LONG l,r,*p,*s; |
119 | 152 | ||
120 | p=key->P; | 153 | p=key->P; |
@@ -149,15 +182,45 @@ BF_KEY *key; | |||
149 | 182 | ||
150 | data[1]=l&0xffffffffL; | 183 | data[1]=l&0xffffffffL; |
151 | data[0]=r&0xffffffffL; | 184 | data[0]=r&0xffffffffL; |
185 | #else | ||
186 | register BF_LONG l,r,t,*k; | ||
187 | |||
188 | l=data[0]; | ||
189 | r=data[1]; | ||
190 | k=(BF_LONG *)key; | ||
191 | |||
192 | l^=k[BF_ROUNDS+1]; | ||
193 | #if BF_ROUNDS == 20 | ||
194 | BF_ENC(r,l,k,20); | ||
195 | BF_ENC(l,r,k,19); | ||
196 | BF_ENC(r,l,k,18); | ||
197 | BF_ENC(l,r,k,17); | ||
198 | #endif | ||
199 | BF_ENC(r,l,k,16); | ||
200 | BF_ENC(l,r,k,15); | ||
201 | BF_ENC(r,l,k,14); | ||
202 | BF_ENC(l,r,k,13); | ||
203 | BF_ENC(r,l,k,12); | ||
204 | BF_ENC(l,r,k,11); | ||
205 | BF_ENC(r,l,k,10); | ||
206 | BF_ENC(l,r,k, 9); | ||
207 | BF_ENC(r,l,k, 8); | ||
208 | BF_ENC(l,r,k, 7); | ||
209 | BF_ENC(r,l,k, 6); | ||
210 | BF_ENC(l,r,k, 5); | ||
211 | BF_ENC(r,l,k, 4); | ||
212 | BF_ENC(l,r,k, 3); | ||
213 | BF_ENC(r,l,k, 2); | ||
214 | BF_ENC(l,r,k, 1); | ||
215 | r^=k[0]; | ||
216 | |||
217 | data[1]=l&0xffffffffL; | ||
218 | data[0]=r&0xffffffffL; | ||
219 | #endif | ||
152 | } | 220 | } |
153 | 221 | ||
154 | void BF_cbc_encrypt(in, out, length, ks, iv, encrypt) | 222 | void BF_cbc_encrypt(unsigned char *in, unsigned char *out, long length, |
155 | unsigned char *in; | 223 | BF_KEY *ks, unsigned char *iv, int encrypt) |
156 | unsigned char *out; | ||
157 | long length; | ||
158 | BF_KEY *ks; | ||
159 | unsigned char *iv; | ||
160 | int encrypt; | ||
161 | { | 224 | { |
162 | register BF_LONG tin0,tin1; | 225 | register BF_LONG tin0,tin1; |
163 | register BF_LONG tout0,tout1,xor0,xor1; | 226 | register BF_LONG tout0,tout1,xor0,xor1; |