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-03-28  Werner Koch  <wk@g10code.com>

	* mpi-pow.c (gcry_mpi_powm): Remove unused var RSEC.

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

	* mpi-cmp.c (gcry_mpi_cmp): Allow comparing of opaque MPIs.

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

	Spelling fixes.

2010-02-22  Aurelien Jarno <aurel32@debian.org>  (wk)

	* longlong.h (umul_ppmm) <mips> [__GNUC__ >= 4.4]: Patch according
	to recommended gcc 4.4 changes.

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

	* config.links: Remove asm modules for all sparc64.  This is
	debian#560028.

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

	* mpicoder.c (mpi_read_from_buffer): Allow zero-sized MPIs (i.e a
	zero).

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

	* mpiutil.c: Remove memory.h.

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

	* mpicoder.c (mpi_read_from_buffer): Do not bail out if the mpi is
	larger than the buffer (potential problem).  Do not print error
	messages.
	(mpi_fromstr): Return an error instead of hitting an assert.
	(gcry_mpi_scan) <PGP>: Fix potential double free problem.
	(gcry_mpi_scan) <HEX>: Fix potential memory leak.
	(do_get_buffer): Return NULL on memory allocation failure.
	(gcry_mpi_print): Check result of do_get_buffer.
	(gcry_mpi_aprint): Return error on a memory allocation failure.

	* mpicoder.c: Re-indent.

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

	* mpi-pow.c (gcry_mpi_powm): Fix last change.  Asserts are really
	useful!

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

	* mpi-pow.c (gcry_mpi_powm): Re-indent.
	(gcry_mpi_powm): Simplified allocation of the result to fix a
	double free bug.  This is bug#977.  Reported by Haakon Ringberg.

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

	* mpi-bit.c (gcry_mpi_lshift): Actually implement.

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

	* mpi-bit.c (gcry_mpi_lshift): New.

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

	* mpi-mod.c (gcry_mpi_mod): Remove
	* mpi-inv.c (_gcry_mpi_invm): Remove _ prefix.
	* mpiutil.c (_gcry_mpi_swap): Remove.
	(_gcry_mpi_new): Remove.
	(_gcry_mpi_snew): Remove.
	(gcry_mpi_invm): Remove.
	(gcry_mpi_copy): Remove and rename _version to this.
	(gcry_mpi_set, gcry_mpi_set_ui): Merge with _ version.
	* mpi-inv.c (gcry_mpi_invm): Remove _ prefix and return 1.
	* mpi-mul.c (gcry_mpi_mul_2exp): Remove and rename _ version to this.

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

	* config.links: No Candadian Cross here, thus use $host instead of
	$target.

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

	* config.links (mpi_optional_modules): Special rules for Apple
	Darwin on ia32 from Gregor Riepl.

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

	* config.links: Rename assembler file links by suffixing "-asm".
	* Makefile.am (CCASCOMPILE, LTCCASCOMPILE, CLEANFILES,
	libmpi_la_LIBADD, libmpi_la_DEPENDENCIES, SUFFIXES, .S.o, .S.obj,
	.S.lo): Removed variables and targets.
	(mpih_add1, mpih_sub1, mpih_mul1, mpih_mul2, mpih_mul3,
	mpih_lshift, mpih_rshift, mpih_udiv, mpih_udiv_qrnnd,
	nodist_libmpi_la_SOURCES): New variables.
	(DISTCLEANFILES): Rename assembler file links by suffixing "-asm".
	Add variants for C file links.

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

	* config.links (path): Allowthe sue of colons as delimiters.

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

	* pentium4/distfiles: Fixed.

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

	* config.links: Create a file mod-source-info.h.
	* Makefile.am (DISTCLEANFILES): Add that file.
	* mpiutil.c (_gcry_mpi_get_hw_config): New.

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

	* config.links: Add additional assembler search directories.

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

	* ec.c: New.

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

	* mpi-bit.c (_gcry_mpi_lshift_limbs): Assign AP after the resize.

	* mpi-div.c (gcry_mpi_mod, _gcry_mpi_mod): Moved to ..
	* mpi-mod.c: .. new file.
	(_gcry_mpi_barrett_init, _gcry_mpi_barrett_free): New.
	(_gcry_mpi_mod_barrett): New.
	(_gcry_mpi_mul_barrett): New.

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

	* mpi-div.c (_gcry_mpi_mod): New.
	* mpiutil.c (_gcry_mpi_new, _gcry_mpi_snew): New.

