+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
#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 */
/* 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,
/* 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,