2010-07-13  Werner Koch  <wk@g10code.com>

	* cipher.c (do_aeswrap_encrypt, do_aeswrap_decrypt): New.  Take
	from current SVN trunk.
	(gcry_cipher_open, gcry_cipher_encrypt, gcry_cipher_decrypt): Hook
	them in.
	(struct gcry_cipher_handle): Add field MARKS.
	(cipher_setkey, cipher_setiv): Set MARKS.
	(cipher_reset): Clear MARKS.

2010-07-09  Werner Koch  <wk@g10code.com>

	* tiger.c (asn): Unfetter the old TIGER from an OID.
	(TIGER_CONTEXT): Add field VARIANT.
	(tiger_init): Factor code out to ...
	(do_init): ... new.
	(tiger1_init, tiger2_init): New.
	(_gcry_digest_spec_tiger1, _gcry_digest_spec_tiger2): New.
	* md.c (digest_table): Add TIGER1 and TIGER2 variants.

	* md.c (md_read): Fix incomplete check for NULL.  Reported by
	Fabian Kail.

2009-12-11  Werner Koch  <wk@g10code.com>

	* Makefile.am (o_flag_munging): New.
	(tiger.o, tiger.lo): Use it.

	* sha256.c (Cho, Maj, Sum0, Sum1): Turn macros into inline
	functions.
	(transform): Partly unroll to interweave the chain variables.

	* sha512.c (ROTR, Ch, Maj, Sum0, Sum1): Turn macros into inline
	functions.
	(transform): Partly unroll to interweave the chain variables.
	Suggested by Christian Grothoff.

2009-08-21  Werner Koch  <wk@g10code.com>

	* dsa.c (dsa_generate_ext): Release retfactors array before
	setting it to NULL.  Reported by Daiko Ueno.

2009-01-22  Werner Koch  <wk@g10code.com>

	* ecc.c (compute_keygrip): Remove superfluous const.

2009-01-06  Werner Koch  <wk@g10code.com>

	* rmd160.c (oid_spec_rmd160): Add TeleTrust identifier.

2008-12-10  Werner Koch  <wk@g10code.com>

	* dsa.c (generate): Add arg DOMAIN and use it if specified.
	(generate_fips186): Ditto.
	(dsa_generate_ext): Parse and check the optional "domain"
	parameter and pass them to the generate functions.

	* rijndael.c (rijndael_names): Add "AES128" and "AES-128".
	(rijndael192_names): Add "AES-192".
	(rijndael256_names): Add "AES-256".

2008-12-05  Werner Koch  <wk@g10code.com>

	* dsa.c (generate): Add arg TRANSIENT_KEY and use it to detrmine
	the RNG quality needed.
	(dsa_generate_ext): Parse the transient-key flag und pass it to
	generate.

2008-11-28  Werner Koch  <wk@g10code.com>

	* dsa.c (generate_fips186): Add arg DERIVEPARMS and use the seed
	value if available.

	* primegen.c (_gcry_generate_fips186_2_prime): Fix inner p loop.

2008-11-26  Werner Koch  <wk@g10code.com>

	* primegen.c (_gcry_generate_fips186_3_prime): New.
	* dsa.c (generate_fips186): Add arg USE_FIPS186_2.
	(dsa_generate_ext): Parse new flag use-fips183-2.

2008-11-25  Werner Koch  <wk@g10code.com>

	* dsa.c (generate_fips186): New.
	(dsa_generate_ext): Use new function if derive-parms are given or
	if in FIPS mode.
	* primegen.c (_gcry_generate_fips186_2_prime): New.

2008-11-24  Werner Koch  <wk@g10code.com>

	* pubkey.c (gcry_pk_genkey): Insert code to output extrainfo.
	(pubkey_generate): Add arg R_EXTRAINFO and pass it to the extended
	key generation function.
	* rsa.c (gen_x931_parm_xp, gen_x931_parm_xi): New.
	(generate_x931): Generate params if not given.
	(rsa_generate_ext): Parse use-x931 flag.  Return p-q-swapped
	indicator.
	* dsa.c (dsa_generate_ext): Put RETFACTORS into R_EXTRAINFO if
	possible.

	* pubkey.c (gcry_pk_genkey): Remove parsing of almost all
	parameters and pass the parameter S-expression to pubkey_generate.
	(pubkey_generate): Simplify by requitring modules to parse the
	parameters. Remove the special cases for Elgamal and ECC.
	(sexp_elements_extract_ecc): Add arg EXTRASPEC and use it.  Fix
	small memory leak.
	(sexp_to_key): Pass EXTRASPEC to sexp_elements_extract_ecc.
	(pubkey_table) [USE_ELGAMAL]: Add real extraspec.
	* rsa.c (rsa_generate_ext): Adjust for new calling convention.
	* dsa.c (dsa_generate_ext): Ditto.
	* elgamal.c (_gcry_elg_generate): Ditto. Rename to elg_generate_ext.
	(elg_generate): New.
	(_gcry_elg_generate_using_x): Remove after merging code with
	elg_generate_ext.
	(_gcry_pubkey_extraspec_elg): New.
	(_gcry_elg_check_secret_key, _gcry_elg_encrypt, _gcry_elg_sign) 
	(_gcry_elg_verify, _gcry_elg_get_nbits): Make static and remove
	_gcry_ prefix.
	* ecc.c (_gcry_ecc_generate): Rename to ecc_generate_ext and
	adjust for new calling convention.
	(_gcry_ecc_get_param): Rename to ecc_get_param and make static.
	(_gcry_pubkey_extraspec_ecdsa): Add ecc_generate_ext and
	ecc_get_param.
	
2008-11-20  Werner Koch  <wk@g10code.com>

	* pubkey.c (pubkey_generate): Add arg DERIVEPARMS.
	(gcry_pk_genkey): Parse derive-parms and pass it to above.
	* rsa.c (generate_x931): New.
	(rsa_generate_ext): Add arg DERIVEPARMS and call new function in
	fips mode or if DERIVEPARMS is given.
	* primegen.c (_gcry_derive_x931_prime, find_x931_prime): New.

2008-11-19  Werner Koch  <wk@g10code.com>

	* rsa.c (rsa_decrypt): Use gcry_create_nonce for blinding.
	(generate): Rename to generate_std.

2008-11-05  Werner Koch  <wk@g10code.com>

	* md.c (md_open): Use a switch to set the Bsize.
	(prepare_macpads): Fix long key case for SHA384 and SHA512.

	* cipher.c (gcry_cipher_handle): Add field EXTRASPEC.
	(gcry_cipher_open): Set it.
	(gcry_cipher_ctl): Add private control code to disable weak key
	detection and to return the current input block.
	* des.c (_tripledes_ctx): Add field FLAGS.
	(do_tripledes_set_extra_info): New.
	(_gcry_cipher_extraspec_tripledes): Add new function.
	(do_tripledes_setkey): Disable weak key detection.

2008-10-24  Werner Koch  <wk@g10code.com>

	* md.c (digest_table): Allow MD5 in fips mode.
	(md_register_default): Take special action for MD5.
	(md_enable, gcry_md_hash_buffer): Ditto.

2008-09-30  Werner Koch  <wk@g10code.com>

	* rijndael.c (do_setkey): Properly align "t" and "tk".
	(prepare_decryption): Properly align "w".  Fixes bug #936.

2008-09-18  Werner Koch  <wk@g10code.com>

	* pubkey.c (gcry_pk_genkey): Parse domain parameter.
	(pubkey_generate): Add new arg DOMAIN and remove special case for
	DSA with qbits.
	* rsa.c (rsa_generate): Add dummy args QBITS, NAME and DOMAIN and
	rename to rsa_generate_ext.  Change caller.
	(_gcry_rsa_generate, _gcry_rsa_check_secret_key) 
	(_gcry_rsa_encrypt, _gcry_rsa_decrypt, _gcry_rsa_sign) 
	(_gcry_rsa_verify, _gcry_rsa_get_nbits): Make static and remove
	_gcry_ prefix.
	(_gcry_pubkey_spec_rsa, _gcry_pubkey_extraspec_rsa): Adjust names.
	* dsa.c (dsa_generate_ext): New.
	(_gcry_dsa_generate): Replace code by a call to dsa_generate.
	(_gcry_dsa_check_secret_key, _gcry_dsa_sign, _gcry_dsa_verify)
	(_gcry_dsa_get_nbits): Make static and remove _gcry prefix.
	(_gcry_dsa_generate2): Remove.
	(_gcry_pubkey_spec_dsa): Adjust to name changes.
	(_gcry_pubkey_extraspec_rsa): Add dsa_generate_ext.

2008-09-16  Werner Koch  <wk@g10code.com>

	* ecc.c (run_selftests): Add arg EXTENDED.

2008-09-12  Werner Koch  <wk@g10code.com>

	* rsa.c (test_keys): Do a bad case signature check.
	* dsa.c (test_keys): Do a bad case check.

	* cipher.c (_gcry_cipher_selftest): Add arg EXTENDED and pass it
	to the called tests.
	* md.c (_gcry_md_selftest): Ditto.
	* pubkey.c (_gcry_pk_selftest): Ditto.
	* rijndael.c (run_selftests): Add arg EXTENDED and pass it to the
	called tests.
	(selftest_fips_128): Add arg EXTENDED and run only one test
	non-extended mode.
	(selftest_fips_192): Add dummy arg EXTENDED.
	(selftest_fips_256): Ditto.
	* hmac-tests.c (_gcry_hmac_selftest): Ditto.
	(run_selftests): Ditto.
	(selftests_sha1): Add arg EXTENDED and run only one test
	non-extended mode.
	(selftests_sha224, selftests_sha256): Ditto.
	(selftests_sha384, selftests_sha512): Ditto.
	* sha1.c (run_selftests): Add arg EXTENDED and pass it to the
	called test.
	(selftests_sha1): Add arg EXTENDED and run only one test
	non-extended mode.
	* sha256.c (run_selftests): Add arg EXTENDED and pass it to the
	called tests.
	(selftests_sha224): Add arg EXTENDED and run only one test
	non-extended mode.
	(selftests_sha256): Ditto.
	* sha512.c (run_selftests): Add arg EXTENDED and pass it to the
	called tests.
	(selftests_sha384): Add arg EXTENDED and run only one test
	non-extended mode.
	(selftests_sha512): Ditto.
	* des.c (run_selftests): Add arg EXTENDED and pass it to the
	called test.
	(selftest_fips): Add dummy arg EXTENDED.
	* rsa.c (run_selftests): Add dummy arg EXTENDED.

	* dsa.c (run_selftests): Add dummy arg EXTENDED.

	* rsa.c (extract_a_from_sexp): New.
	(selftest_encr_1024): Check that the ciphertext does not match the
	plaintext.
	(test_keys): Improve tests and return an error status.
	(generate): Return an error if test_keys fails.
	* dsa.c (test_keys): Add comments and return an error status.
	(generate): Return an error if test_keys failed.

2008-09-11  Werner Koch  <wk@g10code.com>

	* rsa.c (_gcry_rsa_decrypt): Return an error instead of calling
	BUG in case of a practically impossible condition.
	(sample_secret_key, sample_public_key): New.
	(selftest_sign_1024, selftest_encr_1024): New.
	(selftests_rsa): Implement tests.
	* dsa.c (sample_secret_key, sample_public_key): New.
	(selftest_sign_1024): New.
	(selftests_dsa): Implement tests.

2008-09-09  Werner Koch  <wk@g10code.com>

	* hmac-tests.c (selftests_sha1): Add tests.
	(selftests_sha224, selftests_sha384, selftests_sha512): Make up tests.

	* hash-common.c, hash-common.h: New.
	* sha1.c (selftests_sha1): Add 3 tests.
	* sha256.c (selftests_sha256, selftests_sha224): Ditto.
	* sha512.c (selftests_sha512, selftests_sha384): Ditto.

2008-08-29  Werner Koch  <wk@g10code.com>

	* pubkey.c (gcry_pk_get_keygrip): Remove the special case for RSA
	and check whether a custom computation function has been setup.
	* rsa.c (compute_keygrip): New.
	(_gcry_pubkey_extraspec_rsa): Setup this function.
	* ecc.c (compute_keygrip): New.
	(_gcry_pubkey_extraspec_ecdsa): Setup this function.

2008-08-28  Werner Koch  <wk@g10code.com>

	* cipher.c (cipher_decrypt, cipher_encrypt): Return an error if
	mode NONE is used.
	(gcry_cipher_open): Allow mode NONE only with a debug flag set and
	if not in FIPS mode.

2008-08-26  Werner Koch  <wk@g10code.com>

	* pubkey.c (pubkey_generate): Add arg KEYGEN_FLAGS.
	(gcry_pk_genkey): Implement new parameter "transient-key" and
	pass it as flags to pubkey_generate.
	(pubkey_generate): Make use of an ext_generate function.
	* rsa.c (generate): Add new arg transient_key and pass appropriate
	args to the prime generator.
	(_gcry_rsa_generate): Factor all code out to ...
	(rsa_generate): .. new func with extra arg KEYGEN_FLAGS.
	(_gcry_pubkey_extraspec_ecdsa): Setup rsa_generate.
	* primegen.c (_gcry_generate_secret_prime) 
	(_gcry_generate_public_prime): Add new arg RANDOM_LEVEL.

2008-08-21  Werner Koch  <wk@g10code.com>

	* primegen.c (_gcry_generate_secret_prime)
	(_gcry_generate_public_prime): Use a constant macro for the random
	level.
	
2008-08-19  Werner Koch  <wk@g10code.com>

	* pubkey.c (sexp_elements_extract_ecc) [!USE_ECC]: Do not allow
	allow "curve" parameter.

2008-08-15  Werner Koch  <wk@g10code.com>

	* pubkey.c (_gcry_pk_selftest): New.
	* dsa.c (selftests_dsa, run_selftests): New.
	* rsa.c (selftests_rsa, run_selftests): New.
	* ecc.c (selftests_ecdsa, run_selftests): New.

	* md.c (_gcry_md_selftest): New.
	* sha1.c (run_selftests, selftests_sha1): New.
	* sha256.c (selftests_sha224, selftests_sha256, run_selftests): New.
	* sha512.c (selftests_sha384, selftests_sha512, run_selftests): New.

	* des.c (selftest): Remove static variable form selftest.
	(des_setkey): No on-the-fly self test in fips mode.
	(tripledes_set3keys): Ditto.

	* cipher.c (_gcry_cipher_setkey, _gcry_cipher_setiv): 

	* dsa.c (generate): Bail out in fips mode if NBITS is less than	1024.
	* rsa.c (generate): Return an error code if the the requested size
	is less than 1024 and we are in fpis mode.
	(_gcry_rsa_generate): Take care of that error code.

	* ecc.c (generate_curve): In fips mode enable only NIST curves.

	* cipher.c (_gcry_cipher_selftest): New.

	* sha512.c (_gcry_digest_extraspec_sha384)
	(_gcry_digest_extraspec_sha512): New.
	* sha256.c (_gcry_digest_extraspec_sha224)
	(_gcry_digest_extraspec_sha256): New.
	* sha1.c (_gcry_digest_extraspec_sha1): New.
	* ecc.c (_gcry_pubkey_extraspec_ecdsa): New.
	* dsa.c (_gcry_pubkey_extraspec_dsa): New.
	* rsa.c (_gcry_pubkey_extraspec_rsa): New.
	* rijndael.c (_gcry_cipher_extraspec_aes)
	(_gcry_cipher_extraspec_aes192, _gcry_cipher_extraspec_aes256): New.
	* des.c (_gcry_cipher_extraspec_tripledes): New.

	* cipher.c (gcry_cipher_register): Rename to _gcry_cipher_register.
	Add arg EXTRASPEC.
	(dummy_extra_spec): New.
	(cipher_table_entry): Add extraspec field.
	* md.c (_gcry_md_register): Rename to _gcry_md_register.  Add
	arg EXTRASPEC.
	(dummy_extra_spec): New.
	(digest_table_entry): Add extraspec field.
	* pubkey.c (gcry_pk_register): Rename to _gcry_pk_register.  Add
	arg EXTRASPEC.
	(dummy_extra_spec): New.
	(pubkey_table_entry): Add extraspec field.

	* ac.c: Let most public functions return GPG_ERR_UNSUPPORTED in
	fips mode.

	* pubkey.c (pubkey_table_entry): Add field FIPS_ALLOWED and mark
	appropriate algorithms.
	(dummy_generate, dummy_check_secret_key, dummy_encrypt) 
	(dummy_decrypt, dummy_sign, dummy_verify, dummy_get_nbits): Signal
	a fips error when used.
	(gcry_pk_register): In fips mode do not allow to register new
	algorithms.

	* md.c (digest_table): Add field FIPS_ALLOWED and mark appropriate
	algorithms.
	(md_register_default): In fips mode register only fips algorithms.
	(gcry_md_register): In fips mode do not allow to register new
	algorithms.
	(gcry_md_get): Signal a fips error if called.
	(gcry_md_hash_buffer): Do not allow rmd160 when not in fips mode.
	(md_start_debug): Disable in fips_mode.

	* md.c (gcry_md_register_default): Rename to ..
	(md_register_default): .. this.
	(md_digest): Remove this commented fucntion.
	* pubkey.c (gcry_pk_register_default): Rename to ..
	(pk_register_default): .. this.

	* cipher.c (cipher_table_entry): Add field FIPS_ALLOWED.
	(gcry_cipher_register_default): Register only fips approved
	algorithms.
	(gcry_cipher_register): Do not allow to register new ciphers.
	(cipher_setiv): Signal fips error.
	
	* cipher (gcry_cipher_register_default): Rename to ..
	(cipher_register_default): .. this.
	(REGISTER_DEFAULT_CIPHERS): Adjust for that change.

2008-07-05  Werner Koch  <wk@g10code.com>

	* random-daemon.c, random.h, rndhw.c, rndunix.c, rand-internal.h
	* random.c, rndegd.c, rndlinux.c, rndw32.c: Move to ../cipher.
	* Makefile.am: Remove random stuff.

2008-06-24  Szakats Istvan <szaki.ms@gmail.com>  (wk)

	* ac.c (_gcry_ac_key_destroy, _gcry_ac_key_pair_generate): Relase
	some more memory.

2008-04-22  Werner Koch  <wk@g10code.com>

	* rijndael.c (_gcry_aes_cfb_enc, _gcry_aes_cbc_enc) 
	(_gcry_aes_cfb_dec, _gcry_aes_cbc_dec): Use Padlock if possible.

2008-04-18  Werner Koch  <wk@g10code.com>

	* sha1.c (transform_aligned): Remove.  That is will obviosuly not
	work because we need a scratch working area and our internal API
	does not allow to modify the buffers.

	* rijndael.c: Factor tables out to ..
	* rijndael-tables.h: .. new.

	* ac.c (ac_data_extract): Make static.

	* camellia.h [HAVE_CONFIG_H]: Include config.h.

	* rndw32.c (registry_poll): Only print the performance data
	problem warning once.  Suggested by Simon Josefsson.

2008-03-19  Werner Koch  <wk@g10code.com>

	* cipher.c (gcry_cipher_open) [USE_AES]: Init bulk encryption only
	if requested.  Suggested by Dirk Stoecker.

2008-03-18  Werner Koch  <wk@g10code.com>

	* sha1.c: Include stdint.h.
	(transform): Add arg NBLOCKS so that we can work on more than one
	block and avoid updates of the chaining variables.  Changed all
	callers to use 1.
	(sha1_write): Replace loop around transform.
	(transform_aligned) [WORDS_BIGENDIAN]: New.
	(TRANSFORM): New macro to replace all direct calls of transform.

2008-03-17  Werner Koch  <wk@g10code.com>

	* rijndael.c (_gcry_aes_cfb_dec): New.
	(do_encrypt): Factor code out to ..
	(do_encrypt_aligned): .. New.
	(_gcry_aes_cfb_enc, _gcry_aes_cfb_dec): Use new function.
	(do_decrypt): Factor code out to ..
	(do_decrypt_aligned): .. new.
	(_gcry_aes_cbc_enc, _gcry_aes_cbc_dec): New.
	* cipher.c (struct gcry_cipher_handle): Put field IV into new
	union U_IV to enforce proper alignment.  Change all users.
	(do_cfb_decrypt): Optimize.
	(do_cbc_encrypt, do_cbc_decrypt): Optimize.

