Skip to content
Snippets Groups Projects
ChangeLog 57.7 KiB
Newer Older
Niels Möller's avatar
Niels Möller committed
2002-10-31  Niels Mller  <niels@s3.kth.se>

	* examples/sexp-conv.c(sexp_put_list_start): Deleted function. 
	(sexp_put_list_end): Likewise.
	(sexp_put_display_start): Likewise.
	(sexp_put_display_end): Likewise.
	(sexp_puts): Likewise.

	* examples/sexp-conv.c (sexp_get_quoted_string): Deleted function.
	Merged with sexp_get_String.
	(sexp_get_hex_string): Likewise.
	(sexp_get_base64_string): Likewise.
	(sexp_get_string): Do hex and base64 decoding.
	
	* examples/sexp-conv.c (enum sexp_char_type): New enum, for end
	markers in the input strem.
	(struct sexp_input): Deleted LEVEL attribute. Deleted all usage of
	it.
	(sexp_get_raw_char): Use INPUT->c and INPUT->ctype to store
	results. Deleted OUT argument.
	(sexp_get_char): Likewise. Also removed the
	INPUT->coding->decode_final call, for symmetry.
	(sexp_input_end_coding): Call INPUT->coding->decode_final.
	(sexp_next_char): New function.
	(sexp_push_char): New function.
	(sexp_get_token_char): Deleted function.
	(sexp_get_quoted_char): Simplified. Deleted output argument.
	(sexp_get_quoted_string): Simplified.
	(sexp_get_base64_string): Likewise.
	(sexp_get_token_string): Likewise.
	(sexp_get_string_length): Skip the character that terminates the
	string.
	(sexp_get_token): Cleared upp calling conventions. Always consume
	the final character of the token.
	(sexp_convert_list): Take responsibility for converting the start
	and end of the list.
	(sexp_convert_file): Call sexp_get_char first, to get the token
	reading started.
	(sexp_convert_item): Cleared up calling conventions. Should be
	called with INPUT->token being the first token of the expression,
	and returns with INPUT->token being the final token of the
	expression. Return value changed to void..

	* examples/sexp-conv-test: Added test for transport mode input.

	* examples/sexp-conv.c (sexp_get_char): Use the nettle_armor
	interface for decoding.
	(sexp_input_start_coding): New function.
	(sexp_input_end_coding): New function.
	(sexp_get_base64_string): Rewrote to use sexp_input_start_coding
	and sexp_input_end_coding.
	(sexp_get_token): Generate SEXP_TRANSPORT_START tokens.
	(sexp_convert_list): Lists are ended only by SEXP_LIST_END.
	(sexp_convert_item): Implemented transport mode, using
	sexp_input_start_coding and sexp_input_end_coding.

Niels Möller's avatar
Niels Möller committed
2002-10-30  Niels Mller  <nisse@cuckoo.hack.org>

	* Makefile.am: Added base16 files.

	* examples/sexp-conv-test: New tests for transport output.

	* examples/sexp-conv.c: Deleted hex functions, moved to Nettle's
	base16 files.
	(struct sexp_output): Represent the current encoding as a
	nettle_armor pointer and a state struct.
	(sexp_output_init): Deleted MODE argument. Now passed to functions
	that need it. 
	(sexp_get_char): Updated to new base64 conventions.
	(sexp_get_base64_string): Likewise.
	(sexp_put_raw_char): New function.
	(sexp_put_newline): Use sexp_put_raw_char.
	(sexp_put_char): Use nettle_armor interface for encoding data.
	Use OUTPUT->coding_indent for line breaking, so the INDENT
	argument was deleted.
	(sexp_put_code_start): New function, replacing sexp_put_base64_start.
	(sexp_put_code_end): New function, replacing sexp_put_base64_end. 
	(sexp_put_data): Deleted argument INDENT.
	(sexp_puts): Likewise.
	(sexp_put_length): Likewise.
	(sexp_put_list_start): Likewise.
	(sexp_put_list_end): Likewise.
	(sexp_put_display_start): Likewise.
	(sexp_put_display_end): Likewise.
	(sexp_put_string): Likewise. Also changed base64 handling.
	(sexp_convert_string): Deleted argument INDENT. New argument
	MODE_OUT. 
	(sexp_convert_list): New argument MODE_OUT.
	(sexp_convert_file): Likewise.
	(sexp_convert_item): Likewise. Also handle output in transport
	mode. 
	(match_argument): Simple string comparison.
	(main): Adapted to above changes.

	* testsuite/testutils.c (test_armor): Allocate a larger buffer
	CHECK, to make decode_update happy. Updated to new base64
	conventions.

	* testsuite/base64-test.c (test_main): Fixed overlap test to not
	change the base64 before decoding. Updated to new base64
	conventions. 

	* testsuite/Makefile.am (TS_PROGS): Added base16-test.

	* testsuite/base16-test.c: New test.

	* sexp-transport.c (sexp_transport_iterator_first): Updated to new
	conventions for base64_decode_update and base64_decode_final.

	* nettle-meta.h: Updated ascii armor declarations. New declaration
	for nettle_base16.

	* base64-decode.c (base64_decode_single): Return -1 on error.
	Also keep track of the number of padding characters ('=') seen.
	(base64_decode_update): New argument dst_length. Return -1 on error.
	(base64_decode_status):  Renamed function...
	(base64_decode_final): ... to this.

	* base64.h (struct base64_decode_ctx): Deleted STATUS attribute.
	Added PADDING attribute.

	* base16.h, base16-encode.c, base16-decode.c, base16-meta.c: New
	files. 

