| Index: openssl/crypto/seed/seed_cbc.c
|
| ===================================================================
|
| --- openssl/crypto/seed/seed_cbc.c (revision 105093)
|
| +++ openssl/crypto/seed/seed_cbc.c (working copy)
|
| @@ -49,81 +49,15 @@
|
| *
|
| */
|
|
|
| -#include "seed_locl.h"
|
| -#include <string.h>
|
| +#include <openssl/seed.h>
|
| +#include <openssl/modes.h>
|
|
|
| void SEED_cbc_encrypt(const unsigned char *in, unsigned char *out,
|
| size_t len, const SEED_KEY_SCHEDULE *ks,
|
| unsigned char ivec[SEED_BLOCK_SIZE], int enc)
|
| {
|
| - size_t n;
|
| - unsigned char tmp[SEED_BLOCK_SIZE];
|
| - const unsigned char *iv = ivec;
|
| -
|
| if (enc)
|
| - {
|
| - while (len >= SEED_BLOCK_SIZE)
|
| - {
|
| - for (n = 0; n < SEED_BLOCK_SIZE; ++n)
|
| - out[n] = in[n] ^ iv[n];
|
| - SEED_encrypt(out, out, ks);
|
| - iv = out;
|
| - len -= SEED_BLOCK_SIZE;
|
| - in += SEED_BLOCK_SIZE;
|
| - out += SEED_BLOCK_SIZE;
|
| - }
|
| - if (len)
|
| - {
|
| - for (n = 0; n < len; ++n)
|
| - out[n] = in[n] ^ iv[n];
|
| - for (n = len; n < SEED_BLOCK_SIZE; ++n)
|
| - out[n] = iv[n];
|
| - SEED_encrypt(out, out, ks);
|
| - iv = out;
|
| - }
|
| - memcpy(ivec, iv, SEED_BLOCK_SIZE);
|
| - }
|
| - else if (in != out) /* decrypt */
|
| - {
|
| - while (len >= SEED_BLOCK_SIZE)
|
| - {
|
| - SEED_decrypt(in, out, ks);
|
| - for (n = 0; n < SEED_BLOCK_SIZE; ++n)
|
| - out[n] ^= iv[n];
|
| - iv = in;
|
| - len -= SEED_BLOCK_SIZE;
|
| - in += SEED_BLOCK_SIZE;
|
| - out += SEED_BLOCK_SIZE;
|
| - }
|
| - if (len)
|
| - {
|
| - SEED_decrypt(in, tmp, ks);
|
| - for (n = 0; n < len; ++n)
|
| - out[n] = tmp[n] ^ iv[n];
|
| - iv = in;
|
| - }
|
| - memcpy(ivec, iv, SEED_BLOCK_SIZE);
|
| - }
|
| - else /* decrypt, overlap */
|
| - {
|
| - while (len >= SEED_BLOCK_SIZE)
|
| - {
|
| - memcpy(tmp, in, SEED_BLOCK_SIZE);
|
| - SEED_decrypt(in, out, ks);
|
| - for (n = 0; n < SEED_BLOCK_SIZE; ++n)
|
| - out[n] ^= ivec[n];
|
| - memcpy(ivec, tmp, SEED_BLOCK_SIZE);
|
| - len -= SEED_BLOCK_SIZE;
|
| - in += SEED_BLOCK_SIZE;
|
| - out += SEED_BLOCK_SIZE;
|
| - }
|
| - if (len)
|
| - {
|
| - memcpy(tmp, in, SEED_BLOCK_SIZE);
|
| - SEED_decrypt(tmp, tmp, ks);
|
| - for (n = 0; n < len; ++n)
|
| - out[n] = tmp[n] ^ ivec[n];
|
| - memcpy(ivec, tmp, SEED_BLOCK_SIZE);
|
| - }
|
| - }
|
| + CRYPTO_cbc128_encrypt(in,out,len,ks,ivec,(block128_f)SEED_encrypt);
|
| + else
|
| + CRYPTO_cbc128_decrypt(in,out,len,ks,ivec,(block128_f)SEED_decrypt);
|
| }
|
|
|