2008-03-15  Werner Koch  <wk@g10code.com>

	* rijndael.c (_gcry_aes_cfb_enc): New.
	* cipher.c (struct gcry_cipher_handle): Add field ALGO and BULK.
	(gcry_cipher_open): Set ALGO and BULK.
	(do_cfb_encrypt): Optimize.

2008-02-18  Werner Koch  <wk@g10code.com>

	* rsa.c (_gcry_rsa_verify) [IS_DEVELOPMENT_VERSION]: Print
	intermediate results.

2008-01-08  Werner Koch  <wk@g10code.com>

	* random.c (add_randomness): Do not just increment
	POOL_FILLED_COUNTER but update it by the actual amount of data.

2007-12-13  Werner Koch  <wk@g10code.com>

	* pubkey.c (sexp_data_to_mpi): Support SHA-224.

2007-12-05  Werner Koch  <wk@g10code.com>

	* rijndael.c (USE_PADLOCK): Depend on ENABLE_PADLOCK_SUPPORT.
	* rndhw.c (USE_PADLOCK): Ditto

	* rsa.c (secret): Fixed condition test for using CRT.  Reported by
	Dean Scarff.  Fixes bug#864.
	(_gcry_rsa_check_secret_key): Return an erro if the optional
	parameters are missing.
	* pubkey.c (sexp_elements_extract): Add arg ALGO_NAME. Changed all
	callers to pass NULL. Add hack to allow for optional RSA
	parameters.
	(sexp_to_key): Pass algo name to sexp_elements_extract.

2007-12-03  Werner Koch  <wk@g10code.com>

	* random.c (gcry_random_add_bytes): Implement it.
	* rand-internal.h (RANDOM_ORIGIN_EXTERNAL): New.

2007-11-30  Werner Koch  <wk@g10code.com>

	* rndhw.c: New.
	* rndlinux.c (_gcry_rndlinux_gather_random): Try to read 50%
	directly from the hwrng.
	* random.c (do_fast_random_poll): Also run the hw rng fast poll.
	(_gcry_random_dump_stats): Tell whether the hw rng failed.

2007-11-29  Werner Koch  <wk@g10code.com>

	* rijndael.c (USE_PADLOCK): Define new macro used for ia32.
	(RIJNDAEL_context) [USE_PADLOCK]: Add fields USE_PADLOCK and
	PADLOCK_KEY.
	(do_setkey) [USE_PADLOCK]: Enable padlock if available for 128 bit
	AES.
	(do_padlock) [USE_PADLOCK]: New.
	(rijndael_encrypt, rijndael_decrypt) [USE_PADLOCK]: Divert to
	do_padlock.
	* cipher.c (cipher_context_alignment_t): New.  Use it in this
	module in place of PROPERLY_ALIGNED_TYPE.
	(NEED_16BYTE_ALIGNED_CONTEXT): Define macro for ia32.
	(struct gcry_cipher_handle): Add field HANDLE_OFFSET.
	(gcry_cipher_open): Take care of increased alignment requirements.
	(gcry_cipher_close): Ditto.

2007-11-28  Werner Koch  <wk@g10code.com>

	* sha256.c (asn224): Fixed wrong template.  It happened due to a
	bug in RFC4880.  SHA-224 is not in the stable version of libgcrypt
	so the consequences are limited to users of this devel version.

2007-10-31  Werner Koch  <wk@g10code.com>

	* ac.c (gcry_ac_data_new): Remove due to the visibility wrapper.
	(gcry_ac_data_destroy, gcry_ac_data_copy, gcry_ac_data_length) 
	(gcry_ac_data_set, gcry_ac_data_get_name, gcry_ac_data_get_index) 
	(gcry_ac_data_to_sexp, gcry_ac_data_from_sexp) 
	(gcry_ac_data_clear, gcry_ac_io_init, gcry_ac_open) 
	(gcry_ac_close, gcry_ac_key_init, gcry_ac_key_pair_generate) 
	(gcry_ac_key_pair_extract, gcry_ac_key_destroy) 
	(gcry_ac_key_pair_destroy, gcry_ac_key_data_get) 
	(gcry_ac_key_test, gcry_ac_key_get_nbits, gcry_ac_key_get_grip) 
	(gcry_ac_data_encrypt, gcry_ac_data_decrypt, gcry_ac_data_sign) 
	(gcry_ac_data_verify, gcry_ac_data_encode, gcry_ac_data_decode) 
	(gcry_ac_mpi_to_os, gcry_ac_mpi_to_os_alloc, gcry_ac_os_to_mpi) 
	(gcry_ac_data_encrypt_scheme, gcry_ac_data_decrypt_scheme) 
	(gcry_ac_data_sign_scheme, gcry_ac_data_verify_scheme) 
	(gcry_ac_io_init_va): Ditto.
	(gcry_ac_id_to_name, gcry_ac_name_to_id): Remove as these
	deprecated functions are now implemented by visibility.c.

2007-10-26  Werner Koch  <wk@g10code.com>

	* rndw32.c: Disable debug flag.

2007-10-25  Werner Koch  <wk@g10code.com>

	* rndw32.c: Updated from current cryptlib snapshot and modified
	for our use.  Removed support from pre NT systems.
	(slow_gatherer_windows95): Remove.
	(_gcry_rndw32_gather_random): Require an NT platform.
	(init_system_rng, read_system_rng, read_mbm_data): New.
	(slow_gatherer_windowsNT): Rename to ...
	(slow_gatherer): .. this.  Read system RNG and MBM.
	(registry_poll): New with code factored out from slow_gatherer.

2007-08-23  Werner Koch  <wk@g10code.com>

	* random.c (pool_filled_counter): New.
	(add_randomness): Use it.

2007-08-22  Werner Koch  <wk@g10code.com>

	* rndw32.c, rndunix.c: Switched to LGPL.

2007-05-30  Werner Koch  <wk@g10code.com>

	* camellia.h, camellia.c: Replace by new LGPL version and adjusted
	camellia.h.

2007-05-09  Marcus Brinkmann  <marcus@g10code.de>

	* ac.c (_gcry_ac_io_init_va, _gcry_ac_io_write, _gcry_ac_io_read):
	Adjust users of gcry_ac_io_t because union is not anonymous
	anymore.

2007-05-02  Werner Koch  <wk@g10code.com>

	* camellia-glue.c (camellia_setkey, camellia_encrypt)
	(camellia_decrypt): Recalculated used stack size in called
	functions.
	* camellia.h: Redefine external symbols.

2007-05-02  David Shaw  <dshaw@jabberwocky.com>

	* Makefile.am, cipher.c: Add Camellia.

	* camellia-glue.c: New.  The necessary glue to interface libgcrypt
	to the stock NTT Camellia distribution.

	* camellia.h, camellia.c: The stock NTT Camellia distribution
	(GPL).

2007-04-30  David Shaw  <dshaw@jabberwocky.com>

	* cipher.c: Use #if instead of #ifdef as configure defines the
	USE_cipher defines as 0 for disabled.

2007-04-30  Werner Koch  <wk@g10code.com>

	* rndegd.c (_gcry_rndegd_set_socket_name): New.

2007-04-30  Marcus Brinkmann  <marcus@g10code.de>

	* ecc.c (ec2os): Fix relocation of short numbers.

	* ecc.c (generate_key): Do not allocate D, which will be allocated
	by GEN_K.  Remove G.  Fix test if g_x, g_y resp. q_x, q_y are
	requested.
	(_gcry_ecc_generate): Release unneeded members of SK.
	* pubkey.c (sexp_to_key): Release NAME.

2007-04-28  Marcus Brinkmann  <marcus@g10code.de>

	* ac.c (gcry_ac_mpi): Remove member NAME_PROVIDED.
	(ac_data_mpi_copy, _gcry_ac_data_set, _gcry_ac_data_get_name)
	(_gcry_ac_data_get_index, ac_data_construct): Adjust handling of
	NAME accordingly.

2007-04-20  Werner Koch  <wk@g10code.com>

	* ecc.c (domain_parms): Add standard brainpool curves.

2007-04-18  Werner Koch  <wk@g10code.com>

	* ecc.c (generate_curve): Implement alias mechanism.

	* pubkey.c (sexp_elements_extract_ecc): New.
	(sexp_to_key): Add special case for ecc.
	(sexp_to_key, sexp_to_sig, sexp_to_enc, gcry_pk_genkey): Replace
	name_terminated stuff by a call to _gcry_sexp_nth_string.
	(gcry_pk_get_keygrip): Ditto.

2007-04-16  Werner Koch  <wk@g10code.com>

	* ecc.c (_gcry_ecc_generate): Renamed DUMMY to CURVE and use it.

2007-04-13  Marcus Brinkmann  <marcus@g10code.de>

	* ac.c (ac_data_construct): Cast const away to suppress compiler
	warning.

	* ecc.c (ecc_generate): Avoid compiler warning for unused argument
	DUMMY.
	(ecc_verify): Avoid compiler warning for unused arguments CMP and
	OPAQUEV.

2007-04-06  Werner Koch  <wk@g10code.com>

	* sha1.c (oid_spec_sha1): Add another oid from X9.62.

2007-03-28  Werner Koch  <wk@g10code.com>

	* pubkey.c (gcry_pk_genkey): Do not issue misc-key-info if it is
	empty.
	(gcry_pk_genkey): New parameter "curve".

	* ecc.c: Entirely rewritten with only a few traces of the old
	code left.
	(_gcry_ecc_generate): New.
	(generate_key) New arg NAME.
	(generate_curve): Ditto.  Return actual number of NBITS.

2007-03-26  Werner Koch  <wk@g10code.com>

	* pubkey.c (gcry_pk_genkey): Increase size of SKEY array and add a
	runtime bounds check.

2007-03-23  Werner Koch  <wk@g10code.com>

	* ecc.c (ecc_ctx_init, ecc_ctx_free, ecc_mod, ecc_mulm): New.
	(duplicate_point, sum_points, escalar_mult): Don't use a
	copy of base->p.  Replaced all mpi_mulm by ecc_mulm so that we can
	experiment with different algorithms.
	(generate_key, check_secret_key, sign, verify): Initialize a
	computation context for use by ecc_mulm.

2007-03-22  Werner Koch  <wk@g10code.com>

	* pubkey.c (pubkey_table): Initialize ECC.
	* Makefile.am (EXTRA_libcipher_la_SOURCES): Add ecc.c.
	* ecc.c: New. Heavily reformatted and changed for use in libgcrypt.
	(point_init): New.
	(escalar_mult): Make arg R the first arg to be similar to the mpi
	functions.
	(duplicate_point): Ditto
	(sum_points): Ditto
	(sign, verify): Remove unneeded copy operations.
	(sum_points): Removed memory leaks and optimized some compares.
	(verify): Simplified input check.

2007-03-14  Werner Koch  <wk@g10code.com>

	* random.c (MASK_LEVEL): Removed macro as it was used only at one
	place.  Open coded it there.
	(gcry_randomize, _gcry_update_random_seed_file)
	(_gcry_fast_random_poll): Factor lock code out to ..
	(lock_pool, unlock_pool): .. new.
	(initialize): Look the pool while allocating. 
	(read_random_source, do_fast_random_poll): Moved intialization to ...
	(initialize): .. here.
	(_gcry_enable_quick_random_gen): No more need for initialization.
	(is_initialized):  Moved this global flag to ..
	(initialize): .. here and changed all users to unconditionally call
	initialize.
	(add_randomness): Remove initalization here.  It simply can't
	happen. 

	* random.c (enum random_origins): Moved to ..
	* rand-internal.h: .. here.
	* rndunix.c (_gcry_rndunix_gather_random): Use enum in prototype
	for ORIGIN and renamed REQUESTOR to ORIGIN.
	* rndegd.c (_gcry_rndegd_gather_random): Ditto.
	* rndlinux.c (_gcry_rndlinux_gather_random): Ditto.
	* rndw32.c (_gcry_rndw32_gather_random): Ditto.
	(_gcry_rndw32_gather_random_fast): Ditto.

2007-03-13  Werner Koch  <wk@g10code.com>

	* random.c (enum random_origins): New.
	(add_randomness): Renamed arg SOURCE to ORIGIN.
	(read_random_source): Renamed arg REQUESTOR to ORIGIN.
	(getfnc_gather_random): Removed static variable because this
	function is only called one and thus we don't need this
	optimization.
	(_gcry_quick_random_gen): Removed and replaced by..
	(_gcry_enable_quick_random_gen): .. this.  It is onlyu used to
	enable it and it does not make sense to disable it later. Changed
	the only one caller too.
	(get_random_bytes): Removed.
	(gcry_random_bytes, gcry_random_bytes_secure): Implement in terms
	of gcry_randomize.
	* random-daemon.c (_gcry_daemon_get_random_bytes): Removed.

2007-02-23  Werner Koch  <wk@g10code.com>

	* elgamal.c (generate): Removed unused variable TEMP.
	(test_keys): New arg NODIE.
	(generate_using_x, _gcry_elg_generate_using_x): New.
	* pubkey.c (pubkey_generate): New arg XVALUE and direct call to
	the new elgamal generate fucntion.
	(gcry_pk_genkey): Parse the new "xvalue" tag.

2007-02-22  Werner Koch  <wk@g10code.com>

	* pubkey.c (sexp_data_to_mpi): Handle dynamically allocated
	algorithms.  Suggested by Neil Dunbar.  Fixes bug#596.

	* rndw32.c (_gcry_rndw32_gather_random_fast): Make it return void.

	* cipher.c (gcry_cipher_algo_name): Simplified.

	* random.c: Use the daemon only if compiled with USE_RANDOM_DAEMON. 

	* Makefile.am (libcipher_la_SOURCES): Build random-daemon support
	only if requested.

2007-02-21  Werner Koch  <wk@g10code.com>

	* random.c (rndpool, keypool): Make unsigned.
	(mix_pool): Change char* variables to unsigned char*.
	(gcry_randomize): Make arg BUFFER a void*.
	(gcry_create_nonce): Ditto.

	* rmd160.c (gcry_rmd160_mixblock): Make BUFFER a void*.
	(_gcry_rmd160_hash_buffer): Make OUTBUF and BUFFER void*.
	* sha1.c (_gcry_sha1_hash_buffer): Ditto.

	* cipher.c (gcry_cipher_encrypt, cry_cipher_decrypt): Change
	buffer args to void*.
	(gcry_cipher_register): Make ALGORITHM_ID a int *.

	* md.c (md_start_debug): Make SUFFIX a const char*.  Use snprintf.
	(gcry_md_debug): New.
	(gcry_md_ctl): Changed arg BUFFER from unsigned char*.

	* md.c (md_write): Make INBUF a const void*.
	(gcry_md_write): Remove needless cast.
	* crc.c (crc32_write): Make INBUF a const void*
	(update_crc32, crc24rfc2440_write): Ditto.
	* sha512.c (sha512_write, transform): Ditto.
	* sha256.c (sha256_write, transform): Ditto.
	* rmd160.c (rmd160_write, transform): Ditto.
	* md5.c (md5_write, transform): Ditto.
	* md4.c (md4_write, transform): Ditto.
	* sha1.c (sha1_write, transform): Ditto.

	* tiger.c (tiger_write, transform): Ditto.
	* whirlpool.c (whirlpool_write, whirlpool_add, transform): Ditto.

	* elgamal.c (elg_names): Change to a const*.
	* dsa.c (dsa_names): Ditto.
	* rsa.c (rsa_names): Ditto.
	* pubkey.c (gcry_pk_lookup_func_name): Make ALIASES a const.

2007-02-20  Werner Koch  <wk@g10code.com>

	* rndlinux.c (open_device): Remove unsused arg MINOR.

2007-01-30  Werner Koch  <wk@g10code.com>

	* sha256.c (oid_spec_sha256): Add alias from pkcs#1.
	* sha512.c (oid_spec_sha512): Ditto.
	(oid_spec_sha384): Ditto.

2006-12-18  Werner Koch  <wk@g10code.com>

	* rndlinux.c (set_cloexec_flag): New.
	(open_device): Set close-on-exit flags.  Suggested by Max
	Kellermann.  Fixes Debian#403613.

	* Makefile.am (AM_CPPFLAGS, AM_CFLAGS): Splitted and merged
	Moritz' changes.
	(INCLUDES): Removed.

2006-11-30  Werner Koch  <wk@g10code.com>

	* serpent.c (byte_swap_32): Remove trailing semicolon.

2006-11-15  Werner Koch  <wk@g10code.com>

	* Makefile.am (INCLUDES): Include ../src/

2006-11-03  Werner Koch  <wk@g10code.com>

	* random.c [HAVE_GETTIMEOFDAY]: Included sys/time.h and not
	sys/times.h.  Reported by Rafaël Carré.

2006-11-05  Moritz Schulte  <moritz@g10code.com>

	* Makefile.am (AM_CFLAGS): Added -I$(top_builddir)/src so that the
	new gcrypt.h is used, not the one installed in the system.

2006-10-25  Werner Koch  <wk@g10code.com>

	* primegen.c (prime_generate_internal): Tweaked use of secure
	memory and entropy use. Safe unused primes from the pool. Allocate
	at least a pool of 30.
	(save_pool_prime, get_pool_prime): New.

2006-10-23  Werner Koch  <wk@g10code.com>

	* ac.c (_gcry_ac_data_from_sexp): Reset sexp_tmp for failsafe
	means.  Release sexp_cur if needed.  Reported by Dirk Stoecker.

	* pubkey.c (pubkeys_registered_lock): Intialized it.  It is not
	 realy needed because this is a mere initialization to 0 anyway.
	 Noted by Victor Stinner.

2006-10-17  Werner Koch  <wk@g10code.com>

	* dsa.c (_gcry_dsa_generate2): New.
	(generate): New arg QBITS.  Add sanity checks for reasonable qbits
	and nbits.
	* pubkey.c (gcry_pk_genkey): Parse an qbits element.
	(pubkey_generate): New arg QBITS.  Pass it to the DSA generation.

2006-10-05  Werner Koch  <wk@g10code.com>

	* md.c (gcry_md_algo_info) <get_asnoid>: Check that the algo is
	available.

2006-10-04  David Shaw  <dshaw@jabberwocky.com>  (wk)
 
	* tiger.c (round): Rename to tiger_round as gcc 4 has a built-in
	round function that this conflicts with.
 
2006-09-11  Werner Koch  <wk@g10code.com>

	* rndw32.c (slow_gatherer_windowsNT): While adding data use the
	size of the diskPerformance and not its address. Has been fixed in
	GnuPG more than a year ago.  Noted by Lee Fisher.

2006-08-30  Werner Koch  <wk@g10code.com>

	* pubkey.c (sexp_data_to_mpi): Need to allow "ripemd160" here as
	this is the canonical name.

2006-08-29  Hye-Shik Chang <perky@FreeBSD.org>  (wk)

	* seed.c: New.

2006-08-03  Werner Koch  <wk@g10code.com>

	* random-daemon.c (_gcry_daemon_initialize_basics): Don't
	initialize the socket.  Remove arg SOCKETNAME.
	(connect_to_socket): Make sure that daemon is set to -1 on error.
	(call_daemon): Initialize the socket on the first call.
	(_gcry_daemon_randomize, _gcry_daemon_get_random_bytes) 
	(_gcry_daemon_create_nonce): New arg SOCKETNAME.
	* random.c (initialize): Call new daemon initializator.
	(get_random_bytes, gcry_randomize, gcry_create_nonce): Pass socket
	name to daemon call and reset allow_daemon on failure.

2006-07-26  Werner Koch  <wk@g10code.com>

	* rmd160.c (_gcry_rmd160_mixblock): Add cast to transform call.

	* blowfish.c (selftest): Cast string to usnigned char*.

	* primegen.c (prime_generate_internal): Cast unsigned/char*
	mismatch in calling m_out_of_n.
	(is_prime): Changed COUNT to unsigned int *.

	* ac.c (_gcry_ac_data_copy): Initialize DATA_MPIS.

	* random.c (gcry_create_nonce): Update the pid after a fork.
	Reported by Uoti Urpala.

2006-07-04  Marcus Brinkmann  <marcus@g10code.de>

	* sha512.c: Fix typo in copyright notice.