Niels Möller's avatar
Niels Möller committed
2002-10-28  Niels Mller  <nisse@cuckoo.hack.org>

	* examples/sexp-conv.c (struct hex_decode_ctx): New hex decoding
	functions. 
	(sexp_get_raw_char): New function.
	(sexp_get_char): Use sexp_get_raw_char.

Niels Möller's avatar
Niels Möller committed
2002-10-26  Niels Mller  <nisse@cuckoo.hack.org>

	* examples/sexp-conv.c (sexp_put_length): Bugfix, don't output any
	leading zero.
	(main): Implemented -s option.

	* examples/sexp-conv-test: Test for echo -n vs echo '\c'. Added a
	few tests for canonical output.

Niels Möller's avatar
Niels Möller committed
2002-10-25  Niels Mller  <niels@s3.kth.se>

Niels Möller's avatar
Niels Möller committed
	* examples/sexp-conv.c (struct sexp_input): Deleted the mode from
	the state, that should be passed as argument to relevant
	functions. Instead, introduces enum sexp_coding, to say if base64
	coding is in effect.
	(struct sexp_output): Added coding attribute.
	(sexp_put_char): Use output->coding.
	(sexp_put_base64_start): Likewise.
	(sexp_put_base64_end): Likewise.

Niels Möller's avatar
Niels Möller committed
	* base64-decode.c (base64_decode_single): Simplified, got rid of
	the done variable.

Niels Möller's avatar
Niels Möller committed
2002-10-25  Niels Mller  <nisse@cuckoo.hack.org>

	* examples/sexp-conv.c (sexp_put_newline): Return void, die on
	error. 
	(sexp_put_char, sexp_put_data, sexp_puts, sexp_put_length,
	sexp_put_base64_start, sexp_put_base64_end, sexp_put_string,
	sexp_put_list_start, sexp_put_list_end, sexp_put_display_start,
	sexp_put_display_end, sexp_convert_string, sexp_convert_list,
	sexp_skip_token): Likewise. 
	(sexp_convert_item): Die on error.

2002-10-24  Niels Mller  <nisse@cuckoo.hack.org>

	* examples/sexp-conv-test: Doesn't need echo -n anymore.

	* examples/sexp-conv.c (die): New function.
	(struct sexp_input): Deleted field ITEM.
	(sexp_get_char): Die on failure, never return -1.
	(sexp_get_quoted_char): Likewise.
	(sexp_get_quoted_string): Die on failure, no returned value. 
	(sexp_get_base64_string): Likewise.
	(sexp_get_token_string): Likewise.
	(sexp_get_string): Likewise.
	(sexp_get_string_length): Likewise.
	(sexp_get_token): Likewise.
	(sexp_convert_string): Adapted to sexp_get_token.
	(sexp_convert_list): Likewise.
	(sexp_convert_file): New function.
	(main): Use sexp_convert_file.

Niels Möller's avatar
Niels Möller committed
2002-10-23  Niels Mller  <nisse@cuckoo.hack.org>

	* examples/Makefile.am (TS_PROGS): Added sexp-conv-test.

	* examples/sexp-conv.c (sexp_input_init): Initialize input->string
	properly. 
	(sexp_get_char): Fixed non-transport case.
	(sexp_get_quoted_char): Fixed default case.
	(sexp_get_token): Loop over sexp_get_char (needed for handling of
	white space). Don't modify input->level. Fixed the code that skips
	comments. 
	(sexp_put_char): Fixed off-by-one bug in assertion.
	(sexp_put_string): Fixed escape handling for output of quoted
	strings. 
	(sexp_convert_list): Prettier output, hanging indent after the
	first list element.
	(sexp_skip_token): New function.
	(sexp_convert_item): Use sexp_skip_token to skip the end of a
	"[display-type]".

Niels Möller's avatar
Niels Möller committed
2002-10-22  Niels Mller  <nisse@cuckoo.hack.org>

Niels Möller's avatar
Niels Möller committed
	* examples/sexp-conv-test: New test program.

	* examples/Makefile.am (noinst_PROGRAMS): Added sexp-conv.

	* examples/sexp-conv.c (sexp_convert_list): New function.
	(sexp_convert_item): New function.
	(main): New function. Compiles and runs now, but doesn't work.

	* base64-decode.c (base64_decode_single): New function.
	(base64_decode_update): Use base64_decode_single.

Niels Möller's avatar
Niels Möller committed
	* examples/sexp-conv.c: Added output functions.

2002-10-21  Pontus Skld  <pont@soua.net>

	* base64-encode.c (base64_encode_raw): Fixed null statement
	amongst variable declarations, broke compilation for non C99
	compilers.

Niels Möller's avatar
Niels Möller committed
2002-10-21  Niels Mller  <nisse@lysator.liu.se>

	* examples/sexp-conv.c: New sexp conversion program.

Niels Möller's avatar
Niels Möller committed
2002-10-21  Niels Mller  <niels@s3.kth.se>

	* Makefile.am (libnettle_a_SOURCES): Added
	sexp-format-transport.c. 

	* sexp-transport.c (sexp_transport_iterator_first): New file and
	function. 
	* sexp.h (sexp_transport_iterator_first): Added protoype.

	* sexp.c (sexp_iterator_next): Abort if iterator type is boogus.

