2011-12-01  Werner Koch  <wk@g10code.com>

	NB: ChangeLog files are no longer manually maintained.  Starting
	on December 1st, 2011 we put change information only in the GIT
	commit log, and generate a top-level ChangeLog file from logs at
	"make dist".  See doc/HACKING for details.

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

	* primegen.c (_gcry_primegen_init): New.

2011-09-15  Werner Koch  <wk@g10code.com>

	* cipher-cbc.c, cipher-cfb.c, cipher-ofb.c, cipher-ctr.c: New.
	* cipher-aeswrap.c: New.
	* cipher-internal.h: New.
	* cipher.c (cipher_context_alignment_t, struct gcry_cipher_handle)
	(CTX_MAGIC_NORMAL, CTX_MAGIC_SECURE, NEED_16BYTE_ALIGNED_CONTEXT)
	(MAX_BLOCKSIZE): Move to cipher-internal.h.
	(do_aeswrap_encrypt, do_aeswrap_encrypt)
	(do_cbc_encrypt, do_cbc_decrypt, do_ctr_encrypt, do_ctr_decrypt)
	(do_ofb_encrypt, do_ofb_decrypt, do_ctr_encrypt): Move to the
	respective new cipher-foo.c files.
	(do_ctr_decrypt): Remove.

2011-09-15  Werner Koch  <wk@g10code.com>

	* pubkey.c (gcry_pk_list): Remove.
	(gcry_pk_unregister): Remove.
	* md.c (gcry_md_list): Remove.
	(gcry_md_unregister): Remove.
	* cipher.c (gcry_cipher_list): Remove.
	(gcry_cipher_unregister): Remove.
	* ac.c: Remove.

2011-06-29  Werner Koch  <wk@g10code.com>

	* cipher.c (cipher_get_keylen): Return zero for an invalid algorithm.
	(cipher_get_blocksize): Ditto.

2011-06-13  Werner Koch  <wk@g10code.com>

	* dsa.c (selftest_sign_1024): Use the raw and not the pkcs1 flag.

	* pubkey.c (gcry_pk_sign): Special case output generation for PKCS1.
	(sexp_data_to_mpi): Parse "random-override" for pkcs1 encryption.
	(pkcs1_encode_for_encryption): Add args RANDOM_OVERRIDE and
	RANDOM_OVERRIDE_LEN.
	(gcry_pk_encrypt): Special case output generation for PKCS1.
	(sexp_data_to_mpi): Use GCRYMPI_FMT_USG for raw encoding.

2011-06-10  Werner Koch  <wk@g10code.com>

	* pubkey.c (gcry_pk_sign): Use format specifier '%M' to avoid
	leading zeroes.  Special case output generation for PSS.
	(gcry_pk_encrypt): Special case output generation for OAEP.
	(sexp_data_to_mpi): Use GCRYMPI_FMT_USG for PSS verify.

2011-06-09  Werner Koch  <wk@g10code.com>

	* pubkey.c (oaep_decode): Make use of octet_string_from_mpi.
	(sexp_to_enc): Skip "random-override".

	* pubkey.c (oaep_encode, pss_encode): Add args RANDOM_OVERRIDE and
	RANDOM_OVERRIDE_LEN.
	(sexp_data_to_mpi): Extract new random-override parameter.

	* pubkey.c (pss_encode, pss_verify): Use VALUE verbatim for MHASH.
	(octet_string_from_mpi): Add arg SPACE.

2011-06-08  Werner Koch  <wk@g10code.com>

	* pubkey.c (pss_encode, pss_verify): Restructure and comment code
	to match rfc-3447.  Replace secure allocs by plain allocs and
	wipememory.  Use gcry_md_hash_buffer.
	(octet_string_from_mpi): New.

2011-06-03  Werner Koch  <wk@g10code.com>

	* pubkey.c (oaep_decode): Add more comments and restructure to
	match the description in RFC-3447.
	(oaep_encode): Check for mgf1 error.  s/dlen/hlen/.