2006-06-21  Werner Koch  <wk@g10code.com>

	* rsa.c (_gcry_rsa_generate): Replace xcalloc by calloc.
	* pubkey.c (gcry_pk_encrypt, gcry_pk_sign): Ditto.
	(sexp_to_key, sexp_to_sig, sexp_to_enc, gcry_pk_encrypt) 
	(gcry_pk_sign, gcry_pk_genkey, gcry_pk_get_keygrip): Ditto. 
	* md.c (md_copy): Ditto.
	
2006-04-22  Moritz Schulte  <moritz@g10code.com>

	* random-daemon.c (_gcry_daemon_initialize_basics): New argument:
	SOCKETNAME.  Passing on to connect_to_socket() if non-NULL.
	(connect_to_socket, writen, readn, call_daemon): New functions.
	(_gcry_daemon_randomize, _gcry_daemon_get_random_bytes) 
	(_gcry_daemon_create_nonce): Call call_daemon().
	(RANDOM_DAEMON_SOCKET): New symbol.
	(daemon_socket): New static variable.

	* random.h (_gcry_daemon_initialize_basics): New parameter:
	SOCKETNAME.
	(_gcry_set_random_daemon_socket): New declaration.

	* random.c (initialize_basics): Pass DAEMON_SOCKET_NAME to
	_gcry_daemon_initialize_basics.
	(_gcry_set_random_daemon_socket): New function, setting
	DAEMON_SOCKET_NAME.

2006-04-01  Moritz Schulte  <moritz@g10code.com>

	* ac.c (eme_pkcs_v1_5_encode): Use KEY_SIZE directly, no need to
	call gcry_ac_key_get_nbits.
	(eme_pkcs_v1_5_decode): Likewise.
	(ac_es_dencode_prepare_pkcs_v1_5): Fill options_em structure with
	key_size.
	(_gcry_ac_data_dump, gcry_ac_data_dump): New functions.
	(_gcry_ac_data_to_sexp, _gcry_ac_data_from_sexp): More or less
	rewritten; changed S-Expression format so that it matches the one
	used in pubkey.c.

2006-03-15  Werner Koch  <wk@g10code.com>

	* random-daemon.c: New.
	* random.c (_gcry_use_random_daemon): New.
	(get_random_bytes, gcry_randomize, gcry_create_nonce): Try
	diverting to the daemon functions.

2006-03-14  Werner Koch  <wk@g10code.com>

	* random.c (lock_seed_file): New.
	(read_seed_file, _gcry_update_random_seed_file): Use it.

	* random.c (gcry_create_nonce):  Detect a fork and re-seed.
	(read_pool): Fixed the fork detection; it used to work only for
	multi-threaded processes.

2006-03-12  Brad Hards  <bradh@frogmouth.net>  (wk)

	* md.c (md_open): Use new variable macpads_Bsize instead of
	hardwiring the block size.  Changed at all places.

2006-03-10  Brad Hards  <bradh@frogmouth.net>  (wk, patch 2005-04-22)

	* md.c, sha256.c:  Add support for SHA-224.
	(sha224_init): New.
	
2006-01-18  Brad Hards  <bradh@frogmouth.net>  (wk 2006-03-07)

	* cipher.c (cipher_encrypt, cipher_decrypt, do_ofb_encrypt)
	(do_ofb_decrypt, gcry_cipher_open): Implement Output Feedback Mode.

2005-11-02  Moritz Schulte  <moritz@g10code.com>

	* pubkey.c (gcry_pk_algo_name): Return "?" instead of NULL for
	unknown algorithm IDs.
	* cipher.c (cipher_algo_to_string): Likewise.

2005-11-01  Moritz Schulte  <moritz@g10code.com>

	* pubkey.c (gcry_pk_algo_info): Don't forget to break after switch
	case.

2005-09-19  Werner Koch  <wk@g10code.com>

	* dsa.c (generate): Add preliminary support for 2 and 4 keys.
	Return an error code if the key size is not supported.
	(_gcry_dsa_generate): Return an error.

2005-08-22  Werner Koch  <wk@g10code.com>

	* primegen.c (check_prime): New arg RM_ROUNDS.
	(prime_generate_internal): Call it here with 5 rounds as used
	before.
	(gcry_prime_check): But here with 64 rounds.
	(is_prime): Make sure never to use less than 5 rounds.

2005-04-16  Moritz Schulte  <moritz@g10code.com>

	* ac.c (_gcry_ac_init): New function.

2005-04-12  Moritz Schulte  <moritz@g10code.com>

	* ac.c (_gcry_ac_io_write, _gcry_ac_io_read): Initialize err to
	make the compiler happy.
	Always use errno, now that gcry_malloc() is guaranteed to set
	errno on failure.
	(_gcry_ac_data_to_sexp): Don't forget to goto out after error in
	loop.
	(_gcry_ac_data_to_sexp): Remove unused variable: mpi_list;
	(_gcry_ac_data_to_sexp): Always deallocate sexp_buffer.
	(_gcry_ac_data_from_sexp): Don't forget to initialize data_set_new.
	(_gcry_ac_data_from_sexp): Handle special case, which is
	necessary, since gcry_sexp_nth() does not distinguish between
	"element does not exist" and "element is the empty list".
	(_gcry_ac_io_init_va): Use assert to make sure that mode and type
	are correct.
	Use gcry_error_t types where gcry_err_code_t types have been used
	before.

2005-04-11  Moritz Schulte  <moritz@g10code.com>

	* ac.c (_gcry_ac_data_sign_scheme): Don't forget to initialize
	buffer.

	* whirlpool.c: New file.
	* md.c (digest_table): Add whirlpool.
	* Makefile.am (EXTRA_libcipher_la_SOURCES): Added: whirlpool.c.

2005-03-30  Moritz Schulte  <moritz@g10code.com>

	* ac.c (_gcry_ac_data_from_sexp): Use length of SEXP_CUR, not
	length of SEXP; do not forget to set SEXP_TMP to NULL after it has
	been released.

	(struct gcry_ac_mpi): New member: name_provided.
	(_gcry_ac_data_set): Rename variable `name_final' to `name_cp';
	remove const qualifier; change code to not cast away const
	qualifiers; use name_provided member as well.
	(_gcry_ac_data_set, _gcry_ac_data_get_name): Use name_provided
	member of named mpi structure.

	(gcry_ac_name_to_id): Do not forget to initialize err.
	(_gcry_ac_data_get_index): Do not forget to initialize mpi_return;
	use gcry_free() instead of free(); remove unnecessary cast; rename
	mpi_return and name_return to mpi_cp and name_cp; adjust code.
	(ac_data_mpi_copy): Do not cast away const qualifier.
	(ac_data_values_destroy): Likewise.
	(ac_data_construct): Likewise.

	(ac_data_mpi_copy): Initialize flags to GCRY_AC_FLAG_DEALLOC.
	(ac_data_extract): Use GCRY_AC_FLAG_DEALLOC instead of
	GCRY_AC_FLAG_COPY.

	(_gcry_ac_io_init_va, _gcry_ac_io_init, gcry_ac_io_init)
	(gcry_ac_io_init_va, _gcry_ac_io_write, _gcry_ac_io_read)
	(_gcry_ac_io_read_all, _gcry_ac_io_process): New functions.
	(gry_ac_em_dencode_t): Use gcry_ac_io_t in prototype instead of
	memroy strings directly; adjust encode/decode functions to use io
	objects.
	(emsa_pkcs_v1_5_encode_data_cb): New function ...
	(emsa_pkcs_v1_5_encode): ... use it here.
	(ac_data_dencode): Use io objects.
	(_gcry_ac_data_encode, _gcry_ac_data_decode, gcry_ac_data_encode)
	(gcry_ac_data_decode): Likewise.
	(_gcry_ac_data_encrypt_scheme, gcry_ac_data_encrypt_scheme)
	(_gcry_ac_data_decrypt_scheme, gcry_ac_data_decrypt_scheme)
	(_gcry_ac_data_sign_scheme, gcry_ac_data_sign_scheme)
	(_gcry_ac_data_verify_scheme, gcry_ac_data_verify_scheme):
	Likewise.

2005-03-23  Werner Koch  <wk@g10code.com>

	* rndw32.c (_gcry_rndw32_gather_random_fast): While adding data
	use the size of the object and not the one of its address.  Bug
	reported by Sascha Kiefer.

2005-03-19  Moritz Schulte  <moritz@g10code.com>

	* cipher.c (do_cbc_encrypt): Be careful to not overwrite data,
	which is to be used later on.  This happend, in case CTS is
	enabled and OUTBUF is equal to INBUF.

2005-02-25  Werner Koch  <wk@g10code.com>

	* pubkey.c (gcry_pk_get_keygrip): Allow for shadowed-private-key.

2005-02-13  Moritz Schulte  <moritz@g10code.com>

	* serpent.c: Updated from 1.2 branch:

	s/u32_t/u32/ and s/byte_t/byte/.  Too match what we have always
	used and are using in all other files too
	(serpent_test): Moved prototype out of a fucntion.

2005-02-07  Moritz Schulte  <moritz@g10code.com>

	* ac.c: Major parts rewritten.
	* pubkey.c (_gcry_pk_get_elements): New function.

2004-12-09  Werner Koch  <wk@g10code.com>

	* serpent.c (serpent_setkey): Moved prototype of serpent_test to
	outer scope.

2004-09-11  Moritz Schulte  <moritz@g10code.com>

	* pubkey.c (pubkey_table): Added an alias entry for GCRY_PK_ELG_E.

2004-08-23  Moritz Schulte  <moritz@g10code.com>

	* ac.c: Do not include <assert.h>.
	* rndegd.c: Likewise.
	* sha1.c: Likewise.
	* rndunix.c: Likewise.
	* rndlinux.c: Likewise.
	* rmd160.c: Likewise.
	* md5.c: Likewise.
	* md4.c: Likewise.
	* cipher.c: Likewise.
	* crc.c: Likewise.
	* blowfish.c: Likewise.

	* pubkey.c (dummy_generate, dummy_check_secret_key)
	(dummy_encrypt, dummy_decrypt, dummy_sign, dummy_verify): Return
	err code GPG_ERR_NOT_IMPLEMENTED instead of aborting through
	log_bug().
	(dummy_get_nbits): Return 0 instead of aborting though log_bug().

2004-08-19  Werner Koch  <wk@g10code.de>

	* pubkey.c (sexp_data_to_mpi): Changed the zero random byte
	substituting code to actually do clever things.  Thanks to
	Matthias Urlichs for noting the implementation problem.

2004-08-09  Moritz Schulte  <moritz@g10code.com>

	* pubkey.c (gcry_pk_sign): Fixed memory leak; fix provided by
	Modestas Vainius.

2004-07-16  Werner Koch  <wk@gnupg.org>

	* rijndael.c (do_encrypt): Fix alignment problem.  Bugs found by
	Matthias Urlichs.
	(do_decrypt): Ditto.
	(keySched, keySched2): Use 2 macros along with unions in the key
	schedule context.

2004-07-14  Moritz Schulte  <moritz@g10code.com>

	* rsa.c (_gcry_rsa_decrypt): Don't forget to free "a".  Thanks to
	Nikos Mavroyanopoulos.

2004-05-09  Werner Koch  <wk@gnupg.org>

	* random.c (read_pool): Mix the PID in to better protect after a
	fork.

2004-07-04  Moritz Schulte  <moritz@g10code.com>

	* serpent.c: Use "u32_t" instead of "unsigned long", do not
	declare S-Box variables as "register".  Fixes failure on
	OpenBSD/sparc64, reported by Nikolay Sturm.

2004-05-07  Werner Koch  <wk@gnupg.org>

	* random.c (initialize): Factored out some code to ..
	(initialize_basics): .. new function.
	(_gcry_random_initialize): Just call initialize_basics unless the
	new arg FULL is set to TRUE.
	(_gcry_fast_random_poll): Don't do anything unless the random
	system has been really initialized.

2004-05-07  Moritz Schulte  <moritz@g10code.de>

	* ac.c (gcry_ac_open): Do not dereference NULL pointer.  Reported
	by Umberto Salsi.

2004-02-20  Werner Koch  <wk@gnupg.org>

	* primegen.c (check_prime): New args CB_FUNC and CB_ARG; call them
	at different stages.  Pass these arguments through all callers.

2004-02-06  Werner Koch  <wk@gnupg.org>

	* des.c: Add a new OID as used by pkcs#12.

	* rfc2268.c: New. Taken from libgcrypt. 
	* cipher.c: Setup the rfc2268 algorithm.

2004-01-25  Moritz Schulte  <mo@g10code.com>

	* primegen.c (prime_generate_internal): Do not forget to free
	`q_factor'; fixed by Brieuc Jeunhomme.
	(prime_generate_internal): Do not forget to free `prime'.

2004-01-14  Moritz Schulte  <mo@g10code.com>

	* ac.c (gcry_ac_data_set): New argument: flags; slightly
	rewritten.
	(gcry_ac_data_get_name, gcry_ac_data_get_index): Likewise.
	(gcry_ac_key_pair_generate): New argument: misc_data; modified
	order of arguments.
	(gcry_ac_key_test): New argument: handle.
	(gcry_ac_key_get_nbits, gcry_ac_key_get_grip): Likewise.
	Use GCRY_AC_FLAG_NO_BLINDING instead of
	GCRY_AC_DATA_FLAG_NO_BLINDING.
	(gcry_ac_mpi): New member: flags.
	(gcry_ac_data_search, gcry_ac_data_add): Removed functions.

2003-12-22  Werner Koch  <wk@gnupg.org>

	* primegen.c (is_prime): Release A2.

2003-12-19  Werner Koch  <wk@gnupg.org>

	* md.c: Moved a couple of functions down below the data structure
	definitions.
	(struct gcry_md_context): New field ACTUAL_HANDLE_SIZE.
	(md_open): Set it here.
	(strcut gcry_md_list): New field ACTUAL_STRUCT_SIZE.
	(md_enable): Set it here.
	(md_close): Wipe the context memory.
	secure memory.
	* cipher.c (struct gcry_cipher_handle): New field ACTUAL_HANDLE_SIZE.
	(gcry_cipher_open): Set it here.
	(gcry_cipher_close): Use it to always wipe out the handle data.

	* ac.c (gcry_ac_open): Make sure HANDLE gets initialized even when
	the function is not successful.
	(gcry_ac_close): Allow a NULL handle.
	(gcry_ac_key_destroy, gcry_ac_key_pair_destroy): Ditto.
	(gcry_ac_key_get_grip): Return INV_OBJ on error.

	* primegen.c (prime_generate_internal): Fixed error code for
	failed malloc.  Replaced the !err if chain by gotos.
	(gcry_prime_group_generator): Remove the extra sanity check.

	* md.c: Minor code and comment cleanups.

2003-12-16  Werner Koch  <wk@gnupg.org>

	* primegen.c (gen_prime): Doc fix.  Thanks to Newton Hammet.

2003-12-11  Werner Koch  <wk@gnupg.org>

	* rndunix.c (slow_poll): Don't use #warning but #error.

	* rndegd.c: Changed indentation.
	(my_make_filename): Removd the var_arg cruft becuase we
	don't need it here.  Changed caller.  

	* rndlinux.c: Changed indentation.
	(open_device): Remove the superfluous stat call and clarify
	comment.

	* rsa.c: Changed indentation.
	(secret): Use the standard algorithm if p, q and u are not
	available.
	(rsa_blind, rsa_unblind): Renamed from _gcry_rsa_blind,
	_gcry_rsa_unblind and moved more to the top.

	* md4.c: Changed indentation.  Removed unnecessary casts.
	* md5.c, rmd160.c, sha1.c, tiger.c: Ditto.
	* rijndael.c, twofish.c: Ditto.
	* serpent.c: Removed unnecessary casts.
	* sha256.c, sha512.c: Ditto.

2003-12-09  Werner Koch  <wk@gnupg.org>

	* dsa.c: Unified indentation style.
	* elgamal.c: Ditto. 
	* des.c (des_key_schedule): Code beautifications.
	* blowfish.c: Changed indentation style.
	* cast5.c (do_cast_setkey): Ditto.

	* pubkey.c (gcry_pk_encrypt): Replaced the chain of if(!err) tests
	by straightforward gotos. Other cleanups.
	(gcry_pk_decrypt): Ditto.
	(gcry_pk_sign): Ditto.
	(gcry_pk_verify): Ditto.
	(gcry_pk_genkey): Ditto.  Use strtoul instead of strtol.
	(gcry_pk_ctl): Use GPG_ERR_INV_ARG to indicate bad arguments.

2003-12-07  Werner Koch  <wk@gnupg.org>

	* pubkey.c (gcry_pk_register_default): Undef the helper macro.
	(gcry_pk_map_name): Allow NULL for string.
	(sexp_to_key): Use memcpy and not strncpy.  Use gcry_free and not
	free.
	(sexp_to_sig): Ditto.
	(sexp_to_enc): Ditto.  Replaced the chain of if(!err) tests by
	straightforward gotos.

2003-12-05  Werner Koch  <wk@gnupg.org>

	* cipher.c: Documentation cleanups.
	(gcry_cipher_mode_from_oid): Allow NULL for STRING.

2003-12-03  Werner Koch  <wk@gnupg.org>

	* elgamal.c (sign, do_encrypt, gen_k): Make sure that a small K is
	only used for encryption.

2003-11-18  Werner Koch  <wk@gnupg.org>

	* random.h (rndw32_set_dll_name): Removed unused prototype.

	* Makefile.am (EXTRA_DIST): Added Manifest.

2003-11-11  Werner Koch  <wk@gnupg.org>

	* Manifest: New.

2003-11-04  Werner Koch  <wk@gnupg.org>

	* md.c (gcry_md_hash_buffer): Use shortcut for SHA1
	* sha1.c (_gcry_sha1_hash_buffer): New.

	* random.c: Reformatted most functions.
	(mix_pool): Moved the failsafe_digest from global
	scope to here.
	(do_fast_random_poll): Use the generic fucntions even if a fast
	gathering function has been used.
	(read_pool): Detect a fork and retry.
	(gcry_randomize, get_random_bytes): Don't distinguish anymore
	between weak and strong random.
	(gcry_create_nonce): New.

2003-10-31  Werner Koch  <wk@gnupg.org>

	* rndw32.c (slow_gatherer_windowsNT): Use a plain buffer for the
	disk performance values and not the W32 API structure.

	* dsa.c (verify): s/exp/ex/ due to shadowing of a builtin.
	* elgamal.c (verify): Ditto.

	* ac.c (gcry_ac_data_get_index): s/index/idx/
	(gcry_ac_data_copy_internal): Remove the cast in _gcry_malloc.
	(gcry_ac_data_add): Must use gcry_realloc instead of realloc.
	* pubkey.c (sexp_elements_extract): s/index/idx/ as tribute to the
	forehackers.
	(gcry_pk_encrypt): Removed shadowed definition of I. Reordered
	arguments to malloc for clarity.
	(gcry_pk_sign, gcry_pk_genkey): Ditto.
	* primegen.c (prime_generate_internal): s/random/randomlevel/.

2003-10-27  Moritz Schulte  <mo@g10code.com>

	* pubkey.c (gcry_pk_encrypt): Don't forget to deallocate pkey.

2003-10-27  Werner Koch  <wk@gnupg.org>

	* random.c (gcry_random_add_bytes): Return if buflen is zero to
	avoid gcc warning about unsed parameter.
	(MASK_LEVEL): Simplified; does now work for signed and unsigned
	w/o warnings.

	* md.c (md_start_debug): Removed the const from SUFFIX, because
	this function is called from the control fucntion which does not
	require const.

	Prefixed all (pubkey,digest,cipher}_spec_* globale variables with
	_gcry_.

	* ac.c (ac_key_identifiers): Made static.

	* random.c (getfnc_gather_random,getfnc_fast_random_poll): Move
	prototypes to ..
	* rand-internal.h: .. here 
	* random.c (getfnc_gather_random): Include rndw32 gatherer.
	* rndunix.c, rndw32.c, rndegd.c: Include them here.
	* rndlinux.c (_gcry_rndlinux_gather_random): Prepend the _gcry_
	prefix.  Changed all callers.
	* rndegd.c (_gcry_rndegd_gather_random): Likewise.
	(_gcry_rndegd_connect_socket): Likewise.
	* rndunix.c (_gcry_rndunix_gather_random): Likewise.
	(waitpid): Made static.
	* rndw32.c: Removed the old and unused winseed.dll cruft.
	(_gcry_rndw32_gather_random_fast): Renamed from
	gather_random_fast.
	(_gcry_rndw32_gather_random): Renamed from gather_random.  Note,
	that the changes 2003-04-08 somehow got lost.

	* sha512.c (sha512_init, sha384_init): Made static.

	* cipher.c (do_ctr_decrypt): Removed "return" from this void
	function.