Niels Möller's avatar
Niels Möller committed
2002-10-19  Niels Mller  <nisse@cuckoo.hack.org>

	* testsuite/testutils.c (test_armor): Updated to new armor
	conventions. 

	* testsuite/base64-test.c (test_main): Test BASE64_ENCODE_LENGTH
	and BASE64_DECODE_LENGTH. Updated test of base64_encode_raw (used
	to be base64_encode). 

	* base64.h (BASE64_ENCODE_LENGTH, BASE64_DECODE_LENGTH): Fixed and
	documented macros.

	* base64-meta.c (base64_encode_length, base64_decode_length): New
	functions, corresponding to the macros with the same name.

	* Makefile.am (libnettle_a_SOURCES): base64.c replaced by
	base64-encode.c and base64-decode.c.

	* pgp-encode.c (pgp_armor): Use new base64 conventions.

	* nettle-meta.h: Updated nettle_armor definitions.

	* base64.h: Major reorganization.

	* base64.c: Deleted file, contents moved to base64-encode.c or
	base64-decode.c. 

	* base64-encode.c: New file. New supporting both encode-at-once
	and streamed operation. 

	* base64-decode.c: New file.

Niels Möller's avatar
Niels Möller committed
2002-10-09  Niels Mller  <nisse@cuckoo.hack.org>

Niels Möller's avatar
Niels Möller committed
	* testsuite/Makefile.am (TS_PROGS): Added dsa-keygen-test.

	* dsa-keygen.c: Call the progress callback only if it's non-NULL. 

Niels Möller's avatar
Niels Möller committed
	* Makefile.am (libnettle_a_SOURCES): Added bignum-random.c and
	dsa-keygen.c. 

	* testsuite/testutils.c (test_dsa_key): New function to sanity
	check a dsa keypair.

	* testsuite/dsa-test.c (test_main): Call dsa_test_key.

	* testsuite/dsa-keygen-test.c: New test case.

	* dsa.h (DSA_MINIMUM_BITS): New constant.

	* bignum.h (nettle_mpz_random, nettle_mpz_random_size): Added
	prototypes.

	* dsa-keygen.c: New file.

	* bignum-random.c: New file.
	(nettle_mpz_random): New function, moved from...
	* dsa-sign.c (nettle_mpz_random): ... here. Also changed argument
	ordering and updated callers. 
	
	* bignum-random.c: (nettle_mpz_random_size): New function, renamed
	and moved here from...  
	* rsa-keygen.c (bignum_random_size): ... here. Updated all
	callers. 

Niels Möller's avatar
Niels Möller committed
	* testsuite/testutils.c (test_dsa): Needs both public and private
	key as arguments.

	* testsuite/dsa-test.c (test_main): Updated to changes of the
	private key struct.

	* testsuite/Makefile.am (TS_PROGS): Added dsa-test.

	* rsa-decrypt.c (rsa_decrypt): Constification.
	* rsa-encrypt.c (rsa_encrypt): Likewise.
	* rsa.c (rsa_compute_root): Likewise.
	* rsa_md5.c (rsa_md5_sign): Likewise.
	(rsa_md5_verify): Likewise.
	* rsa_sha1.c (rsa_sha1_sign): Likewise.
	(rsa_sha1_verify): Likewise.

	* dsa-verify.c (dsa_verify): Use const for the public key
	argument. 

	* dsa-sign.c (dsa_sign): Needs the public key as argument, in
	addition to the private key. Use const.

	* dsa.h (struct dsa_private_key): Don't include the public
	information here. 
	* dsa.c (dsa_private_key_init, dsa_private_key_clear): Updated to
	new struct dsa_private_key.  

	* dsa-sign.c (dsa_sign): Bugfix, added missing mpz_init call. 

Niels Möller's avatar
Niels Möller committed
	* Makefile.am (libnettle_a_SOURCES): Added dsa files.
	(libnettleinclude_HEADERS): Added dsa.h.

	* testsuite/testutils.c (test_dsa): New function.

	* testsuite/dsa-test.c: New test.

	* dsa.h, dsa.c, dsa-sign.c, dsa-verify.c: New files.

	* nettle-meta.h: Moved the nettle_random_func and
	nettle_progress_func typedefs here...
	* rsa.h: ... from here.	

Niels Möller's avatar
Niels Möller committed
2002-10-07  Niels Mller  <nisse@cuckoo.hack.org>

	* sexp.h (enum sexp_type): Deleted SEXP_START.

	* sexp.c (sexp_iterator_parse): New function, similar to the old
	sexp_iterator_next, but independent of the previous value of the
	iterator->type. 
	(sexp_iterator_first): Use sexp_iterator_parse.
	(sexp_iterator_next): Likewise.
	(sexp_iterator_enter_list): Use sexp_iterator_parse. SEXP_START
	not needed anymore.
	(sexp_iterator_exit_list): Likewise.

Niels Möller's avatar
Niels Möller committed
2002-10-06  Niels Mller  <nisse@cuckoo.hack.org>

Niels Möller's avatar
Niels Möller committed
	* sexp2rsa.c (get_value): No need to call sexp_iterator_next
	anymore. 

	* sexp.c (sexp_iterator_assoc): Advance the iterator to the
	element after a matching tag, before recording it.
	* testsuite/sexp-test.c (test_main): Updated test.

	* testsuite/sexp-test.c (test_main): No need to call
	sexp_iterator_next after sexp_iterator_exit_list.

	* sexp2rsa.c (rsa_keypair_from_sexp): No need to call
	sexp_iterator_next anymore.

	* sexp.c (sexp_iterator_next): Updated to new sexp_iterator_exit_list.
	(sexp_iterator_exit_list): Return with iterator pointing to the
	element after the list.
	(sexp_iterator_check_type): Call sexp_iterator_next before
	returning. 
	(sexp_iterator_check_types): Likewise.
	(sexp_iterator_assoc): Rearranged calls of sexp_iterator_next. 

	* sexp.c (sexp_iterator_enter_list): Call sexp_iterator_next to
	get to the first element of the list. Updated callers.

	* base64.c (base64_encode_group): New function, used by openpgp
	armoring code.