2007-03-13  Werner Dittmann <Werner.Dittmann@t-online.de>  (wk)

	* amd64/mpih-add1.S, amd64/mpih-add1.S, amd64/mpih-lshift.S
	* amd64/mpih-mul1.S, amd64/mpih-mul2.S, amd64/mpih-mul3.S
	* amd64/mpih-rshift.S, amd64/mpih-sub1.S: New.
	* config.links:  Add case for x86_64.

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

	* mpi-pow.c (gcry_mpi_powm): Remove unused var ESIGN.

	* mpiutil.c (gcry_mpi_get_flag): Let it return a value to silent
	MIPSpro cc warning.

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

	* mpicoder.c (_gcry_mpi_set_buffer): Made BUFFER a void*.

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

	* Makefile.am (.S.o): Check for srcdir also in in CPP pass.
	(INCLUDES): Removed.
	(AM_CPPFLAGS, AM_CFLAGS): New, modified. Merged with Moritz'
	changes.

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

	* config.links (mpi_optional_modules): Make sure that powerpc64 is
	matched before a generic powerpc.  Reported by Andreas Metzler.
	Should fix Debian bug 284609.

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

	* mpi-bit.c (gcry_mpi_rshift): Don't shift if N == 0 but do a
	plain copy.

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

	* mpi-bit.c (gcry_mpi_rshift): Rewritten to remove the limitation
	on N (which used to be less than BITS_PER_MPI_LIMB).

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

	* mpi-bit.c (gcry_mpi_set_bit, gcry_mpi_set_highbit): Fixed
	allocation.  Reported by bpgcrypt at itaparica.org.
	* mpiutil.c (_gcry_mpi_resize): Clear the new part of the resized
	limb space.

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

	* mpiutil.c (gcry_mpi_randomize): Changed P to unsigned char*.

	* mpicoder.c (gcry_mpi_scan): Changed arg BUFFER to void*.
	(mpi_read_from_buffer): Made BUFFER arg const.
	(gcry_mpi_scan): Removed now needless cast. Add cast for arg to
	mpi_fromstr.
	(gcry_mpi_print): Made TMP unsigned.

	* Makefile.am (AM_CCASFLAGS): New.

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

	* mpi-cmp.c (gcry_mpi_cmp_ui): Rewritten; correctly handle case of
	zero limbs in U.

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

	* mpiutil.c (gcry_mpi_randomize): Store random data in secure
	memory if the given MPI is secure - not the other way around (argl).

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

	* Makefile.am: Don't assume the compiler will pre-process the .S
	files. Some compilers, like those from HP and IBM, don't do
	this. So, we use the same solution gnupg-1.4.0 does. Preprocess
	first and then compile.

	* hppa1.1/mpih-mul3.S: Add "level 1.1" directive to disable
	warning about using PA-RISC1.1 opcodes.
	* hppa1.1/mpih-mul2.S: Likewise.
	* hppa1.1/mpih-mul1.S: Likewise.
	* hppa1.1/udiv-qrnnd.S: Likewise.

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

	* mpiutil.c (_gcry_mpi_alloc_limb_space): Rewritten, fixed memory
	corruption.

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

	* mpiutil.c (_gcry_mpi_get_ui, gcry_mpi_get_ui): New functions.

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

	* hppa1.1/udiv-qrnnd.S: Reverted change of 2004-03-02 but kept the
	.align directive.

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

	* config.links (mpi_optional_modules): Move entry for powerpc64
	before generic powerpc.  Suggested by Rafael Ávila de Espíndola.

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

	* hppa1.1/udiv-qrnnd.S: Alignment fix from Lamont Jones for
	Debian.  Taken from gnupg-1.3.

	* longlong.h: Added PowerPC 64 bit code from GPM-4.1.2 but didn't
	enable it yet.  Some whitespace changes in HPPA to fix assembler
	problems on HP-UX.  From gnupg 1.3

	* mpiutil.c (_gcry_mpi_alloc_limb_space): Better allocate
	something even if NLIMBS is passed as 0.

	* config.links: Updated system list to match gnupg 1.3.

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

	* mpi-internal.h [M_DEBUG]: Removed this unused code.
	(struct karatsuba_ctx): Added TSPACE_NLIMBS and	TP_NLIMBS.
	* mpiutil.c (_gcry_mpi_free_limb_space): Add arg NLIMBS and wipe
	out the memory.  Changed all callers.
	* mpih-mul.c (_gcry_mpih_mul_karatsuba_case): Keep track of
	allocated limbs.
	* mpi-div.c (_gcry_mpi_tdiv_qr): Keep track of allocated limbs.
	* mpi-mul.c (gcry_mpi_mul): Ditto.
	* mpi-pow.c (gcry_mpi_powm): Ditto.

	* Manifest: Empty new file.  Also add Manifest files to all CPU
	specific directories.
	* Makefile.am: Added.

	* mpiutil.c (gcry_mpi_randomize): Use gcry_create_nonce if WEAK
	random has been requested.

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

	* i386/mpih-rshift.S, i386/mpih-lshift.S: Use %dl and not %edx for
	testb; this avoids an assembler warning.

	* mpi-pow.c (gcry_mpi_powm): s/exp/expo/ to avoid shadowing warning.