2003-10-24  Moritz Schulte  <mo@g10code.com>

	* serpent.c: Fix an issue on big-endian systems.

	* rndw32.c: Removed IS_MODULE -cruft.
	* rndlinux.c (rndlinux_gather_random): Likewise.

2003-10-10  Werner Koch  <wk@gnupg.org>

	* primegen.c (gen_prime): Bail out if NBITS is less than 16.
	(prime_generate_internal): Initialize prime variable to suppress
	compiler warning.  Check pbits, initialize qbits when passed as
	zero.

	* primegen.c (prime_generate_internal): New arg
	ALL_FACTORS. Changed all callers.
	(gcry_prime_generate): Make the factors arg optional. Request
	all_factors.  Make sure PRIME is set to NULL even on error.
	(gcry_prime_group_generator): New.
	(gcry_prime_release_factors): New.

2003-10-06  Werner Koch  <wk@gnupg.org>

	* primegen.c (gen_prime): Assert that NBITS is never zero, it
	would cause a segv.

2003-09-28  Moritz Schulte  <mo@g10code.com>

	* ac.c: Include "cipher.h".

2003-09-27  Moritz Schulte  <mo@g10code.com>

	* rndegd.c (do_read): Return nread instead of nbytes; thanks to
	Michael Caerwyn.

2003-09-04  Werner Koch  <wk@gnupg.org>

	* pubkey.c (_gcry_pk_aliased_algo_name): New.
	* ac.c (gcry_ac_open): Use it here.

	* Makefile.am (EXTRA_libcipher_la_SOURCES): Add serpent.c

2003-09-02  Moritz Schulte  <mo@g10code.com>

	* primegen.c (gcry_prime_check, gcry_prime_generate): New
	functions.
	(prime_generate_internal): New function, based on
	_gcry_generate_elg_prime.
	(_gcry_generate_elg_prime): Rewritten as a wrapper for
	prime_generate_internal.

2003-08-28  Werner Koch  <wk@gnupg.org>

	* pubkey.c (gcry_pk_encrypt): Don't include the flags list in the
	return value.  This does not make sense and breaks any programs
	parsing the output strictly (e.g. current gpgsm).
	(gcry_pk_encrypt): If aliases for the algorithm name exists, take
	the first one instead of the regular name to adhere to SPKI
	conventions.
	(gcry_pk_genkey): Ditto.
	(gcry_pk_sign): Ditto. Removed unused KEY_ALGO_NAME.

2003-08-19  Moritz Schulte  <mo@g10code.com>

	* cipher.c: Add support for Serpent
	* serpent.c: New file.

2003-08-10  Moritz Schulte  <moritz@g10code.com>

	* rsa.c (_gcry_rsa_blind, _gcry_rsa_unblind): Declare static.

2003-08-09  Timo Schulz  <twoaday@freakmail.de>

	* random.c (getfnc_gather_random): Don't check NAME_OF_DEV_RANDOM
	two times, but also the NAME_OF_DEV_URANDOM device.
	
2003-08-08  Moritz Schulte  <moritz@g10code.com>

	* pubkey.c (sexp_to_enc): Fixed extraction of S-Expression: do not
	fail if no `flags' sub S-Expression is found.

2003-07-27  Werner Koch  <wk@gnupg.org>

	* md.c (gcry_md_lookup_func_oid): Allow for empty OID lists.

2003-07-23  Moritz Schulte  <moritz@g10code.com>

	* ac.c (gcry_ac_data_construct): New argument: include_flags, only
	include `flags' S-expression, if include_flags is true.  Adjust
	callers.  Thanks for triggering a bug caused by `flags'
	sub-S-expression where they are not expected to Ralf Schneider.

2003-07-21  Moritz Schulte  <moritz@g10code.com>

	* pubkey.c (gcry_pk_lookup_func_name): Use new member name
	`aliases' instead of `sexp_names'.

	* ac.c (gcry_ac_key_data_get): New function.

	* cipher.c (gcry_cipher_lookup_func_name): Fix return value.

2003-07-20  Moritz Schulte  <moritz@g10code.com>

	* blowfish.c: Adjusted for new gcry_cipher_spec_t structure.
	* cast5.c: Likewise.
	* twofish.c: Likewise.
	* arcfour.c: Likewise.
	* rijndael.c (rijndael_oids, rijndael192_oids, rijndael256_oids):
	New variables, adjust for new gcry_cipher_spec_t structure.
	* des.c (oids_tripledes): New variable, adjust for new
	gcry_cipher_spec_t structure.

	* md.c (oid_table): Removed.

	* tiger.c (oid_spec_tiger): New variable.
	(digest_spec_tiger): Adjusted for new gry_md_spec_t structure.

	* sha512.c (oid_spec_sha512): New variable.
	(digest_spec_sha512): Adjusted for new gry_md_spec_t structure.

	* sha512.c (oid_spec_sha384): New variable.
	(digest_spec_sha384): Adjusted for new gry_md_spec_t structure.

	* sha256.c (oid_spec_sha256): New variable.
	(digest_spec_sha256): Adjusted for new gry_md_spec_t structure.

	* sha1.c (oid_spec_sha1): New variable.
	(digest_spec_sha1): Adjusted for new gry_md_spec_t structure.

	* rmd160.c (oid_spec_rmd160): New variable.
	(digest_spec_rnd160): Adjusted for new gry_md_spec_t structure.

	* md5.c (oid_spec_md5): New variable.
	(digest_spec_md5): Adjusted for new gry_md_spec_t structure.

	* md4.c (oid_spec_md4): New variable.
	(digest_spec_md4): Adjusted for new gry_md_spec_t structure.

	* crc.c (digest_spec_crc32, digest_spec_crc32_rfc1510,
	digest_spec_crc32_rfc2440): Adjusted for new gry_md_spec_t
	structure.

2003-07-19  Moritz Schulte  <moritz@g10code.com>

	* md.c (gcry_md_lookup_func_oid): New function.
	(search_oid): New function, copied from cipher.c.
	(gcry_md_map_name): Adjust for new search_oid_interface.

	* cipher.c (oid_table): Removed table.
	(gcry_cipher_lookup_func_oid): New function.
	(search_oid): Rewritten to use the module functions.
	(gcry_cipher_map_name): Adjust for new search_oid interface.
	(gcry_cipher_mode_from_oid): Likewise.

2003-07-18  Werner Koch  <wk@gnupg.org>

	* md.c (gcry_md_hash_buffer): Convert ERR to gpg_error_t in
	gpg_strerror.

2003-07-14  Moritz Schulte  <moritz@g10code.com>

	* cipher.c (gcry_cipher_lookup_func_name): Also check the cipher
	name aliases, not just the primary name.
	(gcry_cipher_map_name): Remove kludge for aliasing Rijndael to
	AES.

	* arcfour.c, blowfish.c, cast5.c, des.c, twofish.c: Adjust cipher
	specification structures.

	* rijndael.c (rijndael_names, rijndael192_names,
	rijndael256_names): New variables, use them in the cipher
	specifications.

	* rmd160test.c: Removed file.

	* ac.c, arcfour.c, blowfish.c, cast5.c, cipher.c, des.c, dsa.c,
	elgamal.c, md.c, pubkey.c, random.c, rijndael.c, rsa.c, twofish.c:
	Used gcry_err* wrappers for libgpg symbols.

	* primegen.c (gen_prime): Correct the order arguments to
	extra_check.

2003-07-12  Moritz Schulte  <moritz@g10code.com>

	* ac.c: Replaced all public occurences of gpg_error_t with
	gcry_error_t.
	* cipher.c: Likewise.
	* md.c: Likewise.
	* pubkey.c: Likewise.
	* random.c: Likewise.

	* cipher.c: Added support for TWOFISH128.

2003-07-08  Moritz Schulte  <moritz@g10code.com>

	* ac.c (gcry_ac_data_copy_internal): New function, based on
	gcry_ac_data_copy.
	(gcry_ac_data_copy): Made public, use gcry_ac_data_copy_internal.
	(gcry_ac_key_init): Use gcry_ac_data_copy_internal.

2003-07-07  Moritz Schulte  <moritz@g10code.com>

	* ac.c (gcry_ac_data_set): Only release old MPI value if it is
	different from the new value.  Bug reported by Simon Josefsson
	<jas@extundo.com>.

	* pubkey.c (gcry_pk_list): New function.
	* md.c (gcry_md_list): New function.

	* ac.c (gcry_ac_key_pair_generate): Fix calculation of format
	string size.

2003-07-05  Moritz Schulte  <moritz@g10code.com>

	* md.c: Named struct of digest_table `digest_table_entry'.
	(digest_table_entry): New member: algorithm; filled in.
	(digest_table_entry): Removed unused member: flags.
	(gcry_md_register): New argument: algorithm_id, filled in.
	(gcry_md_register_default): Used algorithm ID from module
	structure.
	(gcry_md_map_name): Likewise.
	(md_enable): Likewise.
	(md_read): Likewise.
	(gcry_md_info): Likewise.

	* pubkey.c: Named truct for pubkey_table `pubkey_table_entry'.
	(pubkey_table_entry): New member: algorithm; filled in.
	(gcry_pk_register_default): Used algorithm ID from pubkey_table.
	(gcry_pk_register): New argument: algorithm_id, filled in.
	(gcry_pk_map_name): Used algorithm ID from module structure.
	(gcry_pk_decrypt): Likewise.
	(gcry_pk_encrypt): Likewise.
	(gcry_pk_verify): Likewise.
	(gcry_pk_sign): Likewise.
	(gcry_pk_testkey): Likewise.
	(gcry_pk_genkey): Likewise.
	(gcry_pk_get_nbits): Likewise.
	(sexp_to_key): Removed unused variable: algo.
	(sexp_to_sig): Likewise.

	* cipher.c: Named struct for cipher_table `cipher_table_entry'.
	(cipher_table_entry): New member: algorithm; filled in.
	(gcry_cipher_register_default): Used algorithm ID from
	cipher_table.
	(gcry_cipher_register): New argument: algorithm_id, filled in.
	(gcry_cipher_map_name): Used algorithm ID from module structure.

	* arcfour.c (cipher_spec_arcfour): Removed algorithm ID.
	* blowfish.c (cipher_spec_blowfish): Likewise.
	* cast5.c (cipher_spec_cast5): Likewise.
	* crc.c (digest_spec_crc32): Likewise.
	* crc.c (digest_spec_crc32_rfc1510): Likewise.
	* crc.c (digest_spec_crc32_rfc2440): Likewise.
	* des.c (cipher_spec_des): Likewise.
	* des.c (cipher_spec_tripledes): Likewise.
	* dsa.c (pubkey_spec_dsa): Likewise.
	* elgamal.c (pubkey_spec_elg): Likewise.
	* md4.c (digest_spec_md4): Likewise.
	* md5.c (digest_spec_md5): Likewise.
	* aes.c (cipher_spec_aes): Likewise.
	* aes.c (cipher_spec_aes192): Likewise.
	* aes.c (cipher_spec_aes256): Likewise.
	* rsa.c (pubkey_spec_rsa): Likewise.
	* sha1.c (digest_spec_sha1): Likewise.
	* sha256.c (digest_spec_sha256): Likewise.
	* sha512.c (digest_spec_sha512): Likewise.
	* tiger.c (digest_spec_tiger): Likewise.
	* twofish.c (cipher_spec_twofish): Likewise.
	* twofish.c (cipher_spec_twofish128): Likewise.

	* Makefile.am (EXTRA_libcipher_la_SOURCES): Fix list of source
	files; reported by Simon Josefsson <jas@extundo.com>.

	* pubkey.c: Replaced all occurences of `id' with `algorithm',
	since `id' is a keyword in obj-c.
	* md.c: Likewise.
	* cipher.c: Likewise.

	* crc.c, md4.c, md5.c, rmd160.c, sha1.c, sha256.c, tiger.c:
	Replaced all occurences of gcry_digest_spec_t with gcry_md_spec_t.

	* dsa.c, rsa.c, elgamal.c: Replaced all occurencens of
	gcry_pubkey_spec_t with gcry_pk_spec_t.

	* md.c: Replaced all occurences of gcry_digest_spec_t with
	gcry_md_spec_t.
	(gcry_digest_register_default): Renamed to ...
	(gcry_md_register_default): ... this; adjusted callers.
	(gcry_digest_lookup_func_name): Renamed to ...
	(gcry_md_lookup_func_name): ... this; adjusted callers.
	(gcry_digest_lookup_name): Renamed to ...
	(gcry_md_lookup_name): ... this; adjusted callers.
	(gcry_digest_register): Renamed to ...
	(gcry_md_register): ... this.
	(gcry_digest_unregister): Renamed to ...
	(gcry_md_unregister): ... this.

	* pubkey.c (gcry_pubkey_register): Renamed to ...
	(gcry_pk_register): ... this.
	(gcry_pubkey_unregister): Renamed to ...
	(gcry_pk_unregister): ... this.
	Replaced all occurences of gcry_pubkey_spec_t with gcry_pk_spec_t.
	(gcry_pubkey_register_default): Renamed to ...
	(gcry_pk_register_default): ... this; adjusted callers.
	(gcry_pubkey_lookup_func_name): Renamed to ...
	(gcry_pk_lookup_func_name): ... this; adjusted callers.
	(gcry_pubkey_lookup_name): Renamed to ...
	(gcry_pk_lookup_name): ... this; adjusted callers.

	* md.c (gcry_md_hash_buffer): Fix error checking.  Thanks to Simon
	Josefsson <jas@extunde.com>.

2003-07-04  Moritz Schulte  <moritz@g10code.com>

	* cipher.c (gcry_cipher_list): New function.

2003-07-01  Moritz Schulte  <moritz@g10code.com>

	* pubkey.c (sexp_to_sig): Accept a `flags' S-expression to be more
	consistent with sexp_to_enc.

2003-06-30  Moritz Schulte  <moritz@g10code.com>

	* Makefile.am (libcipher_la_SOURCES): Added: ac.c.

	* pubkey.c (_gcry_pk_module_lookup): New function.
	(_gcry_pk_module_release): New function.

2003-06-29  Moritz Schulte  <moritz@g10code.com>

	* ac.c: New file.

2003-06-26  Werner Koch  <wk@gnupg.org>

	* md.c (gcry_md_hash_buffer): Trigger BUG correcly with new API.

2003-06-19  Werner Koch  <wk@gnupg.org>

	* md.c (gcry_md_is_enabled): Fixed. 

2003-06-18  Werner Koch  <wk@gnupg.org>

	* cipher.c (gcry_cipher_get_algo_keylen): New.
	(gcry_cipher_get_algo_blklen): New.

2003-06-18  Moritz Schulte  <moritz@g10code.com>

	* arcfour.c, cipher.c, blowfish.c, md.c, cast5.c, pubkey.c, crc.c,
	des.c, dsa.c, elgamal.c, md4.c, md5.c, random.c, rijndael.c,
	rmd160.c, rsa.c, sha1.c, sha256.c, sha512.c, tiger.c, twofish.c:
	Replaced older types GcryDigestSpec, GcryCipherSpec and
	GcryPubkeySpec with newer types: gcry_digest_spec_t,
	gcry_cipher_spec_t and gcry_pubkey_spec_t.

	* md.c (gcry_digest_id_new): Removed function.
	(gcry_digest_register): Removed code for generating a new module
	ID.

	* pubkey.c (gcry_pubkey_id_new): Removed function.
	(gcry_pubkey_register): Removed code for generating a new module
	ID.

	* cipher.c, md.c, pubkey.c: Replace old type GcryModule with newer
	one: gcry_module_t.
	(gcry_cipher_id_new): Removed function.
	(gcry_cipher_register): Removed code for generating a new module
	ID.

	* cipher.c (gcry_cipher_register): Adjust call to
	_gcry_module_add.
	(gcry_cipher_register_default): Likewise.
	* pubkey.c (gcry_pubkey_register_default): Likewise.
	(gcry_pubkey_register): Likewise.
	* md.c (gcry_digest_register_default): Likewise.
	(gcry_digest_register): Likewise.

	* md.c (gcry_digest_lookup_func_id): Removed function.
	(gcry_digest_lookup_id): Likewise.
	(gcry_digest_id_new): Use _gcry_module_lookup_id instead of
	gcry_digest_lookup_id.
	(digest_algo_to_string): Likewise.
	(check_digest_algo): Likewise.
	(md_enable): Likewise.
	(md_digest_length): Likewise.
	(md_asn_oid): Likewise.

	* pubkey.c (gcry_pubkey_lookup_id): Removed function.
	(gcry_pubkey_lookup_func_id): Likewise.
	(gcry_pubkey_id_new): Use _gcry_module_lookup_id instead of
	gcry_pubkey_id_new.
	(gcry_pk_algo_name): Likewise.
	(disable_pubkey_algo): Likewise.
	(check_pubkey_algo): Likewise.
	(pubkey_get_npkey): Likewise.
	(pubkey_get_nskey): Likewise.
	(pubkey_get_nsig): Likewise.
	(pubkey_get_nenc): Likewise.
	(pubkey_generate): Likewise.
	(pubkey_check_secret_key): Likewise.
	(pubkey_encrypt): Likewise.
	(pubkey_decrypt): Likewise.
	(pubkey_sign): Likewise.
	(pubkey_verify): Likewise.
	(gcry_pk_algo_info): Likewise.

	* cipher.c (gcry_cipher_lookup_func_id): Removed function.
	(gcry_cipher_lookup_id): Likewise.
	(cipher_algo_to_string): use _gcry_module_lookup_id instead of
	gcry_cipher_lookup_id.
	(disable_cipher_algo): Likewise.
	(check_cipher_algo): Likewise.
	(cipher_get_blocksize): Likewise.
	(gcry_cipher_open): Likewise.
	(gcry_cipher_id_new): Likewise.

2003-06-17  Moritz Schulte  <moritz@g10code.com>

	* Makefile.am (GCRYPT_MODULES): Set to @GCRYPT_CIPHERS@,
	@GCRYPT_PUBKEY_CIPHERS@, @GCRYPT_DIGESTS@ and @GCRYPT_RANDOM@.
	(libcipher_la_DEPENDENCIES): Set to $(GCRYPT_MODULES).
	(libcipher_la_LIBADD): Likewise.
	(AM_CFLAGS): Added: @GPG_ERROR_CFLAGS@.
	(EXTRA_libcipher_la_SOURCES): Added all conditional sources.

	* md.c (md_open): Use _gcry_fast_random_poll instead of
	fast_random_poll.
	* cipher.c (gcry_cipher_open): Likewise.

	* random.h (fast_random_poll): Removed macro.

	* blowfish.c, md4.c, md5.c, rmd160.c, sha1.c, sha256.c, sha512.c,
	tiger.c: Use Autoconf's WORDS_BIGENDIAN instead of our own
	BIG_ENDIAN_HOST.

2003-06-16  Moritz Schulte  <moritz@g10code.com>

	* random.c (getfnc_gather_random): Do not special-case
	USE_ALL_RANDOM_MODULES, make it the default.

	* dsa.c: Replace last occurences of old type names with newer
	names (i.e. replace MPI with gcry_mpi_t).
	* elgamal.c: Likewise.
	* primegen.c: Likewise.
	* pubkey.c: Likewise.
	* rsa.c: Likewise.

2003-06-14  Moritz Schulte  <moritz@g10code.com>

	* des.c (des_setkey): Add selftest check.
	(tripledes_set3keys): Likewise.
	(do_tripledes_setkey): Remove selftest check.
	(do_des_setkey): Likewise.