Niels Möller's avatar
Niels Möller committed
	* Makefile.am: Added openpgp files.

Niels Möller's avatar
Niels Möller committed
	* sexp2rsa.c (rsa_keypair_from_sexp): Use sexp_iterator_first.
	* testsuite/sexp-test.c (test_main): Likewise.

	* sexp.c (sexp_iterator_init): Made this function static.
	(sexp_iterator_first): New, friendlier, initialization function. 

	* pgp-encode.c: New file. Functions for writing openpgp data
	packets. 

	* pgp.h: New file, with pgp related declarations.

	* rsa2openpgp.c (rsa_keypair_to_openpgp): New file, new function. 

Niels Möller's avatar
Niels Möller committed
2002-10-04  Niels Mller  <niels@s3.kth.se>

	* examples/rsa-keygen.c: Use malloc, instead of asprintf.

Niels Möller's avatar
Niels Möller committed
2002-10-03  Niels Mller  <nisse@cuckoo.hack.org>
Niels Möller's avatar
Niels Möller committed
	* Released nettle-1.6.

Niels Möller's avatar
Niels Möller committed
	* NEWS: Note the aes api change.

	* examples/Makefile.am (EXTRA_DIST): Distribute setup-env and
	teardown-env. 

2002-10-02  Niels Mller  <nisse@cuckoo.hack.org>

Niels Möller's avatar
Niels Möller committed
	* examples/rsa-keygen.c (main): Comment on the lax security of the
	private key file.

	* index.html: Added link to mailing list.

Niels Möller's avatar
Niels Möller committed
2002-10-02  Niels Mller  <niels@s3.kth.se>

	* Makefile.am: Fixed assembler rules, and shared libraries.

	* configure.ac: Fixed the enable-shared option.

Niels Möller's avatar
Niels Möller committed
2002-10-01  Niels Mller  <nisse@cuckoo.hack.org>

	* configure.ac: New option --enable-shared, and a first attempt at
	building a shared library (*without* using libtool).

	* Makefile.am: A first attempt at rules for building a shared
	libnettle.so. 

Niels Möller's avatar
Niels Möller committed
2002-10-01  Niels Mller  <niels@s3.kth.se>

Niels Möller's avatar
Niels Möller committed
	* examples/run-tests (test_program): Use basename.

	* examples/teardown-env: Delete some more files.

	* examples/run-tests (test_program): Strip directory part of
	displayed name.

	* examples/Makefile.am (TS_PROGS): New variable. Run tests.

	* examples/io.c (read_file): Bug fix, used to overwrite pointer.

	* examples/rsa-keygen.c (main): Bug fix, private key wasn't
	written properly.

	* testsuite/Makefile.am: Some cleanup of make check.

	* examples/setup-env, examples/teardown-env: Test environment scripts.
	* examples/rsa-verify-test, examples/rsa-sign-test: New test cases.

	* examples/run-tests: New file (copied from lsh testsuite).

	* examples/Makefile.am: Use EXTRA_PROGRAMS and @RSA_EXAMPLES@.

Niels Möller's avatar
Niels Möller committed
	* examples/rsa-sign.c: No need to include config.h. Use werror
	instead of fprintf.
	* examples/rsa-verify.c: Likewise.
Niels Möller's avatar
Niels Möller committed
	* examples/rsa-keygen.c: Likewise.
Niels Möller's avatar
Niels Möller committed

	* examples/io.h: Forward declare struct rsa_public_key and struct
	rsa_private_key, to avoid dependences on config.h. 

	* configure.ac (RSA_EXAMPLES): New substituted variable,
	controlling which example programs to build.

	* examples/rsa-verify.c: New example program.

	* examples/rsa-keygen.c: Use functions from io.c.
	* examples/rsa-sign.c: Likewise.

	* examples/Makefile.am (noinst_PROGRAMS): Added rsa-verify.
	(LDADD): Added io.o.

	* configure.ac: New define WITH_PUBLIC_KEY, and new configure flag
	--disable-public-key. Updated rsa-files to check for that, rather
	than for HAVE_LIBGMP. 

	* examples/io.c, examples/io.c: New files. Miscellaneous functions
	used by the example programs.

Niels Möller's avatar
Niels Möller committed
	* base64.h (BASE64_DECODE_LENGTH): Comment fix.

Niels Möller's avatar
Niels Möller committed
2002-09-30  Niels Mller  <nisse@cuckoo.hack.org>

	* sexp2rsa.c (rsa_keypair_from_sexp): Bugfix: Call
	rsa_prepare_public_key and rsa_prepare_private_key.

	* examples/Makefile.am (noinst_PROGRAMS): Added rsa-sign.

	* examples/rsa-sign.c: New example program.

	* testsuite/base64-test.c (test_main): Test encoding and decoding
	in place.

	* base64.c (base64_encode): Encode from the end of the data
	towards the start, in order to support overlapping areas.
	(base64_encode): Broke out some common code from the switch..

Niels Möller's avatar
Niels Möller committed
2002-09-30  Niels Mller  <niels@s3.kth.se>

	* sexp_format.c (sexp_format): Don't mix code and declarations.

