2012-07-05  Niels Möller  <nisse@lysator.liu.se>

	* x86_64/salsa20-crypt.asm (salsa20_crypt): Write the 64-bit movq
	instructions as "movd", since that makes the osx assembler
	happier. Assembles to the same machine code on gnu/linux.

2012-07-03  Niels Möller  <nisse@lysator.liu.se>

	* aclocal.m4 (LSH_FUNC_ALLOCA): In the config.h boilerplate,
	include malloc.h if it exists, also when compiling with gcc.
	Needed for cross-compiling with --host=i586-mingw32msvc.

	* examples/base16dec.c: Don't #include files using <nettle/...>,
	we don't want to pick up installed versions. On windows, include
	<fcntl.h>, needed for _setmode.
	* examples/base16enc.c: Likewise.
	* examples/base64dec.c: Likewise.
	* examples/base64enc.c: Likewise

	* nettle.texinfo (Cipher functions): Document Salsa20.

2012-06-25  Niels Möller  <nisse@lysator.liu.se>

	* pkcs1.c (_pkcs1_signature_prefix): Renamed function, adding a
	leading underscore. Updated all callers.

	* bignum-next-prime.c (nettle_next_prime): Consistently use the
	type nettle_random_func * (rather then just nettle_random_func)
	when passing the function pointer as argument. Similar change for
	nettle_progress_func. Should have been done for the 2.0 release,
	but a few arguments were overlooked.
	* bignum-random-prime.c (_nettle_generate_pocklington_prime)
	(nettle_random_prime): Likewise.
	* bignum-random.c (nettle_mpz_random_size, nettle_mpz_random):
	Likewise.
	* dsa-keygen.c (dsa_generate_keypair): Likewise.
	* dsa-sha1-sign.c (dsa_sha1_sign_digest, dsa_sha1_sign): Likewise.
	* dsa-sha256-sign.c (dsa_sha256_sign_digest, dsa_sha256_sign):
	Likewise.
	* dsa-sign.c (_dsa_sign): Likewise.
	* pkcs1-encrypt.c (pkcs1_encrypt): Likewise.
	* rsa-blind.c (_rsa_blind): Likewise.
	* rsa-decrypt-tr.c (rsa_decrypt_tr): Likewise.
	* rsa-encrypt.c (rsa_encrypt): Likewise.
	* rsa-keygen.c (rsa_generate_keypair): Likewise.
	* rsa-pkcs1-sign-tr.c (rsa_pkcs1_sign_tr): Likewise.

	* cbc.c (cbc_encrypt, cbc_decrypt): Similarly, use the type
	nettle_crypt_func * rather than just nettle_crypt_func.
	* ctr.c (ctr_crypt): Likewise.
	* gcm.c (gcm_set_key): Likewise.

	* testsuite/des-compat-test.c (test_main): Disable declarations of
	disabled functions and variables, to avoid warnings. No verbose
	output unless verbose flag is set.

2012-06-09  Niels Möller  <nisse@lysator.liu.se>

	* examples/Makefile.in (SOURCES): Added base16dec.c, forgotten
	earlier.

	General pkcs1 signatures, with a "DigestInfo" input. Suggested by
	Nikos Mavrogiannopoulos.
	* Makefile.in (hogweed_SOURCES): Added pkcs1-rsa-digest.c,
	rsa-pkcs1-sign.c, rsa-pkcs1-sign-tr.c, and rsa-pkcs1-verify.c.

	* pkcs1-rsa-digest.c (pkcs1_rsa_digest_encode): New file and
	function.
	* pkcs1.h: Declare it.

	* rsa-pkcs1-verify.c (rsa_pkcs1_verify): New file and function.
	* rsa-pkcs1-sign.c (rsa_pkcs1_sign): New file and function.
	* rsa-pkcs1-sign-tr.c (rsa_pkcs1_sign_tr): New file and function,
	contributed by Nikos Mavrogiannopoulos.
	* rsa.h: Declare new functions.

	* rsa.h (_rsa_blind, _rsa_unblind): Declare functions.
	* rsa-blind.c (_rsa_blind, _rsa_unblind): Functions moved to a
	separate file, renamed and made non-static. Moved from...
	* rsa-decrypt-tr.c: ... here.

2012-06-03  Niels Möller  <nisse@lysator.liu.se>

	* testsuite/pkcs1-test.c (test_main): Include leading zero in
	expected result.

	* pkcs1.c (pkcs1_signature_prefix): Return pointer to where the
	digest should be written. Let the size input be the key size in
	octets, rather then key size - 1.
	* pkcs1-rsa-*.c: Updated for above.
	* rsa-*-sign.c, rsa-*-verify.c: Pass key->size, not key->size - 1.

2012-05-18  Niels Möller  <nisse@lysator.liu.se>

	* pkcs1-encrypt.c (pkcs1_encrypt): New file and function.
	* rsa-encrypt.c (rsa_encrypt): Use pkcs1_encrypt.

2012-05-09  Niels Möller  <nisse@lysator.liu.se>

	* rsa-decrypt-tr.c (rsa_decrypt_tr): Added missing mpz_clear,
	spotted by Nikos Mavrogiannopoulos.

