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>

	Change ATH code and turn the thread initialization callbacks in
	the API into dummy functions.

	* global.c (global_init): Call _gcry_pimegen_init.

	* gcrypt.h.in (GCRY_THREAD_OPTI ON_VERSION): Bump to 1.
	(GCRY_THREAD_OPTION_PTH_IMPL): Simplify.
	(GCRY_THREAD_OPTION_PTHREAD_IMPL): Simplify.

	* ath.c (ath_read, ath_write): Remove.  They are only used in the
	optional random-daemon.
	(ath_select, ath_waitpid, ath_accept, ath_connect, ath_sendmsg)
	(ath_recvmsg): Remove.  They are not used.
	* ath.h: Remove prototypes and corresponding structure fields.

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

	* ath.c (mutex_init): Rename second arg to FORCE and invert
	logic.  Change all callers.

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

	* gcrypt.h.in (enum gcry_thread_option): Remove deprecated enum.
	(gcry_md_start_debug, gcry_md_stop_debug): Remove deprecated these
	macros.

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

	Removal of the gcry_ac and the module register interfaces.

	* Makefile.am (include_HEADERS): Remove gcrypt-module.h.
	(libgcrypt_la_SOURCES): Add gcrypt-module.h which is now internal
	header.
	* gcrypt-module.h (gcry_md_register, gcry_md_unregister): Remove.
	(gcry_pk_register, gcry_pk_unregister): Remove.
	(gcry_cipher_register, gcry_cipher_unregister): Remove.
	* visibility.h: Include gcrypt-module.h.
	* gcrypt.h.in: Do not include gcrypt-module.h.
	* gcrypt.h.in: Remove all gcry_ac symbols.
	(gcry_pk_list, gcry_md_list, gcry_cipher_list): Remove.
	* visibility.h: Remove all gcry_ac symbols.
	(gcry_pk_list, gcry_md_list, gcry_cipher_list): Remove.
	(gcry_cipher_register, gcry_cipher_unregister, gcry_pk_register)
	(gcry_pk_unregister, gcry_md_register, gcry_md_unregister): Remove.
	* visibility.c: Remove all gcry_ac wrappers.
	(gcry_pk_list, gcry_cipher_list, gcry_md_list): Remove.
	(gcry_cipher_register, gcry_cipher_unregister, gcry_pk_register)
	(gcry_pk_unregister, gcry_md_register, gcry_md_unregister): Remove.
	* libgcrypt.vers: Remove all gcry_ac symbols.
	(GCRYPT_1.2): Rename to GCRYPT_1.6.
	(gcry_pk_list, gcry_md_list, gcry_cipher_list): Remove.
	* libgcrypt.def: Remove all gcry_ac symbols.
	(gcry_pk_list, gcry_md_list, gcry_cipher_list): Remove.
	* global.c (global_init): Remove comment code with a call to
	_gcry_ac_init.

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

	* hmac256.c (main): Fix endless loop when using pipe input and
	option --binary.

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

	* sexp.c (vsexp_sscan): Add new format specifiers 'M' and 'u'.

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

	* cipher.h (pk_operation): New.
	(pk_encoding_ctx): Add new fields: op, nbits, flags, verify_cmp,
	and verify_arg.

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

	* Makefile.am (gcryptrnd_LDADD): Supply $(GPG_ERROR_LIBS) for
	gpg_strerror.

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

	* cipher.h: Remove PUBKEY_FLAG_UNPAD.

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

	* cipher.h (PUBKEY_FLAG_UNPAD): New.
	(enum pk_encoding): New.
	(struct pk_encoding_ctx): New.

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

	* stdmem.c (_gcry_private_malloc_secure, _gcry_private_malloc):
	Set ERRNO on failure.
	* secmem.c (mb_get_new): Set ERRNO on failure.
	(_gcry_secmem_malloc_internal): Ditto.

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

	* global.c (gcry_realloc): Divert to gcry_malloc or gcry_free.

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

	* gcrypt.h.in (gcry_kdf_algos): New.
	(gcry_kdf_derive): New.
	* visibility.c (gcry_kdf_derive): New.
	* visibility.h, libgcrypt.vers, libgcrypt.def: Add gcry_kdf_derive.

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

	* libgcrypt-config.in: Add option --host.
	* libgcrypt.m4: Use AC_PROG_TOOL to find the config script.  Print
	a warning is the config scripts does not match the configure host.

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

	* global.c (gcry_check_version): Do not take the patchlevel in
	account; it is not well defined.

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

	* gcrypt-module.h (gcry_cipher_register, gcry_cipher_unregister)
	(gcry_pk_register, gcry_pk_unregister, gcry_md_register)
	(gcry_md_unregister): Mark as deprecated by the API; in a future
	version the module register feature will be removed.

	* gcrypt.h.in: Attribute all _ac_ functions and types as
	deprecated by the API.

	* hwfeatures.c (detect_ia32_gnuc): Fix AES-NI detection.  Use AND
	instead of SUB for bit testing.

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

	* gcrypt.h.in (GCRYCTL_DISABLE_HWF): New.
	* global.c (_gcry_vcontrol): Support new control code.
	(print_config): Factor list of hwfeatures out to ...
	(hwflist): new.
	(disabled_hw_features): New.
	(global_init): Pass new variable to _gcry_detect_hw_features.
	* hwfeatures.c (_gcry_detect_hw_features): Add arg
	DISABLED_FEATURES and disable detected features.

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

	* g10lib.h (HWF_INTEL_AES): Rename to HWF_INTEL_AESNI.
	* hwfeatures.c (detect_ia32_gnuc): Fix setting of this flag.

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

	* gcrypt.h.in (gcry_pk_get_curve, gcry_pk_get_param): New.
	* libgcrypt.vers (gcry_pk_get_curve, gcry_pk_get_param): Add.
	* libgcrypt.def (gcry_pk_get_curve, gcry_pk_get_param): Add.
	* visibility.c (gcry_pk_get_curve, gcry_pk_get_param): New.
	* cipher-proto.h (pk_extra_spec): Add fields GET_CURVE and
	GET_CURVE_PARM.

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

	* sexp.c (vsexp_sscan): Allow opaque MPIs in "%m".

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

	* g10lib.h (HWF_INTEL_AES): New.
	* global.c (print_config): Print new flag.
	* hwfeatures.c (detect_ia32_gnuc): Detect this flag.

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

	* gcrypt.h.in [!WIN32]: Add INSERT_SYS_SELECT_H autoconf substitute.

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

	* gcrypt.h.in [!__GNUC__ && W32]: Typedef ssize_t and pid_t to
	help building with MSVC.

2010-06-24  Werner Koch  <wk@g10code.com>

	* gcrypt.h.in [W32]: Include time.h and not sys/time.h.

2010-04-19  Marcus Brinkmann  <marcus@g10code.de>

	* misc.c (write2stderr): Dummy variable to silence gcc warning.

2010-04-16  Marcus Brinkmann  <marcus@g10code.de>

	* sexp.c: (sexp_sscan): Make it variable length, and rename the
	old version to ...
	(vsexp_sscan): ... this new function.  Also swap last two arguments.
	(gcry_sexp_create): Remove dummy va_list.
	(gcry_sexp_build): Use vsexp_sscan instead of sexp_sscan.
	(_gcry_sexp_vbuild): Likewise.
	(gcry_sexp_build_array): Remove dummy va_list.
	(gcry_sexp_sscan): Likewise.

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

	Spelling fixes.

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

	* gcrypt.h.in: Add autoconf template to set generated file to
	read-only in an Emacs buffer.

2010-01-21  Werner Koch  <wk@g10code.com>

	* Makefile.am (arch_gpg_error_cflags, arch_gpg_error_libs): New.
	(dumpsexp_CFLAGS): New.
	(dumpsexp_LDADD): Add arch_gpg_error_libs.
	(hmac256_CFLAGS, hmac256_LDADD): Add the arch variables.
	(libgcrypt_la_DEPENDENCIES): Add libcompat.
	* secmem.c (lock_pool): Mark unused args.
	* global.c (do_malloc, gcry_realloc, gcry_free, gcry_calloc)
	(gcry_calloc_secure, gcry_xcalloc, gcry_xcalloc_secure): Use
	gpg_err_set_errno.
	(_gcry_vcontrol): Call _gcry_compat_identification.
	* hmac256.c [__MINGW32CE__]: Include gpg-error.h.
	(_gcry_hmac256_file): Use gpg_err_set_errno.
	(gpg_err_set_errno) [!GPG_ERR_INLINE]: Add macro.
	* g10lib.h: Include libcompat.h.

2010-01-05  Werner Koch  <wk@g10code.com>

	* gcrypt.h.in (GCRY_PK_ECDH): New.

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

	* gcrypt.h.in (GCRY_CIPHER_MODE_AESWRAP): New.