2011-05-31  Werner Koch  <wk@g10code.com>

	* pubkey.c (mgf1): Optimize by using gcry_md_reset.  Re-implement
	for easier readability.
	(oaep_encode): Add more comments and restructure to match the
	description in RFC-3447.

	* pubkey.c (pkcs1_encode_for_signature, oaep_decode): Change
	return value from one MPI to a buffer.
	(gcry_pk_decrypt): Adjust for this change.

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

	* pubkey.c (pkcs1_decode_for_encryption): Change handling of
	leading zero byte.

2011-05-27  Daiki Ueno  <ueno@unixuser.org>

	* pubkey.c (gcry_pk_decrypt): Fix double-free when un-padding
	invalid data.  Thanks to Tom Ritter.

2011-05-24  Daiki Ueno  <ueno@unixuser.org>

	* rsa.c (rsa_verify): Use CMP if given, to check the decrypted
	sig.

	* pubkey.c (sexp_to_enc, sexp_data_to_mpi): Factor out
	CTX initialization to ...
	(init_encoding_ctx): .. new.
	(gcry_pk_verify): Pass verify func and the arg to pubkey_verify.
	(pss_encode, pss_verify, pss_verify_cmp): New.

2011-05-23  Daiki Ueno  <ueno@unixuser.org>

	* pubkey.c (pkcs1_decode_for_encryption, oaep_decode): Fix memleak
	when gcry_mpi_print fails.

2011-05-18  Daiki Ueno  <ueno@unixuser.org>

	* pubkey.c (sexp_data_to_mpi): Factor some code out to ...
	(pkcs1_encode_for_encryption): .. new,
	(pkcs1_encode_for_signature): .. new.
	(pkcs1_decode_for_encryption): New.
	(gcry_pk_decrypt): Do un-padding for PKCS#1 as well as OAEP.
	(sexp_to_enc): Abolish "unpad" flag, which is not necessary since
	we can do un-padding implicitly when "pkcs1" or "oaep" is given.

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

	* pubkey.c (sexp_to_enc, sexp_data_to_mpi): Set LABEL to NULL
	after free.
	(sexp_to_enc, sexp_data_to_mpi): Do not allow multiple encoding
	flags.
	(oaep_encode, oaep_decode, sexp_to_key, sexp_to_sig)
	(sexp_to_enc, sexp_data_to_mpi, gcry_pk_encrypt, gcry_pk_sign)
	(gcry_pk_genkey, _gcry_pk_get_elements): Replace access to ERRNO
	by gpg_err_code_from_syserror.

2011-05-11  Daiki Ueno  <ueno@unixuser.org>

	* pubkey.c (sexp_data_to_mpi): Factor some code out to ...
	(get_hash_algo): .. new.
	(mgf1, oaep_encode, oaep_decode): New.
	(sexp_to_enc): Add arg CTX.  Remove arg RET_WANT_PKCS1.  Support
	OAEP.
	(sexp_data_to_mpi): Add arg CTX.  Support OAEP.
	(gcry_pk_encrypt): Pass a CTX to sexp_data_to_mpi.
	(gcry_pk_decrypt): Pass a CTX tp sexp_to_enc and replace
	WANT_PKCS1.  Implement unpadding for OAEP.
	(gcry_pk_sign): Pass NULL for CTX arg of sexp_data_to_mpi.
	(gcry_pk_verify): Ditto.

2011-04-19  Werner Koch  <wk@g10code.com>

	* cipher.c (gcry_cipher_open): Replace gpg_err_code_from_errno by
	gpg_err_code_from_syserror.

2011-04-11  Werner Koch  <wk@g10code.com>

	* pubkey.c (gcry_pk_get_keygrip): Avoid double free of L2.

	* cipher.c (_gcry_cipher_setctr): Clear unused lastiv info.
	(gcry_cipher_ctl) <GCRYCTL_SET_CTR>: Implement by calling
	_gcry_cipher_setctr.
	(do_ctr_encrypt): Save last counter and reuse it.

	* cipher.c (do_ctr_encrypt): Allow arbitrary length inputs to
	match the 1.4 behaviour.