2012-05-07  Niels Möller  <nisse@lysator.liu.se>

	* nettle-types.h (_STDINT_HAVE_INT_FAST32_T): Define here, to
	force nettle-stdint.h to not try to define the int_fast*_t types.
	Avoids compilation problems with gnutls on SunOS-5.8, where the
	definitions here collide with gnulib's.

2012-04-23  Niels Möller  <nisse@lysator.liu.se>

	* nettle-internal.h (NETTLE_MAX_BIGNUM_SIZE): New constant. Based
	on NETTLE_MAX_BIGNUM_BITS, rounded upwards. Replaced all uses of
	NETTLE_MAX_BIGNUM_BITS.

2012-04-19  Niels Möller  <nisse@lysator.liu.se>

	* list-obj-sizes.awk: Use decimal rather than hexadecimal output.
	(hex2int): Use local variables.

2012-04-18  Niels Möller  <nisse@lysator.liu.se>

	* x86_64/salsa20-crypt.asm: New file.

2012-04-17  Niels Möller  <nisse@lysator.liu.se>

	* testsuite/salsa20-test.c (test_salsa20_stream): Check that
	salsa20_crypt doesn't write beyond the given destination area.
	(test_salsa20): Likewise.

	* salsa20-crypt.c: Renamed file, from...
	* salsa20.c: ... old name.

	* x86_64/machine.m4 (WREG): New macro.

	* salsa20.c (salsa20_hash): Deleted function, inlined into
	salsa20_crypt.
	(salsa20_set_key, salsa20_set_iv): Moved, to...
	* salsa20-set-key.c: ...new file.

2012-04-15  Niels Möller  <nisse@lysator.liu.se>

	* testsuite/salsa20-test.c (test_salsa20_stream): New function.
	(test_main): Tests for encrypting more than one block at a time.

2012-04-14  Niels Möller  <nisse@lysator.liu.se>

	* examples/io.c (write_file): Use write_string.

	* examples/Makefile.in (base64enc): New targets. Also
	added missing io.o dependency to several other targets.
	(base64dec, base16enc, base16dec): Likewise.

	* examples/base64enc.c: New file, based on example code
	contributed by Jeronimo Pellegrini.
	* examples/base64dec.c: Likewise.
	* examples/base16enc.c: Likewise.
	* examples/base16dec.c: Likewise.

	* examples/rsa-encrypt.c (process_file): Reorganized fread loop.
	(usage): New function.
	(main): Implemented --help option.

	* examples/rsa-decrypt.c (process_file): Improved error message
	for too short input file.

	* aes-set-decrypt-key.c (gf2_log, gf2_exp): Deleted tables.
	(mult, inv_mix_column): Deleted functions.
	(mtable): New table.
	(MIX_COLUMN): New macro.
	(aes_invert_key): Use MIX_COLUMN and mtable.

	* aesdata.c (compute_mtable): New table, for the inv mix column
	operation in aes_invert_key.

2012-04-13  Niels Möller  <nisse@lysator.liu.se>

	* aes-set-encrypt-key.c (aes_set_encrypt_key): Use LE_READ_UINT32.
	Tabulate the needed "round constants".
	(xtime): Deleted function.

	* aes-internal.h (SUBBYTE): Cast to uint32_t. Use B0, ..., B3
	macros.

2012-04-09  Niels Möller  <nisse@lysator.liu.se>

	Timing resistant RSA decryption, based on RSA blinding code
	contributed by Nikos Mavrogiannopoulos.
	* rsa-decrypt-tr.c (rsa_decrypt_tr): New function.
	(rsa_blind): Helper function.
	(rsa_unblind): Helper function.
	* rsa.h: Declare rsa_decrypt_tr. Some cleanups, no longer include
	nettle-meta.h, more consistent declarations of function pointer
	arguments.
	* testsuite/rsa-encrypt-test.c (test_main): Test rsa_decrypt_tr.
	Check for writes past the end of the message area.

	* Makefile.in (hogweed_SOURCES): Added pkcs1-decrypt.c.
	* rsa-decrypt.c (rsa_decrypt): Use pkcs1_decrypt.
	* pkcs1-decrypt.c (pkcs1_decrypt): New file and function,
	extracted from rsa_decrypt.

2012-04-01  Niels Möller  <nisse@lysator.liu.se>

	* salsa20.c (LE_SWAP32): Typo fix for big-endian case.
	(QROUND): New macro.
	(salsa20_hash): Use it.

