Loading crypto/aes/aes_ige.c +44 −44 Original line number Diff line number Diff line Loading @@ -49,7 +49,7 @@ * */ #include <assert.h> #include "cryptlib.h" #include <openssl/aes.h> #include "aes_locl.h" Loading Loading @@ -84,9 +84,9 @@ void AES_ige_encrypt(const unsigned char *in, unsigned char *out, 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) { Loading @@ -94,17 +94,17 @@ void AES_ige_encrypt(const unsigned char *in, unsigned char *out, 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; Loading @@ -121,17 +121,17 @@ void AES_ige_encrypt(const unsigned char *in, unsigned char *out, { 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; Loading Loading @@ -163,9 +163,9 @@ void AES_bi_ige_encrypt(const unsigned char *in, unsigned char *out, 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) { Loading @@ -177,17 +177,17 @@ void AES_bi_ige_encrypt(const unsigned char *in, unsigned char *out, 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; Loading @@ -203,19 +203,19 @@ void AES_bi_ige_encrypt(const unsigned char *in, unsigned char *out, 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; Loading @@ -235,17 +235,17 @@ void AES_bi_ige_encrypt(const unsigned char *in, unsigned char *out, 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; Loading @@ -260,17 +260,17 @@ void AES_bi_ige_encrypt(const unsigned char *in, unsigned char *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; Loading crypto/evp/e_camellia.c +6 −0 Original line number Diff line number Diff line Loading @@ -122,4 +122,10 @@ static int camellia_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, return 1; } #else # ifdef PEDANTIC static void *dummy=&dummy; # endif #endif test/igetest.c +16 −16 Original line number Diff line number Diff line Loading @@ -285,9 +285,9 @@ int main(int argc, char **argv) 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); Loading @@ -305,7 +305,7 @@ int main(int argc, char **argv) ++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, Loading @@ -327,7 +327,7 @@ int main(int argc, char **argv) ++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, Loading @@ -352,13 +352,13 @@ int main(int argc, char **argv) ++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); Loading @@ -382,14 +382,14 @@ int main(int argc, char **argv) ++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, Loading @@ -408,13 +408,13 @@ int main(int argc, char **argv) ++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); Loading @@ -432,13 +432,13 @@ int main(int argc, char **argv) ++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); Loading @@ -456,13 +456,13 @@ int main(int argc, char **argv) ++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); Loading Loading
crypto/aes/aes_ige.c +44 −44 Original line number Diff line number Diff line Loading @@ -49,7 +49,7 @@ * */ #include <assert.h> #include "cryptlib.h" #include <openssl/aes.h> #include "aes_locl.h" Loading Loading @@ -84,9 +84,9 @@ void AES_ige_encrypt(const unsigned char *in, unsigned char *out, 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) { Loading @@ -94,17 +94,17 @@ void AES_ige_encrypt(const unsigned char *in, unsigned char *out, 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; Loading @@ -121,17 +121,17 @@ void AES_ige_encrypt(const unsigned char *in, unsigned char *out, { 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; Loading Loading @@ -163,9 +163,9 @@ void AES_bi_ige_encrypt(const unsigned char *in, unsigned char *out, 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) { Loading @@ -177,17 +177,17 @@ void AES_bi_ige_encrypt(const unsigned char *in, unsigned char *out, 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; Loading @@ -203,19 +203,19 @@ void AES_bi_ige_encrypt(const unsigned char *in, unsigned char *out, 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; Loading @@ -235,17 +235,17 @@ void AES_bi_ige_encrypt(const unsigned char *in, unsigned char *out, 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; Loading @@ -260,17 +260,17 @@ void AES_bi_ige_encrypt(const unsigned char *in, unsigned char *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; Loading
crypto/evp/e_camellia.c +6 −0 Original line number Diff line number Diff line Loading @@ -122,4 +122,10 @@ static int camellia_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, return 1; } #else # ifdef PEDANTIC static void *dummy=&dummy; # endif #endif
test/igetest.c +16 −16 Original line number Diff line number Diff line Loading @@ -285,9 +285,9 @@ int main(int argc, char **argv) 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); Loading @@ -305,7 +305,7 @@ int main(int argc, char **argv) ++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, Loading @@ -327,7 +327,7 @@ int main(int argc, char **argv) ++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, Loading @@ -352,13 +352,13 @@ int main(int argc, char **argv) ++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); Loading @@ -382,14 +382,14 @@ int main(int argc, char **argv) ++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, Loading @@ -408,13 +408,13 @@ int main(int argc, char **argv) ++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); Loading @@ -432,13 +432,13 @@ int main(int argc, char **argv) ++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); Loading @@ -456,13 +456,13 @@ int main(int argc, char **argv) ++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); Loading