diff --git a/ChangeLog b/ChangeLog index fbb2f78be46fc9081d6ecd5737448599356679d1..9bc87665349c4a0d28d8a9fc77791b27fba1a8b2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,52 @@ +2001-06-17 Niels M�ller <nisse@cuckoo.hack.org> + + * testsuite/serpent-test.m4: Added a few rudimentary tests + extracted from the serpent package. + + * twofish.c: Adapted to nettle. Made constant tables const. + Deleted bytes_to_word and word_to_bytes; use LE_READ_UINT32 and + LE_WRITE_UINT32 instead. + (twofish_selftest): Deleted. Moved the tests to the external + testsuite. + (twofish_set_key): Don't silently truncate too large keys. + + * sha1.c (sha1_update): Use unsigned for length. + + * serpent.c (serpent_set_key): Read the key backwards. Fixed + padding (but there are no test vectors for key_size not a multiple + of 4). + (serpent_encrypt): Read and write data in the strange order used + by the reference implementation. + (serpent_decrypt): Likewise. + + * macros.h (FOR_BLOCKS): New macro, taken from lsh. + + * blowfish.h (struct blowfish_ctx): Use a two-dimensional array + for s. + + * blowfish.c (initial_ctx): Arrange constants into a struct, to + simplify key setup. + (F): Deleted all but one definitions of the F function/macro. + Added a context argument, and use that to find the subkeys. + (R): Added context argument, and use that to find the subkeys. + (blowfish_set_key): Some simplification. + + (encrypt): Deleted code for non-standard number of rounds. Deleted + a bunch of local variables. Using the context pointer for + everything should consume less registers. + (decrypt): Likewise. + + * Makefile.am (libnettle_a_SOURCES): Added twofish. + +2001-06-16 Niels M�ller <nisse@cuckoo.hack.org> + + * testsuite/blowfish-test.m4: Fixed test. + + * Added twofish implementation. + + * blowfish.h (struct blowfish_ctx): Use the correct size for the p + array. + 2001-06-15 Niels M�ller <nisse@ehand.com> * testsuite/blowfish-test.m4: Fixed testcase, use correct key diff --git a/serpent.h b/serpent.h index 5f5053ad8a042eba2b2c254844e367f61dbb12a8..281e050acf62c392a3d93b38a2783c85f227f242 100644 --- a/serpent.h +++ b/serpent.h @@ -33,14 +33,14 @@ #include <stdint.h> -#define SERPENT_BLOCKSIZE 16 +#define SERPENT_BLOCK_SIZE 16 -/* Other key lengths are possible, but we only use 256 bits. Besides, the - design of Serpent makes other key lengths useless; they cheated with the - AES requirements, using a 256-bit key length exclusively and just padding - it out if the desired key length was less, so there really is no advantage - to using key lengths less than 256 bits. */ -#define SERPENT_KEYSIZE 32 +/* Other key lengths are possible, but the design of Serpent makes + * smaller key lengths quite pointless; they cheated with the AES + * requirements, using a 256-bit key length exclusively and just + * padding it out if the desired key length was less, so there really + * is no advantage to using key lengths less than 256 bits. */ +#define SERPENT_KEY_SIZE 32 /* Allow keys of size 128 <= bits <= 256 */ diff --git a/testsuite/.cvsignore b/testsuite/.cvsignore index 641dc9ebd4fb260675ec09569cc7c914bad234b3..bcf766a60a6268ba2898c44e2910ccda6d233341 100644 --- a/testsuite/.cvsignore +++ b/testsuite/.cvsignore @@ -11,5 +11,9 @@ des-test des-test.c md5-test md5-test.c +serpent-test +serpent-test.c sha1-test sha1-test.c +twofish-test +twofish-test.c diff --git a/testsuite/.gitignore b/testsuite/.gitignore index e8e5a17086853dce39e55b609d01dc4d07b7a78e..54b6bb58bb2d40c0e3740270172c88084b0b0011 100644 --- a/testsuite/.gitignore +++ b/testsuite/.gitignore @@ -11,5 +11,9 @@ /des-test.c /md5-test /md5-test.c +/serpent-test +/serpent-test.c /sha1-test /sha1-test.c +/twofish-test +/twofish-test.c diff --git a/testsuite/twofish-test.m4 b/testsuite/twofish-test.m4 index 8b2a3512254dc882c136cf6573e5f457c62894f1..98840bf2bb61f3b7d7ef701a265bba527a95ff21 100644 --- a/testsuite/twofish-test.m4 +++ b/testsuite/twofish-test.m4 @@ -11,7 +11,7 @@ uint8_t clear[TWOFISH_BLOCK_SIZE]; /* 128 bit key */ H(msg, "0000000000000000 0000000000000000"); -twofish_set_key(&ctx, 16, H("0000000000000000 0000000000000000")) +twofish_set_key(&ctx, 16, H("0000000000000000 0000000000000000")); twofish_encrypt(&ctx, TWOFISH_BLOCK_SIZE, cipher, msg); if (!MEMEQ(TWOFISH_BLOCK_SIZE, cipher, @@ -39,8 +39,6 @@ if (!MEMEQ(TWOFISH_BLOCK_SIZE, msg, clear)) /* 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, diff --git a/twofish.h b/twofish.h index 0b4c6ef0cf9227cd82c2bc862c6cc01df163e42c..81a19287ad49586ad0d049414bffa471811f8c67 100644 --- a/twofish.h +++ b/twofish.h @@ -46,7 +46,7 @@ struct twofish_ctx { uint32_t keys[40]; - uitn32_t s_box[4][256]; + uint32_t s_box[4][256]; }; void