The output from AES_cbc_encrypt() should be exact multiple blocks when encrypting
authorRichard Levitte <levitte@openssl.org>
Tue, 10 Jun 2003 04:11:46 +0000 (04:11 +0000)
committerRichard Levitte <levitte@openssl.org>
Tue, 10 Jun 2003 04:11:46 +0000 (04:11 +0000)
crypto/aes/aes_cbc.c

index de438306b15a79f722290fc1335373da52af2439..86b27b10d612ab887ae3d4bbda666533783b1c0a 100644 (file)
@@ -72,7 +72,7 @@ void AES_cbc_encrypt(const unsigned char *in, unsigned char *out,
 
        if (AES_ENCRYPT == enc) {
                while (len >= AES_BLOCK_SIZE) {
-                       for(n=0; n < sizeof tmp; ++n)
+                       for(n=0; n < AES_BLOCK_SIZE; ++n)
                                tmp[n] = in[n] ^ ivec[n];
                        AES_encrypt(tmp, out, key);
                        memcpy(ivec, out, AES_BLOCK_SIZE);
@@ -86,12 +86,12 @@ void AES_cbc_encrypt(const unsigned char *in, unsigned char *out,
                        for(n=len; n < AES_BLOCK_SIZE; ++n)
                                tmp[n] = ivec[n];
                        AES_encrypt(tmp, tmp, key);
-                       memcpy(out, tmp, len);
-                       memcpy(ivec, tmp, sizeof tmp);
+                       memcpy(out, tmp, AES_BLOCK_SIZE);
+                       memcpy(ivec, tmp, AES_BLOCK_SIZE);
                }                       
        } else {
                while (len >= AES_BLOCK_SIZE) {
-                       memcpy(tmp, in, sizeof tmp);
+                       memcpy(tmp, in, AES_BLOCK_SIZE);
                        AES_decrypt(in, out, key);
                        for(n=0; n < AES_BLOCK_SIZE; ++n)
                                out[n] ^= ivec[n];
@@ -101,11 +101,11 @@ void AES_cbc_encrypt(const unsigned char *in, unsigned char *out,
                        out += AES_BLOCK_SIZE;
                }
                if (len) {
-                       memcpy(tmp, in, sizeof tmp);
+                       memcpy(tmp, in, AES_BLOCK_SIZE);
                        AES_decrypt(tmp, tmp, key);
                        for(n=0; n < len; ++n)
                                out[n] ^= ivec[n];
-                       memcpy(ivec, tmp, sizeof tmp);
+                       memcpy(ivec, tmp, AES_BLOCK_SIZE);
                }                       
        }
 }