2009-12-08  Marcus Brinkmann  <marcus@g10code.de>

	* Makefile.am (LTRCCOMPILE): Refactor with ...
	(RCCOMPILE): ... this new macro.  Add $(libgcrypt_la_CPPFLAGS).
	(SUFFIXES): Add .lo.
	(.rc.o): Change to ...
	(.rc.lo): ... this implicit rule.
	(gcrypt_res_ldflag): Removed.
	(gcrypt_res): Use libtool object file name here.
	(libgcrypt_la_LDFLAGS): Remove gcrypt_res_ldflag usage.
	(libgcrypt_la_LIBADD): Add gcrypt_res.

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

	* hwfeatures.c (detect_ia32_gnuc): Repalce "=r" by "+r" so that
	HAS-CPUDID is always initialized.  Thanks to Ben Hutchings for
	pointing out this problem.

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

	* ath.h: Include sys/msg.h.

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

	* fips.c (_gcry_initialize_fips_mode): Do not use FIPS mode if
	/proc/.../fips_enabled has insufficient permissions.

	* dumpsexp.c (main): Fix handling multiple files.
	(parse_and_print): Implement hex and octal escaping.

	* sexp.c (unquote_string): Remove superfluous clearing of ESC.
	* dumpsexp.c (parse_and_print): Add missing break.
	(main): Fix return value.
	Reported by Fabian Keil.

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

	* ath.h [HAVE_SYS_SELECT_H]: Include <sys/select.h> for fd_set.
	[!HAVE_SYS_SELECT_H]: Include <sys/time.h>.  Move inclusion of
	config.h to the top.  The actual configure check was already
	there.

	* sexp.c: Remove memory.h.
	* mpi.h: Remove memory.h.  Add string.h.

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

	* ath.h: Include sys/time.h.  Fixes bug#993.

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

	* fips.c (_gcry_initialize_fips_mode): Remove superfluous const
	from static string.  Reported by Albert Chin.
	* hmac256.c (selftest): Ditto and change to unsigned char.

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

	* hmac256.c (finalize): Fix for big endian hosts.

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

	* global.c (gcry_free): Save and restore ERRNO if set.

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

	* sexp.c (get_internal_buffer): New.
	(sexp_sscan): Add format character S.
	* cipher-proto.h (pk_ext_generate_t): Add field EXTRAINFO  changed
	all implementors.

	* cipher-proto.h (pk_ext_generate_t): Simplify.
	(pk_get_param): New.
	(pk_extra_spec_t): Add field GET_PARAM.
	* cipher.h (PUBKEY_FLAG_TRANSIENT_KEY): Remove.
	(_gcry_pubkey_extraspec_elg): New.

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

	* cipher.h (CIPHER_INFO_NO_WEAK_KEY): New.

	* cipher-proto.h (cipher_set_extra_info_t): New.
	(cipher_extra_spec): Add field SET_EXTRA_INFO.

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

	* g10lib.h (GCC_ATTR_FORMAT_ARG): New.
	(_gcry_gettext): Use it.

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

	* global.c (inactive_fips_mode): Move to fips.c.
	(gcry_set_allocation_handler): Factor code out to ...
	* fips.c (_gcry_inactivate_fips_mode): New.
	(_gcry_is_fips_mode_inactive): New.

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

	* gcrypt-module.h (GCRY_MODULE_ID_USER, GCRY_MODULE_ID_USER_LAST):
	New.
	* module.c (MODULE_ID_USER, MODULE_ID_USER_LAST): Define using new
	macros.

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

	* hmac256.c (finalize) [WORDS_BIGENDIAN]: Fix sigbus problem.

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

	* cipher-proto.h (pk_ext_generate_t): Add args QBITS, NAME, DOMAIN.

	* fips.c (fips_new_state): Allow Error => Error transition.

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

	* gcrypt.h.in (gcry_fips_mode_active): New.

	* secmem.c (_gcry_secmem_init): Factor most code out to ..
	(secmem_init): .. new.
	(DEFAULT_POOL_SIZE): Rename to MINIMUM_POOL_SIZE.
	(STANDARD_POOL_SIZE): New.
	(_gcry_secmem_malloc_internal): Don't abort if the pool is not
	initialized but try to out intialize it first and only then print
	an error message and return NULL.  If the pool is not locked while
	in FIPS mode, return NULL.

	* fips.c (FIPS_FORCE_FILE): New constant.  Change the file name to
	"/etc/gcrypt/fips_enabled".
	(enforced_fips_mode): New.
	(_gcry_initialize_fips_mode): Set that flag.
	(_gcry_enforced_fips_mode): New.
	* global.c (inactive_fips_mode): New.
	(_gcry_vcontrol): Take that flag in account for	GCRYCTL_FIPS_MODE_P.
	(gcry_set_allocation_handler): Take care of the enforced fips mdoe
	flag.
	(get_no_secure_memory): New.
	(do_malloc, gcry_is_secure): Use it.

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

	* global.c (print_config): Use y/n for fips mode.

	* fips.c (fips_new_state): Allow transition to Error and
	Fatal-error from Init.

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

	* fips.c [HAVE_SYSLOG]: Include syslog.h.
	(_gcry_initialize_fips_mode, lock_fsm, unlock_fsm)
	(_gcry_fips_signal_error, fips_new_state)
	(_gcry_fips_noreturn) [HAVE_SYSLOG]: Also log via syslog.
	(check_binary_integrity) [HAVE_SYSLOG]: Log failure.
	* global.h [HAVE_SYSLOG]: Include syslog.h.
	(_gcry_global_is_operational) [HAVE_SYSLOG]: Print warning.

	* global.c (_gcry_vcontrol): Use GCRYCTL_INITIALIZATION_FINISHED
	to run power-up tests.  Add unpublished control commands 58-60.

	* global.c (_gcry_global_is_operational): New.
	* g10lib.h (fips_is_operational): Change to call this function.

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

	* fips.c (_gcry_fips_run_selftests): Add arg EXTENDED.
	(run_cipher_selftests, run_digest_selftests, run_hmac_selftests)
	(run_pubkey_selftests): Ditto.
	* cipher-proto.h (selftest_func_t): Add arg EXTENDED

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

	* fips.c: Include string.h.
	(loxtoi_1, loxtoi_2, loxdigit_p): New.
	(check_binary_integrity): Change the format of the expected file.

	* fips.c (_gcry_fips_run_selftests): Run random tests before the
	pubkey tests.

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

	* gcrypt.h.in (GCYRCTL_SELFTEST): New.
	* global.c (_gcry_vcontrol): Implement.
	* fips.c (_gcry_fips_run_selftests): Do state transitions only if
	in fips mode.  Return an error code.

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

	* stdmem.c: Re-indented.

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

	* fips.c (_gcry_initialize_fips_mode): Changed /proc file to test
	for FIPS mode.

	* cipher-proto.h (pk_compute_keygrip_t): New.
	(pk_extra_spec): Add field comp_keygrip.

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

	* hwfeatures.c (_gcry_detect_hw_features): Disable hardware
	detection in FIPS mode.

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

	* global.c (_gcry_vcontrol): Allow running selftests from error
	state.
	(gcry_set_outofcore_handler): Only print a warning if used in FIPS
	mode.
	(gcry_xmalloc, gcry_xrealloc, gcry_xmalloc_secure, gcry_xstrdup):
	Ignore an outofcore handler in FIPS mode.

	* fips.c (_gcry_fips_test_error_or_operational): New.
	(fips_new_state): Allow transition from error into selftest.
	Disallow error to init.

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

	* fips.c (fips_new_state): Print state transitions only at
	verbosity level of 2.
	(reporter): Likewise.

	* cipher-proto.h (pk_ext_generate_t): New.
	(pk_extra_spec): Add member ext_generate.
	* cipher.h (PUBKEY_FLAG_TRANSIENT_KEY): New.

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

	* hmac256.c (_gcry_hmac256_file): New.
	(main): New option --binary.
	* fips.c (check_binary_integrity): New.
	(_gcry_fips_run_selftests): Run it.

	* global.c (_gcry_vcontrol) <GCRYCTL_UPDATE_RANDOM_SEED_FILE>:
	Check for fips operational state.
	(_gcry_vcontrol) <GCRYCTL_FAST_POLL>: Ditt.

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

	* misc.c (_gcry_log_printhex): New.

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

	* g10lib.h (gcry_assert): New.  use this at almost all places
	where we used a plain assert.
	* misc.c (_gcry_assert_failed): New.
	(_gcry_bug): Also use func variant for ISO-C99.

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

	* visibility.c, visibility.h (gcry_mpi_lshift): New.
	* libgcrypt.vers, libgcrypt.def, gcrypt.h.in: Ditto.

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

	* gcrypt.h.in (gcry_cipher_setkey): Replace macro by function.
	(gcry_cipher_setiv):  Ditto.
	(gcry_cipher_setctr): Ditto.
	* visibility.c (gcry_cipher_setkey, gcry_cipher_setiv)
	(gcry_cipher_setctr): New.
	* visibility.h (gcry_cipher_setkey, gcry_cipher_setiv)
	(gcry_cipher_setctr): New.
	* libgcrypt.vers (gcry_cipher_setkey, gcry_cipher_setiv)
	(gcry_cipher_setctr): New.
	* libgcrypt.def (gcry_cipher_setkey, gcry_cipher_setiv)
	(gcry_cipher_setctr): New.

	* hmac256.h, hmac256.c: New.
	* Makefile.am (hmac256_SOURCES): New.
	* Makefile.am (bin_PROGRAMS): Add hmac256.

	* gcrypt.h.in (struct gcry_thread_cbs): Change type of OPTION to
	unsigned int.  Although this is a type change it does not make a
	difference.
	* ath.c (ath_install): Take the version of the option field in
	account.

	* visibility.c (gcry_pk_encrypt, gcry_pk_decrypt, gcry_pk_sign)
	(gcry_pk_verify, gcry_pk_testkey, gcry_pk_genkey)
	(gcry_pk_get_nbits, gcry_pk_get_keygrip)
	(gcry_md_open, gcry_md_copy, gcry_md_enable)
	(gcry_md_write, md_final, gcry_md_ctl, gcry_md_setkey)
	(gcry_md_hash_buffer, gcry_md_get_algo, gcry_md_info)
	(gcry_md_is_enabled)
	(gcry_cipher_open, gcry_cipher_encrypt)
	(gcry_cipher_decrypt, gcry_cipher_ctl)
	(gcry_cipher_algo_info): Check whether the library is operational.

	* cipher-proto.h: New.
	* cipher.h: Include cipher-proto.h.
	* visibility.h: Remove duplicate macro definitions.  Remove
	gcry_cipher_register, gcry_md_register,	gcry_pk_register macros.
	* visibility.c: Include cipher-proto.h.
	(gcry_cipher_register): Pass dummy extra args to the internal
	register function.
	(gcry_md_register, gcry_pk_register): Ditto.
	* g10lib.h (struct gcry_module): Add field EXTRASPEC.
	* module.c (_gcry_module_add): Add arg EXTRASPEC.  Changed all
	callers to pass NULL.

	* fips.c: New.
	* gcrypt.h.in (GCRYCTL_FIPS_MODE_P): New.
	* global.c (global_init): Call fips initialization.
	(_gcry_vcontrol): Add GCRYCTL_FIPS_MODE_P code.
	(print_config): Add config item fips-mode.
	(gcry_set_allocation_handler): Do not allow the use of custom
	allocation handlers.
	(gcry_set_outofcore_handler): Ditto.
	(_gcry_get_debug_flag): Do not return any debug flags in fips mode.
	* misc.c (_gcry_logv): Signal fips error on BUG or FATAL.
	(_gcry_fatal_error): Ditto.

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

	* Makefile.am: Include librandom.la.

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

	* missing-string.c (vasprintf): Remove.  It is not used.  Reported
	by Simon Josefsson.

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

	* gcrypt.h.in (gcry_ac_em_t, gcry_ac_scheme_t): Remove trailing
	comma for full C-89 compatibility.