2011-04-04  Werner Koch  <wk@g10code.com>

	* ecc.c (compute_keygrip): Release L1 while parsing "curve".

	* pubkey.c (gcry_pk_get_keygrip): Always release NAME and L2.
	Reported by Ben Kibbey.

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

	* primegen.c (_gcry_generate_elg_prime): Make sure that PRIME is
	NULL if the called func ever returns an error.

	* pubkey.c (gcry_pk_decrypt): Remove unused var PUBKEY.

2011-03-09  Werner Koch  <wk@g10code.com>

	* kdf.c: New.

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

	* rijndael.c (aesni_cleanup_2_4): New.
	(aesenc_xmm1_xmm0, do_aesni_ctr_4): New.
	(_gcry_aes_ctr_enc): New.
	* cipher.c (struct gcry_cipher_handle): Add CTR_ENC.  Move field
	CTR into an u_ctr union and adjust all users.
	(gcry_cipher_open): Use _gcry_aes_ctr_enc.
	(do_ctr_encrypt): Use bulk mode.

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

	* rijndael.c (u32_a_t): New.
	(do_encrypt_aligned, do_encrypt_aligned): Use the new type to
	avoid problems with strict aliasing rules.

2011-02-16  Werner Koch  <wk@g10code.com>

	* rijndael.c (do_aesni_cfb) [USE_AESNI]: New.
	(_gcry_aes_cfb_enc, _gcry_aes_cfb_dec) [USE_AESNI]: Use new fucntion.

2011-02-15  Werner Koch  <wk@g10code.com>

	* rijndael.c (do_aesni_enc_aligned, do_aesni_dec_aligned): Use
	movdqa for the key but keep using movdqu for the data.
	(do_aesni): Remove alignment detection.  Don't burn the stack.
	(aesni_prepare, aesni_cleanup): New macros.
	(rijndael_encrypt, _gcry_aes_cfb_enc, _gcry_aes_cbc_enc)
	(rijndael_decrypt, _gcry_aes_cfb_dec, _gcry_aes_cbc_dec): Use
	these macros.  Don't burn the stack in the USE_AESNI case.
	(do_setkey): Add disabled code to use aeskeygenassist.

2011-02-14  Werner Koch  <wk@g10code.com>

	* rijndael.c (ATTR_ALIGNED_16): New
	(do_aesni): Do not copy if already aligned.
	(do_encrypt, do_decrypt): Ditto.
	(rijndael_decrypt, rijndael_encrypt): Increase stack burning amount.

	* rijndael.c (RIJNDAEL_context): Reorder fields.  Change fieldname
	ROUNDS to rounds.  Move padlock_key into u1.
	(keySched, keySched2): Rename macros to keyscherr and keyschdec
	and change all users.
	(padlockkey): New macro.  Change all users of padlock_key.
	* cipher.c (NEED_16BYTE_ALIGNED_CONTEXT): Always define if using gcc.
	(struct gcry_cipher_handle): Align U_IV to at least 16 byte.

2011-02-13  Werner Koch  <wk@g10code.com>

	* rijndael.c (USE_AESNI): New.  Define for ia32 and gcc >= 4.
	(m128i_t) [USE_AESNI]: New.
	(RIJNDAEL_context) [USE_AESNI]: Add field use_aesni.
	(do_setkey): Set USE_AESNI for all key lengths.
	(prepare_decryption) [USE_AESNI]: Use aesimc instn if requested.
	(do_aesni_enc_aligned, do_aesni_dec_aligned)
	(do_aesni) [USE_AESNI]: New.
	(rijndael_encrypt, _gcry_aes_cfb_enc, _gcry_aes_cbc_enc)
	(rijndael_decrypt, _gcry_aes_cfb_dec)
	(_gcry_aes_cbc_dec) [USE_AESNI]: Use do_aesni.

2011-02-01  Werner Koch  <wk@g10code.com>

	* pubkey.c (gcry_pk_get_curve): New.
	(sexp_to_key): Add arg OVERRIDE_ELEMS.
	(sexp_elements_extract_ecc): Allow for params only.
	(gcry_pk_get_param): New.
	* ecc.c (ecc_get_curve): New.
	(ecc_get_param_sexp): New.