2003-06-11  Moritz Schulte  <moritz@g10code.com>

	* md.c (_gcry_md_init): New function.
	* cipher.c (_gcry_cipher_init): New function.
	* pubkey.c (_gcry_pk_init): New function.

2003-06-13  Werner Koch  <wk@gnupg.org>

	* md.c (gcry_md_get_algo): Reverted to old API.  This is a
	convenience function anyway and error checking is not approriate.
	(gcry_md_is_secure): New.
	(gcry_md_is_enabled): New.

2003-06-12  Werner Koch  <wk@gnupg.org>

	* cipher.c (gcry_cipher_open): Make sure HANDLE is set to NULL on
	error.

2003-06-11  Werner Koch  <wk@gnupg.org>

	* md.c (gcry_md_open): Make sure H receives either NULL or an
	valid handle.
	(gcry_md_copy): Swapped arguments so that it is more in lione with
	md_open and most other API fucntions like memcpy (destination
	comes first).  Make sure HANDLE is set to NULL on error.
	
	* rijndael.c (do_encrypt): Hack to force correct alignment.  It
	seems not to be	not sufficient, though.  We should rework this
	fucntions and remove all these ugly casts.  Let the compiler
	optimize or have an assembler implementation.

2003-06-09  Moritz Schulte  <moritz@g10code.com>

	* Makefile.am: Removed rules serpent, since that is not commited
	yet.

2003-06-08  Moritz Schulte  <moritz@g10code.com>

	* pubkey.c (gcry_pk_encrypt): Improve calculation for size of the
	format string.

2003-06-07  Moritz Schulte  <moritz@g10code.com>

	* arcfour.c, bithelp.h, blowfish.c, cast5.c, cipher.c, crc.c,
	des.c, dsa.c, elgamal.c, md4.c, md5.c, md.c, primegen.c, pubkey.c,
	rand-internal.h, random.c, random.h, rijndael.c, rmd160.c,
	rmd160test.c, rmd.h, rndeged.c, rndlinux.c, rndunix.c, rndw32.c,
	rsa.c, sha1.c, sha256.c, sha512.c, tiger.c, twofish.c: Edited all
	preprocessor instructions to remove whitespace before the '#'.
	This is not required by C89, but there are some compilers out
	there that don't like it.  Replaced any occurence of the now
	deprecated type names with the new ones.
	
2003-06-04  Moritz Schulte  <moritz@g10code.com>

	* pubkey.c (gcry_pk_encrypt): Construct an arg_list and use
	gcry_sexp_build_array instead of gcry_sexp_build.
	(gcry_pk_sign): Likewise.
	(gcry_pk_genkey): Likewise.

2003-06-01  Moritz Schulte  <moritz@g10code.com>

	* dsa.c (_gcry_dsa_generate): Do not check wether the algorithm ID
	does indeed belong to DSA.
	(_gcry_dsa_sign): Likewise.
	(_gcry_dsa_verify): Likewise.
	(_gcry_dsa_get_nbits): Likewise.

	* elgamal.c (_gcry_elg_check_secret_key): Do not check wether the
	algorithm ID does indeed belong to ElGamal.
	(_gcry_elg_encrypt): Likewise.
	(_gcry_elg_decrypt): Likewise.
	(_gcry_elg_sign): Likewise.
	(_gcry_elg_verify): Likewise.
	(_gcry_elg_get_nbits): Likewise.
	(_gcry_elg_generate): Likewise.

	* rsa.c (_gcry_rsa_generate): Do not check wether the algorithm ID
	does indeed belong to RSA.
	(_gcry_rsa_encrypt): Likewise.
	(_gcry_rsa_decrypt): Likewise.
	(_gcry_rsa_sign): Likewise.
	(_gcry_rsa_verify): Likewise.
	(_gcry_rsa_get_nbits): Likewise.

2003-05-30  Moritz Schulte  <moritz@g10code.com>

	* md.c (md_get_algo): Return zero in case to algorithm is enabled.

	* md.c (gcry_md_info): Adjusted for new no-errno-API.
	(md_final): Likewise.
	(gcry_md_get_algo): Likewise.
	* pubkey.c (gcry_pk_get_keygrip): Likewise.
	(gcry_pk_ctl): Likewise.
	(gcry_pk_algo_info): Likewise.
	* des.c (selftest): Likewise.

2003-05-29  Moritz Schulte  <moritz@g10code.com>

	* md.c (md_enable): Do not forget to release module on error.
	(gcry_md_open): Adjusted for new no-errno-API.
	(md_open): Likewise.
	(md_copy): Likewise.
	(gcry_md_copy): Likewise.
	(gcry_md_setkey): Likewise.
	(gcry_md_algo_info): Likewise.

	* cipher.c (gcry_cipher_open): Adjusted for new no-errno-API and
	also fixed a locking bug.
	(gcry_cipher_encrypt): Adjusted for new no-errno-API.
	(gcry_cipher_decrypt): Likewise.
	(gcry_cipher_ctl): Likewise.
	(gcry_cipher_info): Likewise.
	(gcry_cipher_algo_info): Likewise.

2003-05-28  Moritz Schulte  <moritz@g10code.com>

	* md.c (md_enable): Adjusted for libgpg-error.
	(gcry_md_enable): Likewise.
	(gcry_digest_register_default): Likewise.
	(gcry_digest_register): Likewise.
	(check_digest_algo): Likewise.
	(prepare_macpads): Likewise.
	(gcry_md_setkey): Likewise.
	(gcry_md_ctl): Likewise.
	(gcry_md_get): Likewise.
	(gcry_md_algo_info): Likewise.
	(gcry_md_info): Likewise.
	* dsa.c (_gcry_dsa_generate): Likewise.
	(_gcry_dsa_check_secret_key): Likewise.
	(_gcry_dsa_sign): Likewie.
	(_gcry_dsa_verify): Likewise.
	* twofish.c (do_twofish_setkey): Likewise.
	(twofish_setkey): Likewise.
	* cipher.c (gcry_cipher_register): Likewise.

2003-05-25  Moritz Schulte  <moritz@g10code.com>

	* rijndael.c (do_setkey): Adjusted for libgpg-error.
	(rijndael_setkey): Likewise.
	* random.c (gcry_random_add_bytes): Likewise.
	* elgamal.c (_gcry_elg_generate): Likewise.
	(_gcry_elg_check_secret_key): Likewise.
	(_gcry_elg_encrypt): Likewise.
	(_gcry_elg_decrypt): Likewise.
	(_gcry_elg_sign): Likewise.
	(_gcry_elg_verify): Likewise.
	* rsa.c (_gcry_rsa_generate): Likewise.
	(_gcry_rsa_check_secret_key): Likewise.
	(_gcry_rsa_encrypt): Likewise.
	(_gcry_rsa_decrypt): Likewise.
	(_gcry_rsa_sign): Likewise.
	(_gcry_rsa_verify): Likewise.
	* pubkey.c (dummy_generate, dummy_check_secret_key, dummy_encrypt,
	dummy_decrypt, dummy_sign, dummy_verify): Likewise.
	(gcry_pubkey_register): Likewise.
	(check_pubkey_algo): Likewise.
	(pubkey_generate): Likewise.
	(pubkey_check_secret_key): Likewise.
	(pubkey_encrypt): Likewise.
	(pubkey_decrypt): Likewise.
	(pubkey_sign): Likewise.
	(pubkey_verify): Likewise.
	(sexp_elements_extract): Likewise.
	(sexp_to_key): Likewise.
	(sexp_to_sig): Likewise.
	(sexp_to_enc): Likewise.
	(sexp_data_to_mpi): Likewise.
	(gcry_pk_encrypt): Likewise.
	(gcry_pk_decrypt): Likewise.
	(gcry_pk_sign): Likewise.
	(gcry_pk_verify): Likewise.
	(gcry_pk_testkey): Likewise.
	(gcry_pk_genkey): Likewise.
	(gcry_pk_ctl): Likewise.
	* cipher.c (dummy_setkey): Likewise.
	(check_cipher_algo): Likewise.
	(gcry_cipher_open): Likewise.
	(cipher_setkey): Likewise.
	(gcry_cipher_ctl): Likewise.
	(cipher_encrypt): Likewise.
	(gcry_cipher_encrypt): Likewise.
	(cipher_decrypt): Likewise.
	(gcry_cipher_decrypt): Likewise.
	(gcry_cipher_info): Likewise.
	(gcry_cipher_algo_info): Likewise.
	* cast5.c (cast_setkey): Likewise.
	(do_cast_setkey): Likewise.
	* arcfour.c (arcfour_setkey): Likewise.
	(do_arcfour_setkey): Likewise.
	* blowfish.c (do_bf_setkey): Likewise.
	(bf_setkey): Likewise.
	* des.c (do_des_setkey): Likewise.
	(do_tripledes_setkey): Likewise.

2003-05-22  Moritz Schulte  <moritz@g10code.com>

	* tiger.c: Merged code ussing the U64_C macro from GnuPG.

	* sha512.c: Likewise.

2003-05-17  Moritz Schulte  <moritz@g10code.com>

	* pubkey.c (gcry_pk_genkey): Fix type: acquire a lock, instead of
	releasing it.

2003-05-11  Moritz Schulte  <moritz@g10code.com>

	* pubkey.c (gcry_pk_testkey): Call REGISTER_DEFAULT_CIPHERS.
	(gcry_pk_ctl): Likewise.

2003-04-27  Moritz Schulte  <moritz@g10code.com>

	* pubkey.c (gcry_pk_genkey): Release sexp after extracted data has
	been used.

	* md.c (gcry_md_get_algo_dlen): Simplified, simply call
	md_digest_length to do the job.

	* des.c (do_des_setkey): Check for selftest failure not only
	during initialization.
	(do_tripledes_setkey): Include check for selftest failure.

	* pubkey.c (gcry_pubkey_register_default): New macro
	`pubkey_use_dummy', use it.

	* elgamal.c (elg_names): New variable.
	(pubkey_spec_elg): Include elg_names.

	* dsa.c (dsa_names): New variable.
	(pubkey_spec_dsa): Include dsa_names.

	* rsa.c (rsa_names): New variable.
	(pubkey_spec_rsa): Include rsa_names.

	* pubkey.c (gcry_pubkey_lookup_func_name): Compare name also with
	the names listed in `sexp_names'.

2003-04-24  Moritz Schulte  <moritz@g10code.com>

	* pubkey.c (sexp_to_key): New variables: module, pubkey.  Adjusted
	to new module interface.
	(sexp_to_key): Changend type of argument `retalgo' from `int *' to
	`GcryModule **'.  Adjusted all callers.  Removed argument:
	r_algotblidx.
	(sexp_to_sig): Changend type of argument `retalgo' from `int *' to
	`GcryModule **'.  Adjusted all callers.
	(sexp_to_enc): Likewise.

	(pubkey_get_npkey, pubkey_get_nskey, pubkey_get_nsig,
	pubkey_get_nenc): Use strlen to find out the number.

	* rsa.c: Adjust pubkey_spec_rsa to new internal interface.
	* dsa.c: Likewise.
	* elgamal.c: Likewise.

2003-04-17  Moritz Schulte  <moritz@g10code.com>

	* pubkey.c (sexp_elements_extract): New function.
	* pubkey.c (sexp_to_key): Removed variable `idx', added `err', use
	sexp_elements_extract.
	(sexp_to_sig): Likewise.
	(sexp_to_enc): Likewise.

	* pubkey.c: Terminate list correctly.
	* md.c: Include sha512/sha384 in digest_table.

2003-04-16  Moritz Schulte  <moritz@g10code.com>

	* Makefile.am: Include support for sha512.c.

	* sha512.c: New file, merged from GnuPG, with few modifications
	for libgcrypt.

	* rand-internal.h: Removed declarations for constructor functions.

	* md.c (md_copy): Call _gcry_module_use for incrementing the usage
	counter of the digest modules.

	* rsa.c: Do not include "rsa.h".
	* dsa.c: Do not include "dsa.h".
	* elgamal.c: Do not include "elgamal.h".
	* des.c: Do not include "des.h".
	* cast5.c: Do not include "cast5.h".
	* blowfish.c: Do not include "blowfish.h".
	* arcfour.c: Do not include "arcfour.h".

	* Makefile.am (libcipher_la_DEPENDENCIES): Removed.
	(libcipher_la_LIBADD): Removed.
	Use Automake conditionals for conditional compilation.

2003-04-13  Moritz Schulte  <moritz@g10code.com>

	* cipher.c (gcry_cipher_open): Call REGISTER_DEFAULT_CIPHERS.

	* md.c (gcry_md_list): New member: module.
	(md_enable): New variable: module, changed use of module and
	digest.
	(md_enable): Initialize member: module.
	(md_close): Call _gcry_module_release.

	* cipher.c (gcry_cipher_open): New variable: module, changed use of
	module and cipher.
	(struct gcry_cipher_handle): New member: module.
	(gcry_cipher_open): Initialize member: module.
	(gcry_cipher_close): Call _gcry_module_release.

2003-04-09  Moritz Schulte  <moritz@g10code.com>
	
	* cipher.c: Include "ath.h".
	* md.c: Likewise.
	* pubkey.c: Likewise.

	* cipher.c (ciphers_registered_lock): New variable.
	* md.c (digests_registered_lock): New variable.
	* pubkey.c (pubkeys_registered_lock): New variable.

	* rndlinux.c (gnupgext_version, func_table): Removed definitions.
	(gnupgext_enum_func): Removed function.
	(_gcry_rndlinux_constructor): Removed function.

	* rndegd.c (gnupgext_version, func_table): Removed definitions.
	(gnupgext_enum_func): Removed function.
	(_gcry_rndegd_constructor): Removed function.

	* rndunix.c (gnupgext_version, func_table): Removed definitions.
	(gnupgext_enum_func): Removed function.
	(_gcry_rndunix_constructor): Removed function.

	* rndw32.c (gnupgext_version, func_table): Removed definitions.
	(gnupgext_enum_func): Removed function.
	(_gcry_rndw32_constructor): Removed function.

	* rndegd.c (rndegd_connect_socket): Simplify code for creating the
	egd socket address.
	(rndegd_connect_socket): Call log_fatal use instead of
	g10_log_fatal.
	(egd_gather_random): Renamed to ...
	(rndegd_gather_random): ... here.

2003-04-08  Moritz Schulte  <moritz@g10code.com>

	* rndlinux.c: Do not include "dynload.h".
	* rndunix.c: Likewise.
	* rndw32.c: Likewise.

	* rndegd.c (rndegd_connect_socket): Factored out from ...
	(egd_gather_random): here; call it.
	(egd_socket): New variable.
	(egd_gather_random): Initialize fd with egd_socket, do not declare
	fd static.
	(do_read): Merged few changes from GnuPG. FIXME - not finished?
	Do not include "dynload.h".

	* rndw32.c (gather_random): Renamed to rndw32_gather_random, do
	not declare static.
	(gather_random_fast): Renamed to rndw32_gather_random_fast, do not
	declare static.

	* rndunix.c (gather_random): Renamed to rndunix_gather_random, do
	not declare static.
	* rndegd.c (gather_random): Renamed to rndegd_gather_random, do
	not declare static.
	* rndlinux.c (gather_random): Renamed to rndlinux_gather_random,
	do not declare static.