Niels Möller's avatar
Niels Möller committed
2002-09-29  Niels Mller  <nisse@cuckoo.hack.org>

	* testsuite/Makefile.am (TS_PROGS): Added buffer-test
	sexp-format-test rsa2sexp-test sexp2rsa-test. 


	* testsuite/sexp-test.c (test_main): Updated calls to
	sexp_iterator_assoc. 

	* testsuite/testutils.h (MEMEQH): New macro.

	* testsuite/sexp2rsa-test.c: New test.
	* testsuite/sexp-format-test.c: New test.
	* testsuite/rsa2sexp-test.c: New test.
	* testsuite/buffer-test.c: New test.

	* testsuite/testutils.c (test_rsa_key): Copied this function
	from...
	testsuite/rsa-keygen-test.c: ... here.

	* examples/rsa-keygen.c: New file.

	* Makefile.am: Added new source files and headers buffer.h,
	buffer.c, sexp_format.c, sexp2rsa.c, rsa2sexp.c.

	* rsa.h (rsa_keypair_to_sexp, rsa_keypair_from_sexp): New
	prototypes. 

	* rsa2sexp.c, sexp2rsa.c: New files.

	* sexp.c (sexp_iterator_assoc): Don't enter the list, associate
	keys within the current list. Still exit the list when done.
	(sexp_iterator_assoc): Represent keys as plain NUL-terminated
	strings. 
	(sexp_iterator_check_type, sexp_iterator_check_types): New
	functions. 

	* sexp_format.c: New file, implementing an sexp canonical syntax
	formatter.

	* buffer.c, buffer.h: New files, implementing a bare-bones string
	stream.

	* bignum.c (nettle_mpz_sizeinbase_256): New function.

Niels Möller's avatar
Niels Möller committed
2002-09-28  Niels Mller  <nisse@cuckoo.hack.org>

Niels Möller's avatar
Niels Möller committed
	* sexp.c (sexp_iterator_assoc): Return 0 for missing or duplicate
	keys. Now passes all the tests.

	* sexp.c (sexp_iterator_simple): Bugfixes. Check earlier that
	length doesn't grow too large.
	(sexp_iterator_next): Skip the current list only if type is
	SEXP_LIST. Handle ')'.
	(sexp_iterator_enter_list): Set type to SEXP_START.
	(sexp_iterator_exit_list): Likewise. Don't skip the ')' here. 
	(sexp_iterator_assoc): Bug fix.

	* testsuite/sexp-test.c (test_main): Reordered sexp_iterator_assoc
	tests. 

Niels Möller's avatar
Niels Möller committed
	* nettle.texinfo (Randomness): Documented that yarrow256_init can
	be called with a zero number of sources.

	* testsuite/testutils.h (ASSERT): New macro.

	* testsuite/sexp-test.c: Test sexp parser.

	* Makefile.am (SUBDIRS): Added sexp files.

	* sexp.c, sexp.h: New files, implementing an sexp-parser.

2002-08-27  Niels Mller  <niels@s3.kth.se>

	* Makefile.am (DISTCLEANFILES): make distclean should delete the
	assembler-related symlinks.

Niels Möller's avatar
Niels Möller committed
2002-08-26  Niels Mller  <nisse@cuckoo.hack.org>

	* Makefile.am (%.o: %.asm): Create an empty (and unused)
	dependency file, to make the make/automake dependency tracking
	happier. 

2002-07-18  Niels Mller  <niels@s3.kth.se>

Niels Möller's avatar
Niels Möller committed
	* examples/nettle-benchmark.c (main): Try openssl's ciphers as
	well, if available.

	* Makefile.am (libnettle_a_SOURCES): Added nettle-openssl.c.

	* nettle-openssl.c: New file.

	* nettle-internal.h: Declare openssl glue ciphers.

	* des-compat.h: Extra name-mangling, to avoid collisions in case a
	program links with both nettle and libcrypto (the nettle-benchmark
	program does).

	* configure.ac: Don't use -ggdb3 with gcc-2.96. 
Niels Möller's avatar
Niels Möller committed
	Check for openssl's libcrypto (for benchmarking).
Niels Möller's avatar
Niels Möller committed
2002-05-16  Niels Mller  <nisse@cuckoo.hack.org>

	* sparc/aes.asm: Deleted registers i and t3.
	(_aes_crypt): Moved some registers around. We now use input
	registers only for arguments, local registers for loop invariants,
	output registers for temporaries and loop variables, and no global
	registers at all.

	* sparc/aes.asm (AES_FINAL_ROUND): New macro.
	(_aes_crypt): Use AES_FINAL_ROUND for the first word if the final
	round. 
	(_aes_crypt): And for the rest of the final round.
	(AES_FINAL_ROUND): Don't update dst, just access it offseted by i.
	(_aes_crypt): Add 16 to dst at the end of the final round.
	(AES_ROUND): Use ldub, not ld + and, to get the third byte
	of wtxt.
	(AES_ROUND): Use ldub, not lduh + and, to get the second
	byte of a word.
	(AES_ROUND): Reordered instructions, so that we can save one
	register. 
	(AES_ROUND): Eliminated use of t3.
	(AES_FINAL_ROUND): Eliminated ands.
	(AES_FINAL_ROUND): Reordered, so that we can save one register. 
	(AES_FINAL_ROUND): Eliminated t3.
	(AES_LOAD): New macro.
	(_aes_crypt): Unrolled source loop.
	(_aes_crypt): Use AES_LOAD macro.
	(_aes_crypt): Deleted cruft from the old source loop.
	(AES_LOAD): Eliminated t3.

Niels Möller's avatar
Niels Möller committed
2002-05-15  Niels Mller  <nisse@cuckoo.hack.org>