2003-08-19  Marcus Brinkmann  <marcus@g10code.de>

	* Makefile.am (SUFFIXES): New variable.
	(.S.o, .S.lo, .S.obj): Rewritten.

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

	* longlong.h (__clz_tab): Renamed to _gcry_clz_tab.
	* mpi-bit.c (__clz_tab): Likewise.

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

	* mpicoder.c (gcry_mpi_scan): New argument BUFLEN to replace the
	use of the intial value of NBYTES.  Changed BUFFER to unsigned.
	(gcry_mpi_print): Likewise.
	(gcry_mpi_dump): New.
	(_gcry_log_mpidump): Make use of gcry_mpi_dump.
	(mpi_print): Removed.
	(gcry_mpi_scan): Allocated mpi in secure memory when required.
	(gcry_mpi_aprint): Changed BUFFER to unsigned char*.

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

	* mpicoder.c: Used gcry_err* wrappers for libgpg-error symbols.

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

	* mpi-add.c: Replace last occurences of old type names with newer
	names (i.e. replace MPI with gcry_mpi_t).
	* mpi-bit.c: Likewise.
	* mpi-cmp.c: Likewise.
	* mpi-div.c: Likewise.
	* mpi-gcd.c: Likewise.
	* mpi-internal.h: Likewise.
	* mpi-inv.c: Likewise.
	* mpi-mpow.c: Likewise.
	* mpi-mul.c: Likewise.
	* mpi-pow.c: Likewise.
	* mpi-scan.c: Likewise.
	* mpicoder.c: Likewise.
	* mpiutil.c: Likewise.

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

	* mpicoder.c (gcry_mpi_scan): Adjust for libgpg-error.
	(gcry_mpi_print): Likewise.
	(gcry_mpi_aprint): Likewise.

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

	* longlong.h, mpi-add.c, mpi-bit.c, mpi-cmp.c, mpi-div.c,
	mpi-gcd.c, mpi-inline.c, mpi-inline.h, mpi-internal.h, mpi-inv.c,
	mpi-mpow.c, mpi-mul.c, mpi-pow.c, mpi-scan.c, mpicoder.c,
	mpih-div.c, mpih-mul.c, mpiutil.c, generic/mpi-asm-defs.h,
	generic/mpih-add1.c, generic/mpih-lshift.c, generic/mpih-mul1.c,
	generic/mpih-mul2.c, generic/mpih-mul3.c, generic/mpih-rshift.c,
	generic/mpih-sub1.c, generic/udiv-w-sdiv.c, i386/syntax.h,
	m68k/syntax.h, mips3/mpi-asm-defs.h, powerpc32/syntax.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.

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

	* mpiutil.c (_gcry_mpi_alloc_limb_space): Only try to allocate
	memory in case the amount of bytes to allocate is non-zero.

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

	* mpiutil.c (_gcry_mpi_resize): Allocate secure memory, in case
	bit zero of `flags' is set.

	* mpi-add.c (gcry_mpi_sub): Simplify function; always use a
	temporary variable now.

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

	* longlong.h (umul_ppmm): Support SH3 and SH4.  Thanks to
	kazuya.s@jp.yokogawa.com.

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

	* mpicoder.c (gcry_mpi_print): Fixed testing against possible
	uninitialized LEN.  Valgrinded by Nikos Mavroyanopoulos.

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

	* longlong.h: Removed some spaces between backslashes and newlines.

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

	* mpi-mul.c (gcry_mpi_mul_2exp): New. This was declared in
	gcrypt.h but only implemented as internal function.  Noted by Timo
	but a few minutes to late for today's release.

	* Makefile.am (DISTCLEANFILES): Include mpi-asm-defs.h

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

	* Makefile.am (.S.lo): Pass -DPIC. i386, PPC and Sparc code
	require it.  It worked for me because I am using the i586 code.

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

	* Makefile.am (.S.lo): Fixed for libtool build with --disable-shared.

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

	* longlong.h: Replaced all K&R multiline strings by ISO ones for
	the sake of modern compilers.  Suggested by Marco Parrone.

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

	* mpiutil.c (gcry_mpi_swap): New.

	* mpi-div.c (gcry_mpi_div): New.
	(gcry_mpi_mod): New.
	* mpi-inv.c (gcry_mpi_invm): New.

	* mpicoder.c (do_get_buffer): Make sure that we allocate at least
	one byte.

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

	* hppa1.1/udiv-qrnnd.S: Changes for PIC by Randolph Chung.

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

	* config.links: Chnage the way the mpi modules are determined.
	* Makefile.am: Revamped to better handle modules

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

	Changed license of all files to the LGPL.

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

	* mpicoder.c (gcry_mpi_scan): Don't use normalize on a NULL MPI.

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

	* mpicoder.c (mpi_read_from_buffer): Bail out on a zero length
	buffer because we can't eventually do an malloc of this size.
	Reported by Timo.

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

	* mpi-inv.c (_gcry_mpi_invm): Typo fixes, noted by Carlo Perassi.

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

	* mpicoder.c (gcry_mpi_scan): Allow to pass a nbytes as NULL or
	with value 0 for format GCRY_FMT_SSH, so that the length is not
	used for any checks, only the length stored in the bufer is used.
	This is a nice format becuase we can just pass a buffer around and
	don't need to care about its length.

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

	* config.links: Changed the way the list of files to be
	symlinked is returned.

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

	* mpih-cmp.c: Removed and moved mpihelp_cmp to ..
	* mpi-inline.h: .. here.

	Major function renaming. All global functions are now prefixed
	with _gcry_ or gcry_.  Renamed also all mpihelp_ to just mpih_ so
	that functions names are not getting to long an unreadable and for
	better matching with the filenames.

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

	* mpicoder.c (mpi_fromstr): Made static and assume that all input
	is in hexformat.

	Updated all CPU specific code with the one from GnuPG-1.0.5.  This
	is just a change of text formatting and the use of .label
	instead of labels for hppa and pa7100.

	* longlong.h: Fixes for ARM by Phil Blundell.

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

	* mpi-mul.c (mpi_mul): Make sure that secret temporary results are
	not stored in w.  Suggested by Florian Weimer.

	* config.links: Use i386 code for i386.  According to tests by
	Kevin Ryde the i586 code runs slow on i386 CPUs.  Ditto for i786.

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

	* Makefile.am: Removed mpi.h.

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

	* mpi-internal.h: Put limb_t definition in an ifdef.

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

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

	* mpi-internal.h, mpi.h: Changed the way they are called and
	introduced DID_MPI_LIMP_TYPEDEF hack.  Very ugly, should all be
	revamped.

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

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

	* generic/mpi-asm-defs.h: New.
	* mips3/mpi-asm-defs.h: New.
	* config.links: Create a link to one of the above files.

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

  * mpicoder.c (gcry_mpi_scan): Normalize the returned MPI.

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

  * config.links: Support for powerpc--netbsd by Gabriel Rosenkoetter.

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

  * power/: Add all files from GMP for this CPU. Converted comments to
  CPP comments because some ASes complain about ' in comments.

  * config.links:  Support for BSDI 4.x; by Wayne Chapeskie. Add support
  for FreeBSD 5 and made the case stmt looking nicer; by Jun Kuriyama.
  Add support for NetBSD.
  (sparc8): Made the search path the same as sparc9
  (sparc64-unknown-linux-gnu): use udiv module; by Adam Mitchell.

  * Makefile.am: c/SFLAGS/ASFLAGS/. This has only been used by the
  powerpc and actually never passed the -Wa,foo to the cc.

  * mpih-div.c (mpihelp_divrem): The MPN_COPY_DECR copied one element
  too many.  This is a gmp2.0.2p9.txt patch.

  * longlong.h (umul_ppmm): Fixes for ARM-4. By Sean MacLennan.

  * mpi-internal.h (karatsuba_ctx): New.
  * mpih-mul.c (mpihelp_release_karatsuba_ctx): New.
  (mpihelp_mul_karatsuba_case): New.
  (mpihelp_mul): Splitted to make use of the new functions.
  * mpi-pow.c (mpi_powm): Make use of the new splitted function to avoid
  multiple allocation of temporary memory during the karatsuba operations.
  * mpi_mpow.c: Removed the unused Barrett code.

2000-03-21 16:17:30  Werner Koch  (wk@habibti.openit.de)

	* config.links: Add support for FreeBSD 5.

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

	* mpicoder.c (gcry_mpi_aprint): Now really returns the length.

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

	* mpiutil.c: Removed all memory debugging code.

	* mpicoder.c (gcry_mpi_aprint): New.

	* Replaced all m_ memory functions by g10_ ones.

Fri Dec 31 14:06:56 CET 1999  Werner Koch  <wk@gnupg.de>

	* mpi-bit.c (gcry_mpi_get_nbits): New.

	* mpiutil.c (mpi_set_secure): made static.
	(gcry_mpi_get_flag): New.
	(gcry_mpi_set_flag): New.
	(gcry_mpi_clear_flag): New.
	(mpi_set_opaque): renamed to gcry_mpi_set_opaque.
	(mpi_get_opaque): renamed to gcry_mpi_get_opaque.

Fri Dec 31 12:48:31 CET 1999  Werner Koch  <wk@gnupg.de>

	* mpicoder.c (mpi_read_from_buffer): Made static.
	(gcry_mpi_print): A buffer of NULL is now allowed to get the required
	length back.
	(mpi_get_keyid): Removed.
	(mpi_print): Made static - should be removed.

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

	* Makefile.am (INCLUDES): Add ../gcrypt.

	* g10m.c : Removed.

	* mpicoder.c (mpi_write): Removed.
	(mpi_read): Removed.
	(gcry_mpi_scan): New. Taken from ../gcrypt/mpiapi.c.
	(gcry_mpi_print): Ditto.

	* mpi-pow.c (mpi_powm): Renamed to ...
	(gcry_mpi_powm): ... this.

	* mpiutil.c (gcry_mpi_new): New as a wrapper around the old function.
	Taken from ../gcrypt/mpiapi.c.
	(gcry_mpi_snew): Ditto.
	(gcry_mpi_release): Ditto.
	(gcry_mpi_copy): Ditto.
	(gcry_mpi_set): Ditto.
	(gcry_mpi_set_ui): Ditto.
	(gcry_mpi_cmp): Ditto.
	(gcry_mpi_cmp_ui): Ditto.
	(gcry_mpi_randomize): Ditto.

	* mpicoder.c (mpi_print): Removed the nbit_info kludge.
	* mpi-bits.c (mpi_get_nbits): Replaced the is_protected stuff by
	checking whether it is an opaque mpi and then returns it's length
	in bits.
	* mpiutil.c (mpi_set_opaque): Changed the interface to take a number
	of bits for the length.  Adjusted all users.
	(mpi_get_opaque): Ditto.

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

	* mpicoder.c (g10_log_mpidump): Add a temporary workaround

	* mpih-mul.c (mpihelp_mul_n): s/m_is_ecure/g10_is_secure/

	* mpiutil.c (mpi_alloc): Remved the debug mode because it has turned
	out, that this feature was not very useful in the past.  Use the
	new alloc functions.
	(mpi_alloc_secure): Ditto.
	(mpi_alloc_limb_space): Ditto.
	(mpi_free_limb_space): Ditto.
	(mpi_resize): Ditto.
	(mpi_free): Ditto.
	(mpi_set_secure): Removed the debug stuff.
	(mpi_set_opaque): Ditto.
	(mpi_copy): Ditto.
	(mpi_alloc_set_ui): Ditto.
	(mpi_m_check): Use g10_ wrapper.

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


	* config.links: Add case label for DJGPP

Wed Jul 14 19:42:08 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>


	* Makefile.am: Use .s files as temporaries, disabled other .S rules.

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


	* mpicoder.c (g10_log_mpidump): New.

	* Makefile.am: Support for libtool.

Fri Jul  2 11:45:54 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>


	* mpi-bit.c (mpi_lshift_limbs,mpi_rshift_limbs): New.
	* mpi-mpow.c (barrett_mulm): New but diabled.

Tue Jun  1 16:01:46 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>

	* config.links (i[56]86*-*-freebsdelf*): New.

Sun May 23 14:20:22 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>

	* config.links (sysdep.h): Not any more conditionally created.

Tue May  4 15:47:53 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>

	* mpiutil.c (mpi_alloc_like): New.

Mon Apr 26 17:48:15 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>

	* mpih-add.c, mpih-sub.c: Removed
	* mpi-inline.c: New.
	* mpi-inline.h: Make it usable by mpi-inline.c.

Sun Apr 18 10:11:28 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>

	* mpih-mul.c (mpihelp_mul_n): Fixed use of memory region.
	(mpihelp_mul): Ditto.

Wed Apr  7 20:51:39 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>

	* Makefile.am: Explicit rules to invoke cpp on *.S

Mon Mar  8 20:47:17 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>

	* config.links: Take advantage of the with_symbol_underscore macro.
	Add support for freebsd 4.

Wed Feb 24 11:07:27 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>

	* mips3/mpih-sub1.S: Removed left over junk in last line. (Should I
	blame me or my editor?).

Sat Feb 13 12:04:43 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>

	* Makefile.am: Removed the +=. Add MPI_OPT_FLAGS.

Sat Jan  9 16:02:23 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>

	* mpi-cmp.c (mpi_cmp_ui): Normalized the arg.

Thu Jan  7 18:00:58 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>

	* mpi-bit.c (mpi_normalize): New.
	(mpi_get_nbits): Normalize the MPI.
	* mpi-bit.c (mpi_cmp): Normalize the MPI before the compare.


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

	* config.links: Moved the case for powerpc*linux
	* powerpcp32/*.S: Removed some underscores.

Thu Nov 26 07:27:52 1998  Werner Koch  <werner.koch@guug.de>

	* config.links: Support for ppc with ELF
	* powerpc32/syntax.h: New.
	* powerpc32/*.S: Applied ELF patches (glibc patches)

Tue Nov 10 19:31:37 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* power*/ : Started with stuff for PPC
	* config.links: Some stuff for PPC.
	* generic/udiv-w-sdiv.c: New but disabled.

Tue Oct 27 12:37:46 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* config.links (freebsd): Fixes for FreeBSD 3.0

Wed Oct 14 09:59:30 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* config.links (freebsd): ELF patches from Jun Kuriyama.

Thu Oct  8 13:28:17 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* mpi-mpow.c (mpi_mulpowm): Fixed mem leak (m_free/mpi_free).

Thu Sep 17 18:08:50 1998  Werner Koch  (wk@(none))

	* hppa1.1/udiv-qrnnd.S: Fix from Steffen Zahn for HPUX 10.20

Thu Aug  6 16:39:28 1998  Werner Koch,mobil,,,	(wk@tobold)

	* mpi-bit.c (mpi_set_bytes): Removed.

Wed Aug  5 15:11:12 1998  Werner Koch  (wk@(none))

	* mpicoder.c (mpi_read_from_buffer): New.

	* mpiutil.c (mpi_set_opaque): New.
	(mpi_get_opaque): New.
	(mpi_copy): Changed to support opauqe flag
	(mpi_free): Ditto.

Sat Jul  4 10:11:11 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* mpiutil.c (mpi_clear): Reset flags.
	(mpi_set): Ditto.
	(mpi_alloc_secure): Set flag to 1 and not ored the 1 in, tsss..

Fri Jun 26 11:19:06 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* mpiutil.c (mpi_alloc): set nbits to 0.
	(mpi_alloc_secure): Ditto.
	(mpi_clear): Ditto.

Thu Jun 25 11:50:01 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* mips3/*.S: New

Mon May 18 13:47:06 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* config.links: split mpih-shift into mpih-[lr]shift and
	changed all implementations.
	* mpi/alpha: add some new assembler stuff.

Wed May 13 11:04:29 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* config.links: Add support for MIPS

Thu Apr  9 11:31:36 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* mpicoder.c (mpi_get_secure_buffer): New.

Wed Apr  8 09:44:33 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* config.links: Applied small fix from Ulf Möller.

Mon Apr  6 12:38:52 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* mpicoder.c (mpi_get_buffer): Removed returned leading zeroes
	and changed all callers.

Tue Mar 10 13:40:34 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* mpi-bit.c (mpi_clear_highbit): New.

Mon Mar  2 19:29:00 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* Makefile.am (DISTCLEANFILES): New

Thu Feb 26 06:48:54 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* config.links (X86_BROKEN_ALIGN): Added for some systems.

Mon Feb 23 12:21:40 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* mpi/m68k/mpih-shift.S (Lspecial): Changed duplicate symbol.

Mon Feb 16 13:00:27 1998  Werner Koch  (wk@isil.d.shuttle.de)

	* config.links : Add detection of m68k cpus


 Copyright 1998,1999,2000,2001,2002,2003 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.