2003-04-07  Moritz Schulte  <moritz@g10code.com>

	* Makefile.am (libcipher_la_SOURCES): Removed construct.c.
	(libcipher_la_SOURCES): Added sha1.c, sha256.c, rmd160.c, md4.c,
	md5.c, tiger.c and crc.c
	(EXTRA_PROGRAMS): Removed sha1, sha256, rmd160, md4, md5, tiger
	and crc.  Removed definitions: EXTRA_md4_SOURCES,
	EXTRA_md5_SOURCES, EXTRA_rmd160_SOURCES, EXTRA_sha1_SOURCES,
	EXTRA_sha256_SOURCES, EXTRA_tiger_SOURCES and EXTRA_crc_SOURCES,
	BUILT_SOURCES, DISTCLEANFILES.

	* pubkey.c: Do not include "elgamal.h", "dsa.h" and "rsa.h".

	* Makefile.am (libcipher_la_SOURCES): Removed rsa.h, elgamal.h,
	dsa.h, des.h, cast5.h, arcfour.h and blowfish.h.

	* rsa.h: Removed file.
	* elgamal.h: Removed file.
	* dsa.h: Removed file.
	* des.h: Removed file.
	* cast5.h: Removed file.
	* arcfour.h: Removed file.
	* blowfish.h: Removed file.

	* Makefile.am (libcipher_la_SOURCES): Removed dynload.c and
	dynload.h.

	* rsa.c (pubkey_spec_rsa): New variable.
	* dsa.c (pubkey_spec_rsa): New variable.
	* elgamal.c (pubkey_spec_elg): New variable.
	
	* rsa.c (_gcry_rsa_get_info): Removed function.
	* elgamal.c (_gcry_elg_get_info): Removed function.
	* dsa.c (_gcry_dsa_get_info): Removed function.

	* tiger.c (tiger_get_info): Removed function.
	(gnupgext_version, func_table): Removed definitions.
	(gnupgext_enum_func): Removed function.
	(_gcry_tiger_constructor): Removed function.
	
	* sha1.c (sha1_get_info): Removed function.
	(gnupgext_version, func_table): Removed definitions.
	(gnupgext_enum_func): Removed function.
	(_gcry_sha1_constructor): Removed function.

	* sha256.c (sha256_get_info): Removed function.
	(gnupgext_version, func_table): Removed definitions.
	(gnupgext_enum_func): Removed function.
	(_gcry_sha256_constructor): Removed function.

	* rmd160.c (rmd160_get_info): Removed function.
	(gnupgext_version, func_table): Removed definitions.
	(gnupgext_enum_func): Removed function.
	(_gcry_rmd160_constructor): Removed function.

	* md5.c (md5_get_info): Removed function.
	(gnupgext_version, func_table): Removed definitions.
	(gnupgext_enum_func): Removed function.
	(_gcry_md5_constructor): Removed function.

	* md4.c (md4_get_info): Removed function.
	(gnupgext_version, func_table): Removed definitions.
	(gnupgext_enum_func): Removed function.
	(_gcry_md4_constructor): Removed function.

	* crc.c (crc_get_info): Removed function.

	* arcfour.c (do_arcfour_setkey): Changed type of context argument
	to `void *', added local variable for cast, adjusted callers.
	(arcfour_setkey): Likewise.
	(encrypt_stream): Likewise.
	* cast5.c (cast_setkey): Likewise.
	(encrypt_block): Likewise.
	* rijndael.c (rijndael_setkey): Likewise.
	(rijndael_encrypt): Likewise.
	(rijndael_decrypt): Likewise.
	* twofish.c (twofish_setkey): Likewise.
	(twofish_encrypt): Likewise.
	(twofish_decrypt): Likewise.
	* des.c (do_des_setkey): Likewise.
	(do_des_encrypt): Likewise.
	(do_des_encrypt): Likewise.
	(do_tripledes_encrypt): Likewise.
	(do_tripledes_encrypt): Likewise.
	* blowfish.c (bf_setkey: Likewise.
	(encrypt_block): Likewise.
	(decrypt_block): Likewise.
	
	* arcfour.c (encrypt_stream): Likewise.

	* rijndael.c (gnupgext_version, func_table): Removed definitions.
	(gnupgext_enum_func) Removed function.	
	
	* twofish.c (gnupgext_version, func_table): Removed definitions.
	(gnupgext_enum_func) Removed function.	

	* cast5.c (CIPHER_ALGO_CAST5): Removed.

	* blowfish.c (FNCCAST_SETKEY, FNCCAST_CRYPT): Removed macros.
	(CIPHER_ALGO_BLOWFISH): Removed symbol.
	* cast5.c (FNCCAST_SETKEY, FNCCAST_CRYPT): Likewise.
	* des.c (selftest_failed): Removed.
	(initialized): New variable.
	(do_des_setkey): Run selftest, if not yet done.
	(FNCCAST_SETKEY, FNCCAST_CRYPT): Removed macros.

	* arcfour.c (_gcry_arcfour_get_info): Removed function.
	* blowfish.c (_gcry_blowfish_get_info): Removed function.
	* cast5.c (_gcry_cast5_get_info): Removed function.
	* des.c (_gcry_des_get_info): Removed function.
	* rijndael.c (_gcry_rijndael_get_info): Removed function.
	* twofish.c (_gcry_twofish_get_info): Removed function.

	* arcfour.c (cipher_spec_arcfour): New variable.
	* twofish.c (cipher_spec_twofish, cipher_spec_twofish128): New
	variables.
	* rijndael.c (cipher_spec_aes, cipher_spec_aes192,
	cipher_spec256): New variables.
	* des.c (cipher_spec_des, cipher_spec_tripledes): New variables.
	* cast5.c (cipher_spec_cast5): New variable.
	* blowfish.c (cipher_spec_blowfish): Likewise.
	
	* twofish.c: Do not include "dynload.h".
	* rijndael.c: Likewise.
	* des.c: Likewise.
	* cast5.c: Likewise.
	* blowfish.c: Likewise.
	* cipher.c: Likewise.
	* crc.c: Likewise.
	* md4.c: Likewise.
	* md5.c: Likewise.
	* md.c: Likewise.
	* pubkey.c: Likewise.
	* rijndael.c: Likewise.
	* sha1.c: Likewise.
	* sha256.c: Likewise.

	* arcfour.c: Include "cipher.h".
	* twofish.c: Likewise.
	* rijndael.c: Likewise.
	* des.c: Likewise.
	* cast5.c: Likewise.
	* blowfish.c: Likewise.

	* twofish.c (twofish_setkey): Declared argument `key' const.
	(twofish_encrypt): Declared argument `inbuf' const.
	(twofish_decrypt): Likewise.

	* rijndael.c (rijndael_setkey): Declared argument `key' const.
	(rijndael_encrypt): Declared argument `inbuf' const.
	(rijndael_decrypt): Likewise.

	* des.c (do_des_setkey): Declared argument `key' const.
	(do_tripledes_setkey): Likewise.
	(do_des_encrypt): Declared argument `inbuf' const.
	(do_des_decrypt): Likewise.
	(do_tripledes_encrypt): Likewise.
	(do_tripledes_decrypt): Likewise.

	* cast5.c (encrypt_block): Declared argument `inbuf' const.
	(decrypt_block): Likewise.
	(cast_setkey): Declared argument `key' const.

	* blowfish.c (do_bf_setkey): Declared argument `key' const.
	(encrypt_block): Declared argument `inbuf' const.
	(encrypt_block): Likewise.

	

	* cipher.c: Remove CIPHER_ALGO_DUMMY related code.
	Removed struct cipher_table_s.
	Changed definition of cipher_table.
	Removed definition of disabled_algos.
	(ciphers_registered, default_ciphers_registered): New variables.
	(REGISTER_DEFAULT_CIPHERS): New macro.
	(dummy_setkey): Declared argument `key' const.
	(dummy_encrypt_block): Declared argument `inbuf' const.
	(dummy_encrypt_block): Likewise.
	(dummy_encrypt_stream): Likewise.
	(dummy_encrypt_stream): Likewise.
	(dummy_setkey): Use `unsigned char' instead of `byte'.
	(dummy_encrypt_block): Likewise.
	(dummy_decrypt_block): Likewise.
	(dummy_encrypt_stream): Likewise.
	(dummy_decrypt_stream): Likewise.
	(gcry_cipher_register_default): New function.
	(gcry_cipher_lookup_func_id): New function.
	(gcry_cipher_lookup_func_name): New function.
	(gcry_cipher_lookup_id): New function.
	(gcry_cipher_lookup_name): New function.
	(gcry_cipher_id_new): New function.
	(gcry_cipher_register): New function.
	(gcry_cipher_unregister): New function.
	(setup_cipher_table): Removed function.
	(load_cipher_modules): Removed function.
	(gcry_cipher_map_name): Adjusted to use new module management.
	(cipher_algo_to_string): Likewise.
	(disable_cipher_algo): Likewise.
	(check_cipher_algo): Likewise.
	(cipher_get_keylen): Likewise.
	(cipher_get_blocksize): Likewise.
	(gcry_cipher_open): Likewise.
	(struct gcry_cipher_handle): Replaced members algo, algo_index,
	blocksize, setkey, encrypt, decrypt, stencrypt, stdecrypt with one
	member: cipher.
	(gcry_cipher_open): Adjusted code for new handle structure.
	(cipher_setkey): Likewise.
	(cipher_setiv): Likewise.
	(cipher_reset): Likewise.
	(do_ecb_encrypt): Likewise.
	(do_ecb_decrypt): Likewise.
	(do_cbc_encrypt): Likewise.
	(do_cbc_decrypt): Likewise.
	(do_cfb_encrypt): Likewise.
	(do_cfb_decrypt): Likewise.
	(do_ctr_encrypt): Likewise.
	(cipher_encrypt): Likewise.
	(gcry_cipher_encrypt): Likewise.
	(cipher_decrypt): Likewise.
	(gcry_cipher_decrypt): Likewise.
	(cipher_sync): Likewise.
	(gcry_cipher_ctl): Likewise.

	* pubkey.c: Removed struct pubkey_table_s.
	Changed definition of pubkey_table.
	Removed definition of disabled_algos.
	(pubkeys_registered, default_pubkeys_registered): New variables.
	(REGISTER_DEFAULT_PUBKEYS): New macro.
	(setup_pubkey_table): Removed function.
	(load_pubkey_modules): Removed function.
	(gcry_pubkey_register_default): New function.
	(gcry_pubkey_lookup_func_id): New function.
	(gcry_pubkey_lookup_func_name): New function.
	(gcry_pubkey_lookup_id): New function.
	(gcry_pubkey_lookup_name): New function.
	(gcry_pubkey_id_new): New function.
	(gcry_pubkey_register): New function.
	(gcry_pubkey_unregister): New function.
	(gcry_pk_map_name): Adjusted to use new module management.
	(gcry_pk_algo_name): Likewise.
	(disable_pubkey_algo): Likewise.
	(check_pubkey_algo): Likewise.
	(pubkey_get_npkey): Likewise.
	(pubkey_get_nskey): Likewise.
	(pubkey_get_nsig): Likewise.
	(pubkey_get_nenc): Likewise.
	(pubkey_generate): Likewise.
	(pubkey_check_secret_key): Likewise.
	(pubkey_encrypt): Likewise.
	(pubkey_decrypt): Likewise.
	(pubkey_sign): Likewise.
	(pubkey_verify): Likewise.
	(gcry_pk_get_nbits): Likewise.
	(gcry_pk_algo_info): Likewise.

	* md.c: Removed struct md_digest_list_s.
	(digest_list): Changed definition.
	(digests_registered, default_digests_registered): New variables.
	(REGISTER_DEFAULT_DIGESTS): New macro.
	(new_list_item): Removed function.
	(setup_md_table): Removed function.
	(load_digest_module): Removed function.
	(gcry_digest_register_default): New function.
	(gcry_digest_lookup_func_id): New function.
	(gcry_digest_lookup_func_name): New function.
	(gcry_digest_lookup_id): New function.
	(gcry_digest_lookup_name): New function.
	(gcry_digest_id_new): New function.
	(gcry_digest_register): New function.
	(gcry_digest_unregister): New function.
	(GcryDigestEntry): New type.
	(struct gcry_md_context): Adjusted type of `list'.
	(gcry_md_map_name): Adjusted to use new module management.
	(digest_algo_to_string): Likewise.
	(check_digest_algo): Likewise.
	(md_enable): Likewise.
	(md_digest_length): Likewise.
	(md_asn_oid): Likewise.

2003-04-07  Moritz Schulte  <moritz@g10code.com>

	* pubkey.c: Replaced PUBKEY_ALGO_DSA with GCRY_PK_DSA,
	PUBKEY_ALGO_RSA with GCRY_PK_RSA and PUBKEY_ALGO_ELGAMAL with
	GCRY_PK_ELG.

	* dsa.c: Replaced PUBKEY_ALGO_DSA with GCRY_PK_DSA.

2003-04-01  Moritz Schulte  <moritz@g10code.com>

	* des.c: Removed checks for GCRY_CIPHER_3DES and GCRY_CIPHER_DES.

2003-03-31  Moritz Schulte  <moritz@g10code.com>

	* tiger.c (tiger_get_info): Do not declare static.
	* sha256.c (sha256_get_info): Likewise.
	* sha1.c (sha1_get_info): Likewise.
	* rmd160.c (rmd160_get_info): Likewise.
	* md5.c (md5_get_info): Likewise.
	* md4.c (md4_get_info): Likewise.
	* crc.c (crc_get_info): Likewise.

	* md.c (load_digest_module): Call setup_md_table during
	initialization.
	(new_list_item): Link new element into digest_list.

	* cipher.c (do_ctr_decrypt): Made do_ctr_encrypt act as a wrapper
	for do_ctr_encrypt, since these functions are identical.

2003-03-30  Simon Josefsson  <jas@extundo.com>

	* cipher.c (struct gcry_cipher_handle): Add counter field.
	(gcry_cipher_open): Add CTR.
	(cipher_reset): Clear counter field.
	(do_ctr_encrypt, do_ctr_decrypt): New functions.
	(cipher_encrypt, cipher_decrypt): Call CTR functions.
	(gcry_cipher_ctl): Add SET_CTR to set counter.

2003-03-30  Moritz Schulte  <moritz@g10code.com>

	* rsa.c (_gcry_rsa_blind): New function.
	(_gcry_rsa_unblind): New function.
	(_gcry_rsa_decrypt): Use _gcry_rsa_blind and _gcry_rsa_decrypt.

2003-03-26  Moritz Schulte  <moritz@g10code.com>

	* dynload.c (_gcry_enum_gnupgext_pubkeys): Adjust `encrypt' and
	`decrypt' function arguments.
	(_gcry_enum_gnupgext_pubkeys): Likewise.
	* dynload.h: Likewise.
	
	* pubkey.c (dummy_decrypt): Add argument: int flags.
	(dummy_encrypt): Likewise.

	* elgamal.c (_gcry_elg_encrypt): Add argument: int flags.
	(_gcry_elg_decrypt): Likewise.

	* rsa.c (_gcry_rsa_encrypt): Add argument: int flags.
	(_gcry_rsa_decrypt): Likewise.

	* pubkey.c: Add `flags' argument to members `encrypt' and
	`decrypt' of struct `pubkey_table_s'.

	* rsa.h: Add `flags' argument to function declarations.
	* elgamal.h: Likewise.

	* pubkey.c (sexp_data_to_mpi): New variable: int parsed_flags.
	(sexp_data_to_mpi): Set `parsed_flags'.
	(sexp_data_to_mpi): New argument: int *flags.
	(gcry_pk_encrypt): New variable: int flags.
	(gcry_pk_encrypt): Pass `flags' to pubkey_encrypt.
	(pubkey_encrypt): New variable: int flags.
	(pubkey_encrypt): Pass `flags' to pubkey encrypt function.
	(pubkey_decrypt): Likewise.
	(pubkey_decrypt): Pass `flags' to pubkey encrypt function.
	(gcry_pk_encrypt): Include `flags' s-exp in return list.
	(sexp_to_enc): New argument: int *flags.
	(gcry_pk_decrypt): New variable: int flags.
	(gcry_pk_decrypt): Pass `flags' to pubkey_decrypt.
	(sexp_to_enc): New variable: int parsed_flags.
	(sexp_to_enc): Set `parsed_flags'.

2003-03-22  Simon Josefsson  <jas@extundo.com>

	* cipher.c (gcry_cipher_open, do_cbc_encrypt)
	(gcry_cipher_encrypt): Support GCRY_CIPHER_CBC_MAC.
	(gcry_cipher_ctl): Support GCRYCTL_SET_CBC_MAC.

2003-03-19  Werner Koch  <wk@gnupg.org>

	* primegen.c (gen_prime): New args EXTRA_CHECK and EXTRA_CHECK_ARG
	to allow for a user callback.  Changed all callers.
	(_gcry_generate_secret_prime)
	(_gcry_generate_public_prime): Ditto, pass them to gen_prime.
	* rsa.c (check_exponent): New.
	(generate): Use a callback to ensure that a given exponent is
	actually generated.

2003-03-12  Moritz Schulte  <moritz@g10code.com>

	* primegen.c: Initialize `no_of_small_prime_numbers' statically.
	(gen_prime): Remove calculation of `no_of_small_prime_numbers'.

2003-03-03  Moritz Schulte  <moritz@g10code.com>

	* md.c (gcry_md_ctl): Rewritten to use same style like the other
	functions dispatchers.

2003-03-02  Moritz Schulte  <moritz@g10code.com>

	* cipher.c (struct gcry_cipher_handle): New member: algo_index.
	(gcry_cipher_open): Allocate memory for two cipher contexts.
	Initialize algo_index.
	(cipher_setkey): Duplicate context into reserved memory.
	(cipher_reset): New function, which resets the context and clear
	the IV.
	(gcry_cipher_ctl): Call cipher_reset.

2003-02-23  Moritz Schulte  <moritz@g10code.com>

	* cipher.c: Remove (bogus) `digitp' macro definition.
	* md.c: Likewise.

	* blowfish.c (burn_stack): Removed.
	* arcfour.c (burn_stack): Likewise.
	* cast5.c (burn_stack): Likewise.
	* des.c (burn_stack): Likewise.
	* md4.c (burn_stack): Likewise.
	* md5.c (burn_stack): Likewise.
	* random.c (burn_stack): Likewise.
	* rijndael.c (burn_stack): Likewise.
	* rmd160.c (burn_stack): Likewise.
	* sha1.c (burn_stack): Likewise.
	* sha256.c (burn_stack): Likewise.
	* tiger.c (burn_stack): Likewise.
	* twofish.c (burn_stack): Likewise.

	* blowfish.c: Changed all occurences of burn_stack to
	_gcry_burn_stack.
	* arcfour.c: Likewise.
	* cast5.c: Likewise.
	* des.c: Likewise.
	* md4.c: Likewise.
	* md5.c: Likewise.
	* random.c: Likewise.
	* rijndael.c: Likewise.
	* rmd160.c: Likewise.
	* sha1.c: Likewise.
	* sha256.c: Likewise.
	* tiger.c: Likewise.
	* twofish.c: Likewise.

	* arcfour.c (_gcry_arcfour_get_info): Use GCRY_CIPHER_ARCFOUR
	instead of hard-coded value `301'.

2003-01-24  Werner Koch  <wk@gnupg.org>

	* random.c (_gcry_register_random_progress): New.
	(_gcry_random_progress): New.

	* rndlinux.c (gather_random): Call the random progress function. 

2003-01-23  Werner Koch  <wk@gnupg.org>

	* rsa.c (generate): New arg USE_E to request a specific public
	exponent.
	(_gcry_rsa_generate): Ditto.
	* elgamal.c (_gcry_elg_generate): Must add an dummy argument
	instead of USE_E.
	* dsa.c (_gcry_dsa_generate): Ditto.
	* pubkey.c (dummy_generate): Ditto.
	(pubkey_generate): Add USE_E arg and pass it down.
	(gcry_pk_genkey): Detect "rsa-use-e" parameter and pass it to generate.

	* pubkey.c (sexp_to_enc): New arg RET_MODERN.
	(gcry_pk_decrypt): Make use of it to return a real S-expression.
	Return better error codes.
	(gcry_pk_verify): Return better error codes.

2003-01-21  Werner Koch  <wk@gnupg.org>

	* random.c (gcry_random_add_bytes): Add QUALITY argument, let
	function return an error code and disable its core for now.

2003-01-21  Timo Schulz  <twoaday@freakmail.de>

	* random.c (gcry_random_add_bytes): New. Function to add external
	random to the pool.
	
2003-01-20  Simon Josefsson  <jas@extundo.com>

	* crc.c: New.
	* Makefile.am (EXTRA_PROGRAMS, EXTRA_crc_SOURCES): Add crc.c.
	* md.c (gcry_md_get_algo_dlen): Add values for CRC.

2003-01-20  Werner Koch  <wk@gnupg.org>

	* sha256.c: New.
	* bithelp.h (ror): New.
	* Makfile.am: Add sha256.c.
	* md.c (oid_table): Add values for SHA256 et al.
	(gcry_md_get_algo_dlen): Likewise

2003-01-20  Werner Koch  <wk@gnupg.org>

	* pubkey.c (gcry_pk_get_keygrip): Implemented keygrips for DSA
	and ElGamal.

2003-01-17  Werner Koch  <wk@gnupg.org>

	* cipher.c (gcry_cipher_encrypt): Reworked so that the output will
	never contain the plaintext even if the caller did not checked the
	return value.

	* md.c (gcry_md_get_algo): Changed error code to GCRYERR_GENERAL
	because we don't have an invalid md algo but no algorithm enabled.

	* pubkey.c (gcry_pk_genkey): Changed error code for bounds check
	of table parameters to GCRYERR_INTERNAL.

	* md.c (gcry_md_open): Partly reverted Timo's change from
	2002-10-10 by removing the check for the algorithm.  An algorithm
	of 0 is allowed and anyway we should not double check it or check
	it using a different function.  Also fixed the flags check.

	* pubkey.c (gcry_pk_encrypt): Make sure that R_CIPH points to NULL
	on error.
	(gcry_pk_decrypt): Ditto for R_PLAIN.
	(gcry_pk_sign): Ditto for R_SIG.
	(gcry_pk_genkey): Ditto for R_KEY.

2003-01-16  Werner Koch  <wk@gnupg.org>

	* md.c (gcry_md_write): Changed 2nd argument type to void*.
	(gcry_md_hash_buffer): Changed type of boths buffers to void*.
	(gcry_md_setkey): Changed 2nd argument type to void*.

2003-01-15  Werner Koch  <wk@gnupg.org>

	* pubkey.c (sexp_data_to_mpi): New.  This handles pkcs1 padding.
	(gcry_pk_sign, gcry_pk_verify): Use it here.
	(gcry_pk_encrypt): And here.
	(pubkey_verify): Add debug code.
	(sexp_to_enc): Handle flags in the input and return the pkcs1 flag
	in a new parameter.
	(gcry_pk_decrypt): Prepare for future pkcs1 handling.

2002-12-19  Werner Koch  <wk@gnupg.org>

	* random.c (_gcry_random_initialize): New.

2002-12-16  Werner Koch  <wk@gnupg.org>

	* cipher.c: Added a Teletrust specific OID for 3DES.

2002-12-12  Werner Koch  <wk@gnupg.org>

	* md.c: Added another oddball OIW OID (sha-1WithRSAEncryption).

2002-11-23  Werner Koch  <wk@gnupg.org>

	* md.c (load_digest_module): Enlarged checked_algos bitmap.
	* md4.c (func_table):  Fixed entry for md4. 
	Both by Simon Josephson.
	(transform): Copy data to get the alignment straight. Tested only
	on i386.

2002-11-10  Simon Josefsson  <jas@extundo.com>

	* cipher.c (gcry_cipher_open): Don't reject CTS flag.
	(do_cbc_encrypt, do_cbc_decrypt, cipher_encrypt) 
	(gcry_cipher_encrypt, cipher_decrypt)
	(gcry_cipher_decrypt): Support CTS flag.
	(gcry_cipher_ctl): Toggle CTS flag.

2002-11-10  Werner Koch  <wk@gnupg.org>

	* md4.c: New. By Simon Josefsson.
	* Makefile.am (EXTRA_PROGRAMS): Add md4.c. 
	* md.c (oid_table,gcry_md_get_algo_dlen): MD4 support. 

2002-10-14  Werner Koch  <wk@gnupg.org>

	* arcfour.c (do_encrypt_stream): Don't use increment op when
	assigning to the same variable.

2002-10-10  Timo Schulz  <ts@winpt.org>

	* pubkey.c (gcry_pk_genkey): Check boundaries.
	
	* md.c (gcry_md_open): Check that algo is available and only
	valid flag values are used.
	(gcry_md_get_algo): Add error handling.
	
2002-09-26  Werner Koch  <wk@gnupg.org>

	* md.c: Include an OID for TIGER.
	* tiger.c (tiger_get_info): Use a regular OID.

2002-09-17  Werner Koch  <wk@gnupg.org>

	* random.c: Replaced mutex.h by the new ath.h.  Changed all calls.

