Update to OpenSSL 1.0.2.o
This commit is contained in:
134
test/igetest.c
134
test/igetest.c
@@ -200,16 +200,16 @@ static int run_test_vectors(void)
|
||||
assert(v->length <= MAX_VECTOR_SIZE);
|
||||
|
||||
if (v->encrypt == AES_ENCRYPT)
|
||||
AES_set_encrypt_key(v->key, 8 * sizeof v->key, &key);
|
||||
AES_set_encrypt_key(v->key, 8 * sizeof(v->key), &key);
|
||||
else
|
||||
AES_set_decrypt_key(v->key, 8 * sizeof v->key, &key);
|
||||
memcpy(iv, v->iv, sizeof iv);
|
||||
AES_set_decrypt_key(v->key, 8 * sizeof(v->key), &key);
|
||||
memcpy(iv, v->iv, sizeof(iv));
|
||||
AES_ige_encrypt(v->in, buf, v->length, &key, iv, v->encrypt);
|
||||
|
||||
if (memcmp(v->out, buf, v->length)) {
|
||||
printf("IGE test vector %d failed\n", n);
|
||||
hexdump(stdout, "key", v->key, sizeof v->key);
|
||||
hexdump(stdout, "iv", v->iv, sizeof v->iv);
|
||||
hexdump(stdout, "key", v->key, sizeof(v->key));
|
||||
hexdump(stdout, "iv", v->iv, sizeof(v->iv));
|
||||
hexdump(stdout, "in", v->in, v->length);
|
||||
hexdump(stdout, "expected", v->out, v->length);
|
||||
hexdump(stdout, "got", buf, v->length);
|
||||
@@ -218,14 +218,14 @@ static int run_test_vectors(void)
|
||||
}
|
||||
|
||||
/* try with in == out */
|
||||
memcpy(iv, v->iv, sizeof iv);
|
||||
memcpy(iv, v->iv, sizeof(iv));
|
||||
memcpy(buf, v->in, v->length);
|
||||
AES_ige_encrypt(buf, buf, v->length, &key, iv, v->encrypt);
|
||||
|
||||
if (memcmp(v->out, buf, v->length)) {
|
||||
printf("IGE test vector %d failed (with in == out)\n", n);
|
||||
hexdump(stdout, "key", v->key, sizeof v->key);
|
||||
hexdump(stdout, "iv", v->iv, sizeof v->iv);
|
||||
hexdump(stdout, "key", v->key, sizeof(v->key));
|
||||
hexdump(stdout, "iv", v->iv, sizeof(v->iv));
|
||||
hexdump(stdout, "in", v->in, v->length);
|
||||
hexdump(stdout, "expected", v->out, v->length);
|
||||
hexdump(stdout, "got", buf, v->length);
|
||||
@@ -257,9 +257,9 @@ static int run_test_vectors(void)
|
||||
|
||||
if (memcmp(v->out, buf, v->length)) {
|
||||
printf("Bidirectional IGE test vector %d failed\n", n);
|
||||
hexdump(stdout, "key 1", v->key1, sizeof v->key1);
|
||||
hexdump(stdout, "key 2", v->key2, sizeof v->key2);
|
||||
hexdump(stdout, "iv", v->iv, sizeof v->iv);
|
||||
hexdump(stdout, "key 1", v->key1, sizeof(v->key1));
|
||||
hexdump(stdout, "key 2", v->key2, sizeof(v->key2));
|
||||
hexdump(stdout, "iv", v->iv, sizeof(v->iv));
|
||||
hexdump(stdout, "in", v->in, v->length);
|
||||
hexdump(stdout, "expected", v->out, v->length);
|
||||
hexdump(stdout, "got", buf, v->length);
|
||||
@@ -288,19 +288,19 @@ int main(int argc, char **argv)
|
||||
|
||||
assert(BIG_TEST_SIZE >= TEST_SIZE);
|
||||
|
||||
RAND_pseudo_bytes(rkey, sizeof rkey);
|
||||
RAND_pseudo_bytes(plaintext, sizeof plaintext);
|
||||
RAND_pseudo_bytes(iv, sizeof iv);
|
||||
memcpy(saved_iv, iv, sizeof saved_iv);
|
||||
RAND_pseudo_bytes(rkey, sizeof(rkey));
|
||||
RAND_pseudo_bytes(plaintext, sizeof(plaintext));
|
||||
RAND_pseudo_bytes(iv, sizeof(iv));
|
||||
memcpy(saved_iv, iv, sizeof(saved_iv));
|
||||
|
||||
/* Forward IGE only... */
|
||||
|
||||
/* Straight encrypt/decrypt */
|
||||
AES_set_encrypt_key(rkey, 8 * sizeof rkey, &key);
|
||||
AES_set_encrypt_key(rkey, 8 * sizeof(rkey), &key);
|
||||
AES_ige_encrypt(plaintext, ciphertext, TEST_SIZE, &key, iv, AES_ENCRYPT);
|
||||
|
||||
AES_set_decrypt_key(rkey, 8 * sizeof rkey, &key);
|
||||
memcpy(iv, saved_iv, sizeof iv);
|
||||
AES_set_decrypt_key(rkey, 8 * sizeof(rkey), &key);
|
||||
memcpy(iv, saved_iv, sizeof(iv));
|
||||
AES_ige_encrypt(ciphertext, checktext, TEST_SIZE, &key, iv, AES_DECRYPT);
|
||||
|
||||
if (memcmp(checktext, plaintext, TEST_SIZE)) {
|
||||
@@ -311,16 +311,16 @@ int main(int argc, char **argv)
|
||||
}
|
||||
|
||||
/* Now check encrypt chaining works */
|
||||
AES_set_encrypt_key(rkey, 8 * sizeof rkey, &key);
|
||||
memcpy(iv, saved_iv, sizeof iv);
|
||||
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,
|
||||
AES_ENCRYPT);
|
||||
AES_ige_encrypt(plaintext + TEST_SIZE / 2,
|
||||
ciphertext + TEST_SIZE / 2, TEST_SIZE / 2,
|
||||
&key, iv, AES_ENCRYPT);
|
||||
|
||||
AES_set_decrypt_key(rkey, 8 * sizeof rkey, &key);
|
||||
memcpy(iv, saved_iv, sizeof iv);
|
||||
AES_set_decrypt_key(rkey, 8 * sizeof(rkey), &key);
|
||||
memcpy(iv, saved_iv, sizeof(iv));
|
||||
AES_ige_encrypt(ciphertext, checktext, TEST_SIZE, &key, iv, AES_DECRYPT);
|
||||
|
||||
if (memcmp(checktext, plaintext, TEST_SIZE)) {
|
||||
@@ -331,16 +331,16 @@ int main(int argc, char **argv)
|
||||
}
|
||||
|
||||
/* And check decrypt chaining */
|
||||
AES_set_encrypt_key(rkey, 8 * sizeof rkey, &key);
|
||||
memcpy(iv, saved_iv, sizeof iv);
|
||||
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,
|
||||
AES_ENCRYPT);
|
||||
AES_ige_encrypt(plaintext + TEST_SIZE / 2,
|
||||
ciphertext + TEST_SIZE / 2, TEST_SIZE / 2,
|
||||
&key, iv, AES_ENCRYPT);
|
||||
|
||||
AES_set_decrypt_key(rkey, 8 * sizeof rkey, &key);
|
||||
memcpy(iv, saved_iv, sizeof iv);
|
||||
AES_set_decrypt_key(rkey, 8 * sizeof(rkey), &key);
|
||||
memcpy(iv, saved_iv, sizeof(iv));
|
||||
AES_ige_encrypt(ciphertext, checktext, TEST_SIZE / 2, &key, iv,
|
||||
AES_DECRYPT);
|
||||
AES_ige_encrypt(ciphertext + TEST_SIZE / 2,
|
||||
@@ -355,29 +355,29 @@ int main(int argc, char **argv)
|
||||
}
|
||||
|
||||
/* 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_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 */
|
||||
++ciphertext[sizeof ciphertext / 2];
|
||||
AES_set_decrypt_key(rkey, 8 * sizeof rkey, &key);
|
||||
memcpy(iv, saved_iv, sizeof iv);
|
||||
AES_ige_encrypt(ciphertext, checktext, sizeof checktext, &key, iv,
|
||||
++ciphertext[sizeof(ciphertext) / 2];
|
||||
AES_set_decrypt_key(rkey, 8 * sizeof(rkey), &key);
|
||||
memcpy(iv, saved_iv, sizeof(iv));
|
||||
AES_ige_encrypt(ciphertext, checktext, sizeof(checktext), &key, iv,
|
||||
AES_DECRYPT);
|
||||
|
||||
matches = 0;
|
||||
for (n = 0; n < sizeof checktext; ++n)
|
||||
for (n = 0; n < sizeof(checktext); ++n)
|
||||
if (checktext[n] == plaintext[n])
|
||||
++matches;
|
||||
|
||||
if (matches > sizeof checktext / 2 + sizeof checktext / 100) {
|
||||
if (matches > sizeof(checktext) / 2 + sizeof(checktext) / 100) {
|
||||
printf("More than 51%% matches after garbling\n");
|
||||
++err;
|
||||
}
|
||||
|
||||
if (matches < sizeof checktext / 2) {
|
||||
if (matches < sizeof(checktext) / 2) {
|
||||
printf("Garble extends backwards!\n");
|
||||
++err;
|
||||
}
|
||||
@@ -389,16 +389,16 @@ int main(int argc, char **argv)
|
||||
*/
|
||||
/* possible with biIGE, so the IV is not updated. */
|
||||
|
||||
RAND_pseudo_bytes(rkey2, sizeof rkey2);
|
||||
RAND_pseudo_bytes(rkey2, sizeof(rkey2));
|
||||
|
||||
/* Straight encrypt/decrypt */
|
||||
AES_set_encrypt_key(rkey, 8 * sizeof rkey, &key);
|
||||
AES_set_encrypt_key(rkey2, 8 * sizeof rkey2, &key2);
|
||||
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,
|
||||
AES_ENCRYPT);
|
||||
|
||||
AES_set_decrypt_key(rkey, 8 * sizeof rkey, &key);
|
||||
AES_set_decrypt_key(rkey2, 8 * sizeof rkey2, &key2);
|
||||
AES_set_decrypt_key(rkey, 8 * sizeof(rkey), &key);
|
||||
AES_set_decrypt_key(rkey2, 8 * sizeof(rkey2), &key2);
|
||||
AES_bi_ige_encrypt(ciphertext, checktext, TEST_SIZE, &key, &key2, iv,
|
||||
AES_DECRYPT);
|
||||
|
||||
@@ -410,70 +410,70 @@ int main(int argc, char **argv)
|
||||
}
|
||||
|
||||
/* 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_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 */
|
||||
++ciphertext[sizeof ciphertext / 2];
|
||||
AES_set_decrypt_key(rkey, 8 * sizeof rkey, &key);
|
||||
AES_set_decrypt_key(rkey2, 8 * sizeof rkey2, &key2);
|
||||
AES_ige_encrypt(ciphertext, checktext, sizeof checktext, &key, iv,
|
||||
++ciphertext[sizeof(ciphertext) / 2];
|
||||
AES_set_decrypt_key(rkey, 8 * sizeof(rkey), &key);
|
||||
AES_set_decrypt_key(rkey2, 8 * sizeof(rkey2), &key2);
|
||||
AES_ige_encrypt(ciphertext, checktext, sizeof(checktext), &key, iv,
|
||||
AES_DECRYPT);
|
||||
|
||||
matches = 0;
|
||||
for (n = 0; n < sizeof checktext; ++n)
|
||||
for (n = 0; n < sizeof(checktext); ++n)
|
||||
if (checktext[n] == plaintext[n])
|
||||
++matches;
|
||||
|
||||
if (matches > sizeof checktext / 100) {
|
||||
if (matches > sizeof(checktext) / 100) {
|
||||
printf("More than 1%% matches after bidirectional garbling\n");
|
||||
++err;
|
||||
}
|
||||
|
||||
/* 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_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 */
|
||||
++ciphertext[sizeof ciphertext - 1];
|
||||
AES_set_decrypt_key(rkey, 8 * sizeof rkey, &key);
|
||||
AES_set_decrypt_key(rkey2, 8 * sizeof rkey2, &key2);
|
||||
AES_ige_encrypt(ciphertext, checktext, sizeof checktext, &key, iv,
|
||||
++ciphertext[sizeof(ciphertext) - 1];
|
||||
AES_set_decrypt_key(rkey, 8 * sizeof(rkey), &key);
|
||||
AES_set_decrypt_key(rkey2, 8 * sizeof(rkey2), &key2);
|
||||
AES_ige_encrypt(ciphertext, checktext, sizeof(checktext), &key, iv,
|
||||
AES_DECRYPT);
|
||||
|
||||
matches = 0;
|
||||
for (n = 0; n < sizeof checktext; ++n)
|
||||
for (n = 0; n < sizeof(checktext); ++n)
|
||||
if (checktext[n] == plaintext[n])
|
||||
++matches;
|
||||
|
||||
if (matches > sizeof checktext / 100) {
|
||||
if (matches > sizeof(checktext) / 100) {
|
||||
printf("More than 1%% matches after bidirectional garbling (2)\n");
|
||||
++err;
|
||||
}
|
||||
|
||||
/* 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_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 */
|
||||
++ciphertext[0];
|
||||
AES_set_decrypt_key(rkey, 8 * sizeof rkey, &key);
|
||||
AES_set_decrypt_key(rkey2, 8 * sizeof rkey2, &key2);
|
||||
AES_ige_encrypt(ciphertext, checktext, sizeof checktext, &key, iv,
|
||||
AES_set_decrypt_key(rkey, 8 * sizeof(rkey), &key);
|
||||
AES_set_decrypt_key(rkey2, 8 * sizeof(rkey2), &key2);
|
||||
AES_ige_encrypt(ciphertext, checktext, sizeof(checktext), &key, iv,
|
||||
AES_DECRYPT);
|
||||
|
||||
matches = 0;
|
||||
for (n = 0; n < sizeof checktext; ++n)
|
||||
for (n = 0; n < sizeof(checktext); ++n)
|
||||
if (checktext[n] == plaintext[n])
|
||||
++matches;
|
||||
|
||||
if (matches > sizeof checktext / 100) {
|
||||
if (matches > sizeof(checktext) / 100) {
|
||||
printf("More than 1%% matches after bidirectional garbling (3)\n");
|
||||
++err;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user