2012-03-31  Niels Möller  <nisse@lysator.liu.se>

	* salsa20.c: (salsa20_set_iv): Deleted size argument, only one
	size allowed.
	(U8TO32_LITTLE): Deleted macro. Use LE_READ_UINT32 instead, which
	avoids unaligned reads.
	(salsa20_set_key): Rearranged slightly, to avoid unnecessary
	byte-to-word conversions.

	(LE_SWAP32): Renamed macro from...
	(U32TO32_LITTLE): ... old name.
	(U32TO8_LITTLE): Deleted macro.
	(salsa20_wordtobyte): Renamed function to...
	(salsa20_hash): ... new name. Changed output argument from byte
	array to word array. Use memxor3, which brings a considerable
	performance gain.

	* nettle-internal.c (salsa20_set_key_hack): Updated salsa20_set_iv
	call.
	* testsuite/salsa20-test.c (test_salsa20): Deleted iv_length
	argument, updated all calls.

	* salsa20.h (SALSA20_BLOCK_SIZE): New constant.
	(_SALSA20_INPUT_LENGTH): New constant.
	* salsa20.c: Use these constants.

	* salsa20.c (ROTL32): Deleted macro, use the one from macros.h
	instead, with reversed order of arguments.
	(ROTATE, XOR, PLUS, PLUSONE): Deleted macros, use ROTL32 and
	builtin operators directly.

	Unification of rotation macros.
	* macros.h (ROTL32): New macro, to replace (almost) all other
	rotation macros.

	* aes-set-encrypt-key.c: Include macros.h.
	(aes_set_encrypt_key): Use ROTL32.
	* aes-internal.h (ROTBYTE, ROTRBYTE): Deleted macros.

	* camellia-internal.h (ROL32): Deleted macro.
	(ROTL128): Renamed for consistency, from...
	(ROL128): ... old name.
	* camellia-crypt-internal.c: Updated for renamed rotation macros.
	* camellia-set-encrypt-key.c: Likewise.
	* cast128.c (ROL): Deleted macro.
	(F1, F2, F3): Updated to use ROTL32 (reversed order of arguments).
	Also added proper do { ... } while (0) wrappers.

	* ripemd160-compress.c (ROL32): Deleted macro.
	(R): Updated to use ROTL32 (reversed order of arguments).

	* serpent-internal.h (ROL32): Deleted macro.
	(ROTL64): Renamed (from ROL64) and reorderd arguments, for
	consistency.
	(RSHIFT64): Reordered arguments, for consistency.
	* serpent-decrypt.c: Updated for renamed rotation macros, with
	reversed argument order.
	* serpent-encrypt.c: Likewise.
	* serpent-set-key.c: Likewise.

	* sha1-compress.c (ROTL): Deleted macro, use ROTL32 instead.

	* sha256-compress.c (ROTR): Deleted macro. Replaced by ROTL32,
	with complemented shift count.
	(SHR): Deleted macro, use plain shift operator instead.

	* sha512-compress.c (ROTR): Deleted macro, replaced by...
	(ROTL64): ...new macro, with complemented shift count
	(SHR): Deleted macro, use plain shift operator instead.
	(S0, S1, s0, s1): Updated accordingly.

2012-03-30  Niels Möller  <nisse@lysator.liu.se>

	* nettle-internal.c (nettle_salsa20): Cipher struct for
	benchmarking only. Sets a fix zero IV, and ignores block size.
	* nettle-internal.h (nettle_salsa20): Declare it.

	* examples/nettle-benchmark.c (block_cipher_p): New function.
	(time_cipher): Use block_cipher_p.
	(main): Include salsa20 in benchmark.

	* Makefile.in (soname link): Fixed logic.
	(nettle_SOURCES): Removed nettle-internal.c, so that it's not
	part of the library...
	(internal_SOURCES): ...and put it here.
	* testsuite/Makefile.in (TEST_OBJS): Added ../nettle-internal.o.
	* examples/Makefile.in (BENCH_OBJS): New variable, to simplify the
	nettle-benchmark rule. Also link with ../nettle-internal.o.

2012-03-29  Niels Möller  <nisse@lysator.liu.se>

	Implementation of Salsa20, contributed by Simon Josefsson.
	* salsa20.h: New file.
	* salsa20.c: New file.
	* Makefile.in (nettle_SOURCES): Added salsa20.c
	(HEADERS): Added salsa20.h.
	* testsuite/Makefile.in (TS_NETTLE_SOURCES): Added salsa20-test.c.
	* testsuite/salsa20-test.c: New test case.

	* Makefile.in (soname links): Adding missing space before ].

2012-03-23  Niels Möller  <nisse@lysator.liu.se>

	* arcfour.h (arcfour_stream): Deleted obsolete prototype.

2012-03-05  Niels Möller  <nisse@lysator.liu.se>

	* configure.ac (enable_shared): Build shared libraries by default.

2012-03-04  Niels Möller  <nisse@lysator.liu.se>

	* configure.ac (LIBNETTLE_MINOR): Bumped library version, to 4.4.
	(LIBHOGWEED_MINOR): And to 2.2.

2012-02-27  Niels Möller  <nisse@lysator.liu.se>

	* list-obj-sizes.awk: Recognize elf64 objects.

	* Makefile.in (.texinfo.dvi): Pass -b option to texi2dvi.

	* Makefile.in (TARGETS): Added twofishdata.
	(SOURCES): Added twofishdata.c.
	(twofishdata): New rule.

	* twofish.c (q0, q1): Made const, and reformatted to match the
	twofishdata program.

	* twofishdata.c: Resurrected old file. Used to be called
	generate_q.c, when the twofish code was contributed back in 1999.

	* nettle.texinfo: Documentation for base16 and base64 encoding.
	Text contributed by Jeronimo Pellegrini
	<pellegrini@mpcnet.com.br>, back in April 2006.

2012-02-18  Niels Möller  <nisse@lysator.liu.se>

	* run-tests, getopt.c, getopt1.c, getopt.h: These files were moved
	to the top-level in the conversion to an independent git
	repository. They used to be symlinks to lsh files, from the
	subdirectories which use them.

	* Makefile.in: Build and distribute getopt files. Distribute
	run-tests script.
	* examples/Makefile.in: Adapt to getopt files and the run-tests
	script now located in the parent directory.
	* testsuite/Makefile.in: Likewise.
	* tools/Makefile.in: Likewise.

	* index.html: Converted to xhtml (from lsh repository, change
	dated 2012-02-03). Updated git instructions.

	* nettle.texinfo: Updated charset declaration.
	* misc/plan.html: Likewise.