2002-09-16  Werner Koch  <wk@gnupg.org>

	* arcfour.c (do_encrypt_stream): Use register modifier and modulo.
	According to Nikos Mavroyanopoulos this increases perfromace on
	i386 system noticable.  And I always tought gcc is clever enough.
	* md5.c (transform): Use register modifier.
	* rmd160.c (transform): Ditto.
	* sha1.c (transform): Ditto.  We hope that there are 6 free registers.
	* random.c (gcry_randomize): Rewrote to avoid malloc calls.

	* rndlinux.c (gather_random): Replaced remaining fprintfs by log_*.
	* arcfour.c (do_arcfour_setkey): Ditto.
	* twofish.c (do_twofish_setkey): Ditto.
	* rndegd.c (gather_random): Ditto.
	* rijndael.c (do_setkey): Ditto.
	* random.c (_gcry_random_dump_stats): Ditto. 
	* primegen.c (_gcry_generate_elg_prime): Ditto.
	* des.c (_gcry_des_get_info): Ditto.
	* cast5.c (do_cast_setkey): Ditto.
	* blowfish.c (do_bf_setkey): Ditto.

2002-08-26  Werner Koch  <wk@gnupg.org>

	* des.c (weak_keys): Fixed one entry in the table and compared
	all entries against the literature.
	(selftest): Checksum the weak key table.

2002-08-21  Werner Koch  <wk@gnupg.org>

	* pubkey.c: Enable keygrip calculation for "openpgp-rsa".

2002-08-17  Werner Koch  <wk@gnupg.org>

	* cipher.c (setup_cipher_table): Don't overwrite the DES entry
	with the entry for DUMMY.

2002-08-14  Werner Koch  <wk@gnupg.org>

	* des.c (do_des_setkey,do_des_encrypt, do_des_decrypt): New.
	(_gcry_des_get_info): Support plain old DES.
	* cipher.c (setup_cipher_table): Put DES into the table.

2002-07-25  Werner Koch  <wk@gnupg.org>

	* rndunix.c (_gcry_rndunix_constructor): Prefixed with _gcry_.
	Noted by Stephan Austermuehle.

2002-07-08  Timo Schulz  <ts@winpt.org>

	* rndw32.c: Replaced the m_ memory functions with the real 
	gcry_ functions. Renamed all g10_ prefixed functions to log_.
	
2002-06-12  Werner Koch  <wk@gnupg.org>

	* rsa.c (generate): Use e = 65537 for now.

2002-06-11  Werner Koch  <wk@gnupg.org>

	* pubkey.c (gcry_pk_get_keygrip): Allow a "protected-private-key".

2002-06-05  Timo Schulz  <ts@winpt.org>

	* cipher.c (gcry_cipher_encrypt, gcry_cipher_decrypt):
	Check that the input size is a multiple of the blocksize.
	
2002-05-23  Werner Koch  <wk@gnupg.org>

	* md.c (oid_table): Add an rsadsi OID for MD5.

2002-05-21  Werner Koch  <wk@gnupg.org>

	* primegen.c, elgamal.c, dsa.c (progress): Do not print anything
	by default.  Pass an extra identifying string to the callback and
	reserved 2 argumenst for current and total counters.  Changed the
	register function prototype.

2002-05-17  Werner Koch  <wk@gnupg.org>

	* rndegd.c (rndegd_constructor): Fixed name of register function
	and prefixed the function name with _gcry_.
	* rndw32.c (rndw32_constructor): Ditto.
	* tiger.c (tiger_constructor): Ditto.

	* Makefile.am: Removed all dynamic loading stuff.
	* dynload.c: Ditto. Now only used for the constructor system.

2002-05-15  Werner Koch  <wk@gnupg.org>

	* random.c (gcry_random_bytes,gcry_random_bytes_secure)
	(gcry_randomize): Make sure we are initialized.

2002-05-14  Werner Koch  <wk@gnupg.org>

	Changed license of most files to the LGPL.

2002-05-02  Werner Koch  <wk@gnupg.org>

	* random.c (_gcry_fast_random_poll): Initialize the module so the
	mutex can be used.

	* primegen.c (small_prime_numbers): Moved table from smallprime.c
	* smallprime.c: File removed.

	* des.c (leftkey_swap, rightkey_swap, working_memcmp): Made static.

	* cipher.c (gcry_cipher_map_name): Map "RIJNDAEL" to "AES".
	* rijndael.c (rijndael_get_info): We do only support a 128 bit
	blocksize so it makes sense to change the algorithm strings to
	AES.

	* tiger.c (tiger_final): Removed superfluous token pasting operators.
	* md5.c (md5_final): Ditto.

2002-04-30  Werner Koch  <wk@gnupg.org>

	* cipher.c: Fixed list of copyright years.

2002-03-18  Werner Koch  <wk@gnupg.org>

	* random.c (initialize): Initialize the new pool lock mutex.
	(_gcry_fast_random_poll): Add locking and moved main
	code out to...
	(do_fast_random_poll): new function.
	(read_pool): Use the new function here.
	(get_random_bytes): Add locking.
	(_gcry_update_random_seed_file): Ditto.

2002-03-11  Werner Koch  <wk@gnupg.org>

	* md.c: Add rsaSignatureWithripemd160 to OID table.

2002-02-20  Werner Koch  <wk@gnupg.org>

	* sha1.c: Removed a left over comment note.  The code has been
	rewritten from scratch in 1998.  Thanks to Niels Möller for
	reporting this misleading comment.

2002-02-18  Werner Koch  <wk@gnupg.org>

	* rndunix.c (rndunix_constructor): Use the the new prefixed
	function name.  Reported by Jordi Mallach.

2002-02-10  Werner Koch  <wk@gnupg.org>

	* random.c (mix_pool): Carry an extra failsafe_digest buffer
	around to make the function more robust.

2002-02-08  Werner Koch  <wk@gnupg.org>

	* random.c (add_randomness): Xor new data into the pool and not
	just copy it.  This avoids any choosen input attacks which are not
	serious in our setting because an outsider won't be able to mix
	data in and even then we keep going with a PRNG.  Thanks to Stefan
	Keller for pointing this out.

2002-01-04  Werner Koch  <wk@gnupg.org>

	* pubkey.c (gcry_pk_genkey): Do not release skey - it is static.

	* primegen.c (gen_prime): Of course we should use set_bit
	and not set_highbit to set the second high bit.

2001-12-18  Werner Koch  <wk@gnupg.org>

	* rsa.c (generate): Loop until we find the exact modulus size.
	Changed the exponent to 41.
	(rsa_get_info): s/usage/r_usage/ to avoid shadow warnings.
	* primegen.c (gen_prime): Set 2 high order bits for secret primes.

	* Makefile.am (DISTCLEANFILES): Include construct.c.

2001-12-17  Werner Koch  <wk@gnupg.org>

	* pubkey.c (gcry_pk_get_keygrip): New - experimental.

2001-12-11  Werner Koch  <wk@gnupg.org>

	* cipher.c: Added OIDs for AES.
	(gcry_cipher_mode_from_oid): New.
	(gcry_cipher_map_name): Moved OID search code to ..
	(search_oid): .. new function.

2001-12-10  Werner Koch  <wk@gnupg.org>

	* pubkey.c (gcry_pk_encrypt): Find the signature algorithm by name
	and not by number.
	
	* pubkey.c (gcry_pk_encrypt,gcry_pk_decrypt,gcry_pk_sign)
	(gcry_pk_verify,gcry_pk_testkey, gcry_pk_genkey)
	(gcry_pk_get_nbits): Release the arrays.  Noted by Nikos
	Mavroyanopoulos.

2001-12-06  Werner Koch  <wk@gnupg.org>

	* cipher.c (gcry_cipher_map_name): Look also for OIDs prefixed
	with "oid."  or "OID.".

2001-12-05  Werner Koch  <wk@gnupg.org>

	* pubkey.c (algo_info_table): Fixed entry for openpgp-rsa. 

2001-11-24  Werner Koch  <wk@gnupg.org>

	* pubkey.c: Added the rsaEncryption OID to the tables.
	(sexp_to_key): Add an arg to return the index of the algorithm,
	changed all callers.
	(gcry_pk_sign): Find the signature algorithm by name and not by
	number.
	(gcry_pk_get_nbits): Fixed so that we can now really pass a secret
	key to get the result.
	
	* md.c (gcry_md_map_name): Look also for OIDs prefixed with "oid."
	or "OID." so that an OID string can be used as an S-Exp token.

2001-11-20  Werner Koch  <wk@gnupg.org>

	* md.c (gcry_md_map_name): Lookup by OID if the the name begins
	with a digit.
	(oid_table): New.
	
2001-11-16  Werner Koch  <wk@gnupg.org>

	* md.c (gcry_md_info): New operator GCRYCTL_IS_ALGO_ENABLED.

2001-11-07  Werner Koch  <wk@gnupg.org>

	* md.c (gcry_md_hash_buffer): Close the handle which was left open
	for algorithms other than rmd160.

2001-08-08  Werner Koch  <wk@gnupg.org>

	* rndw32.c (gather_random): Use toolhelp in addition to the NT
	gatherer for Windows2000.  Suggested by Sami Tolvanen.

	* random.c (read_pool): Fixed length check, this used to be one
	byte to strict.  Made an assert out of it because the caller has
	already made sure that only poolsize bytes are requested.
	Reported by Marcus Brinkmann.

2001-08-03  Werner Koch  <wk@gnupg.org>

	* cipher.c (cipher_encrypt, cipher_decrypt): Prepare to return
	errors. We have to change the interface to all ciphers to make
	this really work but we should do so to prepare for hardware
	encryption modules.
	(gcry_cipher_encrypt, gcry_cipher_decrypt): Return the error and
	set lasterr. 
	(gcry_cipher_ctl): Make sure that errors from setkey are returned.

2001-08-02  Werner Koch  <wk@gnupg.org>

	* rndlinux.c (gather_random): casted a size_t arg to int so that
	the format string is correct.  Casting is okay here and avoids
	translation changes. 

	* random.c (fast_random_poll): Do not check the return code of
	getrusage.

	* rndunix.c: Add a signal.h header to avoid warnings on Solaris 7
	and 8.

	* tiger.c (print_abc,print_data): Removed.

	* rijndael.c, des.c, blowfish.c, twofish.c, cast5.c, arcfour.c
	(burn_stack): New.  Add wrappers for most functions to be able to
	call burn_stack after the function invocation. This methods seems
	to be the most portable way to zeroise the stack used. It does
	only work on stack frame based machines but it is highly portable
	and has no side effects.  Just setting the automatic variables at
	the end of a function to zero does not work well because the
	compiler will optimize them away - marking them as volatile would
	be bad for performance.
	* md5.c, sha1.c, rmd160.c, tiger.c (burn_stack): Likewise.
	* random.c (burn_stack): New.
	(mix_pool): Use it here to burn the stack of the mixblock function.

	* primegen.c (_gcry_generate_elg_prime): Freed q at 3 places.
	Thanks to Tommi Komulainen.

	* arcfour.c (arcfour_setkey): Check the minimim keylength against
	bytes and not bits.
	(selftest): Must reset the key before decryption. 

2001-05-31  Werner Koch  <wk@gnupg.org>

	* sha1.c (sha1_init): Made static.

        Changed all g10_ prefixed function names as well as some mpi_
	function names to cope with the introduced naming changes.
	
	* md.c (prepare_macpads): Made key const.

2001-05-28  Werner Koch  <wk@gnupg.org>

	* rndegd.c (gather_random): Removed the use of tty_printf.

2001-03-29  Werner Koch  <wk@gnupg.org>

	* md5.c (md5_final): Fixed calculation of hashed length.  Thanks
	to disastry@saiknes.lv for pointing out that it was horrible wrong
	for more than 512MB of input.
	* sha1.c (sha1_final): Ditto.
	* rmd160.c (rmd160_final): Ditto.
	* tiger.c (tiger_final): Ditto.

	* blowfish.c (encrypt,do_encrypt): Changed name to do_encrypt to
	avoid name clashes with an encrypt function in stdlib.h of
	Dynix/PIX.  Thanks to Gene Carter.
	* elgamal.c (encrypt,do_encrypt): Ditto.

	* twofish.c (gnupgext_enum_func): Use only when when compiled as a
	module.
	* rijndael.c (gnupgext_enum_func): Ditto.

	* tiger.c (tiger_get_info): Return "TIGER192" and not just
	"TIGER".  By Edwin Woudt.
	
	* random.c: Always include time.h - standard requirement.  Thanks
	to James Troup.

	* rndw32.c: Fixes to the macros.

2001-01-11  Werner Koch  <wk@gnupg.org>

	* cipher.c (cipher_encrypt,gcry_cipher_encrypt): Use blocksize and
	not 8.

2000-12-19  Werner Koch  <wk@gnupg.org>

 	Major change:
	Removed all GnuPG stuff and renamed this piece of software
	to gcrypt. 

2000-11-14  Werner Koch  <wk@gnupg.org>

	* dsa.c (test_keys): Replaced mpi_alloc by gcry_mpi_new and
	mpi_free by gcry_mpi_release.
	* elgamal.c (test_keys,generate): Ditto, also for mpi_alloc_secure.
	* rsa.c (test_keys,generate,rsa_verify): Ditto.
	* primegen.c (generate_elg_prime): Ditto.
	(gen_prime): Ditto and removed nlimbs.

	* rsa.c (generate): Allocate 2 more vars in secure memory.

	* Makefile.am (OMIT_DEPENDENCIES): Hack to work around dependency
	problems.

2000-10-09  Werner Koch  <wk@gnupg.org>

	* arcfour.c, arcfour.h: New.
	* cipher.c (cipher_encrypt, cipher_decrypt): Add stream mode.
	(setup_cipher_table): Add Arcfour.
	(gcry_cipher_open): Kludge to allow stream mode.

Wed Oct  4 13:16:18 CEST 2000  Werner Koch  <wk@openit.de>

        * sha1.c (transform): Use rol() macro.  Actually this is not needed
        for a newer gcc but there are still aoter compilers.

        * rsa.c (test_keys): Use new random function. 

        * md.c (gcry_md_setkey): New function to overcome problems with
        const conflics.  
        (gcry_md_ctl): Pass set key to the new functions.

        * rijndael.c: New.
        * cipher.c: Add Rijndael support.

Mon Sep 18 16:35:45 CEST 2000  Werner Koch  <wk@openit.de>

        * rndlinux.c (open_device): Loose random device checking.
        By Nils Ellmenreich.

        * random.c (fast_random_poll): Check ENOSYS for getrusage.
        * rndunix.c:  Add 2 sources for QNX. By Sam Roberts.

        * pubkey.c (gcry_pk_algo_info): Add GCRYCTL_GET_ALGO_USAGE.

        * rsa.c: Changed the comment about the patent.
        (secret): Speed up by using the CRT.  For a 2k keys this
        is about 3 times faster.
        (stronger_key_check): New but unused code to check the secret key.
        * Makefile.am: Included rsa.[ch].
        * pubkey.c: Enabled RSA support.
        (pubkey_get_npkey): Removed RSA workaround.

Mon Jul 31 10:04:47 CEST 2000  Werner Koch  <wk@openit.de>

  * pubkey.c: Replaced all gcry_sexp_{car,cdr}_{data,mpi} by the new
  gcry_sexp_nth_{data,mpi} functions.

Tue Jul 25 17:44:15 CEST 2000  Werner Koch  <wk@openit.de>

  * pubkey.c (exp_to_key,sexp_to_sig,sexp_to_enc,gcry_pk_encrypt,
    gcry_pk_decrypt,gcry_pk_sign,gcry_pk_genkey): Changed to work with
    the new S-Exp interface.

Mon Jul 17 16:35:47 CEST 2000  Werner Koch  <wk@>

  * random.c (gather_faked): Replaced make_timestamp by time(2) again.

Fri Jul 14 19:38:23 CEST 2000  Werner Koch  <wk@>

  * md.c (gcry_md_ctl): Support GCRYCTL_{START,STOP}_DUMP.

  * Makefile.am: Never compile mingw32 as module.

  * Makefile.am: Tweaked module build and removed libtool

  * Makefile.am:  Replaced -O1 by -O. Suggested by Alec Habig.

  * elgamal.c (sign): Removed inactive code.

  * rsa.c, rsa.h: New based on the old module version (only in CVS for now).
  * pubkey.c (setup_pubkey_table): Added commented support for RSA.

  * rndunix.c (waitpid): New. For UTS 2.1.  All by Dave Dykstra.
  (my_popen): Do the FD_CLOEXEC only if it is available
  (start_gatherer): Cope with missing _SC_OPEN_MAX

  * rndunix.c: Add some more headers for QNX. By Sam Roberts.

  * rndegd.c (gather_random): Shortcut level 0.
  * rndunix.c (gather_random): Ditto.
  * rndw32.c (gather_random): Ditto.

  * rndw32.c: Replaced with code from Cryptlib and commented the old stuff.
  * rndw32.c: Add some debuging code enabled by an environment variable.

  * random.c (read_seed_file): Binary open for DOSish system
  (update_random_seed_file): Ditto.
  * random.c [MINGW32]: Include process.h for getpid.
  * random.c (fast_random_poll): Add clock_gettime() as fallback for
  system which support this POSIX.4 fucntion. By Sam Roberts.

  * random.c (read_seed_file): Removed the S_ISLNK test becuase it
  is already covered by !S_ISREG and is not defined in Unixware.
  Reported by Dave Dykstra.
  (update_random_seed_file): Silently ignore update request when pool
  is not filled.

  * random.c (read_seed_file): New.
  (set_random_seed_file): New.
  (read_pool): Try to read the seeding file.
  (update_random_seed_file): New.

  (read_pool): Do an initial extra seeding when level 2 quality random
  is requested the first time.	This requestes at least POOLSIZE/2 bytes
  of entropy.  Compined with the seeding file this should make normal
  random bytes cheaper and increase the quality of the random bytes
  used for key generation.

  * random.c (read_pool): Print a more friendly error message in
  cases when too much random is requested in one call.

  * random.c (fast_random_poll): Check whether RUSAGE_SELF is defined;
  this is not the case for some ESIX and Unixware, although they have
  getrusage().

  * primegen.c (generate_elg_prime): All primes are now generated with
  the lowest random quality level.  Because they are public anyway we
  don't need stronger random and by this we do not drain the systems
  entropy so much.

  * primegen.c (register_primegen_progress): New.
  * dsa.c (register_pk_dsa_progress): New.
  * elgamal.c (register_pk_elg_progress): New.

  * elgamal.c (wiener_map): New.
  (gen_k): Use a much smaller k.
  (generate): Calculate the qbits using the wiener map and
  choose an x at a size comparable to the one choosen in gen_k

  * rmd160.c (rmd160_get_info): Moved casting to the left side due to a
  problem with UTS4.3.	Suggested by Dave Dykstra.
  * sha1.c (sha1_get_info): Ditto.
  * tiger.c (tiger_get_info): Ditto.
  * md5.c (md5_get_info): Ditto
  * des.c (des_get_info): Ditto.
  * blowfish.c (blowfish_get_info): Ditto.
  * cast5.c (cast5_get_info): Ditto.
  * twofish.c (twofish_get_info): Ditto.

Fri Mar 24 11:25:45 CET 2000  Werner Koch  <wk@openit.de>

	* md.c (md_open): Add hmac arg and allocate space for the pads.
	(md_finalize): Add HMAC support.
	(md_copy): Ditto.
	(md_close): Ditto.
	(gcry_md_reset): Ditto.
	(gcry_md_ctl): Ditto.
	(prepare_macpdas): New.

Mon Mar 13 19:22:46 CET 2000  Werner Koch  <wk@openit.de>

	* md.c (gcry_md_hash_buffer): Add support for the other algorithms.

Mon Jan 31 16:37:34 CET 2000  Werner Koch  <wk@gnupg.de>

	* genprime.c (generate_elg_prime): Fixed returned factors which never
	worked for non-DSA keys.

Thu Jan 27 18:00:44 CET 2000  Werner Koch  <wk@gnupg.de>

	* pubkey.c (sexp_to_key): Fixed mem leaks in case of errors.