Niels Möller's avatar
Niels Möller committed
	* sparc/aes.asm (AES_ROUND): New macro.
	(_aes_crypt): Use AES_ROUND for first word of the
	round function.
	(_aes_crypt): And for the rest of the round function.
	
	* sparc/aes.asm (_aes_crypt): Deleted a bunch of additions,
	after accessing IDX1.

	* aes-internal.h (struct aes_table): sparc_idx[0] should now
	contain index values shifted by the size of a word, and with 2
	added. This saves some additions in the sparc assembler code.
	Updates aes-encrypt-table.c and aes-decrypt-table.c.

	* sparc/aes.asm (_aes_crypt): Unrolled final loop, preparing for
	optimizations. 
	(_aes_crypt): Eliminated i from forst copy of the loop. Some
	cleanup. 
	(_aes_crypt): And from second copy.
	(_aes_crypt): And from third.
	(_aes_crypt): And fourth.
	(_aes_crypt): Eliminated updates of i from the loop.
	(_aes_crypt): Access IDX1 and IDX3 through the T pointer, saving
	two registers.

Niels Möller's avatar
Niels Möller committed
	* aes-internal.h (struct aes_table): Renamed the shift_idx field
	to sparc_idx, as it will be tweaked to improve the sparc code.
	Also reduced its size to [2][4].
	(IDX_FACTOR): Deleted constant.
	* aes-encrypt-table.c (_aes_encrypt_table): Adapted initializer of
	sparc_idx. 
	* aes-decrypt-table.c (_aes_decrypt_table): Likewise.
	* asm.m4: Deleted AES_SIDX2, to match struct aes_table.

	* sparc/aes.asm (_aes_crypt): Unrolled the inner loop, preparing
	for optimizations suggested by Marcus Comstedt.
	(_aes_crypt): Eliminated i from the first copy of the inner loop.
	(_aes_crypt): And from the second copy.
	(_aes_crypt): And from the third copy.
	(_aes_crypt): And from the fourth copy.
	(_aes_crypt): Renamed .Linner_loop to .Lround_loop.
	(_aes_crypt): Eliminated the loop variable i from the unrolled
	loop. 
	(_aes_crypt): Deleted moves of constants into t2.

Niels Möller's avatar
Niels Möller committed
2002-05-15  Niels Mller  <niels@s3.kth.se>

Niels Möller's avatar
Niels Möller committed
	* x86/aes-encrypt.asm (aes_encrypt): Use AES_SUBST_BYTE.
	* x86/aes-decrypt.asm (aes_decrypt): Likewise.
Niels Möller's avatar
Niels Möller committed
	(aes_decrypt): Use AES_STORE.
	(aes_decrypt): Deleted first xchgl instruction into, permuting the
	AES_ROUND calls instead.
	(aes_decrypt): Likewise for the final round.
	(aes_decrypt): Got rid if the xchgl instruction after the final
	round, folding it into the final round.
Niels Möller's avatar
Niels Möller committed
	* x86/machine.m4: Renamed AES_LAST_ROUND to AES_FINAL_ROUND.
	Updated users. 

	* x86/aes-decrypt.asm (aes_decrypt): Use the AES_LOAD macro.
	(aes_decrypt): Start using AES_ROUND.
	(aes_decrypt): Use AES_LAST_ROUND.

	* x86/aes-decrypt.asm (aes_decrypt): Moved function to a separate
	file... 
	* x86/aes.asm: ... from here.

	* x86/aes.asm (aes_decrypt): Use _aes_decrypt_table instead of
	itbl1-4. Commented out the inclusion of aes_tables.asm. 
	(aes_decrypt): Use _aes_decrypt_table instead of isbox.
	

	* x86/aes-decrypt.asm: New file, empty at the start.

	* Makefile.am (libnettle_a_SOURCES): Added aes-decrypt-table.c.

	* aes-decrypt.c (_aes_decrypt_table): Moved from this file...
	* aes-decrypt-table.c (_aes_decrypt_table): ... to a new file.
	
	* testsuite/aes-test.out: New file, with the output of
	testsuite/aes-test, when aes.c has been compiled with debugging
	printouts of intermediate state.

Niels Möller's avatar
Niels Möller committed
2002-05-15  Niels Mller  <nisse@cuckoo.hack.org>

Niels Möller's avatar
Niels Möller committed
	* sparc/aes.asm: (_aes_crypt): Restore %fp at end of function, to
	make %fp available for other uses.

	* sparc/aes.asm: The frame setup was broken. Tried to fix it.
	Reverted to revision 1.70 + minor changes from the head revision.

Niels Möller's avatar
Niels Möller committed
	* x86/aes-encrypt.asm (aes_encrypt): Use test instead of cmpl $0,.

Niels Möller's avatar
Niels Möller committed
	* x86/machine.m4 (AES_SUBST_BYTE): New macro.

Niels Möller's avatar
Niels Möller committed
	* sparc/aes.asm: wtxt needs no register of it's own, as its
	pointed to by %sp. %g5 moved to %l0, the register previously
	allocated for wtxt, so that we stay clean of the reserved %g
	registers.

2002-05-14  Niels Mller  <nisse@cuckoo.hack.org>

	* sparc/aes.asm: Avoid using %g6 and %g7, as they are reserved for
	operating sytem use. Use %i5 and %o7 instead. Also moved %g4 to %g1.
	(_aes_crypt): Allocate only 32 bytes local storage on the stack.
	Calculate wtxt and tmp using offsets from %sp, not %fp. 

Niels Möller's avatar
Niels Möller committed
2002-05-14  Niels Mller  <niels@s3.kth.se>

Niels Möller's avatar
Niels Möller committed
	* x86/aes-encrypt.asm (aes_encrypt): Replaced first quarter of the
	round function with an invocation of AES_ROUND.