2008-01-21  Marcus Brinkmann  <marcus@g10code.de>

	* hwfeatures.c (detect_ia32_gnuc): Fix inline asm.

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

	* visibility.c (gcry_md_hash_buffer): Don't use return vor a void
	function.  Hey, why does gcc not complain about this?
	(gcry_ac_io_init_va): Ditto.

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

	* hwfeatures.c (detect_ia32_gnuc): Depend on ENABLE_PADLOCK_SUPPORT.

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

	* misc.c (_gcry_logv): Use abort for error levels fatal and bug as
	this is more approriate for a library.  Terminate the secmem
	before doing so.
	(_gcry_fatal_error): Terminate secmem before abort.
	* secmem.c (_gcry_secmem_malloc_internal): Use log_bug instead of
	exit.

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

	* hwfeatures.c (detect_ia32_gnuc): Detect Padlock engine.

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

	* gcrypt.h.in (_GCRY_GCC_ATTR_MALLOC): Fixed gcc version check.
	Reported by Gabriele Monti.

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

	* global.c (gcry_control): Factor most code out to ..
	(_gcry_vcontrol): .. new.
	* sexp.c (_gcry_sexp_vbuild): New.
	* mpi.h (_gcry_mpi_set, _gcry_mpi_set_ui, _gcry_mpi_invm): Remove
	prototypes as they are already in gcrypt.h.

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

	* sexp.c (gcry_sexp_nth_string): Replace by _gcry_sexp_nth_string.

	* visibility.h, visibility.c: New.
	* g10lib.h: Include visibility.h instead of gcrypt.h.
	* globals.c (_gcry_malloc): Rename to ..
	(do_malloc): .. this.

	* hwfeatures.c: New.
	* global.c (global_init): Detect features.
	(print_config): Print them.

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

	* dumpsexp.c: New.
	* Makefile.am (bin_PROGRAMS): Install it.

	* getrandom.c (print_version): Use new standard license line.
	* gcryptrnd.c (print_version): Ditto.

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

	* gcrypt.h.in (GCRY_THREAD_OPTION_PTH_IMPL): Factror network
	related code out so that the prototypes can be adjusted for W32.
	(_GCRY_THREAD_OPTION_PTH_IMPL_NET): New.

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

	* libgcrypt.m4: Print found version on success.

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

	* gcrypt.h.in (gcry_ac_io_t): Add name for anonymous union, and mark
	all members as internal (actually: deprecated).

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

	* Makefile.am (.rc.lo): New to replace gmake specific suffix rule.

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

	* libgcrypt.def (gcry_sexp_nth_string): New.
	* Makefile.am (EXTRA_DIST): Add libgcrypt.def.

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

	* global.c (print_config): Print ciphers, digests and pubkeys.

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

	* cipher.h, gcrypt.h.in: Add Camellia.

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

	* gcrypt.h.in (GCRYCTL_PRINT_CONFIG): New.
	(GCRYCTL_SET_RNDEGD_SOCKET): New.
	* global.c (gcry_control): Add GCRYCTL_PRINT_CONFIG and
	GCRYCTL_SET_RNDEGD_SOCKET.
	(print_config): New.
	* misc.c (_gcry_log_info_with_dummy_fp): New.

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

	* gcrypt.h.in (gcry_sexp_nth_string): New.

	* sexp.c (gcry_sexp_nth_data): Factored code out to ...
	(sexp_nth_data): ... new.
	(gcry_sexp_nth_string): New.
	(gcry_sexp_nth_mpi): Reimplemented in terms of sexp_ntd_data.

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

	* secmem.c (init_pool): Use sysconf() if available to determine
	page size.

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

	* mpi.h (mpi_mod): New.
	(mpi_new, mpi_snew): New.

	* gcrypt.h.in: Add GCRY_PK_ECDSA.

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

	* gcrypt.h.in (GCRY_THREAD_OPTION_PTHREAD_IMPL): Fixed typo
	introduced by me on 2006-10-23.

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

	* gcrypt.h.in (gcry_ac_id_to_name, gcry_ac_name_to_id): Mark as
	deprecated.

	* libgcrypt.def (gcry_fast_random_poll): Removed - it is a macro.
	(gcry_cipher_register, gcry_cipher_unregister): New.
	(gcry_md_register, gcry_md_unregister): New.
	(gcry_pk_register, gcry_pk_unregister): New.
	(gcry_ac_data_from_sexp, gcry_ac_data_to_sexp): New.
	(gcry_ac_io_init, gcry_ac_io_init_va): New.
	(gcry_ac_data_encrypt_scheme, gcry_ac_data_decrypt_scheme): New.
	(gcry_ac_data_sign_scheme, gcry_ac_data_verify_scheme): New.

	* missing-string.c: Include stdio.h for the vsprintf prototype.

	* ath.h (struct ath_ops) [_WIN32]: Use int instead of socklen_t.

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

	* libgcrypt.def (gcry_create_nonce, gcry_fast_random_poll)
	(gcry_md_debug): New.

	* libgcrypt-config.in: Remove duplicates from --cflags and --libs.
	Print a error for option --thread.

	* gcrypt.h.in (gcry_sexp_sprint): Change BUFFER from char* to void*.
	(gcry_md_ctl): Change BUFFER from unsigned char* to void*.
	(gcry_md_debug): New.
	(gcry_cipher_encrypt, gcry_cipher_decrypt): Change buffer args to
	void*.
	(gcry_randomize): Change BUFFER to void.
	(gcry_create_nonce): Ditto.

	* libgcrypt.vers (gcry_md_debug): New.

	* sexp.c (gcry_sexp_sprint): Ditto.
	(normalize): Make P unsigned.
	(gcry_sexp_nth_data): Cast return value to char*.
	(sexp_sscan): Fix sign/unsigned conflicts.
	(whitespacep): Change P to char*.
	(unquote_string): Change STRING to char*.
	(convert_to_hex): Change DEST to char*.
	(convert_to_string): Change DEST and P to char*.
	(convert_to_token): Chnage DEST to char*.
	(gcry_sexp_canon_len): Change DISPHINT to unsigned char*.

	* gcrypt-module.h (gcry_pk_spec): Made ALIASES a const.
	(gcry_md_write_t): Changed BUF to a const void*.

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

	* gcrypt.h.in: Include stdlib.h for the sake fo the trheading
	macros.  Suggested by Andreas Metzler.

	* secmem.c (ptr_into_pool_p): New.
	(_gcry_private_is_secure): Implement in terms of new function.
	(BLOCK_VALID): Removed.  Replaced all users by new function.

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

	* secmem.c (_gcry_private_is_secure): Fixed severe implementation
	flaw.  Might be the reason for some of the more obscure bugs.
	(MB_WIPE_OUT): Use wipememory2.

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

	* gcrypt.h.in (GCRY_THREAD_OPTION_PTHREAD_IMPL): Add some cast for
	use by C-doubleplus.  In general I don't like this but due to
	public demand I give up ;-)

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

	* global.c (gcry_control) <GCRYCTL_INIT_SECMEM>: Return an error
	if the memory could not be locked.
	* secmem.c (not_locked): New.
	(_gcry_secmem_get_flags): Return that flag.
	* secmem.h (GCRY_SECMEM_FLAG_NOT_LOCKED): New.

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

	* module.c (_gcry_module_id_new): Don't assign modules in the range
	the range of 1024..4096.
	* gcrypt.h (GCRY_MD_USER, GCRY_MD_USER_LAST): New
	(GCRY_PK_USER, GCRY_PK_USER_LAST): New.
	(GCRY_CIPHER_USER, GCRY_CIPHER_USER_LAST): New.

2006-10-12  Marcus Brinkmann  <marcus@g10code.de>

	* gcrypt.h.in: Replace socklen_t with gcry_socklen_t.

2006-10-11  Marcus Brinkmann  <marcus@g10code.de>

	* gcrypt.h.in: Replace version by @VERSION@.

2006-10-10  Marcus Brinkmann  <marcus@g10code.de>

	* gcrypt.h: Add fallback type for socklen_t.  Move to ...
	* gcrypt.h.in: ... this file.
	* Makefile.am (EXTRA_DIST): Add gcrypt.h.in.

