diff options
author | djm <> | 2010-10-01 22:54:18 +0000 |
---|---|---|
committer | djm <> | 2010-10-01 22:54:18 +0000 |
commit | f6ca1ae73bb9eabfb510df2cffc2599db98d35a9 (patch) | |
tree | def8296400903465cb96345535c0a56935eb05a4 /src/lib/libcrypto/seed | |
parent | 0229f29a33371533962d8b0b8264882afac53d70 (diff) | |
download | openbsd-f6ca1ae73bb9eabfb510df2cffc2599db98d35a9.tar.gz openbsd-f6ca1ae73bb9eabfb510df2cffc2599db98d35a9.tar.bz2 openbsd-f6ca1ae73bb9eabfb510df2cffc2599db98d35a9.zip |
import OpenSSL-1.0.0a
Diffstat (limited to 'src/lib/libcrypto/seed')
-rw-r--r-- | src/lib/libcrypto/seed/Makefile | 39 | ||||
-rw-r--r-- | src/lib/libcrypto/seed/seed.c | 45 | ||||
-rw-r--r-- | src/lib/libcrypto/seed/seed.h | 2 | ||||
-rw-r--r-- | src/lib/libcrypto/seed/seed_cbc.c | 76 | ||||
-rw-r--r-- | src/lib/libcrypto/seed/seed_cfb.c | 34 | ||||
-rw-r--r-- | src/lib/libcrypto/seed/seed_ofb.c | 18 |
6 files changed, 84 insertions, 130 deletions
diff --git a/src/lib/libcrypto/seed/Makefile b/src/lib/libcrypto/seed/Makefile index ffaeb84218..4bc55e4916 100644 --- a/src/lib/libcrypto/seed/Makefile +++ b/src/lib/libcrypto/seed/Makefile | |||
@@ -34,7 +34,7 @@ top: | |||
34 | all: lib | 34 | all: lib |
35 | 35 | ||
36 | lib: $(LIBOBJ) | 36 | lib: $(LIBOBJ) |
37 | $(ARX) $(LIB) $(LIBOBJ) | 37 | $(AR) $(LIB) $(LIBOBJ) |
38 | $(RANLIB) $(LIB) || echo Never mind. | 38 | $(RANLIB) $(LIB) || echo Never mind. |
39 | @touch lib | 39 | @touch lib |
40 | 40 | ||
@@ -75,13 +75,32 @@ clean: | |||
75 | 75 | ||
76 | # DO NOT DELETE THIS LINE -- make depend depends on it. | 76 | # DO NOT DELETE THIS LINE -- make depend depends on it. |
77 | 77 | ||
78 | seed.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h | 78 | seed.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
79 | seed.o: ../../include/openssl/seed.h seed.c seed_locl.h | 79 | seed.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
80 | seed_cbc.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h | 80 | seed.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h |
81 | seed_cbc.o: ../../include/openssl/seed.h seed_cbc.c seed_locl.h | 81 | seed.o: ../../include/openssl/seed.h ../../include/openssl/stack.h |
82 | seed_cfb.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h | 82 | seed.o: ../../include/openssl/symhacks.h seed.c seed_locl.h |
83 | seed_cfb.o: ../../include/openssl/seed.h seed_cfb.c seed_locl.h | 83 | seed_cbc.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
84 | seed_ecb.o: ../../include/openssl/opensslconf.h ../../include/openssl/seed.h | 84 | seed_cbc.o: ../../include/openssl/modes.h ../../include/openssl/opensslconf.h |
85 | seed_cbc.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | ||
86 | seed_cbc.o: ../../include/openssl/safestack.h ../../include/openssl/seed.h | ||
87 | seed_cbc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | ||
88 | seed_cbc.o: seed_cbc.c | ||
89 | seed_cfb.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | ||
90 | seed_cfb.o: ../../include/openssl/modes.h ../../include/openssl/opensslconf.h | ||
91 | seed_cfb.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | ||
92 | seed_cfb.o: ../../include/openssl/safestack.h ../../include/openssl/seed.h | ||
93 | seed_cfb.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | ||
94 | seed_cfb.o: seed_cfb.c | ||
95 | seed_ecb.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | ||
96 | seed_ecb.o: ../../include/openssl/opensslconf.h | ||
97 | seed_ecb.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | ||
98 | seed_ecb.o: ../../include/openssl/safestack.h ../../include/openssl/seed.h | ||
99 | seed_ecb.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | ||
85 | seed_ecb.o: seed_ecb.c | 100 | seed_ecb.o: seed_ecb.c |
86 | seed_ofb.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h | 101 | seed_ofb.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
87 | seed_ofb.o: ../../include/openssl/seed.h seed_locl.h seed_ofb.c | 102 | seed_ofb.o: ../../include/openssl/modes.h ../../include/openssl/opensslconf.h |
103 | seed_ofb.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | ||
104 | seed_ofb.o: ../../include/openssl/safestack.h ../../include/openssl/seed.h | ||
105 | seed_ofb.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | ||
106 | seed_ofb.o: seed_ofb.c | ||
diff --git a/src/lib/libcrypto/seed/seed.c b/src/lib/libcrypto/seed/seed.c index 125dd7d66f..2bc384a19f 100644 --- a/src/lib/libcrypto/seed/seed.c +++ b/src/lib/libcrypto/seed/seed.c | |||
@@ -35,7 +35,7 @@ | |||
35 | #include <openssl/seed.h> | 35 | #include <openssl/seed.h> |
36 | #include "seed_locl.h" | 36 | #include "seed_locl.h" |
37 | 37 | ||
38 | static seed_word SS[4][256] = { { | 38 | static const seed_word SS[4][256] = { { |
39 | 0x2989a1a8, 0x05858184, 0x16c6d2d4, 0x13c3d3d0, 0x14445054, 0x1d0d111c, 0x2c8ca0ac, 0x25052124, | 39 | 0x2989a1a8, 0x05858184, 0x16c6d2d4, 0x13c3d3d0, 0x14445054, 0x1d0d111c, 0x2c8ca0ac, 0x25052124, |
40 | 0x1d4d515c, 0x03434340, 0x18081018, 0x1e0e121c, 0x11415150, 0x3cccf0fc, 0x0acac2c8, 0x23436360, | 40 | 0x1d4d515c, 0x03434340, 0x18081018, 0x1e0e121c, 0x11415150, 0x3cccf0fc, 0x0acac2c8, 0x23436360, |
41 | 0x28082028, 0x04444044, 0x20002020, 0x1d8d919c, 0x20c0e0e0, 0x22c2e2e0, 0x08c8c0c8, 0x17071314, | 41 | 0x28082028, 0x04444044, 0x20002020, 0x1d8d919c, 0x20c0e0e0, 0x22c2e2e0, 0x08c8c0c8, 0x17071314, |
@@ -187,6 +187,11 @@ static seed_word SS[4][256] = { { | |||
187 | #define KC14 0xde6e678d | 187 | #define KC14 0xde6e678d |
188 | #define KC15 0xbcdccf1b | 188 | #define KC15 0xbcdccf1b |
189 | 189 | ||
190 | #if defined(OPENSSL_SMALL_FOOTPRINT) | ||
191 | static const seed_word KC[] = { | ||
192 | KC0, KC1, KC2, KC3, KC4, KC5, KC6, KC7, | ||
193 | KC8, KC9, KC10, KC11, KC12, KC13, KC14, KC15 }; | ||
194 | #endif | ||
190 | 195 | ||
191 | void SEED_set_key(const unsigned char rawkey[SEED_KEY_LENGTH], SEED_KEY_SCHEDULE *ks) | 196 | void SEED_set_key(const unsigned char rawkey[SEED_KEY_LENGTH], SEED_KEY_SCHEDULE *ks) |
192 | { | 197 | { |
@@ -201,6 +206,8 @@ void SEED_set_key(const unsigned char rawkey[SEED_KEY_LENGTH], SEED_KEY_SCHEDULE | |||
201 | t0 = (x1 + x3 - KC0) & 0xffffffff; | 206 | t0 = (x1 + x3 - KC0) & 0xffffffff; |
202 | t1 = (x2 - x4 + KC0) & 0xffffffff; KEYUPDATE_TEMP(t0, t1, &ks->data[0]); | 207 | t1 = (x2 - x4 + KC0) & 0xffffffff; KEYUPDATE_TEMP(t0, t1, &ks->data[0]); |
203 | KEYSCHEDULE_UPDATE1(t0, t1, x1, x2, x3, x4, KC1); KEYUPDATE_TEMP(t0, t1, &ks->data[2]); | 208 | KEYSCHEDULE_UPDATE1(t0, t1, x1, x2, x3, x4, KC1); KEYUPDATE_TEMP(t0, t1, &ks->data[2]); |
209 | |||
210 | #if !defined(OPENSSL_SMALL_FOOTPRINT) | ||
204 | KEYSCHEDULE_UPDATE0(t0, t1, x1, x2, x3, x4, KC2); KEYUPDATE_TEMP(t0, t1, &ks->data[4]); | 211 | KEYSCHEDULE_UPDATE0(t0, t1, x1, x2, x3, x4, KC2); KEYUPDATE_TEMP(t0, t1, &ks->data[4]); |
205 | KEYSCHEDULE_UPDATE1(t0, t1, x1, x2, x3, x4, KC3); KEYUPDATE_TEMP(t0, t1, &ks->data[6]); | 212 | KEYSCHEDULE_UPDATE1(t0, t1, x1, x2, x3, x4, KC3); KEYUPDATE_TEMP(t0, t1, &ks->data[6]); |
206 | KEYSCHEDULE_UPDATE0(t0, t1, x1, x2, x3, x4, KC4); KEYUPDATE_TEMP(t0, t1, &ks->data[8]); | 213 | KEYSCHEDULE_UPDATE0(t0, t1, x1, x2, x3, x4, KC4); KEYUPDATE_TEMP(t0, t1, &ks->data[8]); |
@@ -215,6 +222,17 @@ void SEED_set_key(const unsigned char rawkey[SEED_KEY_LENGTH], SEED_KEY_SCHEDULE | |||
215 | KEYSCHEDULE_UPDATE1(t0, t1, x1, x2, x3, x4, KC13); KEYUPDATE_TEMP(t0, t1, &ks->data[26]); | 222 | KEYSCHEDULE_UPDATE1(t0, t1, x1, x2, x3, x4, KC13); KEYUPDATE_TEMP(t0, t1, &ks->data[26]); |
216 | KEYSCHEDULE_UPDATE0(t0, t1, x1, x2, x3, x4, KC14); KEYUPDATE_TEMP(t0, t1, &ks->data[28]); | 223 | KEYSCHEDULE_UPDATE0(t0, t1, x1, x2, x3, x4, KC14); KEYUPDATE_TEMP(t0, t1, &ks->data[28]); |
217 | KEYSCHEDULE_UPDATE1(t0, t1, x1, x2, x3, x4, KC15); KEYUPDATE_TEMP(t0, t1, &ks->data[30]); | 224 | KEYSCHEDULE_UPDATE1(t0, t1, x1, x2, x3, x4, KC15); KEYUPDATE_TEMP(t0, t1, &ks->data[30]); |
225 | #else | ||
226 | { | ||
227 | int i; | ||
228 | for (i=2; i<16; i+=2) { | ||
229 | KEYSCHEDULE_UPDATE0(t0, t1, x1, x2, x3, x4, KC[i]); | ||
230 | KEYUPDATE_TEMP(t0, t1, &ks->data[i*2]); | ||
231 | KEYSCHEDULE_UPDATE1(t0, t1, x1, x2, x3, x4, KC[i+1]); | ||
232 | KEYUPDATE_TEMP(t0, t1, &ks->data[i*2+2]); | ||
233 | } | ||
234 | } | ||
235 | #endif | ||
218 | } | 236 | } |
219 | 237 | ||
220 | void SEED_encrypt(const unsigned char s[SEED_BLOCK_SIZE], unsigned char d[SEED_BLOCK_SIZE], const SEED_KEY_SCHEDULE *ks) | 238 | void SEED_encrypt(const unsigned char s[SEED_BLOCK_SIZE], unsigned char d[SEED_BLOCK_SIZE], const SEED_KEY_SCHEDULE *ks) |
@@ -226,7 +244,8 @@ void SEED_encrypt(const unsigned char s[SEED_BLOCK_SIZE], unsigned char d[SEED_B | |||
226 | char2word(s+4, x2); | 244 | char2word(s+4, x2); |
227 | char2word(s+8, x3); | 245 | char2word(s+8, x3); |
228 | char2word(s+12, x4); | 246 | char2word(s+12, x4); |
229 | 247 | ||
248 | #if !defined(OPENSSL_SMALL_FOOTPRINT) | ||
230 | E_SEED(t0, t1, x1, x2, x3, x4, 0); | 249 | E_SEED(t0, t1, x1, x2, x3, x4, 0); |
231 | E_SEED(t0, t1, x3, x4, x1, x2, 2); | 250 | E_SEED(t0, t1, x3, x4, x1, x2, 2); |
232 | E_SEED(t0, t1, x1, x2, x3, x4, 4); | 251 | E_SEED(t0, t1, x1, x2, x3, x4, 4); |
@@ -243,6 +262,15 @@ void SEED_encrypt(const unsigned char s[SEED_BLOCK_SIZE], unsigned char d[SEED_B | |||
243 | E_SEED(t0, t1, x3, x4, x1, x2, 26); | 262 | E_SEED(t0, t1, x3, x4, x1, x2, 26); |
244 | E_SEED(t0, t1, x1, x2, x3, x4, 28); | 263 | E_SEED(t0, t1, x1, x2, x3, x4, 28); |
245 | E_SEED(t0, t1, x3, x4, x1, x2, 30); | 264 | E_SEED(t0, t1, x3, x4, x1, x2, 30); |
265 | #else | ||
266 | { | ||
267 | int i; | ||
268 | for (i=0;i<30;i+=4) { | ||
269 | E_SEED(t0,t1,x1,x2,x3,x4,i); | ||
270 | E_SEED(t0,t1,x3,x4,x1,x2,i+2); | ||
271 | } | ||
272 | } | ||
273 | #endif | ||
246 | 274 | ||
247 | word2char(x3, d); | 275 | word2char(x3, d); |
248 | word2char(x4, d+4); | 276 | word2char(x4, d+4); |
@@ -259,7 +287,8 @@ void SEED_decrypt(const unsigned char s[SEED_BLOCK_SIZE], unsigned char d[SEED_B | |||
259 | char2word(s+4, x2); | 287 | char2word(s+4, x2); |
260 | char2word(s+8, x3); | 288 | char2word(s+8, x3); |
261 | char2word(s+12, x4); | 289 | char2word(s+12, x4); |
262 | 290 | ||
291 | #if !defined(OPENSSL_SMALL_FOOTPRINT) | ||
263 | E_SEED(t0, t1, x1, x2, x3, x4, 30); | 292 | E_SEED(t0, t1, x1, x2, x3, x4, 30); |
264 | E_SEED(t0, t1, x3, x4, x1, x2, 28); | 293 | E_SEED(t0, t1, x3, x4, x1, x2, 28); |
265 | E_SEED(t0, t1, x1, x2, x3, x4, 26); | 294 | E_SEED(t0, t1, x1, x2, x3, x4, 26); |
@@ -276,6 +305,16 @@ void SEED_decrypt(const unsigned char s[SEED_BLOCK_SIZE], unsigned char d[SEED_B | |||
276 | E_SEED(t0, t1, x3, x4, x1, x2, 4); | 305 | E_SEED(t0, t1, x3, x4, x1, x2, 4); |
277 | E_SEED(t0, t1, x1, x2, x3, x4, 2); | 306 | E_SEED(t0, t1, x1, x2, x3, x4, 2); |
278 | E_SEED(t0, t1, x3, x4, x1, x2, 0); | 307 | E_SEED(t0, t1, x3, x4, x1, x2, 0); |
308 | #else | ||
309 | { | ||
310 | int i; | ||
311 | for (i=30; i>0; i-=4) { | ||
312 | E_SEED(t0, t1, x1, x2, x3, x4, i); | ||
313 | E_SEED(t0, t1, x3, x4, x1, x2, i-2); | ||
314 | |||
315 | } | ||
316 | } | ||
317 | #endif | ||
279 | 318 | ||
280 | word2char(x3, d); | 319 | word2char(x3, d); |
281 | word2char(x4, d+4); | 320 | word2char(x4, d+4); |
diff --git a/src/lib/libcrypto/seed/seed.h b/src/lib/libcrypto/seed/seed.h index 427915ed9a..6ffa5f024e 100644 --- a/src/lib/libcrypto/seed/seed.h +++ b/src/lib/libcrypto/seed/seed.h | |||
@@ -82,6 +82,8 @@ | |||
82 | #define HEADER_SEED_H | 82 | #define HEADER_SEED_H |
83 | 83 | ||
84 | #include <openssl/opensslconf.h> | 84 | #include <openssl/opensslconf.h> |
85 | #include <openssl/e_os2.h> | ||
86 | #include <openssl/crypto.h> | ||
85 | 87 | ||
86 | #ifdef OPENSSL_NO_SEED | 88 | #ifdef OPENSSL_NO_SEED |
87 | #error SEED is disabled. | 89 | #error SEED is disabled. |
diff --git a/src/lib/libcrypto/seed/seed_cbc.c b/src/lib/libcrypto/seed/seed_cbc.c index 4f718ccb44..6c3f9b527a 100644 --- a/src/lib/libcrypto/seed/seed_cbc.c +++ b/src/lib/libcrypto/seed/seed_cbc.c | |||
@@ -49,81 +49,15 @@ | |||
49 | * | 49 | * |
50 | */ | 50 | */ |
51 | 51 | ||
52 | #include "seed_locl.h" | 52 | #include <openssl/seed.h> |
53 | #include <string.h> | 53 | #include <openssl/modes.h> |
54 | 54 | ||
55 | void SEED_cbc_encrypt(const unsigned char *in, unsigned char *out, | 55 | void SEED_cbc_encrypt(const unsigned char *in, unsigned char *out, |
56 | size_t len, const SEED_KEY_SCHEDULE *ks, | 56 | size_t len, const SEED_KEY_SCHEDULE *ks, |
57 | unsigned char ivec[SEED_BLOCK_SIZE], int enc) | 57 | unsigned char ivec[SEED_BLOCK_SIZE], int enc) |
58 | { | 58 | { |
59 | size_t n; | ||
60 | unsigned char tmp[SEED_BLOCK_SIZE]; | ||
61 | const unsigned char *iv = ivec; | ||
62 | |||
63 | if (enc) | 59 | if (enc) |
64 | { | 60 | CRYPTO_cbc128_encrypt(in,out,len,ks,ivec,(block128_f)SEED_encrypt); |
65 | while (len >= SEED_BLOCK_SIZE) | 61 | else |
66 | { | 62 | CRYPTO_cbc128_decrypt(in,out,len,ks,ivec,(block128_f)SEED_decrypt); |
67 | for (n = 0; n < SEED_BLOCK_SIZE; ++n) | ||
68 | out[n] = in[n] ^ iv[n]; | ||
69 | SEED_encrypt(out, out, ks); | ||
70 | iv = out; | ||
71 | len -= SEED_BLOCK_SIZE; | ||
72 | in += SEED_BLOCK_SIZE; | ||
73 | out += SEED_BLOCK_SIZE; | ||
74 | } | ||
75 | if (len) | ||
76 | { | ||
77 | for (n = 0; n < len; ++n) | ||
78 | out[n] = in[n] ^ iv[n]; | ||
79 | for (n = len; n < SEED_BLOCK_SIZE; ++n) | ||
80 | out[n] = iv[n]; | ||
81 | SEED_encrypt(out, out, ks); | ||
82 | iv = out; | ||
83 | } | ||
84 | memcpy(ivec, iv, SEED_BLOCK_SIZE); | ||
85 | } | ||
86 | else if (in != out) /* decrypt */ | ||
87 | { | ||
88 | while (len >= SEED_BLOCK_SIZE) | ||
89 | { | ||
90 | SEED_decrypt(in, out, ks); | ||
91 | for (n = 0; n < SEED_BLOCK_SIZE; ++n) | ||
92 | out[n] ^= iv[n]; | ||
93 | iv = in; | ||
94 | len -= SEED_BLOCK_SIZE; | ||
95 | in += SEED_BLOCK_SIZE; | ||
96 | out += SEED_BLOCK_SIZE; | ||
97 | } | ||
98 | if (len) | ||
99 | { | ||
100 | SEED_decrypt(in, tmp, ks); | ||
101 | for (n = 0; n < len; ++n) | ||
102 | out[n] = tmp[n] ^ iv[n]; | ||
103 | iv = in; | ||
104 | } | ||
105 | memcpy(ivec, iv, SEED_BLOCK_SIZE); | ||
106 | } | ||
107 | else /* decrypt, overlap */ | ||
108 | { | ||
109 | while (len >= SEED_BLOCK_SIZE) | ||
110 | { | ||
111 | memcpy(tmp, in, SEED_BLOCK_SIZE); | ||
112 | SEED_decrypt(in, out, ks); | ||
113 | for (n = 0; n < SEED_BLOCK_SIZE; ++n) | ||
114 | out[n] ^= ivec[n]; | ||
115 | memcpy(ivec, tmp, SEED_BLOCK_SIZE); | ||
116 | len -= SEED_BLOCK_SIZE; | ||
117 | in += SEED_BLOCK_SIZE; | ||
118 | out += SEED_BLOCK_SIZE; | ||
119 | } | ||
120 | if (len) | ||
121 | { | ||
122 | memcpy(tmp, in, SEED_BLOCK_SIZE); | ||
123 | SEED_decrypt(tmp, tmp, ks); | ||
124 | for (n = 0; n < len; ++n) | ||
125 | out[n] = tmp[n] ^ ivec[n]; | ||
126 | memcpy(ivec, tmp, SEED_BLOCK_SIZE); | ||
127 | } | ||
128 | } | ||
129 | } | 63 | } |
diff --git a/src/lib/libcrypto/seed/seed_cfb.c b/src/lib/libcrypto/seed/seed_cfb.c index 07d878a788..694597dd06 100644 --- a/src/lib/libcrypto/seed/seed_cfb.c +++ b/src/lib/libcrypto/seed/seed_cfb.c | |||
@@ -105,40 +105,12 @@ | |||
105 | * [including the GNU Public Licence.] | 105 | * [including the GNU Public Licence.] |
106 | */ | 106 | */ |
107 | 107 | ||
108 | #include "seed_locl.h" | 108 | #include <openssl/seed.h> |
109 | #include <string.h> | 109 | #include <openssl/modes.h> |
110 | 110 | ||
111 | void SEED_cfb128_encrypt(const unsigned char *in, unsigned char *out, | 111 | void SEED_cfb128_encrypt(const unsigned char *in, unsigned char *out, |
112 | size_t len, const SEED_KEY_SCHEDULE *ks, | 112 | size_t len, const SEED_KEY_SCHEDULE *ks, |
113 | unsigned char ivec[SEED_BLOCK_SIZE], int *num, int enc) | 113 | unsigned char ivec[SEED_BLOCK_SIZE], int *num, int enc) |
114 | { | 114 | { |
115 | int n; | 115 | CRYPTO_cfb128_encrypt(in,out,len,ks,ivec,num,enc,(block128_f)SEED_encrypt); |
116 | unsigned char c; | ||
117 | |||
118 | n = *num; | ||
119 | |||
120 | if (enc) | ||
121 | { | ||
122 | while (len--) | ||
123 | { | ||
124 | if (n == 0) | ||
125 | SEED_encrypt(ivec, ivec, ks); | ||
126 | ivec[n] = *(out++) = *(in++) ^ ivec[n]; | ||
127 | n = (n+1) % SEED_BLOCK_SIZE; | ||
128 | } | ||
129 | } | ||
130 | else | ||
131 | { | ||
132 | while (len--) | ||
133 | { | ||
134 | if (n == 0) | ||
135 | SEED_encrypt(ivec, ivec, ks); | ||
136 | c = *(in); | ||
137 | *(out++) = *(in++) ^ ivec[n]; | ||
138 | ivec[n] = c; | ||
139 | n = (n+1) % SEED_BLOCK_SIZE; | ||
140 | } | ||
141 | } | ||
142 | |||
143 | *num = n; | ||
144 | } | 116 | } |
diff --git a/src/lib/libcrypto/seed/seed_ofb.c b/src/lib/libcrypto/seed/seed_ofb.c index e2f3f57a38..3c8ba33bb9 100644 --- a/src/lib/libcrypto/seed/seed_ofb.c +++ b/src/lib/libcrypto/seed/seed_ofb.c | |||
@@ -105,24 +105,12 @@ | |||
105 | * [including the GNU Public Licence.] | 105 | * [including the GNU Public Licence.] |
106 | */ | 106 | */ |
107 | 107 | ||
108 | #include "seed_locl.h" | 108 | #include <openssl/seed.h> |
109 | #include <string.h> | 109 | #include <openssl/modes.h> |
110 | 110 | ||
111 | void SEED_ofb128_encrypt(const unsigned char *in, unsigned char *out, | 111 | void SEED_ofb128_encrypt(const unsigned char *in, unsigned char *out, |
112 | size_t len, const SEED_KEY_SCHEDULE *ks, | 112 | size_t len, const SEED_KEY_SCHEDULE *ks, |
113 | unsigned char ivec[SEED_BLOCK_SIZE], int *num) | 113 | unsigned char ivec[SEED_BLOCK_SIZE], int *num) |
114 | { | 114 | { |
115 | int n; | 115 | CRYPTO_ofb128_encrypt(in,out,len,ks,ivec,num,(block128_f)SEED_encrypt); |
116 | |||
117 | n = *num; | ||
118 | |||
119 | while (len--) | ||
120 | { | ||
121 | if (n == 0) | ||
122 | SEED_encrypt(ivec, ivec, ks); | ||
123 | *(out++) = *(in++) ^ ivec[n]; | ||
124 | n = (n+1) % SEED_BLOCK_SIZE; | ||
125 | } | ||
126 | |||
127 | *num = n; | ||
128 | } | 116 | } |