2012-01-17  Niels Möller  <nisse@lysator.liu.se>

	* testsuite/Makefile.in (DISTFILES): Added setup-env.

	* examples/rsa-decrypt.c (main): Use _setmode rather than setmode,
	suggested by Eli Zaretskii. Affects windows builds only.
	* examples/rsa-encrypt.c: Likewise.

	* Makefile.in ($(LIBNETTLE_FORLINK)): Always create a .lib symlink
	to the library file. Use LN_S.
	($(LIBHOGWEED_FORLINK)): Likewise.

	(install-shared-nettle): Use LN_S.
	(install-shared-hogweed): Likewise.

	* configure.ac: Use AC_PROG_LN_S.
	* config.make.in (LN_S): New substitution.

	* testsuite/setup-env: New file. Wine workaround. Can't get
	../.lib into wine's dll search path, so create additional
	symlinks.
	* testsuite/teardown-env: ...and delete them here. Also delete
	file testtmp.
	* examples/setup-env: Similar links setup here.
	* examples/teardown-env: ... and deleted.

2012-01-07  Niels Möller  <nisse@lysator.liu.se>

	* examples/Makefile.in (check): Add ../.lib to PATH, like in
	testsuite/Makefile. Needed for w*ndows. Reported by Eli Zaretskii.

2011-11-25  Niels Möller  <nisse@lysator.liu.se>

	From Martin Storsjö:
	* x86_64/machine.m4 (W64_ENTRY, W64_EXIT): New macros for
	supporting W64 ABI.
	* x86_64: Updated all assembly files to use them.

	* configure.ac (W64_ABI): New variable, set when compiling for
	W64 ABI (64-bit M$ windows).
	* config.m4.in (W64_ABI): Define, from configure substitution.

2011-11-24  Niels Möller  <nisse@lysator.liu.se>

	From Martin Storsjö:
	* examples/Makefile.in (check): Pass $(EMULATOR) and $(EXEEXT) in
	the environment of run-tests.
	* examples/rsa-encrypt-test: Use $EXEEXT and $EMULATOR.
	* examples/rsa-sign-test: Likewise.
	* examples/rsa-verify-test: Likewise.
	* examples/setup-env: Likewise.

	* testsuite/Makefile.in (check): Pass $(EXEEXT) in the environment of
	run-tests.
	* testsuite/pkcs1-conv-test: Use $EXEEXT and $EMULATOR. Ignore \r
	in rsa-sign output.

	* examples/rsa-decrypt.c (main) [WIN32]: Set stdout/stdin to
	binary mode.
	* examples/rsa-encrypt.c (main): Likewise.

2011-11-24  Niels Möller  <nisse@lysator.liu.se>

	* configure.ac (HAVE_NATIVE_64_BIT): Workaround to get it set to 1
	on w64.

	* serpent-internal.h (ROL64): Use (uint64_t) 1 rather than 1L, for
	M$ w64.
	(RSHIFT64): Likewise. Also added a missing parenthesis.

2011-11-24  Niels Möller  <nisse@lysator.liu.se>

	From Martin Storsjö:
	* testsuite/symbols-test: Use $NM, falling back to nm if undefined.
	* testsuite/Makefile.in (check): Pass $(NM) in the environment of
	run-tests.
	* config.make.in (NM): Set NM.

	* testsuite/sexp-conv-test: Use $EMULATOR when running test
	programs. Also ignore \r for output in the non-canonical output
	formats.
	* testsuite/Makefile.in (check): Pass $(EMULATOR) in the
	environment of run-tests.
	* configure.ac (EMULATOR): New substituted variable. Set to wine
	or wine64 when cross compiling for windows, otherwise empty.
	* config.make.in (EMULATOR): Set from autoconf value.

2011-11-20  Niels Möller  <nisse@lysator.liu.se>

	* x86/camellia-crypt-internal.asm: Take ALIGNOF_UINT64_T into
	account when getting the offset for the subkeys. Differs between
	w32 and other systems. w32 problem identified by Martin Storsjö.

	* config.m4.in: Define ALIGNOF_UINT64_T (from configure).

	* configure.ac: Check alignment of uint64_t, and also use AC_SUBST
	for use in config.m4.in.

2011-11-19  Niels Möller  <nisse@lysator.liu.se>

	Cygwin/mingw32 improvements contributed by Martin Storsjö:
	* Makefile.in (IMPLICIT_TARGETS): New variable for DLL link
	libraries.
	(clean-here): Delete the DLL import libraries.

	* configure.ac: Setup installation of DLL files in $bindir.
	(IF_DLL, LIBNETTLE_FILE_SRC, LIBHOGWEED_FILE_SRC): New
	substitutions.

	* config.make.in (LIBNETTLE_FILE_SRC): Substitute new autoconf
	variable.
	(LIBHOGWEED_FILE_SRC): Likewise.

	* Makefile.in (install-dll-nettle, uninstall-dll-nettle): New
	target for installing the DLL file in $bindir.
	(install-shared-nettle): Conditionally
	depend on install-dll-nettle. Use LIBNETTLE_FILE_SRC.
	(uninstall-shared-nettle): Conditionally depend on
	install-dll-nettle.
	(various hogweed targets): Analogous changes.

	* configure.ac: Unify shared lib setup for cygwin and mingw.