Mon Jan 24 22:24:38 CET 2000  Werner Koch  <wk@gnupg.de>

	* pubkey.c (gcry_pk_decrypt): Implemented.
	(gcry_pk_encrypt): Implemented.
	(gcry_pk_testkey): New.
	(gcry_pk_genkey): New.
	(pubkey_decrypt): Made static.
	(pubkey_encrypt): Ditto.
	(pubkey_check_secret_key): Ditto.
	(pubkey_generate): Ditto.

Mon Jan 24 13:04:28 CET 2000  Werner Koch  <wk@gnupg.de>

	* pubkey.c (pubkey_nbits): Removed and replaced by ...
	(gcry_pk_get_nbits): this new one.

Wed Dec  8 21:58:32 CET 1999  Werner Koch  <wk@gnupg.de>

	* dsa.c: s/mpi_powm/gcry_mpi_powm/g
	* elgamal.c: Ditto.
	* primegen.c: Ditto.

	* : Replaced g10_opt_verbose by g10_log_verbosity().

	* Makefile.am (INCLUDES): removed intl, add ../gcrypt

Fri Nov 19 17:15:20 CET 1999  Werner Koch  <wk@gnupg.de>

	* dynload.c (cmp_filenames): New to replaced compare_filename() in
	module.
	(register_cipher_extension): Removed the tilde expansion stuff.
	* rndeg.c (my_make_filename): New.

	* : Replaced header util.h by g10lib.h

	* random.c (gather_faked): Replaced make_timestamp by time(2).
	Disabled wrning printed with tty_printf.
	* rndlinux.c (gather_random): Always use fprintf instead of tty_xxx;
	this should be replaced by a callback function.

	* primegen.c (gen_prime): Use gcry_mpi_randomize.
	(is_prime): Ditto.
	* elgamal.c (test_keys): Ditto.
	* dsa.c (test_keys): Ditto.

	* cipher.c (gcry_cipher_close): Die on invalid handle.

Mon Nov 15 21:36:02 CET 1999  Werner Koch  <wk@gnupg.de>

	* elgamal.c (gen_k): Use the new random API.
	(generate): Ditto.
	* dsa.c (gen_k): Ditto.
	(generate): Ditto.

Sat Nov 13 17:44:23 CET 1999  Werner Koch  <wk@gnupg.de>

	* pubkey.c (disable_pubkey_algo): Made static.
	(gcry_pk_ctl): New.

	* random.c (get_random_bits): Renamed to ...
	(get_random_bytes): ... this and made static.
	(gcry_random_bytes): New.
	(gcry_random_bytes_secure): New.
	(randomize_buffer): Renamed to ...
	(gcry_randomize): ...this.

	* md.c (gcry_md_hash_buffer): New.

	* pubkey.c (gcry_pk_algo_info): 4 new commands.
	(pubkey_get_npkey): Made static.
	(pubkey_get_nskey): Made static.
	(pubkey_get_nsig): Made static.
	(pubkey_get_nenc): Made static.

	* pubkey.c: Removed all G10ERR_xxx.
	* cipher.c: Changed all GCRYERR_INV_ALGO to GCRYERR_INV_CIPHER_ALGO.
	* md.c: Changed all GCRYERR_INV_ALGO to GCRYERR_INV_MD_ALGO.
	* cast5.c (cast_setkey): Changed errocodes to GCRYERR_xxx.
	* blowfish.c: Ditto.
	* des.c: Ditto.
	* twofish.c: Ditto.
	* dsa.c: Ditto.
	* elgamal.c: Ditto.

	* g10c.c: Removed

	* cipher.c (gcry_cipher_open): Replaced alloc functions and return NULL
	if we are out of core.
	* dynload.c: Replaced all memory allocation functions.
	* md.c: Ditto.
	* primegen.c: Ditto.
	* pubkey.c: Ditto.
	* random.c: Ditto.
	* rndw32.c: Ditto.
	* elgamal.c: Ditto.
	* dsa.c: Ditto.

Tue Oct 26 14:10:21 CEST 1999  Werner Koch  <wk@gnupg.de>

	* elgamal.c (sign): Hugh found strange code here. Replaced by BUG().

	* cipher.c: Merged with gcrypt/symapi.c.

	* pubkey.c (string_to_pubkey_algo): Renamed function to ...
	(gcry_pk_map_name): ... this.
	(pubkey_algo_to_string): Renamed function to ...
	(gcry_pk_algo_name): ... this.
	(gcry_pk_algo_info): New.
	* pubkey.c: Merged with gcrypt/pkapi.c.

	* md.c (md_reset): Clear finalized; thanks to Ulf Moeller for
	fixing this bug.

	* md.c: Merged with gcrypt/mdapi.c

Wed Sep 15 14:39:59 CEST 1999  Michael Roth <mroth@nessie.de>

	* des.c: Various speed improvements: One bit pre rotation
	  trick after initial permutation (Richard Outerbridge).
	  Finished test of SSLeay Tripple-DES patterns.

Wed Sep 15 16:22:17 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>

	* rndw32.c: New.

Mon Sep 13 10:51:29 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>

	* bithelp.h: New.
	* rmd160.h, sha1.h, md5.h: Use the rol macro from bithelp.h

Tue Sep  7 16:23:36 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>

	* Makefile.am: Fixed seds for latest egcc. By Ollivier Robert.

Mon Sep  6 19:59:08 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>

	* des.c (selftest): Add some testpattern

Mon Aug 30 20:38:33 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>

	* cipher.c (do_cbc_encrypt): Fixed serious bug occuring when not using
	in place encryption. Pointed out by Frank Stajano.

Mon Jul 26 09:34:46 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>

	* md5.c (md5_final): Fix for a SCO cpp bug.

Thu Jul 15 10:15:35 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>

	* elgamal.c (elg_check_secret_key,elg_encrypt
	elg_decrypt,elg_sign,elg_verify): Sanity check on the args.
	* dsa.c (dsa_check_secret_key,dsa_sign,dsa_verify): Ditto.

	* pubkey.c (disable_pubkey_algo): New.
	(check_pubkey_algo2): Look at disabled algo table.
	* cipher.c (disable_cipher_algo): New.
	(check_cipher_algo): Look at disabled algo table.

Wed Jul  7 13:08:40 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>

	* Makefile.am: Support for libtool.

Fri Jul  2 11:45:54 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>

	* dsa.c (gen_k): Changed algorithm to consume less random bytes
	* elgamal.c (gen_k): Ditto.

	* random.c (random_dump_stats): New.

Thu Jul  1 12:47:31 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>

	* primegen.c, elgamal.c, dsa.c (progess): New and replaced all
	fputc with a call to this function.

Sat Jun 26 12:15:59 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>

	* rndegd.c (do_write): s/ssize_t/int/ due to SunOS 4.1 probs.

	* cipher.c (do_cbc_encrypt, do_cbc_decrypt): New.

	* dynload.c (HAVE_DL_SHL_LOAD): Map hpux API to dlopen (Dave Dykstra).
	* Makefile.am (install-exec-hook): Removed.

Sun May 23 14:20:22 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>

	* cipher.c (setup_cipher_table): Enable Twofish

	* random.c (fast_random_poll): Disable use of times() for mingw32.

Mon May 17 21:54:43 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>

	* dynload.c (register_internal_cipher_extension): Minor init fix.

Tue May  4 15:47:53 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>

	* primegen.c (gen_prime): Readded the Fermat test. Fixed the bug
	that we didn't correct for step when passing the prime to the
	Rabin-Miller test which led to bad performance (Stefan Keller).
	(check_prime): Add a first Fermat test.

Sun Apr 18 10:11:28 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>

	* cipher.c (cipher_setiv): Add ivlen arg, changed all callers.

	* random.c (randomize_buffer): alway use secure memory because
	we can't use m_is_secure() on a statically allocated buffer.

	* twofish.c: Replaced some macros by a loop to reduce text size.
	* Makefile.am (twofish): No more need for sed editing.

Fri Apr  9 12:26:25 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>

	* cipher.c (cipher_open): Reversed the changes for AUTO_CFB.

	* blowfish.c: Dropped the Blowfish 160 mode.
	* cipher.c (cipher_open): Ditto.
	(setup_cipher_table): Ditto.  And removed support of twofish128

Wed Apr  7 20:51:39 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>

	* random.c (get_random_bits): Can now handle requests > POOLSIZE

	* cipher.c (cipher_open): Now uses standard CFB for automode if
	the blocksize is gt 8 (according to rfc2440).

	* twofish.c: Applied Matthew Skala's patches for 256 bit key.

Tue Apr  6 19:58:12 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>

	* random.c (get_random_bits): Can now handle requests > POOLSIZE

	* cipher.c (cipher_open): Now uses standard CFB for automode if
	the blocksize is gt 8 (according to rfc2440).

Sat Mar 20 11:44:21 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>

	* rndlinux.c (tty_printf) [IS_MODULE]: Removed.

	* rndegd.c (gather_random): Some fixes.

Wed Mar 17 13:09:03 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>

	* rndegd.c (do_read): New.
	(gather_random): Changed the implementation.

Mon Mar  8 20:47:17 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>

	* dynload.c (DLSYM_NEEDS_UNDERSCORE): Renamed.

Fri Feb 26 17:55:41 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>

	* md.c: Nearly a total rewrote.

Wed Feb 24 11:07:27 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>

	* cipher.c (context): Fixed alignment
	* md.c: Ditto.

	* rndegd.c: New

Mon Feb 22 20:04:00 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>

	* rndegd.c: New.

Wed Feb 10 17:15:39 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>

	* Makefile.am: Modules are now figured out by configure
	* construct.c: New. Generated by configure. Changed all modules
	to work with that.
	* sha1.h: Removed.
	* md5.h: Removed.

	* twofish.c: Changed interface to allow Twofish/256

	* rndunix.c (start_gatherer): Die on SIGPIPE.

Wed Jan 20 18:59:49 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>

	* rndunix.c (gather_random): Fix to avoid infinite loop.

Sun Jan 17 11:04:33 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>

	* des.c (is_weak_key): Replace system memcmp due to bugs
	in SunOS's memcmp.
	(des_get_info): Return error on failed selftest.
	* twofish.c (twofish_setkey): Return error on failed selftest or
	invalid keylength.
	* cast5.c (cast_setkey): Ditto.
	* blowfish.c (bf_setkey): Return error on failed selftest.

Tue Jan 12 11:17:18 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>

	* random.c (random_is_faked): New.

	* tiger.c: Only compile if we have the u64 type

Sat Jan  9 16:02:23 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>

	* rndunix.c (gather_random): check for setuid.

	* Makefile.am: Add a way to staically link random modules

Thu Jan  7 18:00:58 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>

	* md.c (md_stop_debug): Do a flush first.
	(md_open): size of buffer now depends on the secure parameter

Sun Jan  3 15:28:44 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>

	* rndunix.c (start_gatherer): Fixed stupid ==/= bug

1998-12-31  Geoff Keating  <geoffk@ozemail.com.au>

	* des.c (is_weak_key): Rewrite loop end condition.

Tue Dec 29 14:41:47 CET 1998  Werner Koch  <wk@isil.d.shuttle.de>

	* random.c: add unistd.h for getpid().
	(RAND_MAX): Fallback value for Sun.

Wed Dec 23 17:12:24 CET 1998  Werner Koch  <wk@isil.d.shuttle.de>

	* md.c (md_copy): Reset debug.

Mon Dec 14 21:18:49 CET 1998  Werner Koch  <wk@isil.d.shuttle.de>

	* random.c (read_random_source): Changed the interface to the
	random gathering function.
	(gather_faked): Use new interface.
	* dynload.c (dynload_getfnc_fast_random_poll): Ditto.
	(dynload_getfnc_gather_random): Ditto.
	* rndlinux.c (gather_random): Ditto.
	* rndunix.c (gather_random): Ditto.

Sat Dec 12 18:40:32 CET 1998  Werner Koch  <wk@isil.d.shuttle.de>

	* dynload.c (SYMBOL_VERSION): New to cope with system which needs
	underscores.

	* rndunix.c: Rewrote large parts

Thu Dec 10 20:15:36 CET 1998  Werner Koch  <wk@isil.d.shuttle.de>

	* dynload.c (load_extension): increased needed verbosity level.

	* random.c (fast_random_poll): Fallback to a default fast random
	poll function.
	(read_random_source): Always use the faked entroy gatherer if no
	gather module is available.
	* rndlinux.c (fast_poll): Removed.
	* rndunix.c (fast_poll): Removed.


Wed Nov 25 12:33:41 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* rand-*.c: Removed.
	* rndlinux.c : New.
	* rndunix.c : New.
	* random.c : Restructured the interface to the gather modules.
	(intialize): Call constructor functions
	(read_radnom_source): Moved to here.
	* dynload.c (dynload_getfnc_gather_random): New.
	(dynload_getfnc_fast_random_poll): New.
	(register_internal_cipher_extension): New.
	(register_cipher_extension): Support of internal modules.

Sun Nov  8 17:44:36 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* rand-unix.c (read_random_source): Removed the assert.

Mon Oct 19 18:34:30 1998  me,,,  (wk@tobold)

	* pubkey.c: Hack to allow us to give some info about RSA keys back.

Thu Oct 15 11:47:57 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* dynload.c: Support for DLD

Wed Oct 14 12:13:07 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* rand-unix.c: Now uses names from configure for /dev/random.

1998-10-10  SL Baur  <steve@altair.xemacs.org>

	* Makefile.am: fix sed -O substitutions to catch -O6, etc.

Tue Oct  6 10:06:32 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* rand-unix.c (HAVE_GETTIMEOFDAY): Fixed (was ..GETTIMEOFTIME :-)
	* rand-dummy.c (HAVE_GETTIMEOFDAY): Ditto.

Mon Sep 28 13:23:09 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* md.c (md_digest): New.
	(md_reset): New.

Wed Sep 23 12:27:02 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* tiger.c (TIGER_CONTEXT): moved "buf", so that it is 64 bit aligned.

Mon Sep 21 06:22:53 1998  Werner Koch  (wk@(none))

	* des.c: Some patches from Michael.

Thu Sep 17 19:00:06 1998  Werner Koch  (wk@(none))

	* des.c : New file from Michael Roth <mroth@nessie.de>

Mon Sep 14 11:10:55 1998  Werner Koch  (wk@(none))

	* blowfish.c (bf_setkey): Niklas Hernaeus patch to detect weak keys.

Mon Sep 14 09:19:25 1998  Werner Koch  (wk@(none))

	* dynload.c (RTLD_NOW): Now defined to 1 if it is undefined.

Mon Sep  7 17:04:33 1998  Werner Koch  (wk@(none))

	* Makefile.am: Fixes to allow a different build directory

Thu Aug  6 17:25:38 1998  Werner Koch,mobil,,,	(wk@tobold)

	* random.c (get_random_byte): Removed and changed all callers
	to use get_random_bits()

Mon Jul 27 10:30:22 1998  Werner Koch  (wk@(none))

	* cipher.c : Support for other blocksizes
	(cipher_get_blocksize): New.
	* twofish.c: New.
	* Makefile.am: Add twofish module.

Mon Jul 13 21:30:52 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* random.c (read_pool): Simple alloc if secure_alloc is not set.
	(get_random_bits): Ditto.

Thu Jul  9 13:01:14 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* dynload.c (load_extension): Function now nbails out if
	the program is run setuid.

Wed Jul  8 18:58:23 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* rmd160.c (rmd160_hash_buffer): New.

Thu Jul  2 10:50:30 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* cipher.c (cipher_open): algos >=100 use standard CFB

Thu Jun 25 11:18:25 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* Makefile.am: Support for extensions

Thu Jun 18 12:09:38 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* random.c (mix_pool): simpler handling for level 0

Mon Jun 15 14:40:48 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* tiger.c: Removed from dist, will reappear as dynload module

Sat Jun 13 14:16:57 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* pubkey.c: Major changes to allow extensions. Changed the inteface
	of all public key ciphers and added the ability to load extensions
	on demand.

	* misc.c: Removed.

Wed Jun 10 07:52:08 1998  Werner Koch,mobil,,,	(wk@tobold)

	* dynload.c: New.
	* cipher.c: Major changes to allow extensions.

Mon Jun  8 22:43:00 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* cipher.c: Major internal chnages to support extensions.
	* blowfish.c (blowfish_get_info): New and made all internal
	functions static, changed heder.
	* cast5.c (cast5_get_info): Likewise.

Mon Jun  8 12:27:52 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* tiger.c (transform): Fix for big endian

	* cipher.c (do_cfb_decrypt): Big endian fix.

Fri May 22 07:30:39 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* md.c (md_get_oid): Add a new one for TIGER.

Thu May 21 13:24:52 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* cipher.c: Add support for a dummy cipher

Thu May 14 15:40:36 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* rmd160.c (transform): fixed sigbus - I should better
	add Christian von Roques's new implemenation of rmd160_write.

Fri May  8 18:07:44 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* rand-internal.h, rand-unix.c, rand-w32.c, rand_dummy.c: New
	* random.c: Moved system specific functions to rand-****.c

Fri May  8 14:01:17 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* random.c (fast_random_poll): add call to gethrtime.

Tue May  5 21:28:55 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* elgamal.c (elg_generate): choosing x was not correct, could
	yield 6 bytes which are not from the random pool, tsss, tsss..

Tue May  5 14:09:06 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* primegen.c (generate_elg_prime): Add arg mode, changed all
	callers and implemented mode 1.

Mon Apr 27 14:41:58 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* cipher.c (cipher_get_keylen): New.

Sun Apr 26 14:44:52 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* tiger.c, tiger.h: New.

Wed Apr  8 14:57:11 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* misc.c (check_pubkey_algo2): New.

Tue Apr  7 18:46:49 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* cipher.c: New
	* misc.c (check_cipher_algo): Moved to cipher.c
	* cast5.c: Moved many functions to cipher.c
	* blowfish.c: Likewise.

Sat Apr  4 19:52:08 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* cast5.c: Implemented and tested.

Wed Apr  1 16:38:27 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* elgamal.c (elg_generate): Faster generation of x in some cases.

Thu Mar 19 13:54:48 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* blowfish.c (blowfish_decode_cfb): changed XOR operation
	(blowfish_encode_cfb): Ditto.

Thu Mar 12 14:04:05 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* sha1.c (transform): Rewrote

	* blowfish.c (encrypt): Unrolled for rounds == 16
	(decrypt): Ditto.

Tue Mar 10 16:32:08 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* rmd160.c (transform): Unrolled the loop.

Tue Mar 10 13:05:14 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* random.c (read_pool): Add pool_balance stuff.
	(get_random_bits): New.

	* elgamal.c (elg_generate): Now uses get_random_bits to generate x.


Tue Mar 10 11:33:51 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* md.c (md_digest_length): New.

Tue Mar 10 11:27:41 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* dsa.c (dsa_verify): Works.

Mon Mar  9 12:59:08 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* dsa.c, dsa.h: Removed some unused code.

Wed Mar  4 10:39:22 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* md.c (md_open): Add call to fast_random_poll.
	blowfish.c (blowfish_setkey): Ditto.

Tue Mar  3 13:32:54 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* rmd160.c (rmd160_mixblock): New.
	* random.c: Restructured to start with a new RNG implementation.
	* random.h: New.

Mon Mar  2 19:21:46 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* gost.c, gost.h: Removed because they did only contain trash.

Sun Mar  1 16:42:29 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* random.c (fill_buffer): removed error message if n == -1.

Fri Feb 27 16:39:34 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* md.c (md_enable): No init if called twice.

Thu Feb 26 07:57:02 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* primegen.c (generate_elg_prime): Changed the progress printing.
	(gen_prime): Ditto.

Tue Feb 24 12:28:42 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* md5.c, md.5 : Replaced by a modified version of md5.c from
	GNU textutils 1.22.

Wed Feb 18 14:08:30 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* md.c, md.h : New debugging support

Mon Feb 16 10:08:47 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* misc.c (cipher_algo_to_string): New
	(pubkey_algo_to_string): New.
	(digest_algo_to_string): New.


 Copyright 1998,1999,2000,2001,2002,2003,2004,2005,2006
	   2007, 2008, 2009 Free Software Foundation, Inc.

 This file is free software; as a special exception the author gives
 unlimited permission to copy and/or distribute it, with or without
 modifications, as long as this notice is preserved.

 This file is distributed in the hope that it will be useful, but
 WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
 implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
