summaryrefslogtreecommitdiff
path: root/testsuite/des-test.c
diff options
context:
space:
mode:
authorNiels Möller <nisse@lysator.liu.se>2012-09-16 23:29:08 +0200
committerNiels Möller <nisse@lysator.liu.se>2012-09-16 23:29:08 +0200
commit75288e447e2a659b7c4df915d81c426bda4435c7 (patch)
tree6790f104bd9b26f4ecdb3e7fdfb7b89a2a6c159f /testsuite/des-test.c
parent728a20eed7ec34e917d3a992b7777ceb9cee8404 (diff)
downloadnettle-75288e447e2a659b7c4df915d81c426bda4435c7.tar.gz
Testsuite overhaul, including proper deallocation of storage.
Diffstat (limited to 'testsuite/des-test.c')
-rw-r--r--testsuite/des-test.c123
1 files changed, 64 insertions, 59 deletions
diff --git a/testsuite/des-test.c b/testsuite/des-test.c
index 244e5aa2..574193dc 100644
--- a/testsuite/des-test.c
+++ b/testsuite/des-test.c
@@ -3,44 +3,49 @@
#include "des.h"
static void
-test_des(const uint8_t *key, int expected_parity,
- unsigned length,
- const uint8_t *cleartext,
- const uint8_t *ciphertext)
+test_des(const struct tstring *key, int expected_parity,
+ const struct tstring *cleartext,
+ const struct tstring *ciphertext)
{
struct des_ctx ctx;
- uint8_t *data = xalloc(length);
+ uint8_t *data;
+ unsigned length;
- if (des_check_parity(8, key) != expected_parity)
- FAIL();
+ ASSERT (cleartext->length == ciphertext->length);
+ length = cleartext->length;
- if (!des_set_key(&ctx, key))
- FAIL();
+ ASSERT (key->length == DES_KEY_SIZE);
+
+ data = xalloc(length);
- des_encrypt(&ctx, length, data, cleartext);
+ ASSERT (des_check_parity(8, key->data) == expected_parity);
- if (!MEMEQ(length, data, ciphertext))
+ ASSERT (des_set_key(&ctx, key->data));
+
+ des_encrypt(&ctx, length, data, cleartext->data);
+
+ if (!MEMEQ(length, data, ciphertext->data))
{
fprintf(stderr, "Encrypt failed:\nInput:");
- print_hex(length, cleartext);
+ tstring_print_hex(cleartext);
fprintf(stderr, "\nOutput: ");
print_hex(length, data);
fprintf(stderr, "\nExpected:");
- print_hex(length, ciphertext);
+ tstring_print_hex(ciphertext);
fprintf(stderr, "\n");
FAIL();
}
des_decrypt(&ctx, length, data, data);
- if (!MEMEQ(length, data, cleartext))
+ if (!MEMEQ(length, data, cleartext->data))
{
fprintf(stderr, "Decrypt failed:\nInput:");
- print_hex(length, ciphertext);
+ tstring_print_hex(ciphertext);
fprintf(stderr, "\nOutput: ");
print_hex(length, data);
fprintf(stderr, "\nExpected:");
- print_hex(length, cleartext);
+ tstring_print_hex(cleartext);
fprintf(stderr, "\n");
FAIL();
}
@@ -49,74 +54,74 @@ test_des(const uint8_t *key, int expected_parity,
}
static void
-test_weak(const uint8_t *key)
+test_weak(const struct tstring *key)
{
struct des_ctx ctx;
- if (des_set_key(&ctx, key))
- FAIL();
+ ASSERT (key->length == DES_KEY_SIZE);
+ ASSERT (des_set_key(&ctx, key->data) == 0);
}
-int
+void
test_main(void)
{
/* From Applied Cryptography */
- test_des(H("01234567 89ABCDEF"), 1,
- HL("01234567 89ABCDE7"),
- H("C9574425 6A5ED31D"));
+ test_des(SHEX("01234567 89ABCDEF"), 1,
+ SHEX("01234567 89ABCDE7"),
+ SHEX("C9574425 6A5ED31D"));
- test_des(H("01 01 01 01 01 01 01 80"), 1,
- HL("00 00 00 00 00 00 00 00"),
- H("9C C6 2D F4 3B 6E ED 74"));
+ test_des(SHEX("01 01 01 01 01 01 01 80"), 1,
+ SHEX("00 00 00 00 00 00 00 00"),
+ SHEX("9C C6 2D F4 3B 6E ED 74"));
- test_des(H("80 01 01 01 01 01 01 01"), 1,
- HL("00 00 00 00 00 00 00 40"),
- H("A3 80 E0 2A 6B E5 46 96"));
+ test_des(SHEX("80 01 01 01 01 01 01 01"), 1,
+ SHEX("00 00 00 00 00 00 00 40"),
+ SHEX("A3 80 E0 2A 6B E5 46 96"));
- test_des(H("08 19 2A 3B 4C 5D 6E 7F"), 1,
- HL("00 00 00 00 00 00 00 00"),
- H("25 DD AC 3E 96 17 64 67"));
+ test_des(SHEX("08 19 2A 3B 4C 5D 6E 7F"), 1,
+ SHEX("00 00 00 00 00 00 00 00"),
+ SHEX("25 DD AC 3E 96 17 64 67"));
- test_des(H("01 23 45 67 89 AB CD EF"), 1,
- DES_BLOCK_SIZE, "Now is t",
- H("3F A4 0E 8A 98 4D 48 15"));
+ test_des(SHEX("01 23 45 67 89 AB CD EF"), 1,
+ SDATA("Now is t"),
+ SHEX("3F A4 0E 8A 98 4D 48 15"));
/* Same key, but with one bad parity bit, */
- test_des(H("01 23 45 66 89 AB CD EF"), 0,
- DES_BLOCK_SIZE, "Now is t",
- H("3F A4 0E 8A 98 4D 48 15"));
+ test_des(SHEX("01 23 45 66 89 AB CD EF"), 0,
+ SDATA("Now is t"),
+ SHEX("3F A4 0E 8A 98 4D 48 15"));
/* Parity check */
- if (des_check_parity(HL("01 01 01 01 01 01 01 00")))
- FAIL();
+ {
+ const struct tstring *s = SHEX("01 01 01 01 01 01 01 00");
+ ASSERT (des_check_parity(s->length, s->data) == 0);
+ }
/* The four weak keys */
- test_weak(H("01 01 01 01 01 01 01 01"));
- test_weak(H("FE FE FE FE FE FE FE FE"));
- test_weak(H("1F 1F 1F 1F 0E 0E 0E 0E"));
- test_weak(H("E0 E0 E0 E0 F1 F1 F1 F1"));
+ test_weak(SHEX("01 01 01 01 01 01 01 01"));
+ test_weak(SHEX("FE FE FE FE FE FE FE FE"));
+ test_weak(SHEX("1F 1F 1F 1F 0E 0E 0E 0E"));
+ test_weak(SHEX("E0 E0 E0 E0 F1 F1 F1 F1"));
/* Same weak key, but different parity. */
- test_weak(H("E0 E0 E0 E0 F0 F1 F1 F1"));
+ test_weak(SHEX("E0 E0 E0 E0 F0 F1 F1 F1"));
/* The six pairs of semiweak keys */
- test_weak(H("01 FE 01 FE 01 FE 01 FE"));
- test_weak(H("FE 01 FE 01 FE 01 FE 01"));
-
- test_weak(H("1F E0 1F E0 0E F1 0E F1"));
- test_weak(H("E0 1F E0 1F F1 0E F1 0E"));
+ test_weak(SHEX("01 FE 01 FE 01 FE 01 FE"));
+ test_weak(SHEX("FE 01 FE 01 FE 01 FE 01"));
- test_weak(H("01 E0 01 E0 01 F1 01 F1"));
- test_weak(H("E0 01 E0 01 F1 01 F1 01"));
+ test_weak(SHEX("1F E0 1F E0 0E F1 0E F1"));
+ test_weak(SHEX("E0 1F E0 1F F1 0E F1 0E"));
- test_weak(H("1F FE 1F FE 0E FE 0E FE"));
- test_weak(H("FE 1F FE 1F FE 0E FE 0E"));
+ test_weak(SHEX("01 E0 01 E0 01 F1 01 F1"));
+ test_weak(SHEX("E0 01 E0 01 F1 01 F1 01"));
- test_weak(H("01 1F 01 1F 01 0E 01 0E"));
- test_weak(H("1F 01 1F 01 0E 01 0E 01"));
+ test_weak(SHEX("1F FE 1F FE 0E FE 0E FE"));
+ test_weak(SHEX("FE 1F FE 1F FE 0E FE 0E"));
- test_weak(H("E0 FE E0 FE F1 FE F1 FE"));
- test_weak(H("FE E0 FE E0 FE F1 FE F1"));
+ test_weak(SHEX("01 1F 01 1F 01 0E 01 0E"));
+ test_weak(SHEX("1F 01 1F 01 0E 01 0E 01"));
- SUCCESS();
+ test_weak(SHEX("E0 FE E0 FE F1 FE F1 FE"));
+ test_weak(SHEX("FE E0 FE E0 FE F1 FE F1"));
}