2011-10-31  Niels Möller  <nisse@lysator.liu.se>

	* configure.ac (LIBHOGWEED_LIBS): Typo fix for the darwin case.
	Spotted by Martin Storsjö.

2011-10-25  Niels Möller  <nisse@lysator.liu.se>

	* configure.ac (LIBHOGWEED_LIBS): cygwin fix, added
	libnettle.dll.a. Reported by Volker Zell.

2011-10-18  Niels Möller  <nisse@lysator.liu.se>

	* configure.ac: Improved setup för darwin shared libraries.
	Patch contributed by Ryan Schmidt.

2011-10-03  Niels Möller  <nisse@lysator.liu.se>

	* x86_64/memxor.asm: Implemented sse2-loop. Configured at compile
	time, and currently disabled.

	* testsuite/testutils.h (ASSERT): Write message to stderr.

	* testsuite/memxor-test.c: Use 16-byte alignment for "fully
	aligned" operands.

2011-09-03  Niels Möller  <nisse@lysator.liu.se>

	* x86/camellia-crypt-internal.asm: Use "l"-suffix on instructions
	more consistently. Reportedly, freebsd and netbsd systems with
	clang are more picky about this.

	* configure.ac: Changed version number to 2.5.

	* Released nettle-2.4.

	* configure.ac (LIBNETTLE_MINOR): Bumped library version, to 4.3.

	* gcm-aes.c: Include config.h.
	* tools/nettle-lfib-stream.c: Likewise.

	* ripemd160-compress.c: Added missing include of config.h. Needed
	for correct operation on big-endian systems.

2011-09-02  Niels Möller  <nisse@amfibolit.hack.org>

	* configure.ac: Changed version number to 2.4.

	* Released nettle-2.3.

2011-08-30  Niels Möller  <nisse@lysator.liu.se>

	* testsuite/hmac-test.c: Added tests for hmac-ripemd160.

	* hmac.h: Declare hmac-ripemd160 related functions.

	* Makefile.in (nettle_SOURCES): Added hmac-ripemd160.c.

2011-08-30  Niels Möller  <nisse@amfibolit.hack.org>

	* nettle.texinfo (Hash functions): Document ripemd-160.

	* hmac-ripemd160.c: New file.

	* hmac.h: Declare hmac-ripemd160 functions.

2011-08-29  Niels Möller  <nisse@lysator.liu.se>

	* sha256.c (sha256_update): Updated MD_UPDATE call for new
	conventions.
	(sha256_write_digest): Use MD_PAD rather than MD_FINAL, and insert
	the length manually.
	* sha512.c: Analogous changes.

	* sha1.c (COMPRESS): New macro.
	(sha1_update): Updated MD_UPDATE call for new conventions.
	(sha1_digest): Use MD_PAD rather than MD_FINAL, and insert the
	length manually.

	* ripemd160.c (ripemd160_init): Use memcpy for initializing the
	state vector.
	(COMPRESS): New macro.
	(ripemd160_update): Use MD_UPDATE.
	(ripemd160_digest): Inline ripemd160_final processing. Use MD_PAD
	and _nettle_write_le32.
	(ripemd160_final): Deleted function.

	* ripemd160.h (struct ripemd160_ctx): Use a 64-bit block count.
	Renamed digest to state.

	* md5.c (md5_init): Use memcpy for initializing the state vector.
	(COMPRESS): New macro, wrapping _nettle_md5_compress.
	(md5_update): Use MD_UPDATE.
	(md5_digest): Inline md5_final processing. Use MD_PAD and
	_nettle_write_le32.
	(md5_final): Deleted.

	* md5.h (struct md5_ctx): Renamed some fields, for consistency.

	* md4.h (struct md4_ctx): Renamed some fields, for consistency.

	* md4.c (md4_init): Use memcpy for initializing the state vector.
	(md4_update): Use MD_UPDATE.
	(md4_digest): Inline md4_final processing, using MD_PAD. Use
	_nettle_write_le32.
	(md4_block): Renamed, to...
	(md4_compress): ... new name. Take ctx pinter as argument.
	(md4_final): Deleted function.

	* md2.c (md2_update): Use MD_UPDATE.

	* macros.h (MD_UPDATE): Added incr argument. Invoke compression
	function with ctx pointer as argument, rather than ctx->state.
	(MD_FINAL): Just pad, don't store length field. Renamed to MD_PAD.
	(MD_PAD): Analogous change of compression invocations.

	* sha512.c: (COMPRESS): New macro wrapping _nettle_sha512_compress.
	(sha512_update): Use MD_UPDATE.
	(sha512_final): Deleted function.
	(sha512_write_digest): Use MD_FINAL.

	* sha256.c (COMPRESS): New macro wrapping _nettle_sha256_compress.
	(SHA256_INCR): Deleted macro.
	(sha256_update): Use MD_UPDATE.
	(sha256_final): Deleted function.
	(sha256_write_digest): New function, replacing sha256_final, and
	using MD_FINAL.
	(sha256_digest): Use sha256_write_digest.
	(sha224_digest): Likewise.

	* tools/nettle-hash.c (list_algorithms): Fixed typo in header.

	* sha1.c (SHA1_DATA_LENGTH): Deleted unused macro.
	(sha1_init): Use memcpy to initialize the state vector.
	(SHA1_INCR): Deleted macro.
	(sha1_update): Use MD_UPDATE macro, to reduce code duplication.
	(sha1_digest): Use MD_FINAL macro.
	(sha1_final): Deleted function.

	* sha.h (struct sha1_ctx): Renamed attribute digest to state.

	* macros.h (MD_UPDATE): New macro.
	(MD_FINAL): New macro.

