*
*/
-#include <assert.h>
+#include "cryptlib.h"
#include <openssl/aes.h>
#include "aes_locl.h"
const unsigned char *iv = ivec;
const unsigned char *iv2 = ivec + AES_BLOCK_SIZE;
- assert(in && out && key && ivec);
- assert((AES_ENCRYPT == enc)||(AES_DECRYPT == enc));
- assert((length%AES_BLOCK_SIZE) == 0);
+ OPENSSL_assert(in && out && key && ivec);
+ OPENSSL_assert((AES_ENCRYPT == enc)||(AES_DECRYPT == enc));
+ OPENSSL_assert((length%AES_BLOCK_SIZE) == 0);
if (AES_ENCRYPT == enc)
{
check for overlap, too) */
while (len >= AES_BLOCK_SIZE)
{
- // hexdump(stdout, "in", in, AES_BLOCK_SIZE);
- // hexdump(stdout, "iv", iv, AES_BLOCK_SIZE);
+ /* hexdump(stdout, "in", in, AES_BLOCK_SIZE); */
+ /* hexdump(stdout, "iv", iv, AES_BLOCK_SIZE); */
for(n=0 ; n < AES_BLOCK_SIZE ; ++n)
out[n] = in[n] ^ iv[n];
- // hexdump(stdout, "in ^ iv", out, AES_BLOCK_SIZE);
+ /* hexdump(stdout, "in ^ iv", out, AES_BLOCK_SIZE); */
AES_encrypt(out, out, key);
- // hexdump(stdout,"enc", out, AES_BLOCK_SIZE);
- // hexdump(stdout,"iv2", iv2, AES_BLOCK_SIZE);
+ /* hexdump(stdout,"enc", out, AES_BLOCK_SIZE); */
+ /* hexdump(stdout,"iv2", iv2, AES_BLOCK_SIZE); */
for(n=0 ; n < AES_BLOCK_SIZE ; ++n)
out[n] ^= iv2[n];
- // hexdump(stdout,"out", out, AES_BLOCK_SIZE);
+ /* hexdump(stdout,"out", out, AES_BLOCK_SIZE); */
iv = out;
memcpy(prev, in, AES_BLOCK_SIZE);
iv2 = prev;
{
memcpy(tmp, in, AES_BLOCK_SIZE);
memcpy(tmp2, in, AES_BLOCK_SIZE);
- // hexdump(stdout, "in", in, AES_BLOCK_SIZE);
- // hexdump(stdout, "iv2", iv2, AES_BLOCK_SIZE);
+ /* hexdump(stdout, "in", in, AES_BLOCK_SIZE); */
+ /* hexdump(stdout, "iv2", iv2, AES_BLOCK_SIZE); */
for(n=0 ; n < AES_BLOCK_SIZE ; ++n)
tmp[n] ^= iv2[n];
- // hexdump(stdout, "in ^ iv2", tmp, AES_BLOCK_SIZE);
+ /* hexdump(stdout, "in ^ iv2", tmp, AES_BLOCK_SIZE); */
AES_decrypt(tmp, out, key);
- // hexdump(stdout, "dec", out, AES_BLOCK_SIZE);
- // hexdump(stdout, "iv", ivec, AES_BLOCK_SIZE);
+ /* hexdump(stdout, "dec", out, AES_BLOCK_SIZE); */
+ /* hexdump(stdout, "iv", ivec, AES_BLOCK_SIZE); */
for(n=0 ; n < AES_BLOCK_SIZE ; ++n)
out[n] ^= ivec[n];
- // hexdump(stdout, "out", out, AES_BLOCK_SIZE);
+ /* hexdump(stdout, "out", out, AES_BLOCK_SIZE); */
memcpy(ivec, tmp2, AES_BLOCK_SIZE);
iv2 = out;
len -= AES_BLOCK_SIZE;
const unsigned char *iv;
const unsigned char *iv2;
- assert(in && out && key && ivec);
- assert((AES_ENCRYPT == enc)||(AES_DECRYPT == enc));
- assert((length%AES_BLOCK_SIZE) == 0);
+ OPENSSL_assert(in && out && key && ivec);
+ OPENSSL_assert((AES_ENCRYPT == enc)||(AES_DECRYPT == enc));
+ OPENSSL_assert((length%AES_BLOCK_SIZE) == 0);
if (AES_ENCRYPT == enc)
{
iv2 = ivec + AES_BLOCK_SIZE;
while (len >= AES_BLOCK_SIZE)
{
- // hexdump(stdout, "in", in, AES_BLOCK_SIZE);
- // hexdump(stdout, "iv", iv, AES_BLOCK_SIZE);
+ /* hexdump(stdout, "in", in, AES_BLOCK_SIZE); */
+ /* hexdump(stdout, "iv", iv, AES_BLOCK_SIZE); */
for(n=0 ; n < AES_BLOCK_SIZE ; ++n)
out[n] = in[n] ^ iv[n];
- // hexdump(stdout, "in ^ iv", out, AES_BLOCK_SIZE);
+ /* hexdump(stdout, "in ^ iv", out, AES_BLOCK_SIZE); */
AES_encrypt(out, out, key);
- // hexdump(stdout,"enc", out, AES_BLOCK_SIZE);
- // hexdump(stdout,"iv2", iv2, AES_BLOCK_SIZE);
+ /* hexdump(stdout,"enc", out, AES_BLOCK_SIZE); */
+ /* hexdump(stdout,"iv2", iv2, AES_BLOCK_SIZE); */
for(n=0 ; n < AES_BLOCK_SIZE ; ++n)
out[n] ^= iv2[n];
- // hexdump(stdout,"out", out, AES_BLOCK_SIZE);
+ /* hexdump(stdout,"out", out, AES_BLOCK_SIZE); */
iv = out;
memcpy(prev, in, AES_BLOCK_SIZE);
iv2 = prev;
while(len >= AES_BLOCK_SIZE)
{
out -= AES_BLOCK_SIZE;
- // hexdump(stdout, "intermediate", out, AES_BLOCK_SIZE);
- // hexdump(stdout, "iv", iv, AES_BLOCK_SIZE);
- // XXX: reduce copies by alternating between buffers
+ /* hexdump(stdout, "intermediate", out, AES_BLOCK_SIZE); */
+ /* hexdump(stdout, "iv", iv, AES_BLOCK_SIZE); */
+ /* XXX: reduce copies by alternating between buffers */
memcpy(tmp, out, AES_BLOCK_SIZE);
for(n=0 ; n < AES_BLOCK_SIZE ; ++n)
out[n] ^= iv[n];
- // hexdump(stdout, "out ^ iv", out, AES_BLOCK_SIZE);
+ /* hexdump(stdout, "out ^ iv", out, AES_BLOCK_SIZE); */
AES_encrypt(out, out, key);
- // hexdump(stdout,"enc", out, AES_BLOCK_SIZE);
- // hexdump(stdout,"iv2", iv2, AES_BLOCK_SIZE);
+ /* hexdump(stdout,"enc", out, AES_BLOCK_SIZE); */
+ /* hexdump(stdout,"iv2", iv2, AES_BLOCK_SIZE); */
for(n=0 ; n < AES_BLOCK_SIZE ; ++n)
out[n] ^= iv2[n];
- // hexdump(stdout,"out", out, AES_BLOCK_SIZE);
+ /* hexdump(stdout,"out", out, AES_BLOCK_SIZE); */
iv = out;
memcpy(prev, tmp, AES_BLOCK_SIZE);
iv2 = prev;
out -= AES_BLOCK_SIZE;
memcpy(tmp, in, AES_BLOCK_SIZE);
memcpy(tmp2, in, AES_BLOCK_SIZE);
- // hexdump(stdout, "in", in, AES_BLOCK_SIZE);
- // hexdump(stdout, "iv2", iv2, AES_BLOCK_SIZE);
+ /* hexdump(stdout, "in", in, AES_BLOCK_SIZE); */
+ /* hexdump(stdout, "iv2", iv2, AES_BLOCK_SIZE); */
for(n=0 ; n < AES_BLOCK_SIZE ; ++n)
tmp[n] ^= iv2[n];
- // hexdump(stdout, "in ^ iv2", tmp, AES_BLOCK_SIZE);
+ /* hexdump(stdout, "in ^ iv2", tmp, AES_BLOCK_SIZE); */
AES_decrypt(tmp, out, key);
- // hexdump(stdout, "dec", out, AES_BLOCK_SIZE);
- // hexdump(stdout, "iv", iv, AES_BLOCK_SIZE);
+ /* hexdump(stdout, "dec", out, AES_BLOCK_SIZE); */
+ /* hexdump(stdout, "iv", iv, AES_BLOCK_SIZE); */
for(n=0 ; n < AES_BLOCK_SIZE ; ++n)
out[n] ^= iv[n];
- // hexdump(stdout, "out", out, AES_BLOCK_SIZE);
+ /* hexdump(stdout, "out", out, AES_BLOCK_SIZE); */
memcpy(tmp3, tmp2, AES_BLOCK_SIZE);
iv = tmp3;
iv2 = out;
{
memcpy(tmp, out, AES_BLOCK_SIZE);
memcpy(tmp2, out, AES_BLOCK_SIZE);
- // hexdump(stdout, "intermediate", out, AES_BLOCK_SIZE);
- // hexdump(stdout, "iv2", iv2, AES_BLOCK_SIZE);
+ /* hexdump(stdout, "intermediate", out, AES_BLOCK_SIZE); */
+ /* hexdump(stdout, "iv2", iv2, AES_BLOCK_SIZE); */
for(n=0 ; n < AES_BLOCK_SIZE ; ++n)
tmp[n] ^= iv2[n];
- // hexdump(stdout, "out ^ iv2", tmp, AES_BLOCK_SIZE);
+ /* hexdump(stdout, "out ^ iv2", tmp, AES_BLOCK_SIZE); */
AES_decrypt(tmp, out, key);
- // hexdump(stdout, "dec", out, AES_BLOCK_SIZE);
- // hexdump(stdout, "iv", ivec, AES_BLOCK_SIZE);
+ /* hexdump(stdout, "dec", out, AES_BLOCK_SIZE); */
+ /* hexdump(stdout, "iv", ivec, AES_BLOCK_SIZE); */
for(n=0 ; n < AES_BLOCK_SIZE ; ++n)
out[n] ^= iv[n];
- // hexdump(stdout, "out", out, AES_BLOCK_SIZE);
+ /* hexdump(stdout, "out", out, AES_BLOCK_SIZE); */
memcpy(tmp3, tmp2, AES_BLOCK_SIZE);
iv = tmp3;
iv2 = out;
RAND_pseudo_bytes(iv, sizeof iv);
memcpy(saved_iv, iv, sizeof saved_iv);
- // Forward IGE only...
+ /* Forward IGE only... */
- // Straight encrypt/decrypt
+ /* Straight encrypt/decrypt */
AES_set_encrypt_key(rkey, 8*sizeof rkey, &key);
AES_ige_encrypt(plaintext, ciphertext, TEST_SIZE, &key, iv,
AES_ENCRYPT);
++err;
}
- // Now check encrypt chaining works
+ /* Now check encrypt chaining works */
AES_set_encrypt_key(rkey, 8*sizeof rkey, &key);
memcpy(iv, saved_iv, sizeof iv);
AES_ige_encrypt(plaintext, ciphertext, TEST_SIZE/2, &key, iv,
++err;
}
- // And check decrypt chaining
+ /* And check decrypt chaining */
AES_set_encrypt_key(rkey, 8*sizeof rkey, &key);
memcpy(iv, saved_iv, sizeof iv);
AES_ige_encrypt(plaintext, ciphertext, TEST_SIZE/2, &key, iv,
++err;
}
- // make sure garble extends forwards only
+ /* make sure garble extends forwards only */
AES_set_encrypt_key(rkey, 8*sizeof rkey, &key);
memcpy(iv, saved_iv, sizeof iv);
AES_ige_encrypt(plaintext, ciphertext, sizeof plaintext, &key, iv,
AES_ENCRYPT);
- // corrupt halfway through
+ /* corrupt halfway through */
++ciphertext[sizeof ciphertext/2];
AES_set_decrypt_key(rkey, 8*sizeof rkey, &key);
memcpy(iv, saved_iv, sizeof iv);
++err;
}
- // Bi-directional IGE
+ /* Bi-directional IGE */
- // Note that we don't have to recover the IV, because chaining isn't
- // possible with biIGE, so the IV is not updated.
+ /* Note that we don't have to recover the IV, because chaining isn't */
+ /* possible with biIGE, so the IV is not updated. */
RAND_pseudo_bytes(rkey2, sizeof rkey2);
- // Straight encrypt/decrypt
+ /* Straight encrypt/decrypt */
AES_set_encrypt_key(rkey, 8*sizeof rkey, &key);
AES_set_encrypt_key(rkey2, 8*sizeof rkey2, &key2);
AES_bi_ige_encrypt(plaintext, ciphertext, TEST_SIZE, &key, &key2, iv,
++err;
}
- // make sure garble extends both ways
+ /* make sure garble extends both ways */
AES_set_encrypt_key(rkey, 8*sizeof rkey, &key);
AES_set_encrypt_key(rkey2, 8*sizeof rkey2, &key2);
AES_ige_encrypt(plaintext, ciphertext, sizeof plaintext, &key, iv,
AES_ENCRYPT);
- // corrupt halfway through
+ /* corrupt halfway through */
++ciphertext[sizeof ciphertext/2];
AES_set_decrypt_key(rkey, 8*sizeof rkey, &key);
AES_set_decrypt_key(rkey2, 8*sizeof rkey2, &key2);
++err;
}
- // make sure garble extends both ways (2)
+ /* make sure garble extends both ways (2) */
AES_set_encrypt_key(rkey, 8*sizeof rkey, &key);
AES_set_encrypt_key(rkey2, 8*sizeof rkey2, &key2);
AES_ige_encrypt(plaintext, ciphertext, sizeof plaintext, &key, iv,
AES_ENCRYPT);
- // corrupt right at the end
+ /* corrupt right at the end */
++ciphertext[sizeof ciphertext-1];
AES_set_decrypt_key(rkey, 8*sizeof rkey, &key);
AES_set_decrypt_key(rkey2, 8*sizeof rkey2, &key2);
++err;
}
- // make sure garble extends both ways (3)
+ /* make sure garble extends both ways (3) */
AES_set_encrypt_key(rkey, 8*sizeof rkey, &key);
AES_set_encrypt_key(rkey2, 8*sizeof rkey2, &key2);
AES_ige_encrypt(plaintext, ciphertext, sizeof plaintext, &key, iv,
AES_ENCRYPT);
- // corrupt right at the start
+ /* corrupt right at the start */
++ciphertext[0];
AES_set_decrypt_key(rkey, 8*sizeof rkey, &key);
AES_set_decrypt_key(rkey2, 8*sizeof rkey2, &key2);