2011-01-28  Werner Koch  <wk@g10code.com>

	* pubkey.c (gcry_pk_genkey): Hack to insert the used curve name.

2011-01-27  Werner Koch  <wk@g10code.com>

	* ecc.c (fill_in_curve): Remove.
	(generate_curve): Rename to ..
	(fill_in_curve): this.  Remove setting of NAME_OID.
	(ecc_encrypt_raw): Change name of arg DATA to K for better
	readability.  Use ECC_public_key instead of ECC_secret_key.
	Require a caller to pass a complete pkey array.
	(ecc_decrypt_raw): Require a caller to pass a complete skey array.
	(elliptic_curve_t): Add field NAME.
	(fill_in_curve): Set field.
	(generate_key): Add arg R_USED_CURVE.
	(ecc_generate_ext): Return used curve name.

2011-01-13  Andrey Jivsov  <openpgp@brainhub.org>  (wk)

	* ecc.c (ec2os): Do not free passed parameters X and Y.  Adjust
	callers.
	(ecc_encrypt_raw, ecc_decrypt_raw): New.
	(ecdh_names, _gcry_pubkey_spec_ecdh): New.
	* pubkey.c (pubkey_table): Support ECDH.

2010-08-19  Werner Koch  <wk@g10code.com>

	* cipher.c (gcry_cipher_open): Remove double release of the module.
	Fixes bug#1263.

2010-06-10  Jeff Johnson  <n3npq@mac.com>  (wk)

	* ecc.c (ecc_generate_ext): Parse transient-key flag.
	(generate_key): Add arg TRANSIENT_KEY and use it to set the random
	level.

2010-04-12  Brad Hards  <bradh@frogmouth.net>  (wk)

	Spelling fixes.

2010-03-26  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.

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

	* 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-12-10  Werner Koch  <wk@g10code.com>

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

	* cipher.c (do_ctr_encrypt): Add arg OUTBUFLEN.  Check for
	suitable value.  Add check for valid inputlen.  Wipe temporary
	memory.
	(do_ctr_decrypt): Likewise.
	(do_cbc_encrypt, do_cbc_decrypt): Add arg OUTBUFLEN.  Check for
	suitable value.  Move check for valid inputlen to here; change
	returned error from INV_ARG to INV_LENGTH.
	(do_ecb_encrypt, do_ecb_decrypt): Ditto.
	(do_cfb_encrypt, do_cfb_decrypt): Ditto.
	(do_ofb_encrypt, do_ofb_decrypt): Ditto.
	(cipher_encrypt, cipher_encrypt): Adjust for above changes.
	(gcry_cipher_encrypt, gcry_cipher_decrypt): Simplify.

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

	* cipher.c (gcry_cipher_open): Allow for GCRY_CIPHER_MODE_AESWRAP.
	(cipher_encrypt, cipher_decrypt): Ditto.
	(do_aeswrap_encrypt, do_aeswrap_decrypt): New.
	(struct gcry_cipher_handle): Add field marks.
	(cipher_setkey, cipher_setiv): Update marks flags.
	(cipher_reset): Reset marks.
	(cipher_encrypt, cipher_decrypt): Add new arg OUTBUFLEN.
	(gcry_cipher_encrypt, gcry_cipher_decrypt): Pass outbuflen to
	cipher_encrypt.  Replace GPG_ERR_TOO_SHORT by
	GPG_ERR_BUFFER_TOO_SHORT.

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-07-02  Werner Koch  <wk@g10code.com>

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

2009-03-31  Werner Koch  <wk@g10code.com>

	* rsa.c (rsa_check_secret_key): Return GPG_ERR_BAD_SECKEY and not
	GPG_ERR_PUBKEY_ALGO.

2009-02-16  Werner Koch  <wk@g10code.com>

	* rsa.c (generate_x931): Do not initialize TBL with automatic
	variables.
	* whirlpool.c, tiger.c, sha256.c, sha1.c, rmd160.c, md5.c
	* md4.c, crc.c: Remove memory.h.  This is garbage from gnupg.
	Reported by Dan Fandrich.

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, 2010, 2011 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.

Local Variables:
buffer-read-only: t
End:
