Index: openssl/crypto/aes/aes_cbc.c |
=================================================================== |
--- openssl/crypto/aes/aes_cbc.c (revision 105093) |
+++ openssl/crypto/aes/aes_cbc.c (working copy) |
@@ -49,85 +49,15 @@ |
* |
*/ |
-#ifndef AES_DEBUG |
-# ifndef NDEBUG |
-# define NDEBUG |
-# endif |
-#endif |
-#include <assert.h> |
- |
#include <openssl/aes.h> |
-#include "aes_locl.h" |
+#include <openssl/modes.h> |
-#if !defined(OPENSSL_FIPS_AES_ASM) |
void AES_cbc_encrypt(const unsigned char *in, unsigned char *out, |
- const unsigned long length, const AES_KEY *key, |
+ size_t len, const AES_KEY *key, |
unsigned char *ivec, const int enc) { |
- unsigned long n; |
- unsigned long len = length; |
- unsigned char tmp[AES_BLOCK_SIZE]; |
- const unsigned char *iv = ivec; |
- |
- assert(in && out && key && ivec); |
- assert((AES_ENCRYPT == enc)||(AES_DECRYPT == enc)); |
- |
- if (AES_ENCRYPT == enc) { |
- while (len >= AES_BLOCK_SIZE) { |
- for(n=0; n < AES_BLOCK_SIZE; ++n) |
- out[n] = in[n] ^ iv[n]; |
- AES_encrypt(out, out, key); |
- iv = out; |
- len -= AES_BLOCK_SIZE; |
- in += AES_BLOCK_SIZE; |
- out += AES_BLOCK_SIZE; |
- } |
- if (len) { |
- for(n=0; n < len; ++n) |
- out[n] = in[n] ^ iv[n]; |
- for(n=len; n < AES_BLOCK_SIZE; ++n) |
- out[n] = iv[n]; |
- AES_encrypt(out, out, key); |
- iv = out; |
- } |
- memcpy(ivec,iv,AES_BLOCK_SIZE); |
- } else if (in != out) { |
- while (len >= AES_BLOCK_SIZE) { |
- AES_decrypt(in, out, key); |
- for(n=0; n < AES_BLOCK_SIZE; ++n) |
- out[n] ^= iv[n]; |
- iv = in; |
- len -= AES_BLOCK_SIZE; |
- in += AES_BLOCK_SIZE; |
- out += AES_BLOCK_SIZE; |
- } |
- if (len) { |
- AES_decrypt(in,tmp,key); |
- for(n=0; n < len; ++n) |
- out[n] = tmp[n] ^ iv[n]; |
- iv = in; |
- } |
- memcpy(ivec,iv,AES_BLOCK_SIZE); |
- } else { |
- while (len >= AES_BLOCK_SIZE) { |
- memcpy(tmp, in, AES_BLOCK_SIZE); |
- AES_decrypt(in, out, key); |
- for(n=0; n < AES_BLOCK_SIZE; ++n) |
- out[n] ^= ivec[n]; |
- memcpy(ivec, tmp, AES_BLOCK_SIZE); |
- len -= AES_BLOCK_SIZE; |
- in += AES_BLOCK_SIZE; |
- out += AES_BLOCK_SIZE; |
- } |
- if (len) { |
- memcpy(tmp, in, AES_BLOCK_SIZE); |
- AES_decrypt(tmp, out, key); |
- for(n=0; n < len; ++n) |
- out[n] ^= ivec[n]; |
- for(n=len; n < AES_BLOCK_SIZE; ++n) |
- out[n] = tmp[n]; |
- memcpy(ivec, tmp, AES_BLOCK_SIZE); |
- } |
- } |
+ if (enc) |
+ CRYPTO_cbc128_encrypt(in,out,len,key,ivec,(block128_f)AES_encrypt); |
+ else |
+ CRYPTO_cbc128_decrypt(in,out,len,key,ivec,(block128_f)AES_decrypt); |
} |
-#endif |