2011-08-28  Niels Möller  <nisse@lysator.liu.se>

	* ripemd160.c (ripemd160_final): Use LE_WRITE_UINT32. Deleted byte
	swapping at the end, leaving it to ripemd160_digest.
	(ripemd160_digest): Use _nettle_write_le32.

	* Makefile.in (nettle_SOURCES): Added write-le32.c.

	* md5.c (md5_digest): Use _nettle_write_le32.

	* write-le32.c (_nettle_write_le32): New file and function.

	* ripemd160-compress.c (ROL32): Renamed macro (was "rol"). Deleted
	x86 version using inline assembly; at least gcc-4.4.5 recognizes
	shift-and-or expressions which are in fact rotations.
	(_nettle_ripemd160_compress): Use LE_READ_UINT32.

	* configure.ac (LIBNETTLE_MINOR): Bumped library version, to 4.2.

	* testsuite/meta-hash-test.c: Updated for the addition of
	ripemd-160.

	* testsuite/.test-rules.make: Added rule for ripemd160-test.

	* examples/nettle-benchmark.c (main): Benchmark ripemd-160.

2011-08-28  Niels Möller  <nisse@lysator.liu.se>

	RIPEMD-160 hash function. Ported from libgcrypt by Andres Mejia.
	* testsuite/ripemd160-test.c: New file.
	* ripemd160.h: New file.
	* nettle-meta.h: Declare nettle_ripemd160.
	* ripemd160.c: New file, ported from libgcrypt.
	* ripemd160-compress.c: Likewise.
	* ripemd160-meta.c: New file.
	* testsuite/Makefile.in (TS_NETTLE_SOURCES): Added
	ripemd160-test.c.
	* nettle-meta-hashes.c (nettle_hashes): Added nettle_ripemd160.
	* Makefile.in (nettle_SOURCES): Added ripemd160.c,
	ripemd160-compress.c, and ripemd160-meta.c.
	(HEADERS): Added ripemd160.h.

2011-08-10  Niels Möller  <nisse@amfibolit.hack.org>

	* nettle.texinfo: Fixed mis-placed const in various prototypes.
	Spotted by Tatsuhiro Tsujikawa.

2011-07-24  Niels Möller  <nisse@lysator.liu.se>

	* Makefile.in (PKGCONFIG_FILES, pkgconfigdir): New variables.
	(DISTFILES): Added nettle.pc.in and hogweed.pc.in.
	(nettle.pc, hogweed.pc): New targets (invoking config.status).
	(install-pkgconfig, uninstall-pkgconfig): New targets.
	(install-here): Depend on install-pkgconfig.
	(uninstall-here): Depend on uninstall-pkgconfig.
	(distclean-here): Delete nettle.pc and hogweed.pc.

2011-07-20  Niels Möller  <nisse@lysator.liu.se>

	* configure.ac: Generate nettle.pc and hogweed.pc.

	* nettle.pc.in, hogweed.pc.in: New files.

2011-07-17  Niels Möller  <nisse@lysator.liu.se>

	* nettle-internal.h: Added missing extern declarations.

2011-07-11  Niels Möller  <nisse@lysator.liu.se>

	* configure.ac: Changed version number to 2.3.

	* Released nettle-2.2.

	* Makefile.in (DISTFILES): Distribute COPYING.LIB, not COPYING,

2011-07-07  Niels Möller  <nisse@lysator.liu.se>

	* tools/misc.h (werror): Removed incorrect noreturn attribute from
	declaration.

	* examples/io.c (read_file): Bug fix, in dependence of initial
	size on max_size.

2011-07-01  Niels Möller  <nisse@lysator.liu.se>

	* cbc.c	(CBC_BUFFER_LIMIT): Reduced to 512 bytes.
	(cbc_decrypt): For in-place operation, use overlapping memxor3 and
	eliminate a memcpy.

	* ctr.c (ctr_crypt): Reorganized to call the encryption function
	with several blocks at a time. Handle the case of a single block
	specially.

	* x86_64/memxor.asm: Added ALIGN for shifting loop. Deleted
	obsolete ifelse.

2011-06-30  Niels Möller  <nisse@lysator.liu.se>

	* configure.ac: Link in serpent-decrypt.asm, if found.

	* x86_64/serpent-decrypt.asm: Added an SSE2 loop, doing four
	blocks at a time in parallel.

	* x86_64/serpent-encrypt.asm: Include serpent.m4. Deleted a
	redundant label.

	* x86_64/serpent.m4: New file, with serpent-related macros.

