diff --git a/testsuite/twofish-test.m4 b/testsuite/twofish-test.m4 new file mode 100644 index 0000000000000000000000000000000000000000..8b2a3512254dc882c136cf6573e5f457c62894f1 --- /dev/null +++ b/testsuite/twofish-test.m4 @@ -0,0 +1,52 @@ +#include "twofish.h" + +BEGIN_TEST + +struct twofish_ctx ctx; + +uint8_t msg[TWOFISH_BLOCK_SIZE]; +uint8_t cipher[TWOFISH_BLOCK_SIZE]; +uint8_t clear[TWOFISH_BLOCK_SIZE]; + +/* 128 bit key */ +H(msg, "0000000000000000 0000000000000000"); + +twofish_set_key(&ctx, 16, H("0000000000000000 0000000000000000")) +twofish_encrypt(&ctx, TWOFISH_BLOCK_SIZE, cipher, msg); + +if (!MEMEQ(TWOFISH_BLOCK_SIZE, cipher, + H("9F589F5CF6122C32 B6BFEC2F2AE8C35A"))) + FAIL; + +twofish_decrypt(&ctx, TWOFISH_BLOCK_SIZE, clear, cipher); +if (!MEMEQ(TWOFISH_BLOCK_SIZE, msg, clear)) + FAIL; + +/* 192 bit key */ + +twofish_set_key(&ctx, 24, H("0123456789ABCDEF FEDCBA9876543210" + "0011223344556677")); +twofish_encrypt(&ctx, TWOFISH_BLOCK_SIZE, cipher, msg); + +if (!MEMEQ(TWOFISH_BLOCK_SIZE, cipher, + H("CFD1D2E5A9BE9CDF 501F13B892BD2248"))) + FAIL; + +twofish_decrypt(&ctx, TWOFISH_BLOCK_SIZE, clear, cipher); +if (!MEMEQ(TWOFISH_BLOCK_SIZE, msg, clear)) + FAIL; + +/* 256 bit key */ +twofish_set_key(&ctx, 32, H("0123456789ABCDEF FEDCBA9876543210" + "0011223344556677 8899AABBCCDDEEFF")); + FAIL; + +twofish_encrypt(&ctx, TWOFISH_BLOCK_SIZE, cipher, msg); + +if (!MEMEQ(TWOFISH_BLOCK_SIZE, cipher, + H("37527BE0052334B8 9F0CFCCAE87CFA20"))) + FAIL; + +twofish_decrypt(&ctx, TWOFISH_BLOCK_SIZE, clear, cipher); +if (!MEMEQ(TWOFISH_BLOCK_SIZE, msg, clear)) + FAIL;