Niels Möller's avatar
Niels Möller committed
	(aes_encrypt): Similarly for the second column.
	(aes_encrypt): Similarly for the rest of the round function.
Niels Möller's avatar
Niels Möller committed

	* x86/machine.m4 (AES_ROUND): New macro.

Niels Möller's avatar
Niels Möller committed
	* x86/aes-encrypt.asm (aes_encrypt): Use AES_LOAD macro.

	* x86/machine.m4 (AES_LOAD): New macro.

	* x86/aes-encrypt.asm (aes_encrypt): Use AES_STORE.

	* x86/machine.m4 (AES_STORE): New macro.

Niels Möller's avatar
Niels Möller committed
	* x86/aes-encrypt.asm (aes_encrypt): Use the AES_LAST_ROUND macro
	for the first column of the final round.
	(aes_encrypt): Similarly for the second column.
	(aes_encrypt): Similarly for the third and fourth column.
Niels Möller's avatar
Niels Möller committed
	(aes_encrypt): Deleted xchgl instruction in final round, by
	reordering the second and fourth round.

Niels Möller's avatar
Niels Möller committed
	* x86/machine.m4 (AES_LAST_ROUND): New macro.

	* x86/aes-encrypt.asm (aes_encrypt): Move code here...
	* x86/aes.asm: ...from here.	

	* x86/aes.asm: Use addl and subl, not add and sub. Replaced
	references to dtbl1-4 with references to _aes_encrypt_table.

Niels Möller's avatar
Niels Möller committed
	* configure.ac (asm_path): Enable x86 assembler.

Niels Möller's avatar
Niels Möller committed
	* x86/aes.asm (aes_decrypt): Adapted to the current interface.
	Notably, the order of the subkeys was reversed. Single block
	encrypt/decrypt works now.
Niels Möller's avatar
Niels Möller committed
	(aes_encrypt, aes_decrypt): Added an outer loop, so that we can
	encrypt more than one block at a time.
Niels Möller's avatar
Niels Möller committed
2002-05-07  Niels Mller  <niels@s3.kth.se>

	* configure.ac: Generate config.m4.

	* x86/aes.asm: Use C for comments, include the tables using
	include_src, and commented out the key setup functions.
	Fixed the processing of the first handling of the round function.
	Now, encryption of a single block works! Multiple blocks, and
	decryption, is still broken.

	* x86/machine.m4: New file (empty).

	* x86/aes-encrypt.asm: New file, empty for now.

	* Makefile.am (%.asm): Added asm.m4, machine.m4 and config.m4 to
	the m4 command line.
	(libnettle_a_SOURCES): Added aes-encrypt-table.c.

	* sparc/aes.asm: No need to include asm.m4, that is taken care of
	by the Makefile. 

	* config.m4.in: New file, configuration for asm.m4.

	* asm.m4 (C, include_src): New macros.

	* aes-encrypt-table.c: New file, table moved out from
	aes-encrypt.c. 

Niels Möller's avatar
Niels Möller committed
2002-05-06  Niels Mller  <niels@s3.kth.se>

	* configure.ac (CFLAGS): Don't enable -Waggregate-return.

Niels Möller's avatar
Niels Möller committed
2002-05-05  Niels Mller  <nisse@lysator.liu.se>

	* configure.ac: Pass no arguments to AM_INIT_AUTOMAKE.

Niels Möller's avatar
Niels Möller committed
2002-05-05  Niels Mller  <nisse@cuckoo.hack.org>

	* configure.ac: Update for automake-1.6.

	* configure.ac: Renamed file, used to be configure.in.
	
Niels Möller's avatar
Niels Möller committed
2002-03-20  Niels Mller  <nisse@cuckoo.hack.org>

	* testsuite/run-tests (test_program): Added missing single quote.

Niels Möller's avatar
Niels Möller committed
2002-03-20  Niels Mller  <nisse@lysator.liu.se>

	* testsuite/run-tests (test_program): Test the exit status of the
	right process.

2002-03-19  Pontus Skld  <pont@it.uu.se>

	* testsuite/run-tests: Removed /bin/bashisms to use with /bin/sh. 

Niels Möller's avatar
Niels Möller committed
2002-03-18  Niels Mller  <nisse@cuckoo.hack.org>

	* rsa-keygen.c (rsa_generate_keypair): Output a newline after a
	non-empty line of 'e':s (bad e was chosen, try again).

Niels Möller's avatar
Niels Möller committed
2002-03-16  Niels Mller  <nisse@cuckoo.hack.org>

	* configure.in (asm_path): AC_CONFIG_LINKS adds $srcdir
	automatically. 

Niels Möller's avatar
Niels Möller committed
2002-03-14  Niels Mller  <nisse@cuckoo.hack.org>
Niels Möller's avatar
Niels Möller committed
	* sparc/aes.asm, x86/aes.asm: Added copyright notice.

	* Makefile.am (libnettle_a_SOURCES): Added aes-internal.h.
	(EXTRA_DIST): Added assembler files.

	* configure.in (asm_path): Use $srcdir when looking for the files. 
Niels Möller's avatar
Niels Möller committed
	* configure.in (asm_path): For now, disable x86 assembler code. 
Niels Möller's avatar
Niels Möller committed
	Bumped version to 1.6.