2011-06-29  Niels Möller  <nisse@lysator.liu.se>

	* x86_64/serpent-decrypt.asm: Wrote main (32-bit) loop.
	(SBOX0I, SBOX1I, SBOX7I): Fixed bugs.

	* nettle.texinfo (Copyright): Updated for license change to
	LGPLv2+. Updated copyriight info on serpent.

	* NEWS: Updated information for nettle-2.2.

	* x86_64/serpent-decrypt.asm: New file.

	* x86_64/serpent-encrypt.asm: Fixed .file pseudo op.

	* testsuite/testutils.c (test_cipher_ctr): Display more info on
	failure.

	* examples/nettle-benchmark.c (bench_ctr): New function.
	(time_cipher): Also benchmark CTR mode.

	* configure.ac (LIBNETTLE_MINOR): Updated library version number
	to 4.1.
	(LIBHOGWEED_MINOR): And to 2.1.

2011-06-22  Niels Möller  <nisse@lysator.liu.se>

	* configure.ac: Use pwd -P when examining lib directories.
	Link in serpent-encrypt.asm, if found.

2011-06-21  Niels Möller  <nisse@lysator.liu.se>

	* serpent-decrypt.c (SBOX3_INVERSE): Eliminated temporaries.
	(SBOX4_INVERSE): Likewise.
	(SBOX5_INVERSE): Likewise.
	(SBOX6_INVERSE): Likewise.
	(SBOX7_INVERSE): Likewise.
	(All SBOX_INVERSE-macros): Deleted type argument, and updated users.

2011-06-20  Niels Möller  <nisse@lysator.liu.se>

	* serpent-decrypt.c: Renamed arguments in sbox macros.
	(SBOX0_INVERSE): Eliminated temporaries.
	(SBOX1_INVERSE): Likewise.
	(SBOX2_INVERSE): Likewise.

	* x86_64/serpent-encrypt.asm: Added an SSE2 loop, doing four
	blocks at a time in parallel.

	* testsuite/serpent-test.c (test_main): Added some more multiple
	block tests.

2011-06-15  Niels Möller  <nisse@lysator.liu.se>

	* configure.ac (libdir): On 64-bit Linux, we used to assume that
	libraries are installed according to the FHS. Since at least
	Fedora and Gentoo follow the FHS convention, while at least Debian
	doesn't, we have to try to figure out which convention is used.

2011-06-14  Niels Möller  <nisse@lysator.liu.se>

	* x86_64/serpent-encrypt.asm: Slight simplification of loop logic.

	* x86_64/serpent-encrypt.asm: New file.

2011-06-12  Niels Möller  <nisse@lysator.liu.se>

	* testsuite/serpent-test.c (test_main): Added tests with multiple
	blocks at a time.

	* serpent-encrypt.c (SBOX6): Renamed arguments. Eliminated
	temporaries.
	(SBOX7): Likewise.
	(All SBOX-macros): Deleted type argument, and updated users.

	* configure.ac: Display summary at the end of configure..
	(asm_path): Set only if enable_assember is yes.

2011-06-10  Niels Möller  <nisse@lysator.liu.se>

	* serpent-encrypt.c (SBOX5): Renamed arguments. Eliminated
	temporaries.

2011-06-09  Niels Möller  <nisse@lysator.liu.se>

	* serpent-encrypt.c (SBOX4): Renamed arguments. Eliminated
	temporaries.

	* configure.ac (LIBNETTLE_LINK, LIBHOGWEED_LINK): Cygwin fix, from
	Vincent Torri.

2011-06-08  Niels Möller  <nisse@lysator.liu.se>

	* examples/eratosthenes.c (find_first_one): Fixed c99-style
	declaration. Reported by Sebastian Reitenbach.
	(find_first_one): Declare the lookup table as static const, and
	use unsigned char rather than unsigned..

2011-06-07  Niels Möller  <nisse@lysator.liu.se>

	* serpent-encrypt.c (SBOX0): Renamed arguments. Eliminated
	temporaries.
	(SBOX1): Likewise.
	(SBOX2): Likewise.
	(SBOX3): Likewise.

2011-06-06  Niels Möller  <nisse@lysator.liu.se>

	* Makefile.in (DISTFILES): Added serpent-internal.h.
	(nettle_SOURCES): Replaced serpent.c by serpent-set-key.c,
	serpent-encrypt.c, and serpent-decrypt.c.

	* serpent.c: Replaced by several new files.
	* serpent-set-key.c: New file.
	* serpent-encrypt.c: New file.
	* serpent-decrypt.c: New file.
	* serpent-internal.h: New file.

	* serpent.c [HAVE_NATIVE_64_BIT]: Process two blocks at a time in
	parallel. Measured speedup of 10%--25% (higher for encryption) on
	x86_64.

2011-06-01  Niels Möller  <nisse@lysator.liu.se>

	* serpent.c (ROUNDS): Deleted macro.
	(serpent_block_t): Deleted array typedef.
	(KEYXOR): New macro, replacing BLOCK_XOR.
	(BLOCK_COPY, SBOX, SBOX_INVERSE): Deleted macros.
	(LINEAR_TRANSFORMATION): Use four separate arguments.
	(LINEAR_TRANSFORMATION_INVERSE): Likewise.
	(ROUND): Take separate arguments for all input and output words.
	(ROUND_INVERSE): Likewise.
	(ROUND_LAST, ROUND_FIRST_INVERSE): Deleted macros.
	(serpent_set_key): Moved loop termination test.
	(serpent_encrypt): Rewrote with unrolling of just eight rounds,
	and without serpent_block_t.
	(serpent_decrypt): Likewise.

	* serpent.c: Added do { ... } while (0) around block macros.
	(serpent_key_t): Deleted array typedef.
	(ROL32, ROR32): Renamed macros, were rol and ror.
	(KS_RECURRENCE, KS): New macros.
	(serpent_key_pad): Renamed, from...
	(serpent_key_prepare): ...old name.
	(serpent_subkeys_generate): Deleted function.
	(serpent_set_key): Rewrote the generation of subkeys. Reduced both
	temporary storage and code size (less unrolling)