2006-09-04  Werner Koch  <wk@g10code.com>

	* gcrypt.h: Removed some trailing comma in enums.

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

	* global.c (gcry_xrealloc): Pass secure flag to outofcore handler.

	* gcrypt.h (GCRY_CIPHER_SEED): New.

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

	* gcrypt.h (GCRYCTL_FAKED_RANDOM_P): New.

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

	* secmem.c (init_pool): Close FD after establishing the mapping.

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

	* ath.c (ath_mutex_destroy): Microoptimize destruction of unused
	statitically initialized mutexes.  Suggested by Victor Stinner
	<victor.stinner@inl.fr>.

	* gcrypt.h (GCRY_THREAD_OPTION_PTHREAD_IMPL,
	(GCRY_THREAD_OPTION_PTH_IMPL): Add missing initializers to
	suppress gcc warning.
	Submitted by Victor Stinner <victor.stinner@inl.fr>.

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

	* ath.c: Avoid warning about double defined type byte and other
	hacks to let it build for W32 (backported from LIBGCRYPT-1-2-BRANCH).
	* ath.h, gcrypt.h, tests/benchmark.c, src/types.h: Likewise.

	* gcrypt.h: Revert last change, and instead:
	[_WIN32 || __WIN32__]: Do not include <sys/socket.h>, but
	<winsock2.h> and <ws2tcpip.h>.
	Suggested by Simon Josefsson <jas@extundo.com>.

	* Makefile.am (install-data-local, uninstall-local, %.lo,
	(install-def-file, uninstall-def-file): New targets.
	(LTRCCOMPILE, gcrypt_res, gcrypt_res_ldflag, no_undefined,
	(export_symbols, gcrypt_deps): New variables.
	* versioninfo.rc.in: New file.
	* libgcrypt.def: New file from ../w32-dll/libgcrypt.def.

	* gcrypt.h [!HAVE_SYS_SOCKET_H]: Do not include sys/socket.h, but
	the appropriate windows socket header.

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

	* global.c (gcry_xcalloc, gcry_xcalloc_secure): Made safe against
	integer overflow.

	* sexp.c (make_space): Return an error on out of core.
	(sexp_sscan): Remove all xmalloc style calls and return proper
	error codes on allocation failures.
	(gcry_sexp_find_token): Ditto.
	(gcry_sexp_nth):

	* sexp.c (gcry_sexp_find_token): Re-indented and removed a cruft
	"while(level);" which fortunately had no effect.

2006-04-28  Werner Koch  <wk@g10code.com>

	* gcrypt.h (GCRY_MD_SHA224): Change value from 306 to 11 to match
	the use in OpenPGP.  There has been no release yet, so we can
	safely do it.

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

	* gcrypt.h (gcry_ctl_cmds): New commands:
	GCRYCTL_SET_RANDOM_DAEMON_SOCKET, GCRYCTL_USE_RANDOM_DAEMON.
	* global.c (gcry_control): Handle new commands, calling
	_gcry_set_random_daemon_socket() and _gcry_use_random_daemon().

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

	* gcrypt.h (GCRY_PK_USAGE_CERT, GCRY_PK_USAGE_AUTH)
	(GCRY_PK_USAGE_UNKN): New.

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

	* gcrypt.h (gcry_ac_eme_pkcs_v1_5): Removed members: key, handle;
	added member: key_size.

	* secmem.c (MB_FLAG_ACTIVE): Write braces around MB_FLAG_ACTIVE
	definition.

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

	* getrandom.c: New.

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

	* gcryptrnd.c: New.

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

	* gcrypt.h: Add GCRY_MD_SHA224.

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

	* gcrypt.h: Update comments for functions: gcry_cipher_algo_name,
	gcry_pk_algo_name.

2005-10-31  Moritz Schulte  <moritz@g10code.com>

	* global.c: Added documentation.

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

	* global.c (global_init): Use gcry_error_t instead of
	gcry_err_code_t; use goto instead of if constructs.

	* stdmem.c: Inserted description of the layered memory management
	in Libgcrypt.

	* g10lib.h: Removed G10_I18N_H related check; it seems to be a
	GnuPG relict (Libgcrypt does not define this symbol anywhere).
	(FLAG_MODULE_DISABLED): Don't forget parantheses around shifted
	value.

	Removed GCC_ATTR_PURE macro definitions, since gcrypt.h does
	already contain such a macro named _GCRY_GCC_ATTR_PURE, which we
	can use here as well.

	Likewise for GCC_ATTR_MALLOC and _GCRY_GCC_ATTR_MALLOC.

	* stdmem.h: Use _GCRY_GCC_ATTR_MALLOC instead of GCC_ATTR_MALLOC.
	* secmem.h: Likewise.

2005-10-09  Moritz Schulte  <moritz@g10code.com>

	* global.c (gcry_control): Call global_init() after passing thread
	cbs to ath.  global_init() MUST to be called AFTER passing the cbs
	to ath and BEFORE calling library functions, which make use of
	ath.  This change combines cbs installing with ath initialization
	and thus removes the need to call other library initialization
	functions inbetween like e.g. gcry_check_version().

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

	* ath.c: Assign copyright to FSF.
	* ath.h: Likewise.

2005-06-25  Moritz Schulte  <moritz@g10code.com>

	* Makefile.am (pkgconfigdir, pkgconfig_DATA): Removed variables.
	* libgcrypt.pc.in: Removed file - we do not want to support a
	second, foreign configuration system.

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

	* global.c (gcry_xstrdup): Removed superfluous strcpy call.

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

	* Makefile.am (pkgconfigdir, pkgconfig_DATA): New; support for
	pkgconfig provided by Albert Chin.
	* libgcrypt.pc.in (Cflags): New file.

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

	* g10lib.h (_gcry_ac_init): Declare.
	* global.c (global_init): Call _gcry_ac_init; don't forget to set
	err.

2005-04-14  Werner Koch  <wk@g10code.com>

	* sexp.c (whitespacep): New.
	(sexp_sscan): Replaced isdigit and isspace by whitespacep and
	digitp.

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

	* gcrypt.h (gcry_md_algos): Added: GCRY_MD_WHIRLPOOL.
	* cipher.h (_gcry_digest_spec_whirlpool): Declare.

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

	* libgcrypt.vers: Added: gcry_ac_io_init, gry_ac_io_init_va.

	* gcrypt.h (gcry_ac_data_read_cb_t, gcry_ac_data_write_cb_t,
	gcry_ac_io_mode_t, gcry_ac_io_type_t, gcry_ac_io_t): New types.
	(gcry_ac_io_init_va): Declare function.
	(gcry_ac_data_encode, gcry_ac_data_decode,
	gcry_ac_data_encrypt_scheme, gcry_ac_data_decrypt_scheme,
	gcry_ac_data_sign_scheme, gcry_ac_data_verify_scheme): Use
	gcry_ac_io_type_t objects instead of memory strings directly.

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

	* libgcrypt.vers: Added: gcry_ac_data_to_sexp() and
	gcry_ac_data_from_sexp().

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

	* global.c (_gcry_malloc): Make sure ERRNO is set if we return
	NULL.  Remove unneeded initialization of M to allow the compiler
	to catch errors.
	(gcry_realloc): Make sure ERRNO is set if we return NULL>

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

	* gcrypt.h: Declare new functions: gcry_ac_data_encrypt_scheme,
	gcry_ac_data_decrypt_scheme, gcry_ac_data_sign_scheme,
	gcry_ac_data_verify_scheme, gcry_ac_data_encode,
	gcry_ac_data_decode, gcry_ac_data_to_sexp, gcry_ac_data_from_sexp.
	New types: gcry_ac_emsa_pkcs_v1_5_t, gcry_ac_ssa_pkcs_v1_5_t,
	gcry_md_algo_t.
	New enumeration lists: gcry_ac_scheme_t, gcry_ac_em_t.
	* libgcrypt.vers: Added new ac functions.
	* g10lib.h: Declare function: _gcry_pk_get_elements.
	* mpi.h (mpi_get_ui): New macro.
	Declare function: _gcry_mpi_get_ui.

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

	* gcrypt.h: Removed 3 trailing commas from enums.  Noted by Heiko
	Stamer.

2004-09-21  Werner Koch  <wk@g10code.de>

	* sexp.c (sexp_sscan): Removed C++ style comments.  Noted by Yoann
	Vandoorselaere.

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

	* global.c: Do not include <assert.h>.
	* sexp.c: Likewise.
	* module.c: Likewise.
	* misc.c: Likewise.

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

	* secmem.c (_gcry_secmem_init): Try to lock pool into core not
	only when running with root privileges.

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

	* secmem.h (_gcry_secmem_set_flags,_gcry_secmem_get_flags):
	Removed __pure__.
	(GCRY_SECMEM_FLAG_NO_WARNING): Put macro value into parens.

	* secmem.c (_gcry_secmem_init): Defer printing of the warning.

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

	* gcrypt.h: Include <sys/time.h>, thanks to Simon Josefsson.

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

	* gcrypt.h: Added GCRYCTL_FAST_POLL.
	(gcry_fast_random_poll): New.
	* global.c (gcry_control) <INITIALIZATION_FINISHED>: Do only basic
	random subsystem init.
	(gcry_control) <FAST_POLL>: New.

2004-04-22  Marcus Brinkmann  <marcus@g10code.de>

	* libgcrypt.m4: Quote first argument to AC_DEFUN.

2004-04-15  Werner Koch  <wk@gnupg.org>

	* secmem.c (_gcry_secmem_malloc_internal): Removed old extra info
	error output.
	(_gcry_secmem_term): Use wipememory2 here.

	* misc.c (_gcry_burn_stack): Use wipememory to avoid optimizations.

	* string.c: Removed.  Was never used.
	* global.c (gcry_strdup): Replaced by the version from string.c
	(gcry_xstrdup): Rewritten.
	* gcrypt.h: Removed duplicate prototype for gcry_strdup.

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

	* secmem.c (_gcry_secmem_realloc): Fixed double unlock; bug
	manifested itself due to the more rigorous checking in the changed
	ath.h

	* libgcrypt-config.in (Options): Ignore the obsolete --threads
	option for now.

2004-03-17  Marcus Brinkmann  <marcus@g10code.de>

	* libgcrypt-config.in (includedir, libdir): Quote'em.  Use
	$gpg_error_cflags and $gpg_error_libs.  Fix construction of
	$includes.

2004-03-14  Marcus Brinkmann  <marcus@g10code.de>

	* libgcrypt-config.in (includedir, libdir): New variables.  For
	--cflags, don't test $cflags.  Also check against /include for the
	GNU/Hurd.  Don't overwrite but extend $cflags_final.  Likewise for
	--libs.

2004-03-10  Marcus Brinkmann  <marcus@g10code.de>

	* Makefile.am (ltlib_libgcrypt_pthread, ltlib_libgcrypt_pth): Removed.
	(lib_LTLIBRARIES): Remove those variables from here.
	(libgcrypt_pthread_la_SOURCES, libgcrypt_pthread_la_LDFLAGS,
	(libgcrypt_pthread_la_DEPENDENCIES, libgcrypt_pthread_la_LIBADD,
	(libgcrypt_pth_la_SOURCES, libgcrypt_pth_la_LDFLAGS,
	(libgcrypt_pth_la_DEPENDENCIES, libgcrypt_pth_la_LIBADD,
	(noinst_LTLIBRARIES): Removed.
	(libgcrypt_real_la_SOURCES): Merge with ...
	(libgcrypt_la_SOURCES): ... likewise.
	(libgcrypt_real_la_DEPENDENCIES): Merge with ...
	(libgcrypt_la_DEPENDENCIES): ... this.
	(libgcrypt_real_la_LIBADD): Merge with ...
	(libgcrypt_la_LIBADD): ... this.
	* libgcrypt-config.in (libs_pthread, libs_pth, cflags_pth)
	(cflags_pthread, thread_module, thread_modules): Removed.
	(Options): Remove --thread option from help output.  If the option
	is specified, output an error and exit.
	For --cflags and --libs option, remove pth and pthread from output.
	* gcrypt.h: Include <sys/types.h> and <sys/socket.h>.
	(enum gcry_ctl_cmds): Add GCRYCTL_SET_THREAD_CBS.
	(gcry_thread_cbs): New struct.
	* global.c (gcry_control): Implement GCRYCTL_SET_THREAD_CBS.
	(global_init): Don't call ath_init here.
	* ath.h: Rewritten.
	* ath.c: Rewritten.

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

	* libgcrypt-config.in: s/--soname-number/--api-version/
	* libgcrypt.m4: Changed test for API version.

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

	* libgcrypt.m4: Optionally check the SONAME number.

	* libgcrypt-config.in: Add option --soname-number

2004-03-01  Marcus Brinkmann  <marcus@g10code.de>

	* Makefile.am (libgcrypt_la_SOURCES): Add ath.c.
	* ath.c (ath_init): Add missing function.

	* Makefile.am (ath_pth_src): Removed.
	(ath_pthread_src): Removed.
	(libgcrypt_la_SOURCES): Remove ath-compat, $(ath_pth_src) and
	$(ath_pthread_src).
	* ath-compat.c, ath-pth-compat.c, ath-pthread-compat.c: Files
	removed.

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

	* gcrypt.h (GCRY_PRIME_CHECK_AT_GOT_PRIME)
	(GCRY_PRIME_CHECK_AT_FINISH),
	(GCRY_PRIME_CHECK_AT_MAYBE_PRIME): New.

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

	* libgcrypt-config.in: Ignore setting of --prefix.

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

	* gcrypt.h: Added GCRY_CIPHER_RFC2268_128, alsthough not yet
	supported.

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

	* gcrypt.h: Added GCRY_CIPHER_RFC2268_40.

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

	* secmem.c (_gcry_secmem_init): Do not print the "not locked into
	core warning" if the NO_WARNING flag has been set.

	* sexp.c (sexp_sscan): Allocate result in secure memory if BUFFER
	is in secure memory. Switch to secure memory for the a secure %b
	format item. Extra paranoid wipe on error.
	(gcry_sexp_release): Added paranoid wiping for securely allocated
	S-expressions.

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

	* ath.h: Include <config.h>.

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

	* gcrypt.h: Adjusted declarations of: gcry_ac_data_set,
	gcry_ac_data_get_name, gcry_ac_data_get_index,
	gcry_ac_key_pair_generate, gcry_ac_key_test,
	gcry_ac_key_get_nbits, gcry_ac_key_get_grip.

	* gcrypt.h (GCRY_AC_FLAG_DATA_NO_BLINDING): Removed symbol.
	(GCRY_AC_FLAG_DEALLOC, GCRY_AC_FLAG_COPY)
	(GCRY_AC_FLAG_NO_BLINDING): New symbols.

	* global.c (gcry_strdup): Removed function.
	* string.c: New file.
	* Makefile.am (libgcrypt_real_la_SOURCES): Added: string.c.
	* string.c (gcry_strdup): New function.
	* gcrypt.h (gcry_strdup): Declare.

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

	* g10lib.h (wipememory, wipememory2): New; taken from gnupg.

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

	* global.c (gcry_strdup): Don't copy the string after a malloc
	error.

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

	* sexp.c (sexp_sscan): Implemented "%b" format specifier.

2003-11-11  Moritz Schulte  <mo@g10code.com>

	* libgcrypt.m4: Do not set prefix when calling libgcrypt-config.
	Thanks to Nikos Mavroyanopoulos.

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

	* cipher.h (small_prime_numbers): Removed declaration.
	(PUBKEY_FLAG_NO_BLINDING): Put braces around shift.

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

	* cipher.h (_gcry_sha1_has_buffer): New.

	* gcrypt.h (gcry_create_nonce): New.

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

	* libgcrypt.vers (_gcry_generate_elg_prime): Removed this symbol;
	gnutls does not need it anymore.

	* secmem.c (mb_get_new): s/pool/block/ due to global pool.

	* misc.c (gcry_set_log_handler): s/logf/f/ to avoid shadowing
	warning against a builtin.

	* ath-pth-compat.c: cast pth_connect to get rid of the const
	prototype.

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

	* ath.h (ATH_MUTEX_INITIALIZER): Removed spurious semicolon.

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

	* libgcrypt-config.in: Include libs/cflags of libgpg-error.

	* sexp.c (sexp_sscan): Cleaned up, deallocate scanned sexp on
	error.

	* module.c (MODULE_ID_MIN): New symbol, use it.

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

	* gcrypt.h (gcry_pk_testkey): Doc fix.

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

	* libgcrypt-config.in: Fix --algorithms option.

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

	* gcrypt.h (gcry_err_code): Use GPG_ERR_INLINE instead of
	__inline__.

	* secmem.c (lock_pool): Don't print the warning for certain
	systems, handle ENOMEM.

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

	* secmem.c (_gcry_secmem_dump_stats): Fixed format sepcifier for a
	size_t.  Reported by Stephane Corthesy.

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

	* global.c (_gcry_malloc): Handle the no_secure_memory option.

	* gcrypt.h (gcry_prime_group_generator): New.
	(gcry_prime_release_factors): New.

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

	* sexp.c (sexp_sscan): Check that parenthesis are matching.

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

	* g10lib.h: Declare: _gcry_malloc.
	(GCRY_ALLOC_FLAG_SECURE): New symbol.

	* global.c (_gcry_malloc): New function...
	(gcry_malloc): ... use it.
	(gcry_malloc_secure): Likewise.

	* ath.c: Change License to LGPL.
	* ath-pthread-compat.c: Likewise.
	* ath-pthread.c: Likewise.
	* ath-pth-compat.c: Likewise.
	* ath-pth.c: Likewise.
	* ath.h: Likewise.
	* ath-compat.c: Likewise.

	* secmem.c (_gcry_secmem_realloc): Do not forget to release secmem
	lock.  Thanks to low halo for triggering this bug.

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

	* gcrypt.h (_GCRY_ERR_SOURCE_DEFAULT): Removed cruft.
	(gcry_prime_check_func_t): Renamed arg for clarity.

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

	* gcrypt.h (GCRY_PRIME_FLAG_SPECIAL_FACTOR): New symbol.

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

	* gcrypt.h (gcry_random_level_t): New type.
	(gcry_prime_check_func_t): Likewise.
	(GCRY_PRIME_FLAG_SECRET): New symbol.
	(gcry_prime_generate, gcry_prime_check): Declare functions.

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

	* Makefile.am (libgcrypt_pth_la_LDFLAGS): Removed PTH_CFLAGS cruft.

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

	* global.c (gcry_control): Remove call to ath_deinit.

	* Makefile.am (libgcrypt_real_la_DEPENDENCIES): Fixed.
	(libgcrypt_real_la_LIBADD): Fixed.
	Removed unecessary variables.

	* libgcrypt-config.in: Adjusted script for new thread handling.

	* Makefile.am: New version, based on GPGMEs Makefile.am.

	* ath.c, ath-compat.c, ath.h, ath-pth.c, ath-pth-compat.c,
	ath-pthread.c, ath-pthread-compat.c: New files, merged from GPGME.
	* ath.c, ath.h, ath-pthread.c, ath-pth.c: Removed files.

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

	* global.c (gcry_realloc): Remove FIXME about `clearing out
	realloced memory', since _gcry_secmem_realloc takes care of
	overwriting old memory.

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

	* module.c (_gcry_module_release): Don't act if module is NULL.

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

	* gcrypt.h (enum gcry_ac_id): Added: GCRY_AC_ELG_E.
	Reverted change: use gcry_md_flags enumeration list instead of
	defines.

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

	* global.c (gcry_control): Add GCRYCTL_SET_RANDOM_SEED_FILE and
	GCRYCTL_UPDATE_RANDOM_SEED_FILE.
	* gcrypt.h: Ditto.  Renamed index to idx, so avoid warning
	related to the old index function.

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

	* global.c (gcry_err_code_from_errno, gcry_err_code_to_errno)
	(gcry_err_make_from_errno, gcry_error_from_errno): New functions.

	* gcrypt.h: Declared: gcry_err_code_from_errno,
	gcry_err_code_to_errno, gcry_err_make_from_errno,
	gcry_error_from_errno.

	* Makefile.am (include_HEADERS): Added: gcrypt-module.h.

	* gcrypt.h: Include <gcrypt-module.h>.

	* gcrypt-module.h: New file.

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

	* gcrypt.h (gcry_mpi_scan, gcry_mpi_print): API change.
	(gcry_mpi_dump): New.

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

	* gcrypt.h: Declared: gcry_ac_key_data_get.
	(gcry_pk_spec): Renamed member `sexp_names' into `aliases'.

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

	* gcrypt.h (gcry_md_oid_spec_t): New type.
	(gcry_md_spec): New member: oids.

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

	* gcrypt.h (gcry_cipher_oid_spec_t): New type.
	(gcry_cipher_spec): New member: oids;

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

	* gcrypt.h (gcry_mpi_set_opaque): Add a warning comment.

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

	* secmem.c (compress_pool): Remove function, since unused blocks
	are automatically concatenad.

	* gcrypt.h: Bumped version number up to 1.1.42-cvs.

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

	* gcrypt.h (gcry_cipher_spec): New member: aliases.

	* Makefile.am (noinst_PROGRAMS, testapi_SOURCES, testapai_LDADD,
	benchmark_SOURCES, benchmark_LDADD): Removed.

	* benchmark.c, testapi.c: Removed files.

	* mpi.h: Removed disabled typedef.
	* g10lib.h: Likewise.

	* benchmark.c, g10lib.h, gcrypt.h, global.c, module.c, sexp.c:
	Used gcry_err* wrappers for libgpg-error symbols.

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

	* global.c: Likewise.

	* gcrypt.h: New type: gcry_error_t, gcry_err_code_t and
	gcry_err_source_t.
	(gcry_err_make, gcry_error, gcry_err_code, gcry_err_source): New
	functions.

	* global.c (gcry_strerror): New function.
	(gcry_strsource): New function.

	* gcrypt.h: New symbol: GCRY_CIPHER_TWOFISH128.

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

	* gcrypt.h (enum gcry_md_flags): Removed, used define instead,
	since that is more common than an enumeration list when it comes
	to flags that can be bitwise ORed.

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

	* global.c: Use new types for handlers.

	* gcrypt.h: Declare: gcry_ac_data_copy.

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

	* sexp.c (gcry_sexp_build_array): Use dummy argument pointer.
	Thanks to Simon Josefsson <jas@extunde.com>.

	* gcrypt.h: Declare: gcry_cipher_list, gcry_pk_list, gcry_md_list.

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

	* gcrypt.h: Declare: gcry_cipher_register, gcry_cipher_unregister,
	gcry_md_register, gcry_md_unregister, gcry_pk_register,
	gcry_pk_unregister.
	(gcry_cipher_spec): Removed member: algorithm.
	(gcry_pk_spec): Likewise.
	(gcry_md_spec): Likewise.
	Adjusted declarations: gcry_cipher_register, gcry_pk_register,
	gcry_md_register.

	* module.c: Replaced all occurences of `id' with `mod_id', since
	`id' is a keyword in obj-c.

	* gcrypt.h (gcry_cipher_spec): Renamed member `id' to `algorithm'.
	(gcry_pk_spec): Likewise.
	(gcry_md_spec): Likewise.

	* cipher.h: Removed types: gcry_pubkey_generate_t,
	gcry_pubkey_check_secret_key_t, gcry_pubkey_encrypt_t,
	gcry_pubkey_decrypt_t, gcry_pubkey_sign_t, gcry_pubkey_verify_t,
	gcry_pubkey_get_nbits_t, gcry_pk_spec_t, gcry_digest_init_t,
	gcry_digest_write_t, gcry_digest_final_t, gcry_digest_read_t,
	gcry_digest_spec_t, gcry_cipher_setkey_t, gcry_cipher_encrypt_t,
	gcry_cipher_decrypt_t, gcry_cipher_stencrypt_t,
	gcry_cipher_stdecrypt_t, gcry_cipher_spec_t.

	* gcrypt.h: New types: gcry_pk_generate_t,
	gcry_pk_check_secret_key_t, gcry_pk_encrypt_t, gcry_pk_decrypt_t,
	gcry_pk_sign_t, gcry_pk_verify_t, gcry_pk_get_nbits_t,
	gcry_pk_spec_t, gcry_md_init_t, gcry_md_write_t, gcry_md_final_t,
	gcry_md_read_t, gcry_md_spec_t, gcry_cipher_setkey_t,
	gcry_cipher_encrypt_t, gcry_cipher_decrypt_t,
	gcry_cipher_stencrypt_t, gcry_cipher_stdecrypt_t,
	gcry_cipher_spec_t, gcry_module_t.

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

	* module.c (_gcry_module_list): New function.

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

	* module.c (_gcry_module_lookup): Fixed typo.

	* gcrypt.h: Added all definitions and declarations necessary for
	the new ac interface.

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

	* g10lib.h: Added declarations: _gcry_pk_module_lookup,
	_gcry_pk_module_release.

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

	* benchmark.c (cipher_bench): Adjusted for new API of get_blklen
	and get_keylen.

	* gcrypt.h (gcry_cipher_get_algo_blklen)
	(gcry_cipher_get_algo_keylen): Replaced macro by funcion.

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

	* cipher.h: Renamed types GcryDigestSpec, GcryCipherSpec and
	GcryPubkeySpec into: gcry_digest_spec_t, gcry_cipher_spec_t and
	gcry_pubkey_spec_t.
	(gcry_pubkey_spec): Defined member `id' as unsigned.
	(gcry_digest_spec): Likewise.
	(gcry_cipher_spec): Likewise.

	* module.c (_gcry_module_id_new): New function.
	(_gcry_module_add): Generate a new ID via _gcry_module_id_new in
	case `id' is zero.

	* g10lib.h, module.c: Replace old type GcryModule with newer one:
	gcry_module_t.

	* module.c (_gcry_module_add): Added argument `id', use it.

	* g10lib.h: Added declaration: _gcry_module_lookup_id.
	(_gcry_module_add): Added argument `id'.

	* module.c (_gcry_module_lookup_id): New function.

	* g10lib.h (struct gcry_module): New member: id.

	* gcrypt.h: New type: gcry_handler_progress_t,
	gcry_handler_alloc_t, gcry_haandler_secure_check_t,
	gcry_handler_realloc_t, gcry_handler_free_t,
	gcry_handler_no_mem_t, gcry_handler_error_t, gcry_handler_log_t.
	Use new types.

	* cipher.h: Include <gcrypt.h>.
	New types: gcry_pk_generate_t, gcry_pk_check_secret_key_t,
	gcry_pk_encrypt_t, gcry_pk_decrypt_t, gcry_pk_sign_t,
	gcry_pk_verify_t, gcry_pk_get_nbits_t, gcry_md_init_t,
	gcry_md_write_t, gcry_md_final_t, gcry_md_read_t,
	gcry_cipher_setkey_t, gcry_cipher_encrypt_t,
	gcry_cipher_decrypt_t, gcry_cipher_stencrypt_t,
	gcry_cipher_stdecrypt_t.
	Use new types.

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

	* Makefile.am (AM_CFLAGS): Added: @GPG_ERROR_CFLAGS@.

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

	* g10lib.h: Replace last occurences of old type names with newer
	names (i.e. replace MPI with gcry_mpi_t).
	* mpi.h: Likewise.
	* sexp.c: Likewise.

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

	* testapi.c (test_genkey): Use gpg_strerror instead of
	gcry_strerror.

	* global.c (gcry_control): Fixed typo.

	* misc.c (_gcry_fatal_error): Use gpg_strerror instead of
	gcry_strerror.

	* types.h (STRLIST): Removed type since it is not used.

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

	* global.c (global_init): Call: _gcry_cipher_init, _gcry_md_init,
	_gcry_pk_init.

	* g10lib.h: Declare: _gcry_cipher_init, _gcry_md_init,
	_gcry_pk_init.

	* global.c (gcry_strerror): Remove compatibility code.

	* Makefile.am: Remove support libgpg-error special handling.
	(AM_CPPFLAGS): Add @GPG_ERROR_CFLAGS@

	* gcrypt.h: Likewise.

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

	* gcrypt.h (gcry_md_get_algo): Reverted to old API.  This is a
	convenience function anyway and error checking is not approriate.
	(gcry_md_is_enabled): New.
	(gcry_md_is_secure): Replaced macro by function and reverted to old
	API.

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

	* gcrypt.h (GCRYERR): Define _GCRY_ERR_SOURCE_DEFAULT instead of
	GPG_ERR_SOURCE_DEFAULT, so that libgpg-error still works despite
	the use of the old gcrypt error codes.
	(gcry_md_copy): Swapped arguments.

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

	* Makefile.am: Support for libgpg-error.

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

	* sexp.c (gcry_sexp_create): Expect sane error values from
	gcry_sexp_canon_len instead of the `historical' values.

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

	* ath.c, ath.c, ath-pth.c, ath-pthread.c, benchmark.c, cipher.h,
	g10lib.h, gcrypt.h, global.c, misc.c, missing-string.c, module.c,
	mpi.h, secmem.c, secmem.h, sexp.c, stdmem.c, stdmem.h, testapi.c,
	types.h: 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.

	* gcrypt.h: Re-organized checking for gcc features; New macro:
	_GCRY_GCC_ATTR_DEPRECATED.
	Include copy of libgpg-error's gpg-error.h in order to make it
	easy to build libgcrypt without needing libgpg-error.h.

	(GCRY_MPI, GcryMPI, GCRY_SEXP, GcrySexp, GCRY_CIPHER_HD,
	GcryCipherHd, GCRY_MD_HD, GcryMDHd): Declared deprecated.
	(gcry_mpi_t, gcry_sexp_t, gcry_cipher_hd_t, gcry_md_hd_t): New
	types.

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

	* sexp.c (sexp_sscan): New argument: arg_list, adjusted all
	callers.
	(ARG_NEXT): New macro.
	(sexp_sscan): Use ARG_NEXT for receiving format string arguments.
	(gcry_sexp_build_array): New function.

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

	* gcrypt.h: Added some comments describing the gcry_sexp_*
	functions.
	Include <gpg-error.h> instead of <gpg/error.h>.

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

	* sexp.c (OLDPARSECODE): Removed macro...
	(gcry_sexp_canon_len): ... and do not use it.

	* gcrypt.h (gcry_errno): Removed declaration.

	* g10lib.h (string_to_pubkey_algo, pubkey_algo_to_string,
	pubkey_nbits): Removed declarations for non-existing functions.

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

	* cipher.h (is_RSA, is_ELGAMAL): Removed macros.

	* g10lib.h (set_lasterr): Removed macro.
	(_gcry_set_lasterr): Removed declaration.

	* gcrypt.h: Changed declarations for: gcry_pk_algo_info,
	gcry_md_open, gcry_md_copy, gcry_md_algo_info, gcry_md_info,
	gcry_md_get_algo, gcry_random_add_bytes.

	(gcry_md_is_secure): Adjust macro for new API.

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

	* gcrypt.h: Changed declarations for: gcry_cipher_open,
	gcry_cipher_info, gcry_cipher_algo_info.
	(gcry_cipher_get_algo_keylen): Adjuster for new
	gcry_cipher_algo_info interface.
	(gcry_cipher_get_algo_blklen): Likewise.

	* global.c (gcry_errno): Removed function.
	(gcry_strerror): Do not use gcry_errno.
	(_gcry_set_lasterr): Removed function.
	(last_ec): Removed variable.

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

	* gcrypt.h (enum gcry_cipher_algos): Make Serpent IDs do not
	conflict with OpenPGP.  Reported by Timo Schulz.

	* global.c (gcry_control): Fixed name of enum list.

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

	* cipher.h (gcry_cipher_spec): Adjust return type of `setkey' for
	libgpg-error.
	(gcry_pubkey_spec): Adjust return type of `generate',
	`check_secret_key', `encrypt', `decrypt', `sign' and `verify' for
	libgpg-error.

	* sexp.c (gcry_sexp_canon_len): Adjusted for libgpg-error.
	(gcry_sexp_create): Likewise.
	(gcry_sexp_new): Likewise.
	(sexp_sscan): Likewise.
	(gcry_sexp_build): Likewise.
	(gcry_sexp_sscan): Likewise.

	* module.c (_gcry_module_add): Likewise.

	* global.c (last_ec): Change type to gpg_error_t.
	(gcry_control): Adjust for libgpg-error.
	(gcry_errno): Likewise.
	(gcry_strerror): Likewise.
	(_gcry_set_lasterr): Likewise.
	(gcry_xmalloc): Likewise.
	(gcry_xrealloc): Likewise.

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

	* types.h: Merged code from GnuPG regarding U64_C.

	* missing-string.c (strsep): Removed function.

	* g10lib.h: Removed declarations: strsep, strlwr.

	* secmem.c (secmem_lock): New variable.
	(SECMEM_LOCK, SECMEM_UNLOCK): New macros.
	(_gcry_secmem_set_flags): Use SECMEM_LOCK and SECMEM_UNLOCK.
	(_gcry_secmem_get_flags): Likewise.
	(_gcry_secmem_init): Likewie.
	(_gcry_secmem_malloc): Likewise.
	(_gcry_secmem_free): Likewise.
	(_gcry_secmem_malloc): Renamed to ...
	(_gcry_secmem_malloc_internal): ... this.
	(_gcry_secmem_malloc): New function, use SECMEM_LOCK,
	SECMEM_UNLOCK, call _gcry_secmem_malloc_internal.
	(_gcry_secmem_free): Renamed to ...
	(_gcry_secmem_free_internal): ... this.
	(_gcry_secmem_free): New function, use SECMEM_LOCK, SECMEM_UNLOCK,
	call _gcry_secmem_free_internal.
	(_gcry_secmem_realloc): Use SECMEM_LOCK, SECMEM_UNLOCK, call
	_gcry_secmem_malloc_internal and _gcry_secmem_free_internal.
	(_gcry_private_is_secure): Use SECMEM_LOCK, SECMEM_UNLOCK.
	(_gcry_secmem_dump_stats): Likewise.
	(_gcry_secmem_malloc_internal): Removed unused variable:
	compressed.
	Include "ath.h".

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

	* gcrypt.h (GCRY_CIPHER_SERPENT128, GCRY_CIPHER_SERPENT192,
	GCRY_CIPHER_SERPENT256): New symbols.

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

	* gcrypt.h: Reversed changes from 2003-03-03 since they would have
	been an unnecessary ABI break.

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

	* secmem.c (stats_update): New function.
	(BLOCK_HEAD_SIZE): New symbol.
	(MB_FLAG_ACTIVE): New symbol.
	(ADDR_TO_BLOCK, BLOCK_VALID): New macros.
	(mb_get_next): New function.
	(mb_get_prev): New function.
	(mb_merge): New function.
	(mb_get_new): New function.
	(unused_blocks): Removed variable.
	(init_pool): Initialize new memory pool.
	(_gcry_secmem_malloc): Use new heap management code.
	(_gcry_secmem_free): Likewise.
	(_gcry_secmem_realloc): Likewise.
	Renamed type MEMBLOCK to memblock_t.

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

	* cipher.h (gcry_pubkey_spec): New member: sexp_names.

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

	* cipher.h (gcry_pubkey_spec): Removed members: npkey, nskey,
	nenc, nsig.
	(gcry_pubkey_spec): Added members: elements_pkey, elements_skey,
	elements_enc, elements_sig, elements_grip.

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

	* g10lib.h (GcryModule): New typedef.

	* gcrypt.h (gcry_cipher_register, gcry_cipher_unregister,
	gcry_digest_register, gcry_digest_unregister,
	gcry_pubkey_register, gcry_pubkey_unregister): Function
	declarations removed - for now.

	* gcrypt.h (GcryModule): Declaration removed.
	* gcrypt.h (GcryPubkeySpec, GcryDigestSpec, GcryCipherSpec):
	Types Moved...
	* cipher.h: ... here.

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

	* cipher.h: Declare digest_spec_sha512 and digest_spec_384.

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

	* module.c (_gcry_module_use): New function.
	* g10lib.h (_gcry_module_use): Declare function.

	* libgcrypt-config.in: Support for --algorithms switch, which
	prints the algorithms included in the built libgcrypt.

	* global.c (gcry_set_progress_handler): Register progress
	functions depending on the enabled algorithms.

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

	* Makefile.am (libgcrypt_la_SOURCES): Added module.c

	* module.c: New file.
	(_gcry_module_add): New function.
	(_gcry_module_drop): New function.
	(_gcry_module_lookup): New function.
	(_gcry_module_release): New function.

	* g10lib.h (GcryModule): New types.
	(FLAG_MODULE_DISABLED): New symbol.
	Added declarations for _gcry_module_add, _gcry_module_release and
	_gcry_module_lookup.

	* gcrypt.h: New types: GcryPubkeySpec, GcryDigestSpec,
	GcryCipherSpec.
	Added declarations for: gcry_cipher_register,
	gcry_cipher_unregister, gcry_digest_register,
	gcry_digest_unregister, gcry_pubkey_register and
	gcry_pubkey_unregister.

	* cipher.h: Removed symbols: CIPHER_ALGO_NONE, CIPHER_ALGO_IDEA,
	CIPHER_ALGO_3DES, CIPHER_ALGO_CAST5, CIPHER_ALGO_BLOWFISH,
	CIPHER_ALGO_SAFER_SK128, CIPHER_ALGO_DES_SK, CIPHER_ALGO_TWOFISH,
	CIPHER_ALGO_TWOFISH_OLD, CIPHER_ALGO_DUMMY, PUBKEY_USAGE_SIG,
	PUBKEY_USAGE_ENC, DIGEST_ALGO_MD5, DIGEST_ALGO_SHA1,
	DIGEST_ALGO_RMD160, DIGEST_ALGO_TIGER, PUBKEY_ALGO_RSA,
	PUBKEY_ALGO_RSA_E, PUBKEY_ALGO_RSA_S, PUBKEY_ALGO_DSA,
	PUBKEY_ALGO_ELGAMAL, PUBKEY_ALGO_ELGAMAL_E.

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

	* benchmark.c (md_bench): Fix error message.

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

	* benchmark.c (cipher_bench): Added CTR mode.

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

	* gcrypt.h (enum gcry_control_cmds): Add GCRY_SET_CTR.
	(enum gcry_cipher_modes): Add GCRY_CIPHER_MODE_CTR.
	(gcry_cipher_setctr): New macro to set counter.

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

	* cipher.h (PUBKEY_FLAG_NO_BLINDING): New symbol.

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

	* gcrypt.h: Add GCRYCTL_SET_CBC_MAC and GCRY_CIPHER_CBC_MAC.

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

	* g10lib.h: Adjusted primegen.c prototypes.

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

	* sexp.c (sexp_sscan): Initialize NM.  Thanks to Ian Peters for
	valgrinding this.

2003-03-06  Moritz Schulte  <mo@g10code.com>

	* secmem.h (GCRY_SECMEM_FLAG_NO_WARNING,
	GCRY_SECMEM_FLAG_SUSPEND_WARNING): New symbols.

	* global.c (gcry_control): Use
	GCRY_SECMEM_FLAG_{NO,SUSPEND}_WARNING, instead of hard-coded
	values.
	* secmem.c (_gcry_secmem_set_flags): Likewise.
	* secmem.c (_gcry_secmem_get_flags): Likewise.

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

	* misc.c: Removed old FIXME, since there is already a function to
	set the value of `verbosity_level'.

	* gcrypt.h: Removed enumeration list: gcry_ctl_cmds.
	New enumeration lists: gcry_global_control_cmds,
	gcry_control_cmds, gcry_info_cmds, gcry_algo_info_cmds.

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

	* gcrypt.h (gcry_cipher_reset): New macro for resetting a handle.

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

	* secmem.c (DEFAULT_PAGESIZE): New symbol.
	(init_pool): Use DEFAULT_PAGESIZE.

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

	* secmem.h: Fix typo in declaration of _gcry_secmem_term.

	* sexp.c: Move macro definitions of `digitp', `octdigit', `alphap'
	and `hexdigit' ...
	* g10lib.h: ... here.

	* misc.c (_gcry_burn_stack): New function (former name:
	burn_stack).

	* g10lib.h (burn_stack): Declare _gcry_burn_stack().

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

	* global.c (gcry_set_progress_handler): Register a random progress
	handler.

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

	* gcrypt.h (GCRY_ENABLE_QUICK_RANDOM): New.
	* global.c (gcry_control): Make use of it.

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

	* gcrypt.h (gcry_random_add_bytes): Add QUALITY argument.

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

	* gcrypt.h (gcry_random_add_bytes): New.

2003-01-20  Simon Josefsson  <jas@extundo.com>

	* gcrypt.h (gcry_md_algos): Add GCRY_MD_CRC32,
	GCRY_MD_CRC32_RFC1510, GCRY_MD_CRC24_RFC2440.

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

	* gcrypt.h (gcry_md_write): Changed type of 2nd argument to void*.
	(gcry_md_hash_buffer): Changed type of both buffers to void*.
	(gcry_md_setkey): Changed type of 2nd argument to void*.
	(gcry_md_get_asnoid): New.

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

	* sexp.c (gcry_sexp_length): Fixed.  This was seriously broken.

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

	* gcrypt.h (GCRYERR_INV_FLAG), global.c (gcry_strerror): New.

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

	* libgcrypt.vers: Temporary export _gcry_generate_elg_prime for
	use by GNUTLS.

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

	* gcrypt.h: Make use of gcc's pure and malloc attributes
	(gcry_md_putc): Use a helper variable to avoid multiple
	evaluation of H.
	* g10lib.h, stdmem.h, secmem.h: Use gcc attributes pure and malloc.

	* stdmem.c (use_m_guard): Don't default to yes.

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

	* global.c (global_init): The meat was never run due to a faulty
	check. Thanks to Nikos for pointing this out.

	* global.c (gcry_control): Return 1 and not -1 for the
	initialization tests.

	* libgcrypt.vers: New.
	* Makefile.am: Use this instead of the build symbol file.

	* global.c (gcry_control) <initialization>: Call the random module
	initializer to make sure that the pool lock flag has been
	initialized.

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

	* global.c (gcry_calloc,gcry_calloc_secure): Check for overflow.
	Noted by Florian Weimer.

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

	* gcrypt.h (gcry_ctl_cmds): New GCRYCTL_SET_CBC_CTS control flag.
	(gcry_cipher_flags): New GCRY_CIPHER_CBC_CTS gcry_cipher_open() flag.
	(gcry_cipher_cts): New macro for toggling CTS.

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

	* gcrypt.h (GCRY_MD_MD4): New.  We use a non OpenPGP value here.

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

	* ath.c: Include sys.time.h if sys/select.h does not exist.
	(ath_select, ath_waitpid): Shortcut for Windows.
	* ath.h: Include some Windows headers.  By Timo.

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

	* ath.h: Prefix ath_deinit.

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

	* benchmark.c: New.
	(mpi_bench, do_powm): Add a a simple test for RSA.

	* global.c (global_init): New.  Use it instead of the setting
	any_init_done.  Initialize the ATH system.
	(gcry_check_version): Hook global_init in.  This is the suggested
	way to initialize the library.
	(_gcry_no_internal_locking): Removed.  We simply call a ath_deinit
	and leave it to ATH to disbale the locking.

	* ath.c, ath.h, ath-pth.c, ath-pthread.c: New. Taken from GPGME.
	* mutex.h: Removed.
	* Makefile.am (ath_components): New.

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

	* secmem.c (_gcry_secmem_dump_stats): Replaced fprintf by log_*.

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

	* missing-string.c: Removed unneeded strlwr.

	* libgcrypt.m4: Made much more simple.
	* libgcrypt-config.in: Made --prefix work for --libs.

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

	* gcrypt.h: Add GCRY_CIPGER_DES.  Included string.h for size_t.
	Suggested by Simon Josefsson.

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

	* cipher.h: Added prototypes for progress functions.
	* global.c: Include cipher.h for those prototypes.

	* stdmem.c (_gcry_private_realloc): Replaced void* by char * for
	pointer arithmetic reasons.  Noted by Stephan Austermuehle.

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

	* missing-string.c: Include ctype.h.

	* gcrypt.h (gcry_mpi_invm, gcry_mpi_div, gcry_mpi_mod)
	(gcry_mpi_swap): New.

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

	* gcrypt.h: Added a bunch of brief function descriptions.

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

	* misc.c (_gcry_log_printf): Don't initialize a va_list.  Noted by
	Jeff Johnson.

	* global.c (gcry_set_progress_handler): New.

	* gcrypt.h: Replaced the typedef for byte.

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

	* missing-string.c: New.

	* gcrypt.h: Add new error codes GCRYERR_SEXP_ and typedefs
	GcryMPI, GcrySexp, GcryCipherHd, GcryMDHd as aliases for the old
	ones using an underscore.

	* global.c (gcry_strerror): Add strings fro the new error codes.
	* sexp.c (gcry_sexp_canon_len): Use a macro to convert from new to
	old error codes.
	(gcry_sexp_create,gcry_sexp_new): New.

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

	* mutex.h (DEFINE_LOCAL_MUTEX): Macro to define a mutex and
	initialize it so that we can detect an unitialized mutex and don't
	read from stdin.

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

	Changed license of all files to the LGPL.

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

	* global.c (gcry_control): Add commands
	GCRYCTL_ANY_INITIALIZATION_P and GCRYCTL_INITIALIZATION_FINISHED_P
	so that other libraries are able to check for required
	initializations.

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

	* gcrypt.h (GCRYCTL_DISABLE_INTERNAL_LOCKING): New.
	* global.c (gcry_control): Implement it.
	(_gcry_no_internal_locking): New.
	* mutex.h: Prefixed all fucntions with _gcry_.  Bypass all
	functions when desired.

	* gcrypt.h (GCRYCTL_DISABLE_SECMEM): New.
	* global.c (gcry_control,gcry_malloc_secure,gcry_is_secure):
	Implement it here.
	* secmem.c (_gcry_private_is_secure): Return false if the pool is
	not initialized.

	* gcrypt.h (GCRYCTL_INITIALIZATION_FINISHED): New.

	* gcrypt.h (gcry_cipher_algos): Replaced RINDAEL by AES and change
	the macros to expand from rijdael to aes.

	* stdmem.c (_gcry_private_malloc): Return NULL for 0 byte allocation.
	(_gcry_private_malloc_secure): Ditto.

	* g10lib.h:  Copied the JNLIB_GCC macros from ../jnlib/mischelp.h
	and removed the inclusion of that file.

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

	* global.c (gcry_strdup): New.

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

	* mutex.h: New file with a portable thread mutex implementation
	written by Marcus Brinkmann.  Taken from GPGME.

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

	* sexp.c (gcry_sexp_sscan): Don't initialize the dummy
	variable.  Suggested by Jordi Mallach.

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

	* sexp.c (suitable_encoding,convert_to_hex,convert_to_string)
	(convert_to_token): New.
	(gcry_sexp_sprint): Better formatting of advanced encoding, does
	now insert LFs and escapes all unprintable characters.
	(unquote_string): New.
	(sexp_sscan): Implemented the missing conversion of quoted strings.

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

	* libgcrypt-config.in: Add copyright notice.

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

	* sexp.c (gcry_sexp_canon_len): Fixed last change.

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

	* stdmem.c (_gcry_private_realloc): If pointer is NULL now realloc
	behaves like malloc.

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

	* sexp.c (gcry_sexp_canon_len): Describe the error codes and
	return an error if this is not a S-Exp; i.e. it does not start
	with an open parenthesis.

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

	* sexp.c (gcry_sexp_canon_len): Fixed the test on NULL buffer.

	* Makefile.am (DISTCLEANFILES): Include libgcrypt.sym

	* sexp.c: Removed the commented test code because we now have a
	test in ../tests/

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

	* sexp.c (gcry_sexp_canon_len): New.

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

	* gcrypt.h: Fixed AES128 macro, add enum for OFB mode.

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

	* misc.c (_gcry_log_printf): New.
	* sexp.c (dump_string,gcry_sexp_dump): Use logging functions
	instead of stderr.

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

	* gcrypt.h: New constant GCRYCTL_IS_ALGO_ENABLED.

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

	* gcrypt.h: Removed a couple of trailing commas.

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

	* sexp.c (sexp_sscan): Add an argument to enable the
	arg_ptr. Changed all callers.  Suggested by Tom Holroyd.

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

	* global.c (gcry_strerror): Updated list of error codes.

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

	* gcrypt.h: Replaced the last ulong.  Noted by Rami Lehti.

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

	* gcrypt.h, mpi.h: Made some mpi functions public.

	* wrapper.c: Removed.
	* global.c: Renamed all g10_ prefixed functions which had wrappers
	to gcry_xxx. So we now use the exported memory functions inernally.

	Renamed all g10_ prefixed functions to _gcry_ prefixed ones.

	* g10lib.h (_GCRYPT_IN_LIBGCRYPT): Replace defintion by a test on it.

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

	* libgcrypt.m4: Check GCRYPT_VERSION macro and not LIBGCRYPT_VERSION.

	* mpi.h: Removed mpi_fromstr prototype.

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

	* Makefile.am (libgcrypt_la_SOURCES): Add mpi.h

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

	* types.h: Moved from ../include to here.

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

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

	* mpi.h: Moved to ../mpi.

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

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

	* mpi.h: Changed the way mpi_limb_t is defined.

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

	* Makefile.am: Take version-info from configure.

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

	* gcrypt.h: New cipher mode, new algo Arcfour and new error code
	GCRYERR_INV_CIPHER_MODE.
	* global.c (gcry_strerror): New errorcode.

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

        * gcrypt.h (gcry_md_setkey): Replaced macro by function prototype.

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

        * gcrypt.h (GCRYCTL_GET_ALGO_USAGE): New.

        * secmem.c (secmem_realloc): check for failed secmem_malloc.  By
        Matt Kraai.

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

  * sexp.c: Removed the datalen fields from list tags.
  (gcry_sexp_car_data,gcry_sexp_cdr_data,gcry_sexp_car_mpi,
   gcry_sexp_cdr_mpi): Removed.
  (gcry_sexp_nth,gcry_sexp_nth_data,gcry_sexp_nth_mpi): New.

Fri Jul 28 18:19:11 CEST 2000  Werner Koch  <wk@openit.de>

  * sexp.c (sexp_sscan): Fixed reallocation to secure memory.
  (new_empty_list): Removed
  (gcry_sexp_length): New.
  (gcry_sexp_enum): Removed.
  (normalize): New. Reworked the whole thing to use NULL for an empty list.
  (make_space): New instead of the macro.

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

  * sexp.c: Major rewrite.
  (gcry_sexp_sscan): Reordered arguments.  Moved functionality to ..
  (sexp_sscan): .. this.
  (gcry_sexp_build): New.
  (gcry_sexp_new_name_mpi, gcry_sexp_new_name_data, gcry_sexp_new_data,
   gcry_sexp_new_mpi): Removed.

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

  * gcrypt.h (gcry_md_start_debug, gcry_md_stop_debug): New.
  (gcry_ctl_cmds): New control values

  * sexp.c (gcry_sexp_sscan): Add hex format parsing.

  * secmem.c (lock_pool): Check for ENOSYS return my mlock() on old SCOs.
  (pool_is_mmapped): Made volatile.
  (lock_pool): No more warning for QNX. By Sam Roberts.
  (lock_pool,secmem_init): Additional check for dropped privs.

2000-03-21 09:18:48  Werner Koch  (wk@habibti.gnupg.de)

	* gcrypt.h (gcry_md_setkey): New.
	(GCRY_MD_FLAG_HMAC): New.

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

	* Makefile.am: Add g10lib.h

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

	* sexp.c (gcry_sexp_sscan): Allow NULL for erroff.

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

	* sexp.c (gcry_sexp_alist): New.

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

	* secmem.c: Moved from ../util to here.
	* secmem.h: New.
	* stdmem.c: New. Based on the old ../util/memory.c.
	* stdmem.h: New.

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

	* gcrypt.m4: New.
	* gcrypt-config: New.

	* mpi.h (mpi_get_nbit_info): Removed
	(mpi_set_nbit_info): Removed.
	(struct gcry_mpi): Removed the nbits field.

	* misc.c (g10_log_verbosity): New.

	* global.c (g10_xstrdup): New.

	* mpiapi.c: Removed.

	* mpi.h: Moved from ../include to here.  Removed some obsolete
	prototypes and the iobuf.h header.
	* cipher.h: Moved from ../include to here. Removed the mpi.h header.
	* g10lib.h: Moved from ../include to here.

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

	* sexp.c (dump_string): New.  Taken from gnupg/util/miscutil.c.
	(do_dump_list): s/print_string/dump_string/.

	* testapi.c: New.

	* mpiapi.c (gcry_mpi_randomize): Use new random API.

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

	* gloabl.c (gcry_control): Add cases for dumping random
	and secmem stats.

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

	* pkapi.c: Removed.

	* symapi.c: Removed.

	* g10lib.h:  Moved to ../include.

	* mdapi.c: Removed.

Wed Jul  7 13:08:40 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>

	* sexp.c: New.

Tue Dec  8 13:15:16 CET 1998  Werner Koch  <wk@isil.d.shuttle.de>

	* gcrypt.h: New
	* mpiapi.c: New


 Copyright (C) 1998,1999,2000,2001,2002,2003
	       2004,2005,2008,2009,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:
