summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/bf/bf_enc.c
diff options
context:
space:
mode:
authorbeck <>1999-09-29 04:37:45 +0000
committerbeck <>1999-09-29 04:37:45 +0000
commitde8f24ea083384bb66b32ec105dc4743c5663cdf (patch)
tree1412176ae62a3cab2cf2b0b92150fcbceaac6092 /src/lib/libcrypto/bf/bf_enc.c
parentcb929d29896bcb87c2a97417fbd03e50078fc178 (diff)
downloadopenbsd-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.c93
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)
68If 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 \
69to modify the code. 69to modify the code.
70#endif 70#endif
71 71
72void BF_encrypt(data,key) 72void BF_encrypt(BF_LONG *data, BF_KEY *key)
73BF_LONG *data;
74BF_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
114void BF_decrypt(data,key) 148void BF_decrypt(BF_LONG *data, BF_KEY *key)
115BF_LONG *data;
116BF_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
154void BF_cbc_encrypt(in, out, length, ks, iv, encrypt) 222void BF_cbc_encrypt(unsigned char *in, unsigned char *out, long length,
155unsigned char *in; 223 BF_KEY *ks, unsigned char *iv, int encrypt)
156unsigned char *out;
157long length;
158BF_KEY *ks;
159unsigned char *iv;
160int 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;