2011-05-31  Niels Möller  <nisse@lysator.liu.se>

	* testsuite/serpent-test.c (test_main): Enabled test with short,
	40-bit, key.

	* serpent.c (byte_swap_32): Deleted macro.
	(serpent_key_prepare): Use LE_READ_UINT32. Don't require aligned
	input, and support arbitrary key sizes.

2011-05-30  Simon Josefsson  <simon@josefsson.org>

	* serpent.c: Rewrite, based on libgcrypt code.  License changed
	from GPL to LGPL.
	* serpent_sboxes.h: Removed.
	* Makefile.in: Drop serpent_sboxes.h.

2011-05-31  Niels Möller  <nisse@lysator.liu.se>

	* testsuite/serpent-test.c (test_main): Added some tests for
	padding of keys of length which is not a multiple of four bytes.

2011-05-30  Simon Josefsson  <simon@josefsson.org>

	* testsuite/serpent-test.c (test_main): Add test vectors from
	libgcrypt.

2011-05-21  Niels Möller  <nisse@lysator.liu.se>

	* dsa-keygen.c (dsa_generate_keypair): Avoid double init of mpz
	variable. Spotted by Nikos Mavrogiannopoulos.

2011-05-06  Niels Möller  <nisse@lysator.liu.se>

	* configure.ac: Fix link flags for shared libraries on Solaris,
	which needs -h to set the soname. Patch contributed by Dagobert
	Michelsen.

2011-05-06  Niels Möller  <nisse@lysator.liu.se>

	* configure.ac: New configure option --enable-gcov.

	* arcfour.h (arcfour_stream): Deleted obsolete define.

2011-04-27  Niels Möller  <nisse@lysator.liu.se>

	* tools/nettle-hash.c (find_algorithm): Require exact match.

2011-04-15  Niels Möller  <nisse@lysator.liu.se>

	Reverted broken byte-order change from 2001-06-17:
	* serpent.c (serpent_set_key): Use correct byteorder.
	(serpent_encrypt): Likewise.
	(serpent_decrypt): Likewise.

	* testsuite/serpent-test.c (decode_hex_reverse): New function.
	(RH, RHL): New macros.
	(test_main): Byte reverse inputs and outputs for the testvectors
	taken from the serpent submission package. Enable test vectors
	from http://www.cs.technion.ac.il/~biham/Reports/Serpent/.

2011-03-23  Niels Möller  <nisse@lysator.liu.se>

	* tools/sexp-conv.c (xalloc): Deleted function, now it's in misc.c
	instead.

	* configure.ac: Use LSH_FUNC_STRERROR.

	* tools/Makefile.in (TARGETS): Added nettle-hash, and related
	build rules.
	(SOURCES): Added nettle-hash.c.

	* tools/misc.c (xalloc): New function.

	* tools/pkcs1-conv.c (main): Made the OPT_* constants local, and
	fixed numerical values to start with non-ASCII 0x300.

	* tools/nettle-hash.c: New file.

2011-03-23  Niels Möller  <nisse@lysator.liu.se>

	Contributed by Daniel Kahn Gillmor:
	* testsuite/Makefile.in (TS_NETTLE_SOURCES): Added
	meta-hash-test.c, meta-cipher-test.c, and meta-armor-test.c.

	* testsuite/meta-hash-test.c: New file.
	* testsuite/meta-cipher-test.c: New file.
	* testsuite/meta-armor-test.c: New file.

	* nettle.texinfo: Document nettle_hashes and nettle_ciphers.

	* nettle-meta.h: Declare algorithm lists nettle_ciphers,
	nettle_hashes, nettle_armors.

	* Makefile.in (nettle_SOURCES): Added nettle-meta-hashes.c,
	nettle-meta-ciphers.c, and nettle-meta-armors.c.

	* nettle-meta-armors.c: New file.
	* nettle-meta-ciphers.c: New file.
	* nettle-meta-hashes.c: New file.

2011-02-18  Niels Möller  <nisse@lysator.liu.se>

	* arcfour.c (arcfour_stream): Deleted function. It's not very
	useful, and neither documented nor tested.

2011-02-16  Niels Möller  <nisse@lysator.liu.se>

	* cbc.h (CBC_ENCRYPT): Avoid using NULL; we don't ensure that it
	is defined.
	(CBC_DECRYPT): Likewise.

	* gcm-aes.c (gcm_aes_set_iv): Use GCM_SET_IV.
	(gcm_aes_set_key): Deleted cast.
	(gcm_aes_encrypt): Likewise.
	(gcm_aes_decrypt): Likewise.
	(gcm_aes_digest): Likewise.
	(gcm_aes_update): One less argument to GCM_UPDATE.