Niels Möller's avatar
Niels Möller committed
2002-02-25  Niels Mller  <nisse@cuckoo.hack.org>

	* sparc/aes.asm (_aes_crypt): Moved increment of src into the
	source_loop. Also fixed stop condition, the loop was run 5 times,
	not 4, as it should.
	(_aes_crypt): Use src directly when accessing the source data,
	don't use %o5.
	(_aes_crypt): Renamed variables in source_loop.
	(_aes_crypt): Changed stop condition in source_loop to not depend
	on i. Finally reduced the source_loop to 16 instructions. Also
	increased the alignment of the code to 16.
	(_aes_crypt): In final_loop, use preshifted indices.
	(_aes_crypt): In final_loop, construct the result in t0. Use t0-t3
	for intermediate values.
	(_aes_crypt): In final_loop, use the register idx.
	(_aes_crypt): In final_loop, keep i multiplied by 4. Use key to
	get to the current roundkey.
	(_aes_crypt): In final_loop, use i for indexing.
	(_aes_crypt): Update dst in the output loop. This yields a delay
	slot that isn't filled yet.
	(_aes_crypt): Decrement round when looping, saving yet some
	instructions.
	(_aes_crypt): Reformatted code as blocks of four instructions
	each.
	(_aes_crypt): Copy the addresses of the indexing tables into
	registers at the start. No more need for the idx register.
	(_aes_crypt): Deleted idx register.
	(_aes_crypt): Some peep hole optimizations, duplicating some
	instructions to fill nop:s, and put branch instructions on even
	word addresses.

2002-02-22  Niels Mller  <nisse@cuckoo.hack.org>

	* sparc/aes.asm (_aes_crypt): Moved some more additions out of the
	inner loop, using additional registers.
	(_aes_crypt): Deleted one more addition from the inner loop, by
	using the subkey pointer.

Niels Möller's avatar
Niels Möller committed
2002-02-19  Niels Mller  <nisse@cuckoo.hack.org>

	* configure.in (asm_path): Renamed "path" to "asm_path". Also look
	for a machine.m4.

Niels Möller's avatar
Niels Möller committed
2002-02-16  Niels Mller  <nisse@cuckoo.hack.org>

	* sparc/aes.asm: Use that IDX2(j) == j ^ 2

	* Makefile.am (libnettle_a_SOURCES): Reordered aes-decrypt.c and
	aes-encrypt.c. For some strange reason it makes the benchmark go
	faster... 

	* sparc/aes.asm (_aes_crypt): Use double-buffering, and no
	separate loop for adding the round key.
	(round): Keep round index muliplied by 16, so it can be used
	directly for indexing the subkeys.
	(_aes_crypt): In the final loop, use ctx+round to access the
	subkeys, no need for an extra register.

2002-02-15  Niels Mller  <nisse@cuckoo.hack.org>

	* sparc/aes.asm (_aes_crypt): Renaming variables, allocating
	locals starting from %l0.
	(_aes_crypt): Consistently use %l4, aka i, as the variable for the
	innermost loops.
	(_aes_crypt): Moved reading of ctx->nrounds out of the loop.
	(_aes_crypt): In final_loop, deleted a redundant mov, and use i as
	loop variable.
	(_aes_crypt): Started renumbering registers in the inner loop. The
	computation for the table[j] sub-expression should be kept in
	register %o[j].
	(_aes_crypt): Renamed more variables in the inner loop. Now the
	primary variables are t0, t1, t2, t3.

	* sparc/aes.asm (_aes_crypt): Swapped register %i0 and %o5, %i1
	and %o0, %i2 and %o4, %i3 and %o3, %i4 and %o2.
	(_aes_crypt): wtxt was stored in both %l1 and %l2 for the entire
	function. Freed %l2 for other uses.
	(_aes_crypt): Likewise for tmp, freeing register %o1.	

	* sparc/machine.m4: New file, for sparc-specific macros.

	* sparc/aes.asm (_aes_crypt): Hacked the source_loop, to get rid
	of yet another redundant loop variable, and one instruction.
	(_aes_crypt): Strength reduce loop variable in the
	inner loop, getting rid of one register.
	(_aes_crypt): Use pre-shifted indices (aes_table.idx_shift), to
	avoid some shifts in the inner loop.
	(_aes_crypt): Don't check for nrounds==0 at the start of the loop.

	* asm.m4: Define and use structure-defining macros.

	* Makefile.am (%.asm): Use a GNU pattern rule, to make %.o depend
	on both %.asm and asm.m4.

	* aes-internal.h (struct aes_table): New subtable idx_shift.
	Updated tables in aes_encrypt.c and aes_decrypt.c.

	* asm.m4: Use eval to compute values.

	* sparc/aes.asm (_aes_crypt): Deleted commented out old version of
	the code.

	* asm.m4: Added constants for individual rows of the aes table.

	* aes.c (IDX0, IDX1, IDX2, IDX3): New macros, encapsualting the
	structure of the idx table.

	* asm.m4: Define various aes struct offsets.

	* testsuite/cbc-test.c (test_cbc_bulk): Use aes_set_encrypt_key
	and aes_set_decrypt_key.

	* sparc/aes.asm (_aes_crypt): Use symbolic names for the fucntion
	arguments. 

Niels Möller's avatar
Niels Möller committed
2002-02-14  Niels Mller  <nisse@cuckoo.hack.org>

Niels Möller's avatar
Niels Möller committed
	* sparc/aes.asm: Copied gcc assembler code for _aes_crypt.

	* aesdata.c: New program for generating AES-related tables.

	* testsuite/testutils.c (print_hex): New function (moved from
	yarrow-test.c). 

	* testsuite/rsa-keygen-test.c (progress): Declare the ctx argument
	as UNUSED.

	* testsuite/cbc-test.c (test_cbc_bulk): New function, testing CBC
	with larger blocks.

Niels Möller's avatar
Niels Möller committed
	* yarrow256.c: Replaced uses of aes_set_key with
	aes_set_encrypt_key.