• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/router/libgcrypt-1.5.1/cipher/
12011-12-01  Werner Koch  <wk@g10code.com>
2
3        NB: ChangeLog files are no longer manually maintained.  Starting
4        on December 1st, 2011 we put change information only in the GIT
5        commit log, and generate a top-level ChangeLog file from logs at
6        "make dist".  See doc/HACKING for details.
7
82011-06-29  Werner Koch  <wk@g10code.com>
9
10	* cipher.c (cipher_get_keylen): Return zero for an invalid algorithm.
11	(cipher_get_blocksize): Ditto.
12
132011-06-13  Werner Koch  <wk@g10code.com>
14
15	* dsa.c (selftest_sign_1024): Use the raw and not the pkcs1 flag.
16
17	* pubkey.c (gcry_pk_sign): Special case output generation for PKCS1.
18	(sexp_data_to_mpi): Parse "random-override" for pkcs1 encryption.
19	(pkcs1_encode_for_encryption): Add args RANDOM_OVERRIDE and
20	RANDOM_OVERRIDE_LEN.
21	(gcry_pk_encrypt): Special case output generation for PKCS1.
22	(sexp_data_to_mpi): Use GCRYMPI_FMT_USG for raw encoding.
23
242011-06-10  Werner Koch  <wk@g10code.com>
25
26	* pubkey.c (gcry_pk_sign): Use format specifier '%M' to avoid
27	leading zeroes.  Special case output generation for PSS.
28	(gcry_pk_encrypt): Special case output generation for OAEP.
29	(sexp_data_to_mpi): Use GCRYMPI_FMT_USG for PSS verify.
30
312011-06-09  Werner Koch  <wk@g10code.com>
32
33	* pubkey.c (oaep_decode): Make use of octet_string_from_mpi.
34	(sexp_to_enc): Skip "random-override".
35
36	* pubkey.c (oaep_encode, pss_encode): Add args RANDOM_OVERRIDE and
37	RANDOM_OVERRIDE_LEN.
38	(sexp_data_to_mpi): Extract new random-override parameter.
39
40	* pubkey.c (pss_encode, pss_verify): Use VALUE verbatim for MHASH.
41	(octet_string_from_mpi): Add arg SPACE.
42
432011-06-08  Werner Koch  <wk@g10code.com>
44
45	* pubkey.c (pss_encode, pss_verify): Restructure and comment code
46	to match rfc-3447.  Replace secure allocs by plain allocs and
47	wipememory.  Use gcry_md_hash_buffer.
48	(octet_string_from_mpi): New.
49
502011-06-03  Werner Koch  <wk@g10code.com>
51
52	* pubkey.c (oaep_decode): Add more comments and restructure to
53	match the description in RFC-3447.
54	(oaep_encode): Check for mgf1 error.  s/dlen/hlen/.
55
562011-05-31  Werner Koch  <wk@g10code.com>
57
58	* pubkey.c (mgf1): Optimize by using gcry_md_reset.  Re-implement
59	for easier readability.
60	(oaep_encode): Add more comments and restructure to match the
61	description in RFC-3447.
62
63	* pubkey.c (pkcs1_encode_for_signature, oaep_decode): Change
64	return value from one MPI to a buffer.
65	(gcry_pk_decrypt): Adjust for this change.
66
672011-05-30  Werner Koch  <wk@g10code.com>
68
69	* pubkey.c (pkcs1_decode_for_encryption): Change handling of
70	leading zero byte.
71
722011-05-27  Daiki Ueno  <ueno@unixuser.org>
73
74	* pubkey.c (gcry_pk_decrypt): Fix double-free when un-padding
75	invalid data.  Thanks to Tom Ritter.
76
772011-05-24  Daiki Ueno  <ueno@unixuser.org>
78
79	* rsa.c (rsa_verify): Use CMP if given, to check the decrypted
80	sig.
81
82	* pubkey.c (sexp_to_enc, sexp_data_to_mpi): Factor out
83	CTX initialization to ...
84	(init_encoding_ctx): .. new.
85	(gcry_pk_verify): Pass verify func and the arg to pubkey_verify.
86	(pss_encode, pss_verify, pss_verify_cmp): New.
87
882011-05-23  Daiki Ueno  <ueno@unixuser.org>
89
90	* pubkey.c (pkcs1_decode_for_encryption, oaep_decode): Fix memleak
91	when gcry_mpi_print fails.
92
932011-05-18  Daiki Ueno  <ueno@unixuser.org>
94
95	* pubkey.c (sexp_data_to_mpi): Factor some code out to ...
96	(pkcs1_encode_for_encryption): .. new,
97	(pkcs1_encode_for_signature): .. new.
98	(pkcs1_decode_for_encryption): New.
99	(gcry_pk_decrypt): Do un-padding for PKCS#1 as well as OAEP.
100	(sexp_to_enc): Abolish "unpad" flag, which is not necessary since
101	we can do un-padding implicitly when "pkcs1" or "oaep" is given.
102
1032011-05-11  Werner Koch  <wk@g10code.com>
104
105	* pubkey.c (sexp_to_enc, sexp_data_to_mpi): Set LABEL to NULL
106	after free.
107	(sexp_to_enc, sexp_data_to_mpi): Do not allow multiple encoding
108	flags.
109	(oaep_encode, oaep_decode, sexp_to_key, sexp_to_sig)
110	(sexp_to_enc, sexp_data_to_mpi, gcry_pk_encrypt, gcry_pk_sign)
111	(gcry_pk_genkey, _gcry_pk_get_elements): Replace access to ERRNO
112	by gpg_err_code_from_syserror.
113
1142011-05-11  Daiki Ueno  <ueno@unixuser.org>
115
116	* pubkey.c (sexp_data_to_mpi): Factor some code out to ...
117	(get_hash_algo): .. new.
118	(mgf1, oaep_encode, oaep_decode): New.
119	(sexp_to_enc): Add arg CTX.  Remove arg RET_WANT_PKCS1.  Support
120	OAEP.
121	(sexp_data_to_mpi): Add arg CTX.  Support OAEP.
122	(gcry_pk_encrypt): Pass a CTX to sexp_data_to_mpi.
123	(gcry_pk_decrypt): Pass a CTX tp sexp_to_enc and replace
124	WANT_PKCS1.  Implement unpadding for OAEP.
125	(gcry_pk_sign): Pass NULL for CTX arg of sexp_data_to_mpi.
126	(gcry_pk_verify): Ditto.
127
1282011-04-19  Werner Koch  <wk@g10code.com>
129
130	* cipher.c (gcry_cipher_open): Replace gpg_err_code_from_errno by
131	gpg_err_code_from_syserror.
132
1332011-04-11  Werner Koch  <wk@g10code.com>
134
135	* pubkey.c (gcry_pk_get_keygrip): Avoid double free of L2.
136
137	* cipher.c (_gcry_cipher_setctr): Clear unused lastiv info.
138	(gcry_cipher_ctl) <GCRYCTL_SET_CTR>: Implement by calling
139	_gcry_cipher_setctr.
140	(do_ctr_encrypt): Save last counter and reuse it.
141
142	* cipher.c (do_ctr_encrypt): Allow arbitrary length inputs to
143	match the 1.4 behaviour.
144
1452011-04-04  Werner Koch  <wk@g10code.com>
146
147	* ecc.c (compute_keygrip): Release L1 while parsing "curve".
148
149	* pubkey.c (gcry_pk_get_keygrip): Always release NAME and L2.
150	Reported by Ben Kibbey.
151
1522011-03-28  Werner Koch  <wk@g10code.com>
153
154	* primegen.c (_gcry_generate_elg_prime): Make sure that PRIME is
155	NULL if the called func ever returns an error.
156
157	* pubkey.c (gcry_pk_decrypt): Remove unused var PUBKEY.
158
1592011-03-09  Werner Koch  <wk@g10code.com>
160
161	* kdf.c: New.
162
1632011-02-22  Werner Koch  <wk@g10code.com>
164
165	* rijndael.c (aesni_cleanup_2_4): New.
166	(aesenc_xmm1_xmm0, do_aesni_ctr_4): New.
167	(_gcry_aes_ctr_enc): New.
168	* cipher.c (struct gcry_cipher_handle): Add CTR_ENC.  Move field
169	CTR into an u_ctr union and adjust all users.
170	(gcry_cipher_open): Use _gcry_aes_ctr_enc.
171	(do_ctr_encrypt): Use bulk mode.
172
1732011-02-18  Werner Koch  <wk@g10code.com>
174
175	* rijndael.c (u32_a_t): New.
176	(do_encrypt_aligned, do_encrypt_aligned): Use the new type to
177	avoid problems with strict aliasing rules.
178
1792011-02-16  Werner Koch  <wk@g10code.com>
180
181	* rijndael.c (do_aesni_cfb) [USE_AESNI]: New.
182	(_gcry_aes_cfb_enc, _gcry_aes_cfb_dec) [USE_AESNI]: Use new fucntion.
183
1842011-02-15  Werner Koch  <wk@g10code.com>
185
186	* rijndael.c (do_aesni_enc_aligned, do_aesni_dec_aligned): Use
187	movdqa for the key but keep using movdqu for the data.
188	(do_aesni): Remove alignment detection.  Don't burn the stack.
189	(aesni_prepare, aesni_cleanup): New macros.
190	(rijndael_encrypt, _gcry_aes_cfb_enc, _gcry_aes_cbc_enc)
191	(rijndael_decrypt, _gcry_aes_cfb_dec, _gcry_aes_cbc_dec): Use
192	these macros.  Don't burn the stack in the USE_AESNI case.
193	(do_setkey): Add disabled code to use aeskeygenassist.
194
1952011-02-14  Werner Koch  <wk@g10code.com>
196
197	* rijndael.c (ATTR_ALIGNED_16): New
198	(do_aesni): Do not copy if already aligned.
199	(do_encrypt, do_decrypt): Ditto.
200	(rijndael_decrypt, rijndael_encrypt): Increase stack burning amount.
201
202	* rijndael.c (RIJNDAEL_context): Reorder fields.  Change fieldname
203	ROUNDS to rounds.  Move padlock_key into u1.
204	(keySched, keySched2): Rename macros to keyscherr and keyschdec
205	and change all users.
206	(padlockkey): New macro.  Change all users of padlock_key.
207	* cipher.c (NEED_16BYTE_ALIGNED_CONTEXT): Always define if using gcc.
208	(struct gcry_cipher_handle): Align U_IV to at least 16 byte.
209
2102011-02-13  Werner Koch  <wk@g10code.com>
211
212	* rijndael.c (USE_AESNI): New.  Define for ia32 and gcc >= 4.
213	(m128i_t) [USE_AESNI]: New.
214	(RIJNDAEL_context) [USE_AESNI]: Add field use_aesni.
215	(do_setkey): Set USE_AESNI for all key lengths.
216	(prepare_decryption) [USE_AESNI]: Use aesimc instn if requested.
217	(do_aesni_enc_aligned, do_aesni_dec_aligned)
218	(do_aesni) [USE_AESNI]: New.
219	(rijndael_encrypt, _gcry_aes_cfb_enc, _gcry_aes_cbc_enc)
220	(rijndael_decrypt, _gcry_aes_cfb_dec)
221	(_gcry_aes_cbc_dec) [USE_AESNI]: Use do_aesni.
222
2232011-02-01  Werner Koch  <wk@g10code.com>
224
225	* pubkey.c (gcry_pk_get_curve): New.
226	(sexp_to_key): Add arg OVERRIDE_ELEMS.
227	(sexp_elements_extract_ecc): Allow for params only.
228	(gcry_pk_get_param): New.
229	* ecc.c (ecc_get_curve): New.
230	(ecc_get_param_sexp): New.
231
2322011-01-28  Werner Koch  <wk@g10code.com>
233
234	* pubkey.c (gcry_pk_genkey): Hack to insert the used curve name.
235
2362011-01-27  Werner Koch  <wk@g10code.com>
237
238	* ecc.c (fill_in_curve): Remove.
239	(generate_curve): Rename to ..
240	(fill_in_curve): this.  Remove setting of NAME_OID.
241	(ecc_encrypt_raw): Change name of arg DATA to K for better
242	readability.  Use ECC_public_key instead of ECC_secret_key.
243	Require a caller to pass a complete pkey array.
244	(ecc_decrypt_raw): Require a caller to pass a complete skey array.
245	(elliptic_curve_t): Add field NAME.
246	(fill_in_curve): Set field.
247	(generate_key): Add arg R_USED_CURVE.
248	(ecc_generate_ext): Return used curve name.
249
2502011-01-13  Andrey Jivsov  <openpgp@brainhub.org>  (wk)
251
252	* ecc.c (ec2os): Do not free passed parameters X and Y.  Adjust
253	callers.
254	(ecc_encrypt_raw, ecc_decrypt_raw): New.
255	(ecdh_names, _gcry_pubkey_spec_ecdh): New.
256	* pubkey.c (pubkey_table): Support ECDH.
257
2582010-08-19  Werner Koch  <wk@g10code.com>
259
260	* cipher.c (gcry_cipher_open): Remove double release of the module.
261	Fixes bug#1263.
262
2632010-06-10  Jeff Johnson  <n3npq@mac.com>  (wk)
264
265	* ecc.c (ecc_generate_ext): Parse transient-key flag.
266	(generate_key): Add arg TRANSIENT_KEY and use it to set the random
267	level.
268
2692010-04-12  Brad Hards  <bradh@frogmouth.net>  (wk)
270
271	Spelling fixes.
272
2732010-03-26  Werner Koch  <wk@g10code.com>
274
275	* tiger.c (asn): Unfetter the old TIGER from an OID.
276	(TIGER_CONTEXT): Add field VARIANT.
277	(tiger_init): Factor code out to ...
278	(do_init): New.
279	(tiger1_init, tiger2_init): New.
280	(_gcry_digest_spec_tiger1, _gcry_digest_spec_tiger2): New.
281	* md.c (digest_table): Add TIGER1 and TIGER2 variants.
282
2832009-12-11  Werner Koch  <wk@g10code.com>
284
285	* sha256.c (Cho, Maj, Sum0, Sum1): Turn macros into inline
286	functions.
287	(transform): Partly unroll to interweave the chain variables
288
289	* sha512.c (ROTR, Ch, Maj, Sum0, Sum1): Turn macros into inline
290	functions.
291	(transform): Partly unroll to interweave the chain variables.
292	Suggested by Christian Grothoff.
293
2942009-12-10  Werner Koch  <wk@g10code.com>
295
296	* Makefile.am (o_flag_munging): New.
297	(tiger.o, tiger.lo): Use it.
298
299	* cipher.c (do_ctr_encrypt): Add arg OUTBUFLEN.  Check for
300	suitable value.  Add check for valid inputlen.  Wipe temporary
301	memory.
302	(do_ctr_decrypt): Likewise.
303	(do_cbc_encrypt, do_cbc_decrypt): Add arg OUTBUFLEN.  Check for
304	suitable value.  Move check for valid inputlen to here; change
305	returned error from INV_ARG to INV_LENGTH.
306	(do_ecb_encrypt, do_ecb_decrypt): Ditto.
307	(do_cfb_encrypt, do_cfb_decrypt): Ditto.
308	(do_ofb_encrypt, do_ofb_decrypt): Ditto.
309	(cipher_encrypt, cipher_encrypt): Adjust for above changes.
310	(gcry_cipher_encrypt, gcry_cipher_decrypt): Simplify.
311
3122009-12-09  Werner Koch  <wk@g10code.com>
313
314	* cipher.c (gcry_cipher_open): Allow for GCRY_CIPHER_MODE_AESWRAP.
315	(cipher_encrypt, cipher_decrypt): Ditto.
316	(do_aeswrap_encrypt, do_aeswrap_decrypt): New.
317	(struct gcry_cipher_handle): Add field marks.
318	(cipher_setkey, cipher_setiv): Update marks flags.
319	(cipher_reset): Reset marks.
320	(cipher_encrypt, cipher_decrypt): Add new arg OUTBUFLEN.
321	(gcry_cipher_encrypt, gcry_cipher_decrypt): Pass outbuflen to
322	cipher_encrypt.  Replace GPG_ERR_TOO_SHORT by
323	GPG_ERR_BUFFER_TOO_SHORT.
324
3252009-08-21  Werner Koch  <wk@g10code.com>
326
327	* dsa.c (dsa_generate_ext): Release retfactors array before
328	setting it to NULL.  Reported by Daiko Ueno.
329
3302009-07-02  Werner Koch  <wk@g10code.com>
331
332	* md.c (md_read): Fix incomplete check for NULL.
333	Reported by Fabian Kail.
334
3352009-03-31  Werner Koch  <wk@g10code.com>
336
337	* rsa.c (rsa_check_secret_key): Return GPG_ERR_BAD_SECKEY and not
338	GPG_ERR_PUBKEY_ALGO.
339
3402009-02-16  Werner Koch  <wk@g10code.com>
341
342	* rsa.c (generate_x931): Do not initialize TBL with automatic
343	variables.
344	* whirlpool.c, tiger.c, sha256.c, sha1.c, rmd160.c, md5.c
345	* md4.c, crc.c: Remove memory.h.  This is garbage from gnupg.
346	Reported by Dan Fandrich.
347
3482009-01-22  Werner Koch  <wk@g10code.com>
349
350	* ecc.c (compute_keygrip): Remove superfluous const.
351
3522009-01-06  Werner Koch  <wk@g10code.com>
353
354	* rmd160.c (oid_spec_rmd160): Add TeleTrust identifier.
355
3562008-12-10  Werner Koch  <wk@g10code.com>
357
358	* dsa.c (generate): Add arg DOMAIN and use it if specified.
359	(generate_fips186): Ditto.
360	(dsa_generate_ext): Parse and check the optional "domain"
361	parameter and pass them to the generate functions.
362
363	* rijndael.c (rijndael_names): Add "AES128" and "AES-128".
364	(rijndael192_names): Add "AES-192".
365	(rijndael256_names): Add "AES-256".
366
3672008-12-05  Werner Koch  <wk@g10code.com>
368
369	* dsa.c (generate): Add arg TRANSIENT_KEY and use it to detrmine
370	the RNG quality needed.
371	(dsa_generate_ext): Parse the transient-key flag und pass it to
372	generate.
373
3742008-11-28  Werner Koch  <wk@g10code.com>
375
376	* dsa.c (generate_fips186): Add arg DERIVEPARMS and use the seed
377	value if available.
378
379	* primegen.c (_gcry_generate_fips186_2_prime): Fix inner p loop.
380
3812008-11-26  Werner Koch  <wk@g10code.com>
382
383	* primegen.c (_gcry_generate_fips186_3_prime): New.
384	* dsa.c (generate_fips186): Add arg USE_FIPS186_2.
385	(dsa_generate_ext): Parse new flag use-fips183-2.
386
3872008-11-25  Werner Koch  <wk@g10code.com>
388
389	* dsa.c (generate_fips186): New.
390	(dsa_generate_ext): Use new function if derive-parms are given or
391	if in FIPS mode.
392	* primegen.c (_gcry_generate_fips186_2_prime): New.
393
3942008-11-24  Werner Koch  <wk@g10code.com>
395
396	* pubkey.c (gcry_pk_genkey): Insert code to output extrainfo.
397	(pubkey_generate): Add arg R_EXTRAINFO and pass it to the extended
398	key generation function.
399	* rsa.c (gen_x931_parm_xp, gen_x931_parm_xi): New.
400	(generate_x931): Generate params if not given.
401	(rsa_generate_ext): Parse use-x931 flag.  Return p-q-swapped
402	indicator.
403	* dsa.c (dsa_generate_ext): Put RETFACTORS into R_EXTRAINFO if
404	possible.
405
406	* pubkey.c (gcry_pk_genkey): Remove parsing of almost all
407	parameters and pass the parameter S-expression to pubkey_generate.
408	(pubkey_generate): Simplify by requitring modules to parse the
409	parameters. Remove the special cases for Elgamal and ECC.
410	(sexp_elements_extract_ecc): Add arg EXTRASPEC and use it.  Fix
411	small memory leak.
412	(sexp_to_key): Pass EXTRASPEC to sexp_elements_extract_ecc.
413	(pubkey_table) [USE_ELGAMAL]: Add real extraspec.
414	* rsa.c (rsa_generate_ext): Adjust for new calling convention.
415	* dsa.c (dsa_generate_ext): Ditto.
416	* elgamal.c (_gcry_elg_generate): Ditto. Rename to elg_generate_ext.
417	(elg_generate): New.
418	(_gcry_elg_generate_using_x): Remove after merging code with
419	elg_generate_ext.
420	(_gcry_pubkey_extraspec_elg): New.
421	(_gcry_elg_check_secret_key, _gcry_elg_encrypt, _gcry_elg_sign)
422	(_gcry_elg_verify, _gcry_elg_get_nbits): Make static and remove
423	_gcry_ prefix.
424	* ecc.c (_gcry_ecc_generate): Rename to ecc_generate_ext and
425	adjust for new calling convention.
426	(_gcry_ecc_get_param): Rename to ecc_get_param and make static.
427	(_gcry_pubkey_extraspec_ecdsa): Add ecc_generate_ext and
428	ecc_get_param.
429
4302008-11-20  Werner Koch  <wk@g10code.com>
431
432	* pubkey.c (pubkey_generate): Add arg DERIVEPARMS.
433	(gcry_pk_genkey): Parse derive-parms and pass it to above.
434	* rsa.c (generate_x931): New.
435	(rsa_generate_ext): Add arg DERIVEPARMS and call new function in
436	fips mode or if DERIVEPARMS is given.
437	* primegen.c (_gcry_derive_x931_prime, find_x931_prime): New.
438
4392008-11-19  Werner Koch  <wk@g10code.com>
440
441	* rsa.c (rsa_decrypt): Use gcry_create_nonce for blinding.
442	(generate): Rename to generate_std.
443
4442008-11-05  Werner Koch  <wk@g10code.com>
445
446	* md.c (md_open): Use a switch to set the Bsize.
447	(prepare_macpads): Fix long key case for SHA384 and SHA512.
448
449	* cipher.c (gcry_cipher_handle): Add field EXTRASPEC.
450	(gcry_cipher_open): Set it.
451	(gcry_cipher_ctl): Add private control code to disable weak key
452	detection and to return the current input block.
453	* des.c (_tripledes_ctx): Add field FLAGS.
454	(do_tripledes_set_extra_info): New.
455	(_gcry_cipher_extraspec_tripledes): Add new function.
456	(do_tripledes_setkey): Disable weak key detection.
457
4582008-10-24  Werner Koch  <wk@g10code.com>
459
460	* md.c (digest_table): Allow MD5 in fips mode.
461	(md_register_default): Take special action for MD5.
462	(md_enable, gcry_md_hash_buffer): Ditto.
463
4642008-09-30  Werner Koch  <wk@g10code.com>
465
466	* rijndael.c (do_setkey): Properly align "t" and "tk".
467	(prepare_decryption): Properly align "w".  Fixes bug #936.
468
4692008-09-18  Werner Koch  <wk@g10code.com>
470
471	* pubkey.c (gcry_pk_genkey): Parse domain parameter.
472	(pubkey_generate): Add new arg DOMAIN and remove special case for
473	DSA with qbits.
474	* rsa.c (rsa_generate): Add dummy args QBITS, NAME and DOMAIN and
475	rename to rsa_generate_ext.  Change caller.
476	(_gcry_rsa_generate, _gcry_rsa_check_secret_key)
477	(_gcry_rsa_encrypt, _gcry_rsa_decrypt, _gcry_rsa_sign)
478	(_gcry_rsa_verify, _gcry_rsa_get_nbits): Make static and remove
479	_gcry_ prefix.
480	(_gcry_pubkey_spec_rsa, _gcry_pubkey_extraspec_rsa): Adjust names.
481	* dsa.c (dsa_generate_ext): New.
482	(_gcry_dsa_generate): Replace code by a call to dsa_generate.
483	(_gcry_dsa_check_secret_key, _gcry_dsa_sign, _gcry_dsa_verify)
484	(_gcry_dsa_get_nbits): Make static and remove _gcry prefix.
485	(_gcry_dsa_generate2): Remove.
486	(_gcry_pubkey_spec_dsa): Adjust to name changes.
487	(_gcry_pubkey_extraspec_rsa): Add dsa_generate_ext.
488
4892008-09-16  Werner Koch  <wk@g10code.com>
490
491	* ecc.c (run_selftests): Add arg EXTENDED.
492
4932008-09-12  Werner Koch  <wk@g10code.com>
494
495	* rsa.c (test_keys): Do a bad case signature check.
496	* dsa.c (test_keys): Do a bad case check.
497
498	* cipher.c (_gcry_cipher_selftest): Add arg EXTENDED and pass it
499	to the called tests.
500	* md.c (_gcry_md_selftest): Ditto.
501	* pubkey.c (_gcry_pk_selftest): Ditto.
502	* rijndael.c (run_selftests): Add arg EXTENDED and pass it to the
503	called tests.
504	(selftest_fips_128): Add arg EXTENDED and run only one test
505	non-extended mode.
506	(selftest_fips_192): Add dummy arg EXTENDED.
507	(selftest_fips_256): Ditto.
508	* hmac-tests.c (_gcry_hmac_selftest): Ditto.
509	(run_selftests): Ditto.
510	(selftests_sha1): Add arg EXTENDED and run only one test
511	non-extended mode.
512	(selftests_sha224, selftests_sha256): Ditto.
513	(selftests_sha384, selftests_sha512): Ditto.
514	* sha1.c (run_selftests): Add arg EXTENDED and pass it to the
515	called test.
516	(selftests_sha1): Add arg EXTENDED and run only one test
517	non-extended mode.
518	* sha256.c (run_selftests): Add arg EXTENDED and pass it to the
519	called tests.
520	(selftests_sha224): Add arg EXTENDED and run only one test
521	non-extended mode.
522	(selftests_sha256): Ditto.
523	* sha512.c (run_selftests): Add arg EXTENDED and pass it to the
524	called tests.
525	(selftests_sha384): Add arg EXTENDED and run only one test
526	non-extended mode.
527	(selftests_sha512): Ditto.
528	* des.c (run_selftests): Add arg EXTENDED and pass it to the
529	called test.
530	(selftest_fips): Add dummy arg EXTENDED.
531	* rsa.c (run_selftests): Add dummy arg EXTENDED.
532
533	* dsa.c (run_selftests): Add dummy arg EXTENDED.
534
535	* rsa.c (extract_a_from_sexp): New.
536	(selftest_encr_1024): Check that the ciphertext does not match the
537	plaintext.
538	(test_keys): Improve tests and return an error status.
539	(generate): Return an error if test_keys fails.
540	* dsa.c (test_keys): Add comments and return an error status.
541	(generate): Return an error if test_keys failed.
542
5432008-09-11  Werner Koch  <wk@g10code.com>
544
545	* rsa.c (_gcry_rsa_decrypt): Return an error instead of calling
546	BUG in case of a practically impossible condition.
547	(sample_secret_key, sample_public_key): New.
548	(selftest_sign_1024, selftest_encr_1024): New.
549	(selftests_rsa): Implement tests.
550	* dsa.c (sample_secret_key, sample_public_key): New.
551	(selftest_sign_1024): New.
552	(selftests_dsa): Implement tests.
553
5542008-09-09  Werner Koch  <wk@g10code.com>
555
556	* hmac-tests.c (selftests_sha1): Add tests.
557	(selftests_sha224, selftests_sha384, selftests_sha512): Make up tests.
558
559	* hash-common.c, hash-common.h: New.
560	* sha1.c (selftests_sha1): Add 3 tests.
561	* sha256.c (selftests_sha256, selftests_sha224): Ditto.
562	* sha512.c (selftests_sha512, selftests_sha384): Ditto.
563
5642008-08-29  Werner Koch  <wk@g10code.com>
565
566	* pubkey.c (gcry_pk_get_keygrip): Remove the special case for RSA
567	and check whether a custom computation function has been setup.
568	* rsa.c (compute_keygrip): New.
569	(_gcry_pubkey_extraspec_rsa): Setup this function.
570	* ecc.c (compute_keygrip): New.
571	(_gcry_pubkey_extraspec_ecdsa): Setup this function.
572
5732008-08-28  Werner Koch  <wk@g10code.com>
574
575	* cipher.c (cipher_decrypt, cipher_encrypt): Return an error if
576	mode NONE is used.
577	(gcry_cipher_open): Allow mode NONE only with a debug flag set and
578	if not in FIPS mode.
579
5802008-08-26  Werner Koch  <wk@g10code.com>
581
582	* pubkey.c (pubkey_generate): Add arg KEYGEN_FLAGS.
583	(gcry_pk_genkey): Implement new parameter "transient-key" and
584	pass it as flags to pubkey_generate.
585	(pubkey_generate): Make use of an ext_generate function.
586	* rsa.c (generate): Add new arg transient_key and pass appropriate
587	args to the prime generator.
588	(_gcry_rsa_generate): Factor all code out to ...
589	(rsa_generate): .. new func with extra arg KEYGEN_FLAGS.
590	(_gcry_pubkey_extraspec_ecdsa): Setup rsa_generate.
591	* primegen.c (_gcry_generate_secret_prime)
592	(_gcry_generate_public_prime): Add new arg RANDOM_LEVEL.
593
5942008-08-21  Werner Koch  <wk@g10code.com>
595
596	* primegen.c (_gcry_generate_secret_prime)
597	(_gcry_generate_public_prime): Use a constant macro for the random
598	level.
599
6002008-08-19  Werner Koch  <wk@g10code.com>
601
602	* pubkey.c (sexp_elements_extract_ecc) [!USE_ECC]: Do not allow
603	allow "curve" parameter.
604
6052008-08-15  Werner Koch  <wk@g10code.com>
606
607	* pubkey.c (_gcry_pk_selftest): New.
608	* dsa.c (selftests_dsa, run_selftests): New.
609	* rsa.c (selftests_rsa, run_selftests): New.
610	* ecc.c (selftests_ecdsa, run_selftests): New.
611
612	* md.c (_gcry_md_selftest): New.
613	* sha1.c (run_selftests, selftests_sha1): New.
614	* sha256.c (selftests_sha224, selftests_sha256, run_selftests): New.
615	* sha512.c (selftests_sha384, selftests_sha512, run_selftests): New.
616
617	* des.c (selftest): Remove static variable form selftest.
618	(des_setkey): No on-the-fly self test in fips mode.
619	(tripledes_set3keys): Ditto.
620
621	* cipher.c (_gcry_cipher_setkey, _gcry_cipher_setiv):
622
623	* dsa.c (generate): Bail out in fips mode if NBITS is less than	1024.
624	* rsa.c (generate): Return an error code if the the requested size
625	is less than 1024 and we are in fpis mode.
626	(_gcry_rsa_generate): Take care of that error code.
627
628	* ecc.c (generate_curve): In fips mode enable only NIST curves.
629
630	* cipher.c (_gcry_cipher_selftest): New.
631
632	* sha512.c (_gcry_digest_extraspec_sha384)
633	(_gcry_digest_extraspec_sha512): New.
634	* sha256.c (_gcry_digest_extraspec_sha224)
635	(_gcry_digest_extraspec_sha256): New.
636	* sha1.c (_gcry_digest_extraspec_sha1): New.
637	* ecc.c (_gcry_pubkey_extraspec_ecdsa): New.
638	* dsa.c (_gcry_pubkey_extraspec_dsa): New.
639	* rsa.c (_gcry_pubkey_extraspec_rsa): New.
640	* rijndael.c (_gcry_cipher_extraspec_aes)
641	(_gcry_cipher_extraspec_aes192, _gcry_cipher_extraspec_aes256): New.
642	* des.c (_gcry_cipher_extraspec_tripledes): New.
643
644	* cipher.c (gcry_cipher_register): Rename to _gcry_cipher_register.
645	Add arg EXTRASPEC.
646	(dummy_extra_spec): New.
647	(cipher_table_entry): Add extraspec field.
648	* md.c (_gcry_md_register): Rename to _gcry_md_register.  Add
649	arg EXTRASPEC.
650	(dummy_extra_spec): New.
651	(digest_table_entry): Add extraspec field.
652	* pubkey.c (gcry_pk_register): Rename to _gcry_pk_register.  Add
653	arg EXTRASPEC.
654	(dummy_extra_spec): New.
655	(pubkey_table_entry): Add extraspec field.
656
657	* ac.c: Let most public functions return GPG_ERR_UNSUPPORTED in
658	fips mode.
659
660	* pubkey.c (pubkey_table_entry): Add field FIPS_ALLOWED and mark
661	appropriate algorithms.
662	(dummy_generate, dummy_check_secret_key, dummy_encrypt)
663	(dummy_decrypt, dummy_sign, dummy_verify, dummy_get_nbits): Signal
664	a fips error when used.
665	(gcry_pk_register): In fips mode do not allow to register new
666	algorithms.
667
668	* md.c (digest_table): Add field FIPS_ALLOWED and mark appropriate
669	algorithms.
670	(md_register_default): In fips mode register only fips algorithms.
671	(gcry_md_register): In fips mode do not allow to register new
672	algorithms.
673	(gcry_md_get): Signal a fips error if called.
674	(gcry_md_hash_buffer): Do not allow rmd160 when not in fips mode.
675	(md_start_debug): Disable in fips_mode.
676
677	* md.c (gcry_md_register_default): Rename to ..
678	(md_register_default): .. this.
679	(md_digest): Remove this commented fucntion.
680	* pubkey.c (gcry_pk_register_default): Rename to ..
681	(pk_register_default): .. this.
682
683	* cipher.c (cipher_table_entry): Add field FIPS_ALLOWED.
684	(gcry_cipher_register_default): Register only fips approved
685	algorithms.
686	(gcry_cipher_register): Do not allow to register new ciphers.
687	(cipher_setiv): Signal fips error.
688
689	* cipher (gcry_cipher_register_default): Rename to ..
690	(cipher_register_default): .. this.
691	(REGISTER_DEFAULT_CIPHERS): Adjust for that change.
692
6932008-07-05  Werner Koch  <wk@g10code.com>
694
695	* random-daemon.c, random.h, rndhw.c, rndunix.c, rand-internal.h
696	* random.c, rndegd.c, rndlinux.c, rndw32.c: Move to ../cipher.
697	* Makefile.am: Remove random stuff.
698
6992008-06-24  Szakats Istvan <szaki.ms@gmail.com>  (wk)
700
701	* ac.c (_gcry_ac_key_destroy, _gcry_ac_key_pair_generate): Relase
702	some more memory.
703
7042008-04-22  Werner Koch  <wk@g10code.com>
705
706	* rijndael.c (_gcry_aes_cfb_enc, _gcry_aes_cbc_enc)
707	(_gcry_aes_cfb_dec, _gcry_aes_cbc_dec): Use Padlock if possible.
708
7092008-04-18  Werner Koch  <wk@g10code.com>
710
711	* sha1.c (transform_aligned): Remove.  That is will obviosuly not
712	work because we need a scratch working area and our internal API
713	does not allow to modify the buffers.
714
715	* rijndael.c: Factor tables out to ..
716	* rijndael-tables.h: .. new.
717
718	* ac.c (ac_data_extract): Make static.
719
720	* camellia.h [HAVE_CONFIG_H]: Include config.h.
721
722	* rndw32.c (registry_poll): Only print the performance data
723	problem warning once.  Suggested by Simon Josefsson.
724
7252008-03-19  Werner Koch  <wk@g10code.com>
726
727	* cipher.c (gcry_cipher_open) [USE_AES]: Init bulk encryption only
728	if requested.  Suggested by Dirk Stoecker.
729
7302008-03-18  Werner Koch  <wk@g10code.com>
731
732	* sha1.c: Include stdint.h.
733	(transform): Add arg NBLOCKS so that we can work on more than one
734	block and avoid updates of the chaining variables.  Changed all
735	callers to use 1.
736	(sha1_write): Replace loop around transform.
737	(transform_aligned) [WORDS_BIGENDIAN]: New.
738	(TRANSFORM): New macro to replace all direct calls of transform.
739
7402008-03-17  Werner Koch  <wk@g10code.com>
741
742	* rijndael.c (_gcry_aes_cfb_dec): New.
743	(do_encrypt): Factor code out to ..
744	(do_encrypt_aligned): .. New.
745	(_gcry_aes_cfb_enc, _gcry_aes_cfb_dec): Use new function.
746	(do_decrypt): Factor code out to ..
747	(do_decrypt_aligned): .. new.
748	(_gcry_aes_cbc_enc, _gcry_aes_cbc_dec): New.
749	* cipher.c (struct gcry_cipher_handle): Put field IV into new
750	union U_IV to enforce proper alignment.  Change all users.
751	(do_cfb_decrypt): Optimize.
752	(do_cbc_encrypt, do_cbc_decrypt): Optimize.
753
7542008-03-15  Werner Koch  <wk@g10code.com>
755
756	* rijndael.c (_gcry_aes_cfb_enc): New.
757	* cipher.c (struct gcry_cipher_handle): Add field ALGO and BULK.
758	(gcry_cipher_open): Set ALGO and BULK.
759	(do_cfb_encrypt): Optimize.
760
7612008-02-18  Werner Koch  <wk@g10code.com>
762
763	* rsa.c (_gcry_rsa_verify) [IS_DEVELOPMENT_VERSION]: Print
764	intermediate results.
765
7662008-01-08  Werner Koch  <wk@g10code.com>
767
768	* random.c (add_randomness): Do not just increment
769	POOL_FILLED_COUNTER but update it by the actual amount of data.
770
7712007-12-13  Werner Koch  <wk@g10code.com>
772
773	* pubkey.c (sexp_data_to_mpi): Support SHA-224.
774
7752007-12-05  Werner Koch  <wk@g10code.com>
776
777	* rijndael.c (USE_PADLOCK): Depend on ENABLE_PADLOCK_SUPPORT.
778	* rndhw.c (USE_PADLOCK): Ditto
779
780	* rsa.c (secret): Fixed condition test for using CRT.  Reported by
781	Dean Scarff.  Fixes bug#864.
782	(_gcry_rsa_check_secret_key): Return an erro if the optional
783	parameters are missing.
784	* pubkey.c (sexp_elements_extract): Add arg ALGO_NAME. Changed all
785	callers to pass NULL. Add hack to allow for optional RSA
786	parameters.
787	(sexp_to_key): Pass algo name to sexp_elements_extract.
788
7892007-12-03  Werner Koch  <wk@g10code.com>
790
791	* random.c (gcry_random_add_bytes): Implement it.
792	* rand-internal.h (RANDOM_ORIGIN_EXTERNAL): New.
793
7942007-11-30  Werner Koch  <wk@g10code.com>
795
796	* rndhw.c: New.
797	* rndlinux.c (_gcry_rndlinux_gather_random): Try to read 50%
798	directly from the hwrng.
799	* random.c (do_fast_random_poll): Also run the hw rng fast poll.
800	(_gcry_random_dump_stats): Tell whether the hw rng failed.
801
8022007-11-29  Werner Koch  <wk@g10code.com>
803
804	* rijndael.c (USE_PADLOCK): Define new macro used for ia32.
805	(RIJNDAEL_context) [USE_PADLOCK]: Add fields USE_PADLOCK and
806	PADLOCK_KEY.
807	(do_setkey) [USE_PADLOCK]: Enable padlock if available for 128 bit
808	AES.
809	(do_padlock) [USE_PADLOCK]: New.
810	(rijndael_encrypt, rijndael_decrypt) [USE_PADLOCK]: Divert to
811	do_padlock.
812	* cipher.c (cipher_context_alignment_t): New.  Use it in this
813	module in place of PROPERLY_ALIGNED_TYPE.
814	(NEED_16BYTE_ALIGNED_CONTEXT): Define macro for ia32.
815	(struct gcry_cipher_handle): Add field HANDLE_OFFSET.
816	(gcry_cipher_open): Take care of increased alignment requirements.
817	(gcry_cipher_close): Ditto.
818
8192007-11-28  Werner Koch  <wk@g10code.com>
820
821	* sha256.c (asn224): Fixed wrong template.  It happened due to a
822	bug in RFC4880.  SHA-224 is not in the stable version of libgcrypt
823	so the consequences are limited to users of this devel version.
824
8252007-10-31  Werner Koch  <wk@g10code.com>
826
827	* ac.c (gcry_ac_data_new): Remove due to the visibility wrapper.
828	(gcry_ac_data_destroy, gcry_ac_data_copy, gcry_ac_data_length)
829	(gcry_ac_data_set, gcry_ac_data_get_name, gcry_ac_data_get_index)
830	(gcry_ac_data_to_sexp, gcry_ac_data_from_sexp)
831	(gcry_ac_data_clear, gcry_ac_io_init, gcry_ac_open)
832	(gcry_ac_close, gcry_ac_key_init, gcry_ac_key_pair_generate)
833	(gcry_ac_key_pair_extract, gcry_ac_key_destroy)
834	(gcry_ac_key_pair_destroy, gcry_ac_key_data_get)
835	(gcry_ac_key_test, gcry_ac_key_get_nbits, gcry_ac_key_get_grip)
836	(gcry_ac_data_encrypt, gcry_ac_data_decrypt, gcry_ac_data_sign)
837	(gcry_ac_data_verify, gcry_ac_data_encode, gcry_ac_data_decode)
838	(gcry_ac_mpi_to_os, gcry_ac_mpi_to_os_alloc, gcry_ac_os_to_mpi)
839	(gcry_ac_data_encrypt_scheme, gcry_ac_data_decrypt_scheme)
840	(gcry_ac_data_sign_scheme, gcry_ac_data_verify_scheme)
841	(gcry_ac_io_init_va): Ditto.
842	(gcry_ac_id_to_name, gcry_ac_name_to_id): Remove as these
843	deprecated functions are now implemented by visibility.c.
844
8452007-10-26  Werner Koch  <wk@g10code.com>
846
847	* rndw32.c: Disable debug flag.
848
8492007-10-25  Werner Koch  <wk@g10code.com>
850
851	* rndw32.c: Updated from current cryptlib snapshot and modified
852	for our use.  Removed support from pre NT systems.
853	(slow_gatherer_windows95): Remove.
854	(_gcry_rndw32_gather_random): Require an NT platform.
855	(init_system_rng, read_system_rng, read_mbm_data): New.
856	(slow_gatherer_windowsNT): Rename to ...
857	(slow_gatherer): .. this.  Read system RNG and MBM.
858	(registry_poll): New with code factored out from slow_gatherer.
859
8602007-08-23  Werner Koch  <wk@g10code.com>
861
862	* random.c (pool_filled_counter): New.
863	(add_randomness): Use it.
864
8652007-08-22  Werner Koch  <wk@g10code.com>
866
867	* rndw32.c, rndunix.c: Switched to LGPL.
868
8692007-05-30  Werner Koch  <wk@g10code.com>
870
871	* camellia.h, camellia.c: Replace by new LGPL version and adjusted
872	camellia.h.
873
8742007-05-09  Marcus Brinkmann  <marcus@g10code.de>
875
876	* ac.c (_gcry_ac_io_init_va, _gcry_ac_io_write, _gcry_ac_io_read):
877	Adjust users of gcry_ac_io_t because union is not anonymous
878	anymore.
879
8802007-05-02  Werner Koch  <wk@g10code.com>
881
882	* camellia-glue.c (camellia_setkey, camellia_encrypt)
883	(camellia_decrypt): Recalculated used stack size in called
884	functions.
885	* camellia.h: Redefine external symbols.
886
8872007-05-02  David Shaw  <dshaw@jabberwocky.com>
888
889	* Makefile.am, cipher.c: Add Camellia.
890
891	* camellia-glue.c: New.  The necessary glue to interface libgcrypt
892	to the stock NTT Camellia distribution.
893
894	* camellia.h, camellia.c: The stock NTT Camellia distribution
895	(GPL).
896
8972007-04-30  David Shaw  <dshaw@jabberwocky.com>
898
899	* cipher.c: Use #if instead of #ifdef as configure defines the
900	USE_cipher defines as 0 for disabled.
901
9022007-04-30  Werner Koch  <wk@g10code.com>
903
904	* rndegd.c (_gcry_rndegd_set_socket_name): New.
905
9062007-04-30  Marcus Brinkmann  <marcus@g10code.de>
907
908	* ecc.c (ec2os): Fix relocation of short numbers.
909
910	* ecc.c (generate_key): Do not allocate D, which will be allocated
911	by GEN_K.  Remove G.  Fix test if g_x, g_y resp. q_x, q_y are
912	requested.
913	(_gcry_ecc_generate): Release unneeded members of SK.
914	* pubkey.c (sexp_to_key): Release NAME.
915
9162007-04-28  Marcus Brinkmann  <marcus@g10code.de>
917
918	* ac.c (gcry_ac_mpi): Remove member NAME_PROVIDED.
919	(ac_data_mpi_copy, _gcry_ac_data_set, _gcry_ac_data_get_name)
920	(_gcry_ac_data_get_index, ac_data_construct): Adjust handling of
921	NAME accordingly.
922
9232007-04-20  Werner Koch  <wk@g10code.com>
924
925	* ecc.c (domain_parms): Add standard brainpool curves.
926
9272007-04-18  Werner Koch  <wk@g10code.com>
928
929	* ecc.c (generate_curve): Implement alias mechanism.
930
931	* pubkey.c (sexp_elements_extract_ecc): New.
932	(sexp_to_key): Add special case for ecc.
933	(sexp_to_key, sexp_to_sig, sexp_to_enc, gcry_pk_genkey): Replace
934	name_terminated stuff by a call to _gcry_sexp_nth_string.
935	(gcry_pk_get_keygrip): Ditto.
936
9372007-04-16  Werner Koch  <wk@g10code.com>
938
939	* ecc.c (_gcry_ecc_generate): Renamed DUMMY to CURVE and use it.
940
9412007-04-13  Marcus Brinkmann  <marcus@g10code.de>
942
943	* ac.c (ac_data_construct): Cast const away to suppress compiler
944	warning.
945
946	* ecc.c (ecc_generate): Avoid compiler warning for unused argument
947	DUMMY.
948	(ecc_verify): Avoid compiler warning for unused arguments CMP and
949	OPAQUEV.
950
9512007-04-06  Werner Koch  <wk@g10code.com>
952
953	* sha1.c (oid_spec_sha1): Add another oid from X9.62.
954
9552007-03-28  Werner Koch  <wk@g10code.com>
956
957	* pubkey.c (gcry_pk_genkey): Do not issue misc-key-info if it is
958	empty.
959	(gcry_pk_genkey): New parameter "curve".
960
961	* ecc.c: Entirely rewritten with only a few traces of the old
962	code left.
963	(_gcry_ecc_generate): New.
964	(generate_key) New arg NAME.
965	(generate_curve): Ditto.  Return actual number of NBITS.
966
9672007-03-26  Werner Koch  <wk@g10code.com>
968
969	* pubkey.c (gcry_pk_genkey): Increase size of SKEY array and add a
970	runtime bounds check.
971
9722007-03-23  Werner Koch  <wk@g10code.com>
973
974	* ecc.c (ecc_ctx_init, ecc_ctx_free, ecc_mod, ecc_mulm): New.
975	(duplicate_point, sum_points, escalar_mult): Don't use a
976	copy of base->p.  Replaced all mpi_mulm by ecc_mulm so that we can
977	experiment with different algorithms.
978	(generate_key, check_secret_key, sign, verify): Initialize a
979	computation context for use by ecc_mulm.
980
9812007-03-22  Werner Koch  <wk@g10code.com>
982
983	* pubkey.c (pubkey_table): Initialize ECC.
984	* Makefile.am (EXTRA_libcipher_la_SOURCES): Add ecc.c.
985	* ecc.c: New. Heavily reformatted and changed for use in libgcrypt.
986	(point_init): New.
987	(escalar_mult): Make arg R the first arg to be similar to the mpi
988	functions.
989	(duplicate_point): Ditto
990	(sum_points): Ditto
991	(sign, verify): Remove unneeded copy operations.
992	(sum_points): Removed memory leaks and optimized some compares.
993	(verify): Simplified input check.
994
9952007-03-14  Werner Koch  <wk@g10code.com>
996
997	* random.c (MASK_LEVEL): Removed macro as it was used only at one
998	place.  Open coded it there.
999	(gcry_randomize, _gcry_update_random_seed_file)
1000	(_gcry_fast_random_poll): Factor lock code out to ..
1001	(lock_pool, unlock_pool): .. new.
1002	(initialize): Look the pool while allocating.
1003	(read_random_source, do_fast_random_poll): Moved intialization to ...
1004	(initialize): .. here.
1005	(_gcry_enable_quick_random_gen): No more need for initialization.
1006	(is_initialized):  Moved this global flag to ..
1007	(initialize): .. here and changed all users to unconditionally call
1008	initialize.
1009	(add_randomness): Remove initalization here.  It simply can't
1010	happen.
1011
1012	* random.c (enum random_origins): Moved to ..
1013	* rand-internal.h: .. here.
1014	* rndunix.c (_gcry_rndunix_gather_random): Use enum in prototype
1015	for ORIGIN and renamed REQUESTOR to ORIGIN.
1016	* rndegd.c (_gcry_rndegd_gather_random): Ditto.
1017	* rndlinux.c (_gcry_rndlinux_gather_random): Ditto.
1018	* rndw32.c (_gcry_rndw32_gather_random): Ditto.
1019	(_gcry_rndw32_gather_random_fast): Ditto.
1020
10212007-03-13  Werner Koch  <wk@g10code.com>
1022
1023	* random.c (enum random_origins): New.
1024	(add_randomness): Renamed arg SOURCE to ORIGIN.
1025	(read_random_source): Renamed arg REQUESTOR to ORIGIN.
1026	(getfnc_gather_random): Removed static variable because this
1027	function is only called one and thus we don't need this
1028	optimization.
1029	(_gcry_quick_random_gen): Removed and replaced by..
1030	(_gcry_enable_quick_random_gen): .. this.  It is onlyu used to
1031	enable it and it does not make sense to disable it later. Changed
1032	the only one caller too.
1033	(get_random_bytes): Removed.
1034	(gcry_random_bytes, gcry_random_bytes_secure): Implement in terms
1035	of gcry_randomize.
1036	* random-daemon.c (_gcry_daemon_get_random_bytes): Removed.
1037
10382007-02-23  Werner Koch  <wk@g10code.com>
1039
1040	* elgamal.c (generate): Removed unused variable TEMP.
1041	(test_keys): New arg NODIE.
1042	(generate_using_x, _gcry_elg_generate_using_x): New.
1043	* pubkey.c (pubkey_generate): New arg XVALUE and direct call to
1044	the new elgamal generate fucntion.
1045	(gcry_pk_genkey): Parse the new "xvalue" tag.
1046
10472007-02-22  Werner Koch  <wk@g10code.com>
1048
1049	* pubkey.c (sexp_data_to_mpi): Handle dynamically allocated
1050	algorithms.  Suggested by Neil Dunbar.  Fixes bug#596.
1051
1052	* rndw32.c (_gcry_rndw32_gather_random_fast): Make it return void.
1053
1054	* cipher.c (gcry_cipher_algo_name): Simplified.
1055
1056	* random.c: Use the daemon only if compiled with USE_RANDOM_DAEMON.
1057
1058	* Makefile.am (libcipher_la_SOURCES): Build random-daemon support
1059	only if requested.
1060
10612007-02-21  Werner Koch  <wk@g10code.com>
1062
1063	* random.c (rndpool, keypool): Make unsigned.
1064	(mix_pool): Change char* variables to unsigned char*.
1065	(gcry_randomize): Make arg BUFFER a void*.
1066	(gcry_create_nonce): Ditto.
1067
1068	* rmd160.c (gcry_rmd160_mixblock): Make BUFFER a void*.
1069	(_gcry_rmd160_hash_buffer): Make OUTBUF and BUFFER void*.
1070	* sha1.c (_gcry_sha1_hash_buffer): Ditto.
1071
1072	* cipher.c (gcry_cipher_encrypt, cry_cipher_decrypt): Change
1073	buffer args to void*.
1074	(gcry_cipher_register): Make ALGORITHM_ID a int *.
1075
1076	* md.c (md_start_debug): Make SUFFIX a const char*.  Use snprintf.
1077	(gcry_md_debug): New.
1078	(gcry_md_ctl): Changed arg BUFFER from unsigned char*.
1079
1080	* md.c (md_write): Make INBUF a const void*.
1081	(gcry_md_write): Remove needless cast.
1082	* crc.c (crc32_write): Make INBUF a const void*
1083	(update_crc32, crc24rfc2440_write): Ditto.
1084	* sha512.c (sha512_write, transform): Ditto.
1085	* sha256.c (sha256_write, transform): Ditto.
1086	* rmd160.c (rmd160_write, transform): Ditto.
1087	* md5.c (md5_write, transform): Ditto.
1088	* md4.c (md4_write, transform): Ditto.
1089	* sha1.c (sha1_write, transform): Ditto.
1090
1091	* tiger.c (tiger_write, transform): Ditto.
1092	* whirlpool.c (whirlpool_write, whirlpool_add, transform): Ditto.
1093
1094	* elgamal.c (elg_names): Change to a const*.
1095	* dsa.c (dsa_names): Ditto.
1096	* rsa.c (rsa_names): Ditto.
1097	* pubkey.c (gcry_pk_lookup_func_name): Make ALIASES a const.
1098
10992007-02-20  Werner Koch  <wk@g10code.com>
1100
1101	* rndlinux.c (open_device): Remove unsused arg MINOR.
1102
11032007-01-30  Werner Koch  <wk@g10code.com>
1104
1105	* sha256.c (oid_spec_sha256): Add alias from pkcs#1.
1106	* sha512.c (oid_spec_sha512): Ditto.
1107	(oid_spec_sha384): Ditto.
1108
11092006-12-18  Werner Koch  <wk@g10code.com>
1110
1111	* rndlinux.c (set_cloexec_flag): New.
1112	(open_device): Set close-on-exit flags.  Suggested by Max
1113	Kellermann.  Fixes Debian#403613.
1114
1115	* Makefile.am (AM_CPPFLAGS, AM_CFLAGS): Splitted and merged
1116	Moritz' changes.
1117	(INCLUDES): Removed.
1118
11192006-11-30  Werner Koch  <wk@g10code.com>
1120
1121	* serpent.c (byte_swap_32): Remove trailing semicolon.
1122
11232006-11-15  Werner Koch  <wk@g10code.com>
1124
1125	* Makefile.am (INCLUDES): Include ../src/
1126
11272006-11-03  Werner Koch  <wk@g10code.com>
1128
1129	* random.c [HAVE_GETTIMEOFDAY]: Included sys/time.h and not
1130	sys/times.h.  Reported by Rafa��l Carr��.
1131
11322006-11-05  Moritz Schulte  <moritz@g10code.com>
1133
1134	* Makefile.am (AM_CFLAGS): Added -I$(top_builddir)/src so that the
1135	new gcrypt.h is used, not the one installed in the system.
1136
11372006-10-25  Werner Koch  <wk@g10code.com>
1138
1139	* primegen.c (prime_generate_internal): Tweaked use of secure
1140	memory and entropy use. Safe unused primes from the pool. Allocate
1141	at least a pool of 30.
1142	(save_pool_prime, get_pool_prime): New.
1143
11442006-10-23  Werner Koch  <wk@g10code.com>
1145
1146	* ac.c (_gcry_ac_data_from_sexp): Reset sexp_tmp for failsafe
1147	means.  Release sexp_cur if needed.  Reported by Dirk Stoecker.
1148
1149	* pubkey.c (pubkeys_registered_lock): Intialized it.  It is not
1150	 realy needed because this is a mere initialization to 0 anyway.
1151	 Noted by Victor Stinner.
1152
11532006-10-17  Werner Koch  <wk@g10code.com>
1154
1155	* dsa.c (_gcry_dsa_generate2): New.
1156	(generate): New arg QBITS.  Add sanity checks for reasonable qbits
1157	and nbits.
1158	* pubkey.c (gcry_pk_genkey): Parse an qbits element.
1159	(pubkey_generate): New arg QBITS.  Pass it to the DSA generation.
1160
11612006-10-05  Werner Koch  <wk@g10code.com>
1162
1163	* md.c (gcry_md_algo_info) <get_asnoid>: Check that the algo is
1164	available.
1165
11662006-10-04  David Shaw  <dshaw@jabberwocky.com>  (wk)
1167
1168	* tiger.c (round): Rename to tiger_round as gcc 4 has a built-in
1169	round function that this conflicts with.
1170
11712006-09-11  Werner Koch  <wk@g10code.com>
1172
1173	* rndw32.c (slow_gatherer_windowsNT): While adding data use the
1174	size of the diskPerformance and not its address. Has been fixed in
1175	GnuPG more than a year ago.  Noted by Lee Fisher.
1176
11772006-08-30  Werner Koch  <wk@g10code.com>
1178
1179	* pubkey.c (sexp_data_to_mpi): Need to allow "ripemd160" here as
1180	this is the canonical name.
1181
11822006-08-29  Hye-Shik Chang <perky@FreeBSD.org>  (wk)
1183
1184	* seed.c: New.
1185
11862006-08-03  Werner Koch  <wk@g10code.com>
1187
1188	* random-daemon.c (_gcry_daemon_initialize_basics): Don't
1189	initialize the socket.  Remove arg SOCKETNAME.
1190	(connect_to_socket): Make sure that daemon is set to -1 on error.
1191	(call_daemon): Initialize the socket on the first call.
1192	(_gcry_daemon_randomize, _gcry_daemon_get_random_bytes)
1193	(_gcry_daemon_create_nonce): New arg SOCKETNAME.
1194	* random.c (initialize): Call new daemon initializator.
1195	(get_random_bytes, gcry_randomize, gcry_create_nonce): Pass socket
1196	name to daemon call and reset allow_daemon on failure.
1197
11982006-07-26  Werner Koch  <wk@g10code.com>
1199
1200	* rmd160.c (_gcry_rmd160_mixblock): Add cast to transform call.
1201
1202	* blowfish.c (selftest): Cast string to usnigned char*.
1203
1204	* primegen.c (prime_generate_internal): Cast unsigned/char*
1205	mismatch in calling m_out_of_n.
1206	(is_prime): Changed COUNT to unsigned int *.
1207
1208	* ac.c (_gcry_ac_data_copy): Initialize DATA_MPIS.
1209
1210	* random.c (gcry_create_nonce): Update the pid after a fork.
1211	Reported by Uoti Urpala.
1212
12132006-07-04  Marcus Brinkmann  <marcus@g10code.de>
1214
1215	* sha512.c: Fix typo in copyright notice.
1216
12172006-06-21  Werner Koch  <wk@g10code.com>
1218
1219	* rsa.c (_gcry_rsa_generate): Replace xcalloc by calloc.
1220	* pubkey.c (gcry_pk_encrypt, gcry_pk_sign): Ditto.
1221	(sexp_to_key, sexp_to_sig, sexp_to_enc, gcry_pk_encrypt)
1222	(gcry_pk_sign, gcry_pk_genkey, gcry_pk_get_keygrip): Ditto.
1223	* md.c (md_copy): Ditto.
1224
12252006-04-22  Moritz Schulte  <moritz@g10code.com>
1226
1227	* random-daemon.c (_gcry_daemon_initialize_basics): New argument:
1228	SOCKETNAME.  Passing on to connect_to_socket() if non-NULL.
1229	(connect_to_socket, writen, readn, call_daemon): New functions.
1230	(_gcry_daemon_randomize, _gcry_daemon_get_random_bytes)
1231	(_gcry_daemon_create_nonce): Call call_daemon().
1232	(RANDOM_DAEMON_SOCKET): New symbol.
1233	(daemon_socket): New static variable.
1234
1235	* random.h (_gcry_daemon_initialize_basics): New parameter:
1236	SOCKETNAME.
1237	(_gcry_set_random_daemon_socket): New declaration.
1238
1239	* random.c (initialize_basics): Pass DAEMON_SOCKET_NAME to
1240	_gcry_daemon_initialize_basics.
1241	(_gcry_set_random_daemon_socket): New function, setting
1242	DAEMON_SOCKET_NAME.
1243
12442006-04-01  Moritz Schulte  <moritz@g10code.com>
1245
1246	* ac.c (eme_pkcs_v1_5_encode): Use KEY_SIZE directly, no need to
1247	call gcry_ac_key_get_nbits.
1248	(eme_pkcs_v1_5_decode): Likewise.
1249	(ac_es_dencode_prepare_pkcs_v1_5): Fill options_em structure with
1250	key_size.
1251	(_gcry_ac_data_dump, gcry_ac_data_dump): New functions.
1252	(_gcry_ac_data_to_sexp, _gcry_ac_data_from_sexp): More or less
1253	rewritten; changed S-Expression format so that it matches the one
1254	used in pubkey.c.
1255
12562006-03-15  Werner Koch  <wk@g10code.com>
1257
1258	* random-daemon.c: New.
1259	* random.c (_gcry_use_random_daemon): New.
1260	(get_random_bytes, gcry_randomize, gcry_create_nonce): Try
1261	diverting to the daemon functions.
1262
12632006-03-14  Werner Koch  <wk@g10code.com>
1264
1265	* random.c (lock_seed_file): New.
1266	(read_seed_file, _gcry_update_random_seed_file): Use it.
1267
1268	* random.c (gcry_create_nonce):  Detect a fork and re-seed.
1269	(read_pool): Fixed the fork detection; it used to work only for
1270	multi-threaded processes.
1271
12722006-03-12  Brad Hards  <bradh@frogmouth.net>  (wk)
1273
1274	* md.c (md_open): Use new variable macpads_Bsize instead of
1275	hardwiring the block size.  Changed at all places.
1276
12772006-03-10  Brad Hards  <bradh@frogmouth.net>  (wk, patch 2005-04-22)
1278
1279	* md.c, sha256.c:  Add support for SHA-224.
1280	(sha224_init): New.
1281
12822006-01-18  Brad Hards  <bradh@frogmouth.net>  (wk 2006-03-07)
1283
1284	* cipher.c (cipher_encrypt, cipher_decrypt, do_ofb_encrypt)
1285	(do_ofb_decrypt, gcry_cipher_open): Implement Output Feedback Mode.
1286
12872005-11-02  Moritz Schulte  <moritz@g10code.com>
1288
1289	* pubkey.c (gcry_pk_algo_name): Return "?" instead of NULL for
1290	unknown algorithm IDs.
1291	* cipher.c (cipher_algo_to_string): Likewise.
1292
12932005-11-01  Moritz Schulte  <moritz@g10code.com>
1294
1295	* pubkey.c (gcry_pk_algo_info): Don't forget to break after switch
1296	case.
1297
12982005-09-19  Werner Koch  <wk@g10code.com>
1299
1300	* dsa.c (generate): Add preliminary support for 2 and 4 keys.
1301	Return an error code if the key size is not supported.
1302	(_gcry_dsa_generate): Return an error.
1303
13042005-08-22  Werner Koch  <wk@g10code.com>
1305
1306	* primegen.c (check_prime): New arg RM_ROUNDS.
1307	(prime_generate_internal): Call it here with 5 rounds as used
1308	before.
1309	(gcry_prime_check): But here with 64 rounds.
1310	(is_prime): Make sure never to use less than 5 rounds.
1311
13122005-04-16  Moritz Schulte  <moritz@g10code.com>
1313
1314	* ac.c (_gcry_ac_init): New function.
1315
13162005-04-12  Moritz Schulte  <moritz@g10code.com>
1317
1318	* ac.c (_gcry_ac_io_write, _gcry_ac_io_read): Initialize err to
1319	make the compiler happy.
1320	Always use errno, now that gcry_malloc() is guaranteed to set
1321	errno on failure.
1322	(_gcry_ac_data_to_sexp): Don't forget to goto out after error in
1323	loop.
1324	(_gcry_ac_data_to_sexp): Remove unused variable: mpi_list;
1325	(_gcry_ac_data_to_sexp): Always deallocate sexp_buffer.
1326	(_gcry_ac_data_from_sexp): Don't forget to initialize data_set_new.
1327	(_gcry_ac_data_from_sexp): Handle special case, which is
1328	necessary, since gcry_sexp_nth() does not distinguish between
1329	"element does not exist" and "element is the empty list".
1330	(_gcry_ac_io_init_va): Use assert to make sure that mode and type
1331	are correct.
1332	Use gcry_error_t types where gcry_err_code_t types have been used
1333	before.
1334
13352005-04-11  Moritz Schulte  <moritz@g10code.com>
1336
1337	* ac.c (_gcry_ac_data_sign_scheme): Don't forget to initialize
1338	buffer.
1339
1340	* whirlpool.c: New file.
1341	* md.c (digest_table): Add whirlpool.
1342	* Makefile.am (EXTRA_libcipher_la_SOURCES): Added: whirlpool.c.
1343
13442005-03-30  Moritz Schulte  <moritz@g10code.com>
1345
1346	* ac.c (_gcry_ac_data_from_sexp): Use length of SEXP_CUR, not
1347	length of SEXP; do not forget to set SEXP_TMP to NULL after it has
1348	been released.
1349
1350	(struct gcry_ac_mpi): New member: name_provided.
1351	(_gcry_ac_data_set): Rename variable `name_final' to `name_cp';
1352	remove const qualifier; change code to not cast away const
1353	qualifiers; use name_provided member as well.
1354	(_gcry_ac_data_set, _gcry_ac_data_get_name): Use name_provided
1355	member of named mpi structure.
1356
1357	(gcry_ac_name_to_id): Do not forget to initialize err.
1358	(_gcry_ac_data_get_index): Do not forget to initialize mpi_return;
1359	use gcry_free() instead of free(); remove unnecessary cast; rename
1360	mpi_return and name_return to mpi_cp and name_cp; adjust code.
1361	(ac_data_mpi_copy): Do not cast away const qualifier.
1362	(ac_data_values_destroy): Likewise.
1363	(ac_data_construct): Likewise.
1364
1365	(ac_data_mpi_copy): Initialize flags to GCRY_AC_FLAG_DEALLOC.
1366	(ac_data_extract): Use GCRY_AC_FLAG_DEALLOC instead of
1367	GCRY_AC_FLAG_COPY.
1368
1369	(_gcry_ac_io_init_va, _gcry_ac_io_init, gcry_ac_io_init)
1370	(gcry_ac_io_init_va, _gcry_ac_io_write, _gcry_ac_io_read)
1371	(_gcry_ac_io_read_all, _gcry_ac_io_process): New functions.
1372	(gry_ac_em_dencode_t): Use gcry_ac_io_t in prototype instead of
1373	memroy strings directly; adjust encode/decode functions to use io
1374	objects.
1375	(emsa_pkcs_v1_5_encode_data_cb): New function ...
1376	(emsa_pkcs_v1_5_encode): ... use it here.
1377	(ac_data_dencode): Use io objects.
1378	(_gcry_ac_data_encode, _gcry_ac_data_decode, gcry_ac_data_encode)
1379	(gcry_ac_data_decode): Likewise.
1380	(_gcry_ac_data_encrypt_scheme, gcry_ac_data_encrypt_scheme)
1381	(_gcry_ac_data_decrypt_scheme, gcry_ac_data_decrypt_scheme)
1382	(_gcry_ac_data_sign_scheme, gcry_ac_data_sign_scheme)
1383	(_gcry_ac_data_verify_scheme, gcry_ac_data_verify_scheme):
1384	Likewise.
1385
13862005-03-23  Werner Koch  <wk@g10code.com>
1387
1388	* rndw32.c (_gcry_rndw32_gather_random_fast): While adding data
1389	use the size of the object and not the one of its address.  Bug
1390	reported by Sascha Kiefer.
1391
13922005-03-19  Moritz Schulte  <moritz@g10code.com>
1393
1394	* cipher.c (do_cbc_encrypt): Be careful to not overwrite data,
1395	which is to be used later on.  This happend, in case CTS is
1396	enabled and OUTBUF is equal to INBUF.
1397
13982005-02-25  Werner Koch  <wk@g10code.com>
1399
1400	* pubkey.c (gcry_pk_get_keygrip): Allow for shadowed-private-key.
1401
14022005-02-13  Moritz Schulte  <moritz@g10code.com>
1403
1404	* serpent.c: Updated from 1.2 branch:
1405
1406	s/u32_t/u32/ and s/byte_t/byte/.  Too match what we have always
1407	used and are using in all other files too
1408	(serpent_test): Moved prototype out of a fucntion.
1409
14102005-02-07  Moritz Schulte  <moritz@g10code.com>
1411
1412	* ac.c: Major parts rewritten.
1413	* pubkey.c (_gcry_pk_get_elements): New function.
1414
14152004-12-09  Werner Koch  <wk@g10code.com>
1416
1417	* serpent.c (serpent_setkey): Moved prototype of serpent_test to
1418	outer scope.
1419
14202004-09-11  Moritz Schulte  <moritz@g10code.com>
1421
1422	* pubkey.c (pubkey_table): Added an alias entry for GCRY_PK_ELG_E.
1423
14242004-08-23  Moritz Schulte  <moritz@g10code.com>
1425
1426	* ac.c: Do not include <assert.h>.
1427	* rndegd.c: Likewise.
1428	* sha1.c: Likewise.
1429	* rndunix.c: Likewise.
1430	* rndlinux.c: Likewise.
1431	* rmd160.c: Likewise.
1432	* md5.c: Likewise.
1433	* md4.c: Likewise.
1434	* cipher.c: Likewise.
1435	* crc.c: Likewise.
1436	* blowfish.c: Likewise.
1437
1438	* pubkey.c (dummy_generate, dummy_check_secret_key)
1439	(dummy_encrypt, dummy_decrypt, dummy_sign, dummy_verify): Return
1440	err code GPG_ERR_NOT_IMPLEMENTED instead of aborting through
1441	log_bug().
1442	(dummy_get_nbits): Return 0 instead of aborting though log_bug().
1443
14442004-08-19  Werner Koch  <wk@g10code.de>
1445
1446	* pubkey.c (sexp_data_to_mpi): Changed the zero random byte
1447	substituting code to actually do clever things.  Thanks to
1448	Matthias Urlichs for noting the implementation problem.
1449
14502004-08-09  Moritz Schulte  <moritz@g10code.com>
1451
1452	* pubkey.c (gcry_pk_sign): Fixed memory leak; fix provided by
1453	Modestas Vainius.
1454
14552004-07-16  Werner Koch  <wk@gnupg.org>
1456
1457	* rijndael.c (do_encrypt): Fix alignment problem.  Bugs found by
1458	Matthias Urlichs.
1459	(do_decrypt): Ditto.
1460	(keySched, keySched2): Use 2 macros along with unions in the key
1461	schedule context.
1462
14632004-07-14  Moritz Schulte  <moritz@g10code.com>
1464
1465	* rsa.c (_gcry_rsa_decrypt): Don't forget to free "a".  Thanks to
1466	Nikos Mavroyanopoulos.
1467
14682004-05-09  Werner Koch  <wk@gnupg.org>
1469
1470	* random.c (read_pool): Mix the PID in to better protect after a
1471	fork.
1472
14732004-07-04  Moritz Schulte  <moritz@g10code.com>
1474
1475	* serpent.c: Use "u32_t" instead of "unsigned long", do not
1476	declare S-Box variables as "register".  Fixes failure on
1477	OpenBSD/sparc64, reported by Nikolay Sturm.
1478
14792004-05-07  Werner Koch  <wk@gnupg.org>
1480
1481	* random.c (initialize): Factored out some code to ..
1482	(initialize_basics): .. new function.
1483	(_gcry_random_initialize): Just call initialize_basics unless the
1484	new arg FULL is set to TRUE.
1485	(_gcry_fast_random_poll): Don't do anything unless the random
1486	system has been really initialized.
1487
14882004-05-07  Moritz Schulte  <moritz@g10code.de>
1489
1490	* ac.c (gcry_ac_open): Do not dereference NULL pointer.  Reported
1491	by Umberto Salsi.
1492
14932004-02-20  Werner Koch  <wk@gnupg.org>
1494
1495	* primegen.c (check_prime): New args CB_FUNC and CB_ARG; call them
1496	at different stages.  Pass these arguments through all callers.
1497
14982004-02-06  Werner Koch  <wk@gnupg.org>
1499
1500	* des.c: Add a new OID as used by pkcs#12.
1501
1502	* rfc2268.c: New. Taken from libgcrypt.
1503	* cipher.c: Setup the rfc2268 algorithm.
1504
15052004-01-25  Moritz Schulte  <mo@g10code.com>
1506
1507	* primegen.c (prime_generate_internal): Do not forget to free
1508	`q_factor'; fixed by Brieuc Jeunhomme.
1509	(prime_generate_internal): Do not forget to free `prime'.
1510
15112004-01-14  Moritz Schulte  <mo@g10code.com>
1512
1513	* ac.c (gcry_ac_data_set): New argument: flags; slightly
1514	rewritten.
1515	(gcry_ac_data_get_name, gcry_ac_data_get_index): Likewise.
1516	(gcry_ac_key_pair_generate): New argument: misc_data; modified
1517	order of arguments.
1518	(gcry_ac_key_test): New argument: handle.
1519	(gcry_ac_key_get_nbits, gcry_ac_key_get_grip): Likewise.
1520	Use GCRY_AC_FLAG_NO_BLINDING instead of
1521	GCRY_AC_DATA_FLAG_NO_BLINDING.
1522	(gcry_ac_mpi): New member: flags.
1523	(gcry_ac_data_search, gcry_ac_data_add): Removed functions.
1524
15252003-12-22  Werner Koch  <wk@gnupg.org>
1526
1527	* primegen.c (is_prime): Release A2.
1528
15292003-12-19  Werner Koch  <wk@gnupg.org>
1530
1531	* md.c: Moved a couple of functions down below the data structure
1532	definitions.
1533	(struct gcry_md_context): New field ACTUAL_HANDLE_SIZE.
1534	(md_open): Set it here.
1535	(strcut gcry_md_list): New field ACTUAL_STRUCT_SIZE.
1536	(md_enable): Set it here.
1537	(md_close): Wipe the context memory.
1538	secure memory.
1539	* cipher.c (struct gcry_cipher_handle): New field ACTUAL_HANDLE_SIZE.
1540	(gcry_cipher_open): Set it here.
1541	(gcry_cipher_close): Use it to always wipe out the handle data.
1542
1543	* ac.c (gcry_ac_open): Make sure HANDLE gets initialized even when
1544	the function is not successful.
1545	(gcry_ac_close): Allow a NULL handle.
1546	(gcry_ac_key_destroy, gcry_ac_key_pair_destroy): Ditto.
1547	(gcry_ac_key_get_grip): Return INV_OBJ on error.
1548
1549	* primegen.c (prime_generate_internal): Fixed error code for
1550	failed malloc.  Replaced the !err if chain by gotos.
1551	(gcry_prime_group_generator): Remove the extra sanity check.
1552
1553	* md.c: Minor code and comment cleanups.
1554
15552003-12-16  Werner Koch  <wk@gnupg.org>
1556
1557	* primegen.c (gen_prime): Doc fix.  Thanks to Newton Hammet.
1558
15592003-12-11  Werner Koch  <wk@gnupg.org>
1560
1561	* rndunix.c (slow_poll): Don't use #warning but #error.
1562
1563	* rndegd.c: Changed indentation.
1564	(my_make_filename): Removd the var_arg cruft becuase we
1565	don't need it here.  Changed caller.
1566
1567	* rndlinux.c: Changed indentation.
1568	(open_device): Remove the superfluous stat call and clarify
1569	comment.
1570
1571	* rsa.c: Changed indentation.
1572	(secret): Use the standard algorithm if p, q and u are not
1573	available.
1574	(rsa_blind, rsa_unblind): Renamed from _gcry_rsa_blind,
1575	_gcry_rsa_unblind and moved more to the top.
1576
1577	* md4.c: Changed indentation.  Removed unnecessary casts.
1578	* md5.c, rmd160.c, sha1.c, tiger.c: Ditto.
1579	* rijndael.c, twofish.c: Ditto.
1580	* serpent.c: Removed unnecessary casts.
1581	* sha256.c, sha512.c: Ditto.
1582
15832003-12-09  Werner Koch  <wk@gnupg.org>
1584
1585	* dsa.c: Unified indentation style.
1586	* elgamal.c: Ditto.
1587	* des.c (des_key_schedule): Code beautifications.
1588	* blowfish.c: Changed indentation style.
1589	* cast5.c (do_cast_setkey): Ditto.
1590
1591	* pubkey.c (gcry_pk_encrypt): Replaced the chain of if(!err) tests
1592	by straightforward gotos. Other cleanups.
1593	(gcry_pk_decrypt): Ditto.
1594	(gcry_pk_sign): Ditto.
1595	(gcry_pk_verify): Ditto.
1596	(gcry_pk_genkey): Ditto.  Use strtoul instead of strtol.
1597	(gcry_pk_ctl): Use GPG_ERR_INV_ARG to indicate bad arguments.
1598
15992003-12-07  Werner Koch  <wk@gnupg.org>
1600
1601	* pubkey.c (gcry_pk_register_default): Undef the helper macro.
1602	(gcry_pk_map_name): Allow NULL for string.
1603	(sexp_to_key): Use memcpy and not strncpy.  Use gcry_free and not
1604	free.
1605	(sexp_to_sig): Ditto.
1606	(sexp_to_enc): Ditto.  Replaced the chain of if(!err) tests by
1607	straightforward gotos.
1608
16092003-12-05  Werner Koch  <wk@gnupg.org>
1610
1611	* cipher.c: Documentation cleanups.
1612	(gcry_cipher_mode_from_oid): Allow NULL for STRING.
1613
16142003-12-03  Werner Koch  <wk@gnupg.org>
1615
1616	* elgamal.c (sign, do_encrypt, gen_k): Make sure that a small K is
1617	only used for encryption.
1618
16192003-11-18  Werner Koch  <wk@gnupg.org>
1620
1621	* random.h (rndw32_set_dll_name): Removed unused prototype.
1622
1623	* Makefile.am (EXTRA_DIST): Added Manifest.
1624
16252003-11-11  Werner Koch  <wk@gnupg.org>
1626
1627	* Manifest: New.
1628
16292003-11-04  Werner Koch  <wk@gnupg.org>
1630
1631	* md.c (gcry_md_hash_buffer): Use shortcut for SHA1
1632	* sha1.c (_gcry_sha1_hash_buffer): New.
1633
1634	* random.c: Reformatted most functions.
1635	(mix_pool): Moved the failsafe_digest from global
1636	scope to here.
1637	(do_fast_random_poll): Use the generic fucntions even if a fast
1638	gathering function has been used.
1639	(read_pool): Detect a fork and retry.
1640	(gcry_randomize, get_random_bytes): Don't distinguish anymore
1641	between weak and strong random.
1642	(gcry_create_nonce): New.
1643
16442003-10-31  Werner Koch  <wk@gnupg.org>
1645
1646	* rndw32.c (slow_gatherer_windowsNT): Use a plain buffer for the
1647	disk performance values and not the W32 API structure.
1648
1649	* dsa.c (verify): s/exp/ex/ due to shadowing of a builtin.
1650	* elgamal.c (verify): Ditto.
1651
1652	* ac.c (gcry_ac_data_get_index): s/index/idx/
1653	(gcry_ac_data_copy_internal): Remove the cast in _gcry_malloc.
1654	(gcry_ac_data_add): Must use gcry_realloc instead of realloc.
1655	* pubkey.c (sexp_elements_extract): s/index/idx/ as tribute to the
1656	forehackers.
1657	(gcry_pk_encrypt): Removed shadowed definition of I. Reordered
1658	arguments to malloc for clarity.
1659	(gcry_pk_sign, gcry_pk_genkey): Ditto.
1660	* primegen.c (prime_generate_internal): s/random/randomlevel/.
1661
16622003-10-27  Moritz Schulte  <mo@g10code.com>
1663
1664	* pubkey.c (gcry_pk_encrypt): Don't forget to deallocate pkey.
1665
16662003-10-27  Werner Koch  <wk@gnupg.org>
1667
1668	* random.c (gcry_random_add_bytes): Return if buflen is zero to
1669	avoid gcc warning about unsed parameter.
1670	(MASK_LEVEL): Simplified; does now work for signed and unsigned
1671	w/o warnings.
1672
1673	* md.c (md_start_debug): Removed the const from SUFFIX, because
1674	this function is called from the control fucntion which does not
1675	require const.
1676
1677	Prefixed all (pubkey,digest,cipher}_spec_* globale variables with
1678	_gcry_.
1679
1680	* ac.c (ac_key_identifiers): Made static.
1681
1682	* random.c (getfnc_gather_random,getfnc_fast_random_poll): Move
1683	prototypes to ..
1684	* rand-internal.h: .. here
1685	* random.c (getfnc_gather_random): Include rndw32 gatherer.
1686	* rndunix.c, rndw32.c, rndegd.c: Include them here.
1687	* rndlinux.c (_gcry_rndlinux_gather_random): Prepend the _gcry_
1688	prefix.  Changed all callers.
1689	* rndegd.c (_gcry_rndegd_gather_random): Likewise.
1690	(_gcry_rndegd_connect_socket): Likewise.
1691	* rndunix.c (_gcry_rndunix_gather_random): Likewise.
1692	(waitpid): Made static.
1693	* rndw32.c: Removed the old and unused winseed.dll cruft.
1694	(_gcry_rndw32_gather_random_fast): Renamed from
1695	gather_random_fast.
1696	(_gcry_rndw32_gather_random): Renamed from gather_random.  Note,
1697	that the changes 2003-04-08 somehow got lost.
1698
1699	* sha512.c (sha512_init, sha384_init): Made static.
1700
1701	* cipher.c (do_ctr_decrypt): Removed "return" from this void
1702	function.
1703
17042003-10-24  Moritz Schulte  <mo@g10code.com>
1705
1706	* serpent.c: Fix an issue on big-endian systems.
1707
1708	* rndw32.c: Removed IS_MODULE -cruft.
1709	* rndlinux.c (rndlinux_gather_random): Likewise.
1710
17112003-10-10  Werner Koch  <wk@gnupg.org>
1712
1713	* primegen.c (gen_prime): Bail out if NBITS is less than 16.
1714	(prime_generate_internal): Initialize prime variable to suppress
1715	compiler warning.  Check pbits, initialize qbits when passed as
1716	zero.
1717
1718	* primegen.c (prime_generate_internal): New arg
1719	ALL_FACTORS. Changed all callers.
1720	(gcry_prime_generate): Make the factors arg optional. Request
1721	all_factors.  Make sure PRIME is set to NULL even on error.
1722	(gcry_prime_group_generator): New.
1723	(gcry_prime_release_factors): New.
1724
17252003-10-06  Werner Koch  <wk@gnupg.org>
1726
1727	* primegen.c (gen_prime): Assert that NBITS is never zero, it
1728	would cause a segv.
1729
17302003-09-28  Moritz Schulte  <mo@g10code.com>
1731
1732	* ac.c: Include "cipher.h".
1733
17342003-09-27  Moritz Schulte  <mo@g10code.com>
1735
1736	* rndegd.c (do_read): Return nread instead of nbytes; thanks to
1737	Michael Caerwyn.
1738
17392003-09-04  Werner Koch  <wk@gnupg.org>
1740
1741	* pubkey.c (_gcry_pk_aliased_algo_name): New.
1742	* ac.c (gcry_ac_open): Use it here.
1743
1744	* Makefile.am (EXTRA_libcipher_la_SOURCES): Add serpent.c
1745
17462003-09-02  Moritz Schulte  <mo@g10code.com>
1747
1748	* primegen.c (gcry_prime_check, gcry_prime_generate): New
1749	functions.
1750	(prime_generate_internal): New function, based on
1751	_gcry_generate_elg_prime.
1752	(_gcry_generate_elg_prime): Rewritten as a wrapper for
1753	prime_generate_internal.
1754
17552003-08-28  Werner Koch  <wk@gnupg.org>
1756
1757	* pubkey.c (gcry_pk_encrypt): Don't include the flags list in the
1758	return value.  This does not make sense and breaks any programs
1759	parsing the output strictly (e.g. current gpgsm).
1760	(gcry_pk_encrypt): If aliases for the algorithm name exists, take
1761	the first one instead of the regular name to adhere to SPKI
1762	conventions.
1763	(gcry_pk_genkey): Ditto.
1764	(gcry_pk_sign): Ditto. Removed unused KEY_ALGO_NAME.
1765
17662003-08-19  Moritz Schulte  <mo@g10code.com>
1767
1768	* cipher.c: Add support for Serpent
1769	* serpent.c: New file.
1770
17712003-08-10  Moritz Schulte  <moritz@g10code.com>
1772
1773	* rsa.c (_gcry_rsa_blind, _gcry_rsa_unblind): Declare static.
1774
17752003-08-09  Timo Schulz  <twoaday@freakmail.de>
1776
1777	* random.c (getfnc_gather_random): Don't check NAME_OF_DEV_RANDOM
1778	two times, but also the NAME_OF_DEV_URANDOM device.
1779
17802003-08-08  Moritz Schulte  <moritz@g10code.com>
1781
1782	* pubkey.c (sexp_to_enc): Fixed extraction of S-Expression: do not
1783	fail if no `flags' sub S-Expression is found.
1784
17852003-07-27  Werner Koch  <wk@gnupg.org>
1786
1787	* md.c (gcry_md_lookup_func_oid): Allow for empty OID lists.
1788
17892003-07-23  Moritz Schulte  <moritz@g10code.com>
1790
1791	* ac.c (gcry_ac_data_construct): New argument: include_flags, only
1792	include `flags' S-expression, if include_flags is true.  Adjust
1793	callers.  Thanks for triggering a bug caused by `flags'
1794	sub-S-expression where they are not expected to Ralf Schneider.
1795
17962003-07-21  Moritz Schulte  <moritz@g10code.com>
1797
1798	* pubkey.c (gcry_pk_lookup_func_name): Use new member name
1799	`aliases' instead of `sexp_names'.
1800
1801	* ac.c (gcry_ac_key_data_get): New function.
1802
1803	* cipher.c (gcry_cipher_lookup_func_name): Fix return value.
1804
18052003-07-20  Moritz Schulte  <moritz@g10code.com>
1806
1807	* blowfish.c: Adjusted for new gcry_cipher_spec_t structure.
1808	* cast5.c: Likewise.
1809	* twofish.c: Likewise.
1810	* arcfour.c: Likewise.
1811	* rijndael.c (rijndael_oids, rijndael192_oids, rijndael256_oids):
1812	New variables, adjust for new gcry_cipher_spec_t structure.
1813	* des.c (oids_tripledes): New variable, adjust for new
1814	gcry_cipher_spec_t structure.
1815
1816	* md.c (oid_table): Removed.
1817
1818	* tiger.c (oid_spec_tiger): New variable.
1819	(digest_spec_tiger): Adjusted for new gry_md_spec_t structure.
1820
1821	* sha512.c (oid_spec_sha512): New variable.
1822	(digest_spec_sha512): Adjusted for new gry_md_spec_t structure.
1823
1824	* sha512.c (oid_spec_sha384): New variable.
1825	(digest_spec_sha384): Adjusted for new gry_md_spec_t structure.
1826
1827	* sha256.c (oid_spec_sha256): New variable.
1828	(digest_spec_sha256): Adjusted for new gry_md_spec_t structure.
1829
1830	* sha1.c (oid_spec_sha1): New variable.
1831	(digest_spec_sha1): Adjusted for new gry_md_spec_t structure.
1832
1833	* rmd160.c (oid_spec_rmd160): New variable.
1834	(digest_spec_rnd160): Adjusted for new gry_md_spec_t structure.
1835
1836	* md5.c (oid_spec_md5): New variable.
1837	(digest_spec_md5): Adjusted for new gry_md_spec_t structure.
1838
1839	* md4.c (oid_spec_md4): New variable.
1840	(digest_spec_md4): Adjusted for new gry_md_spec_t structure.
1841
1842	* crc.c (digest_spec_crc32, digest_spec_crc32_rfc1510,
1843	digest_spec_crc32_rfc2440): Adjusted for new gry_md_spec_t
1844	structure.
1845
18462003-07-19  Moritz Schulte  <moritz@g10code.com>
1847
1848	* md.c (gcry_md_lookup_func_oid): New function.
1849	(search_oid): New function, copied from cipher.c.
1850	(gcry_md_map_name): Adjust for new search_oid_interface.
1851
1852	* cipher.c (oid_table): Removed table.
1853	(gcry_cipher_lookup_func_oid): New function.
1854	(search_oid): Rewritten to use the module functions.
1855	(gcry_cipher_map_name): Adjust for new search_oid interface.
1856	(gcry_cipher_mode_from_oid): Likewise.
1857
18582003-07-18  Werner Koch  <wk@gnupg.org>
1859
1860	* md.c (gcry_md_hash_buffer): Convert ERR to gpg_error_t in
1861	gpg_strerror.
1862
18632003-07-14  Moritz Schulte  <moritz@g10code.com>
1864
1865	* cipher.c (gcry_cipher_lookup_func_name): Also check the cipher
1866	name aliases, not just the primary name.
1867	(gcry_cipher_map_name): Remove kludge for aliasing Rijndael to
1868	AES.
1869
1870	* arcfour.c, blowfish.c, cast5.c, des.c, twofish.c: Adjust cipher
1871	specification structures.
1872
1873	* rijndael.c (rijndael_names, rijndael192_names,
1874	rijndael256_names): New variables, use them in the cipher
1875	specifications.
1876
1877	* rmd160test.c: Removed file.
1878
1879	* ac.c, arcfour.c, blowfish.c, cast5.c, cipher.c, des.c, dsa.c,
1880	elgamal.c, md.c, pubkey.c, random.c, rijndael.c, rsa.c, twofish.c:
1881	Used gcry_err* wrappers for libgpg symbols.
1882
1883	* primegen.c (gen_prime): Correct the order arguments to
1884	extra_check.
1885
18862003-07-12  Moritz Schulte  <moritz@g10code.com>
1887
1888	* ac.c: Replaced all public occurences of gpg_error_t with
1889	gcry_error_t.
1890	* cipher.c: Likewise.
1891	* md.c: Likewise.
1892	* pubkey.c: Likewise.
1893	* random.c: Likewise.
1894
1895	* cipher.c: Added support for TWOFISH128.
1896
18972003-07-08  Moritz Schulte  <moritz@g10code.com>
1898
1899	* ac.c (gcry_ac_data_copy_internal): New function, based on
1900	gcry_ac_data_copy.
1901	(gcry_ac_data_copy): Made public, use gcry_ac_data_copy_internal.
1902	(gcry_ac_key_init): Use gcry_ac_data_copy_internal.
1903
19042003-07-07  Moritz Schulte  <moritz@g10code.com>
1905
1906	* ac.c (gcry_ac_data_set): Only release old MPI value if it is
1907	different from the new value.  Bug reported by Simon Josefsson
1908	<jas@extundo.com>.
1909
1910	* pubkey.c (gcry_pk_list): New function.
1911	* md.c (gcry_md_list): New function.
1912
1913	* ac.c (gcry_ac_key_pair_generate): Fix calculation of format
1914	string size.
1915
19162003-07-05  Moritz Schulte  <moritz@g10code.com>
1917
1918	* md.c: Named struct of digest_table `digest_table_entry'.
1919	(digest_table_entry): New member: algorithm; filled in.
1920	(digest_table_entry): Removed unused member: flags.
1921	(gcry_md_register): New argument: algorithm_id, filled in.
1922	(gcry_md_register_default): Used algorithm ID from module
1923	structure.
1924	(gcry_md_map_name): Likewise.
1925	(md_enable): Likewise.
1926	(md_read): Likewise.
1927	(gcry_md_info): Likewise.
1928
1929	* pubkey.c: Named truct for pubkey_table `pubkey_table_entry'.
1930	(pubkey_table_entry): New member: algorithm; filled in.
1931	(gcry_pk_register_default): Used algorithm ID from pubkey_table.
1932	(gcry_pk_register): New argument: algorithm_id, filled in.
1933	(gcry_pk_map_name): Used algorithm ID from module structure.
1934	(gcry_pk_decrypt): Likewise.
1935	(gcry_pk_encrypt): Likewise.
1936	(gcry_pk_verify): Likewise.
1937	(gcry_pk_sign): Likewise.
1938	(gcry_pk_testkey): Likewise.
1939	(gcry_pk_genkey): Likewise.
1940	(gcry_pk_get_nbits): Likewise.
1941	(sexp_to_key): Removed unused variable: algo.
1942	(sexp_to_sig): Likewise.
1943
1944	* cipher.c: Named struct for cipher_table `cipher_table_entry'.
1945	(cipher_table_entry): New member: algorithm; filled in.
1946	(gcry_cipher_register_default): Used algorithm ID from
1947	cipher_table.
1948	(gcry_cipher_register): New argument: algorithm_id, filled in.
1949	(gcry_cipher_map_name): Used algorithm ID from module structure.
1950
1951	* arcfour.c (cipher_spec_arcfour): Removed algorithm ID.
1952	* blowfish.c (cipher_spec_blowfish): Likewise.
1953	* cast5.c (cipher_spec_cast5): Likewise.
1954	* crc.c (digest_spec_crc32): Likewise.
1955	* crc.c (digest_spec_crc32_rfc1510): Likewise.
1956	* crc.c (digest_spec_crc32_rfc2440): Likewise.
1957	* des.c (cipher_spec_des): Likewise.
1958	* des.c (cipher_spec_tripledes): Likewise.
1959	* dsa.c (pubkey_spec_dsa): Likewise.
1960	* elgamal.c (pubkey_spec_elg): Likewise.
1961	* md4.c (digest_spec_md4): Likewise.
1962	* md5.c (digest_spec_md5): Likewise.
1963	* aes.c (cipher_spec_aes): Likewise.
1964	* aes.c (cipher_spec_aes192): Likewise.
1965	* aes.c (cipher_spec_aes256): Likewise.
1966	* rsa.c (pubkey_spec_rsa): Likewise.
1967	* sha1.c (digest_spec_sha1): Likewise.
1968	* sha256.c (digest_spec_sha256): Likewise.
1969	* sha512.c (digest_spec_sha512): Likewise.
1970	* tiger.c (digest_spec_tiger): Likewise.
1971	* twofish.c (cipher_spec_twofish): Likewise.
1972	* twofish.c (cipher_spec_twofish128): Likewise.
1973
1974	* Makefile.am (EXTRA_libcipher_la_SOURCES): Fix list of source
1975	files; reported by Simon Josefsson <jas@extundo.com>.
1976
1977	* pubkey.c: Replaced all occurences of `id' with `algorithm',
1978	since `id' is a keyword in obj-c.
1979	* md.c: Likewise.
1980	* cipher.c: Likewise.
1981
1982	* crc.c, md4.c, md5.c, rmd160.c, sha1.c, sha256.c, tiger.c:
1983	Replaced all occurences of gcry_digest_spec_t with gcry_md_spec_t.
1984
1985	* dsa.c, rsa.c, elgamal.c: Replaced all occurencens of
1986	gcry_pubkey_spec_t with gcry_pk_spec_t.
1987
1988	* md.c: Replaced all occurences of gcry_digest_spec_t with
1989	gcry_md_spec_t.
1990	(gcry_digest_register_default): Renamed to ...
1991	(gcry_md_register_default): ... this; adjusted callers.
1992	(gcry_digest_lookup_func_name): Renamed to ...
1993	(gcry_md_lookup_func_name): ... this; adjusted callers.
1994	(gcry_digest_lookup_name): Renamed to ...
1995	(gcry_md_lookup_name): ... this; adjusted callers.
1996	(gcry_digest_register): Renamed to ...
1997	(gcry_md_register): ... this.
1998	(gcry_digest_unregister): Renamed to ...
1999	(gcry_md_unregister): ... this.
2000
2001	* pubkey.c (gcry_pubkey_register): Renamed to ...
2002	(gcry_pk_register): ... this.
2003	(gcry_pubkey_unregister): Renamed to ...
2004	(gcry_pk_unregister): ... this.
2005	Replaced all occurences of gcry_pubkey_spec_t with gcry_pk_spec_t.
2006	(gcry_pubkey_register_default): Renamed to ...
2007	(gcry_pk_register_default): ... this; adjusted callers.
2008	(gcry_pubkey_lookup_func_name): Renamed to ...
2009	(gcry_pk_lookup_func_name): ... this; adjusted callers.
2010	(gcry_pubkey_lookup_name): Renamed to ...
2011	(gcry_pk_lookup_name): ... this; adjusted callers.
2012
2013	* md.c (gcry_md_hash_buffer): Fix error checking.  Thanks to Simon
2014	Josefsson <jas@extunde.com>.
2015
20162003-07-04  Moritz Schulte  <moritz@g10code.com>
2017
2018	* cipher.c (gcry_cipher_list): New function.
2019
20202003-07-01  Moritz Schulte  <moritz@g10code.com>
2021
2022	* pubkey.c (sexp_to_sig): Accept a `flags' S-expression to be more
2023	consistent with sexp_to_enc.
2024
20252003-06-30  Moritz Schulte  <moritz@g10code.com>
2026
2027	* Makefile.am (libcipher_la_SOURCES): Added: ac.c.
2028
2029	* pubkey.c (_gcry_pk_module_lookup): New function.
2030	(_gcry_pk_module_release): New function.
2031
20322003-06-29  Moritz Schulte  <moritz@g10code.com>
2033
2034	* ac.c: New file.
2035
20362003-06-26  Werner Koch  <wk@gnupg.org>
2037
2038	* md.c (gcry_md_hash_buffer): Trigger BUG correcly with new API.
2039
20402003-06-19  Werner Koch  <wk@gnupg.org>
2041
2042	* md.c (gcry_md_is_enabled): Fixed.
2043
20442003-06-18  Werner Koch  <wk@gnupg.org>
2045
2046	* cipher.c (gcry_cipher_get_algo_keylen): New.
2047	(gcry_cipher_get_algo_blklen): New.
2048
20492003-06-18  Moritz Schulte  <moritz@g10code.com>
2050
2051	* arcfour.c, cipher.c, blowfish.c, md.c, cast5.c, pubkey.c, crc.c,
2052	des.c, dsa.c, elgamal.c, md4.c, md5.c, random.c, rijndael.c,
2053	rmd160.c, rsa.c, sha1.c, sha256.c, sha512.c, tiger.c, twofish.c:
2054	Replaced older types GcryDigestSpec, GcryCipherSpec and
2055	GcryPubkeySpec with newer types: gcry_digest_spec_t,
2056	gcry_cipher_spec_t and gcry_pubkey_spec_t.
2057
2058	* md.c (gcry_digest_id_new): Removed function.
2059	(gcry_digest_register): Removed code for generating a new module
2060	ID.
2061
2062	* pubkey.c (gcry_pubkey_id_new): Removed function.
2063	(gcry_pubkey_register): Removed code for generating a new module
2064	ID.
2065
2066	* cipher.c, md.c, pubkey.c: Replace old type GcryModule with newer
2067	one: gcry_module_t.
2068	(gcry_cipher_id_new): Removed function.
2069	(gcry_cipher_register): Removed code for generating a new module
2070	ID.
2071
2072	* cipher.c (gcry_cipher_register): Adjust call to
2073	_gcry_module_add.
2074	(gcry_cipher_register_default): Likewise.
2075	* pubkey.c (gcry_pubkey_register_default): Likewise.
2076	(gcry_pubkey_register): Likewise.
2077	* md.c (gcry_digest_register_default): Likewise.
2078	(gcry_digest_register): Likewise.
2079
2080	* md.c (gcry_digest_lookup_func_id): Removed function.
2081	(gcry_digest_lookup_id): Likewise.
2082	(gcry_digest_id_new): Use _gcry_module_lookup_id instead of
2083	gcry_digest_lookup_id.
2084	(digest_algo_to_string): Likewise.
2085	(check_digest_algo): Likewise.
2086	(md_enable): Likewise.
2087	(md_digest_length): Likewise.
2088	(md_asn_oid): Likewise.
2089
2090	* pubkey.c (gcry_pubkey_lookup_id): Removed function.
2091	(gcry_pubkey_lookup_func_id): Likewise.
2092	(gcry_pubkey_id_new): Use _gcry_module_lookup_id instead of
2093	gcry_pubkey_id_new.
2094	(gcry_pk_algo_name): Likewise.
2095	(disable_pubkey_algo): Likewise.
2096	(check_pubkey_algo): Likewise.
2097	(pubkey_get_npkey): Likewise.
2098	(pubkey_get_nskey): Likewise.
2099	(pubkey_get_nsig): Likewise.
2100	(pubkey_get_nenc): Likewise.
2101	(pubkey_generate): Likewise.
2102	(pubkey_check_secret_key): Likewise.
2103	(pubkey_encrypt): Likewise.
2104	(pubkey_decrypt): Likewise.
2105	(pubkey_sign): Likewise.
2106	(pubkey_verify): Likewise.
2107	(gcry_pk_algo_info): Likewise.
2108
2109	* cipher.c (gcry_cipher_lookup_func_id): Removed function.
2110	(gcry_cipher_lookup_id): Likewise.
2111	(cipher_algo_to_string): use _gcry_module_lookup_id instead of
2112	gcry_cipher_lookup_id.
2113	(disable_cipher_algo): Likewise.
2114	(check_cipher_algo): Likewise.
2115	(cipher_get_blocksize): Likewise.
2116	(gcry_cipher_open): Likewise.
2117	(gcry_cipher_id_new): Likewise.
2118
21192003-06-17  Moritz Schulte  <moritz@g10code.com>
2120
2121	* Makefile.am (GCRYPT_MODULES): Set to @GCRYPT_CIPHERS@,
2122	@GCRYPT_PUBKEY_CIPHERS@, @GCRYPT_DIGESTS@ and @GCRYPT_RANDOM@.
2123	(libcipher_la_DEPENDENCIES): Set to $(GCRYPT_MODULES).
2124	(libcipher_la_LIBADD): Likewise.
2125	(AM_CFLAGS): Added: @GPG_ERROR_CFLAGS@.
2126	(EXTRA_libcipher_la_SOURCES): Added all conditional sources.
2127
2128	* md.c (md_open): Use _gcry_fast_random_poll instead of
2129	fast_random_poll.
2130	* cipher.c (gcry_cipher_open): Likewise.
2131
2132	* random.h (fast_random_poll): Removed macro.
2133
2134	* blowfish.c, md4.c, md5.c, rmd160.c, sha1.c, sha256.c, sha512.c,
2135	tiger.c: Use Autoconf's WORDS_BIGENDIAN instead of our own
2136	BIG_ENDIAN_HOST.
2137
21382003-06-16  Moritz Schulte  <moritz@g10code.com>
2139
2140	* random.c (getfnc_gather_random): Do not special-case
2141	USE_ALL_RANDOM_MODULES, make it the default.
2142
2143	* dsa.c: Replace last occurences of old type names with newer
2144	names (i.e. replace MPI with gcry_mpi_t).
2145	* elgamal.c: Likewise.
2146	* primegen.c: Likewise.
2147	* pubkey.c: Likewise.
2148	* rsa.c: Likewise.
2149
21502003-06-14  Moritz Schulte  <moritz@g10code.com>
2151
2152	* des.c (des_setkey): Add selftest check.
2153	(tripledes_set3keys): Likewise.
2154	(do_tripledes_setkey): Remove selftest check.
2155	(do_des_setkey): Likewise.
2156
21572003-06-11  Moritz Schulte  <moritz@g10code.com>
2158
2159	* md.c (_gcry_md_init): New function.
2160	* cipher.c (_gcry_cipher_init): New function.
2161	* pubkey.c (_gcry_pk_init): New function.
2162
21632003-06-13  Werner Koch  <wk@gnupg.org>
2164
2165	* md.c (gcry_md_get_algo): Reverted to old API.  This is a
2166	convenience function anyway and error checking is not approriate.
2167	(gcry_md_is_secure): New.
2168	(gcry_md_is_enabled): New.
2169
21702003-06-12  Werner Koch  <wk@gnupg.org>
2171
2172	* cipher.c (gcry_cipher_open): Make sure HANDLE is set to NULL on
2173	error.
2174
21752003-06-11  Werner Koch  <wk@gnupg.org>
2176
2177	* md.c (gcry_md_open): Make sure H receives either NULL or an
2178	valid handle.
2179	(gcry_md_copy): Swapped arguments so that it is more in lione with
2180	md_open and most other API fucntions like memcpy (destination
2181	comes first).  Make sure HANDLE is set to NULL on error.
2182
2183	* rijndael.c (do_encrypt): Hack to force correct alignment.  It
2184	seems not to be	not sufficient, though.  We should rework this
2185	fucntions and remove all these ugly casts.  Let the compiler
2186	optimize or have an assembler implementation.
2187
21882003-06-09  Moritz Schulte  <moritz@g10code.com>
2189
2190	* Makefile.am: Removed rules serpent, since that is not commited
2191	yet.
2192
21932003-06-08  Moritz Schulte  <moritz@g10code.com>
2194
2195	* pubkey.c (gcry_pk_encrypt): Improve calculation for size of the
2196	format string.
2197
21982003-06-07  Moritz Schulte  <moritz@g10code.com>
2199
2200	* arcfour.c, bithelp.h, blowfish.c, cast5.c, cipher.c, crc.c,
2201	des.c, dsa.c, elgamal.c, md4.c, md5.c, md.c, primegen.c, pubkey.c,
2202	rand-internal.h, random.c, random.h, rijndael.c, rmd160.c,
2203	rmd160test.c, rmd.h, rndeged.c, rndlinux.c, rndunix.c, rndw32.c,
2204	rsa.c, sha1.c, sha256.c, sha512.c, tiger.c, twofish.c: Edited all
2205	preprocessor instructions to remove whitespace before the '#'.
2206	This is not required by C89, but there are some compilers out
2207	there that don't like it.  Replaced any occurence of the now
2208	deprecated type names with the new ones.
2209
22102003-06-04  Moritz Schulte  <moritz@g10code.com>
2211
2212	* pubkey.c (gcry_pk_encrypt): Construct an arg_list and use
2213	gcry_sexp_build_array instead of gcry_sexp_build.
2214	(gcry_pk_sign): Likewise.
2215	(gcry_pk_genkey): Likewise.
2216
22172003-06-01  Moritz Schulte  <moritz@g10code.com>
2218
2219	* dsa.c (_gcry_dsa_generate): Do not check wether the algorithm ID
2220	does indeed belong to DSA.
2221	(_gcry_dsa_sign): Likewise.
2222	(_gcry_dsa_verify): Likewise.
2223	(_gcry_dsa_get_nbits): Likewise.
2224
2225	* elgamal.c (_gcry_elg_check_secret_key): Do not check wether the
2226	algorithm ID does indeed belong to ElGamal.
2227	(_gcry_elg_encrypt): Likewise.
2228	(_gcry_elg_decrypt): Likewise.
2229	(_gcry_elg_sign): Likewise.
2230	(_gcry_elg_verify): Likewise.
2231	(_gcry_elg_get_nbits): Likewise.
2232	(_gcry_elg_generate): Likewise.
2233
2234	* rsa.c (_gcry_rsa_generate): Do not check wether the algorithm ID
2235	does indeed belong to RSA.
2236	(_gcry_rsa_encrypt): Likewise.
2237	(_gcry_rsa_decrypt): Likewise.
2238	(_gcry_rsa_sign): Likewise.
2239	(_gcry_rsa_verify): Likewise.
2240	(_gcry_rsa_get_nbits): Likewise.
2241
22422003-05-30  Moritz Schulte  <moritz@g10code.com>
2243
2244	* md.c (md_get_algo): Return zero in case to algorithm is enabled.
2245
2246	* md.c (gcry_md_info): Adjusted for new no-errno-API.
2247	(md_final): Likewise.
2248	(gcry_md_get_algo): Likewise.
2249	* pubkey.c (gcry_pk_get_keygrip): Likewise.
2250	(gcry_pk_ctl): Likewise.
2251	(gcry_pk_algo_info): Likewise.
2252	* des.c (selftest): Likewise.
2253
22542003-05-29  Moritz Schulte  <moritz@g10code.com>
2255
2256	* md.c (md_enable): Do not forget to release module on error.
2257	(gcry_md_open): Adjusted for new no-errno-API.
2258	(md_open): Likewise.
2259	(md_copy): Likewise.
2260	(gcry_md_copy): Likewise.
2261	(gcry_md_setkey): Likewise.
2262	(gcry_md_algo_info): Likewise.
2263
2264	* cipher.c (gcry_cipher_open): Adjusted for new no-errno-API and
2265	also fixed a locking bug.
2266	(gcry_cipher_encrypt): Adjusted for new no-errno-API.
2267	(gcry_cipher_decrypt): Likewise.
2268	(gcry_cipher_ctl): Likewise.
2269	(gcry_cipher_info): Likewise.
2270	(gcry_cipher_algo_info): Likewise.
2271
22722003-05-28  Moritz Schulte  <moritz@g10code.com>
2273
2274	* md.c (md_enable): Adjusted for libgpg-error.
2275	(gcry_md_enable): Likewise.
2276	(gcry_digest_register_default): Likewise.
2277	(gcry_digest_register): Likewise.
2278	(check_digest_algo): Likewise.
2279	(prepare_macpads): Likewise.
2280	(gcry_md_setkey): Likewise.
2281	(gcry_md_ctl): Likewise.
2282	(gcry_md_get): Likewise.
2283	(gcry_md_algo_info): Likewise.
2284	(gcry_md_info): Likewise.
2285	* dsa.c (_gcry_dsa_generate): Likewise.
2286	(_gcry_dsa_check_secret_key): Likewise.
2287	(_gcry_dsa_sign): Likewie.
2288	(_gcry_dsa_verify): Likewise.
2289	* twofish.c (do_twofish_setkey): Likewise.
2290	(twofish_setkey): Likewise.
2291	* cipher.c (gcry_cipher_register): Likewise.
2292
22932003-05-25  Moritz Schulte  <moritz@g10code.com>
2294
2295	* rijndael.c (do_setkey): Adjusted for libgpg-error.
2296	(rijndael_setkey): Likewise.
2297	* random.c (gcry_random_add_bytes): Likewise.
2298	* elgamal.c (_gcry_elg_generate): Likewise.
2299	(_gcry_elg_check_secret_key): Likewise.
2300	(_gcry_elg_encrypt): Likewise.
2301	(_gcry_elg_decrypt): Likewise.
2302	(_gcry_elg_sign): Likewise.
2303	(_gcry_elg_verify): Likewise.
2304	* rsa.c (_gcry_rsa_generate): Likewise.
2305	(_gcry_rsa_check_secret_key): Likewise.
2306	(_gcry_rsa_encrypt): Likewise.
2307	(_gcry_rsa_decrypt): Likewise.
2308	(_gcry_rsa_sign): Likewise.
2309	(_gcry_rsa_verify): Likewise.
2310	* pubkey.c (dummy_generate, dummy_check_secret_key, dummy_encrypt,
2311	dummy_decrypt, dummy_sign, dummy_verify): Likewise.
2312	(gcry_pubkey_register): Likewise.
2313	(check_pubkey_algo): Likewise.
2314	(pubkey_generate): Likewise.
2315	(pubkey_check_secret_key): Likewise.
2316	(pubkey_encrypt): Likewise.
2317	(pubkey_decrypt): Likewise.
2318	(pubkey_sign): Likewise.
2319	(pubkey_verify): Likewise.
2320	(sexp_elements_extract): Likewise.
2321	(sexp_to_key): Likewise.
2322	(sexp_to_sig): Likewise.
2323	(sexp_to_enc): Likewise.
2324	(sexp_data_to_mpi): Likewise.
2325	(gcry_pk_encrypt): Likewise.
2326	(gcry_pk_decrypt): Likewise.
2327	(gcry_pk_sign): Likewise.
2328	(gcry_pk_verify): Likewise.
2329	(gcry_pk_testkey): Likewise.
2330	(gcry_pk_genkey): Likewise.
2331	(gcry_pk_ctl): Likewise.
2332	* cipher.c (dummy_setkey): Likewise.
2333	(check_cipher_algo): Likewise.
2334	(gcry_cipher_open): Likewise.
2335	(cipher_setkey): Likewise.
2336	(gcry_cipher_ctl): Likewise.
2337	(cipher_encrypt): Likewise.
2338	(gcry_cipher_encrypt): Likewise.
2339	(cipher_decrypt): Likewise.
2340	(gcry_cipher_decrypt): Likewise.
2341	(gcry_cipher_info): Likewise.
2342	(gcry_cipher_algo_info): Likewise.
2343	* cast5.c (cast_setkey): Likewise.
2344	(do_cast_setkey): Likewise.
2345	* arcfour.c (arcfour_setkey): Likewise.
2346	(do_arcfour_setkey): Likewise.
2347	* blowfish.c (do_bf_setkey): Likewise.
2348	(bf_setkey): Likewise.
2349	* des.c (do_des_setkey): Likewise.
2350	(do_tripledes_setkey): Likewise.
2351
23522003-05-22  Moritz Schulte  <moritz@g10code.com>
2353
2354	* tiger.c: Merged code ussing the U64_C macro from GnuPG.
2355
2356	* sha512.c: Likewise.
2357
23582003-05-17  Moritz Schulte  <moritz@g10code.com>
2359
2360	* pubkey.c (gcry_pk_genkey): Fix type: acquire a lock, instead of
2361	releasing it.
2362
23632003-05-11  Moritz Schulte  <moritz@g10code.com>
2364
2365	* pubkey.c (gcry_pk_testkey): Call REGISTER_DEFAULT_CIPHERS.
2366	(gcry_pk_ctl): Likewise.
2367
23682003-04-27  Moritz Schulte  <moritz@g10code.com>
2369
2370	* pubkey.c (gcry_pk_genkey): Release sexp after extracted data has
2371	been used.
2372
2373	* md.c (gcry_md_get_algo_dlen): Simplified, simply call
2374	md_digest_length to do the job.
2375
2376	* des.c (do_des_setkey): Check for selftest failure not only
2377	during initialization.
2378	(do_tripledes_setkey): Include check for selftest failure.
2379
2380	* pubkey.c (gcry_pubkey_register_default): New macro
2381	`pubkey_use_dummy', use it.
2382
2383	* elgamal.c (elg_names): New variable.
2384	(pubkey_spec_elg): Include elg_names.
2385
2386	* dsa.c (dsa_names): New variable.
2387	(pubkey_spec_dsa): Include dsa_names.
2388
2389	* rsa.c (rsa_names): New variable.
2390	(pubkey_spec_rsa): Include rsa_names.
2391
2392	* pubkey.c (gcry_pubkey_lookup_func_name): Compare name also with
2393	the names listed in `sexp_names'.
2394
23952003-04-24  Moritz Schulte  <moritz@g10code.com>
2396
2397	* pubkey.c (sexp_to_key): New variables: module, pubkey.  Adjusted
2398	to new module interface.
2399	(sexp_to_key): Changend type of argument `retalgo' from `int *' to
2400	`GcryModule **'.  Adjusted all callers.  Removed argument:
2401	r_algotblidx.
2402	(sexp_to_sig): Changend type of argument `retalgo' from `int *' to
2403	`GcryModule **'.  Adjusted all callers.
2404	(sexp_to_enc): Likewise.
2405
2406	(pubkey_get_npkey, pubkey_get_nskey, pubkey_get_nsig,
2407	pubkey_get_nenc): Use strlen to find out the number.
2408
2409	* rsa.c: Adjust pubkey_spec_rsa to new internal interface.
2410	* dsa.c: Likewise.
2411	* elgamal.c: Likewise.
2412
24132003-04-17  Moritz Schulte  <moritz@g10code.com>
2414
2415	* pubkey.c (sexp_elements_extract): New function.
2416	* pubkey.c (sexp_to_key): Removed variable `idx', added `err', use
2417	sexp_elements_extract.
2418	(sexp_to_sig): Likewise.
2419	(sexp_to_enc): Likewise.
2420
2421	* pubkey.c: Terminate list correctly.
2422	* md.c: Include sha512/sha384 in digest_table.
2423
24242003-04-16  Moritz Schulte  <moritz@g10code.com>
2425
2426	* Makefile.am: Include support for sha512.c.
2427
2428	* sha512.c: New file, merged from GnuPG, with few modifications
2429	for libgcrypt.
2430
2431	* rand-internal.h: Removed declarations for constructor functions.
2432
2433	* md.c (md_copy): Call _gcry_module_use for incrementing the usage
2434	counter of the digest modules.
2435
2436	* rsa.c: Do not include "rsa.h".
2437	* dsa.c: Do not include "dsa.h".
2438	* elgamal.c: Do not include "elgamal.h".
2439	* des.c: Do not include "des.h".
2440	* cast5.c: Do not include "cast5.h".
2441	* blowfish.c: Do not include "blowfish.h".
2442	* arcfour.c: Do not include "arcfour.h".
2443
2444	* Makefile.am (libcipher_la_DEPENDENCIES): Removed.
2445	(libcipher_la_LIBADD): Removed.
2446	Use Automake conditionals for conditional compilation.
2447
24482003-04-13  Moritz Schulte  <moritz@g10code.com>
2449
2450	* cipher.c (gcry_cipher_open): Call REGISTER_DEFAULT_CIPHERS.
2451
2452	* md.c (gcry_md_list): New member: module.
2453	(md_enable): New variable: module, changed use of module and
2454	digest.
2455	(md_enable): Initialize member: module.
2456	(md_close): Call _gcry_module_release.
2457
2458	* cipher.c (gcry_cipher_open): New variable: module, changed use of
2459	module and cipher.
2460	(struct gcry_cipher_handle): New member: module.
2461	(gcry_cipher_open): Initialize member: module.
2462	(gcry_cipher_close): Call _gcry_module_release.
2463
24642003-04-09  Moritz Schulte  <moritz@g10code.com>
2465
2466	* cipher.c: Include "ath.h".
2467	* md.c: Likewise.
2468	* pubkey.c: Likewise.
2469
2470	* cipher.c (ciphers_registered_lock): New variable.
2471	* md.c (digests_registered_lock): New variable.
2472	* pubkey.c (pubkeys_registered_lock): New variable.
2473
2474	* rndlinux.c (gnupgext_version, func_table): Removed definitions.
2475	(gnupgext_enum_func): Removed function.
2476	(_gcry_rndlinux_constructor): Removed function.
2477
2478	* rndegd.c (gnupgext_version, func_table): Removed definitions.
2479	(gnupgext_enum_func): Removed function.
2480	(_gcry_rndegd_constructor): Removed function.
2481
2482	* rndunix.c (gnupgext_version, func_table): Removed definitions.
2483	(gnupgext_enum_func): Removed function.
2484	(_gcry_rndunix_constructor): Removed function.
2485
2486	* rndw32.c (gnupgext_version, func_table): Removed definitions.
2487	(gnupgext_enum_func): Removed function.
2488	(_gcry_rndw32_constructor): Removed function.
2489
2490	* rndegd.c (rndegd_connect_socket): Simplify code for creating the
2491	egd socket address.
2492	(rndegd_connect_socket): Call log_fatal use instead of
2493	g10_log_fatal.
2494	(egd_gather_random): Renamed to ...
2495	(rndegd_gather_random): ... here.
2496
24972003-04-08  Moritz Schulte  <moritz@g10code.com>
2498
2499	* rndlinux.c: Do not include "dynload.h".
2500	* rndunix.c: Likewise.
2501	* rndw32.c: Likewise.
2502
2503	* rndegd.c (rndegd_connect_socket): Factored out from ...
2504	(egd_gather_random): here; call it.
2505	(egd_socket): New variable.
2506	(egd_gather_random): Initialize fd with egd_socket, do not declare
2507	fd static.
2508	(do_read): Merged few changes from GnuPG. FIXME - not finished?
2509	Do not include "dynload.h".
2510
2511	* rndw32.c (gather_random): Renamed to rndw32_gather_random, do
2512	not declare static.
2513	(gather_random_fast): Renamed to rndw32_gather_random_fast, do not
2514	declare static.
2515
2516	* rndunix.c (gather_random): Renamed to rndunix_gather_random, do
2517	not declare static.
2518	* rndegd.c (gather_random): Renamed to rndegd_gather_random, do
2519	not declare static.
2520	* rndlinux.c (gather_random): Renamed to rndlinux_gather_random,
2521	do not declare static.
2522
25232003-04-07  Moritz Schulte  <moritz@g10code.com>
2524
2525	* Makefile.am (libcipher_la_SOURCES): Removed construct.c.
2526	(libcipher_la_SOURCES): Added sha1.c, sha256.c, rmd160.c, md4.c,
2527	md5.c, tiger.c and crc.c
2528	(EXTRA_PROGRAMS): Removed sha1, sha256, rmd160, md4, md5, tiger
2529	and crc.  Removed definitions: EXTRA_md4_SOURCES,
2530	EXTRA_md5_SOURCES, EXTRA_rmd160_SOURCES, EXTRA_sha1_SOURCES,
2531	EXTRA_sha256_SOURCES, EXTRA_tiger_SOURCES and EXTRA_crc_SOURCES,
2532	BUILT_SOURCES, DISTCLEANFILES.
2533
2534	* pubkey.c: Do not include "elgamal.h", "dsa.h" and "rsa.h".
2535
2536	* Makefile.am (libcipher_la_SOURCES): Removed rsa.h, elgamal.h,
2537	dsa.h, des.h, cast5.h, arcfour.h and blowfish.h.
2538
2539	* rsa.h: Removed file.
2540	* elgamal.h: Removed file.
2541	* dsa.h: Removed file.
2542	* des.h: Removed file.
2543	* cast5.h: Removed file.
2544	* arcfour.h: Removed file.
2545	* blowfish.h: Removed file.
2546
2547	* Makefile.am (libcipher_la_SOURCES): Removed dynload.c and
2548	dynload.h.
2549
2550	* rsa.c (pubkey_spec_rsa): New variable.
2551	* dsa.c (pubkey_spec_rsa): New variable.
2552	* elgamal.c (pubkey_spec_elg): New variable.
2553
2554	* rsa.c (_gcry_rsa_get_info): Removed function.
2555	* elgamal.c (_gcry_elg_get_info): Removed function.
2556	* dsa.c (_gcry_dsa_get_info): Removed function.
2557
2558	* tiger.c (tiger_get_info): Removed function.
2559	(gnupgext_version, func_table): Removed definitions.
2560	(gnupgext_enum_func): Removed function.
2561	(_gcry_tiger_constructor): Removed function.
2562
2563	* sha1.c (sha1_get_info): Removed function.
2564	(gnupgext_version, func_table): Removed definitions.
2565	(gnupgext_enum_func): Removed function.
2566	(_gcry_sha1_constructor): Removed function.
2567
2568	* sha256.c (sha256_get_info): Removed function.
2569	(gnupgext_version, func_table): Removed definitions.
2570	(gnupgext_enum_func): Removed function.
2571	(_gcry_sha256_constructor): Removed function.
2572
2573	* rmd160.c (rmd160_get_info): Removed function.
2574	(gnupgext_version, func_table): Removed definitions.
2575	(gnupgext_enum_func): Removed function.
2576	(_gcry_rmd160_constructor): Removed function.
2577
2578	* md5.c (md5_get_info): Removed function.
2579	(gnupgext_version, func_table): Removed definitions.
2580	(gnupgext_enum_func): Removed function.
2581	(_gcry_md5_constructor): Removed function.
2582
2583	* md4.c (md4_get_info): Removed function.
2584	(gnupgext_version, func_table): Removed definitions.
2585	(gnupgext_enum_func): Removed function.
2586	(_gcry_md4_constructor): Removed function.
2587
2588	* crc.c (crc_get_info): Removed function.
2589
2590	* arcfour.c (do_arcfour_setkey): Changed type of context argument
2591	to `void *', added local variable for cast, adjusted callers.
2592	(arcfour_setkey): Likewise.
2593	(encrypt_stream): Likewise.
2594	* cast5.c (cast_setkey): Likewise.
2595	(encrypt_block): Likewise.
2596	* rijndael.c (rijndael_setkey): Likewise.
2597	(rijndael_encrypt): Likewise.
2598	(rijndael_decrypt): Likewise.
2599	* twofish.c (twofish_setkey): Likewise.
2600	(twofish_encrypt): Likewise.
2601	(twofish_decrypt): Likewise.
2602	* des.c (do_des_setkey): Likewise.
2603	(do_des_encrypt): Likewise.
2604	(do_des_encrypt): Likewise.
2605	(do_tripledes_encrypt): Likewise.
2606	(do_tripledes_encrypt): Likewise.
2607	* blowfish.c (bf_setkey: Likewise.
2608	(encrypt_block): Likewise.
2609	(decrypt_block): Likewise.
2610
2611	* arcfour.c (encrypt_stream): Likewise.
2612
2613	* rijndael.c (gnupgext_version, func_table): Removed definitions.
2614	(gnupgext_enum_func) Removed function.
2615
2616	* twofish.c (gnupgext_version, func_table): Removed definitions.
2617	(gnupgext_enum_func) Removed function.
2618
2619	* cast5.c (CIPHER_ALGO_CAST5): Removed.
2620
2621	* blowfish.c (FNCCAST_SETKEY, FNCCAST_CRYPT): Removed macros.
2622	(CIPHER_ALGO_BLOWFISH): Removed symbol.
2623	* cast5.c (FNCCAST_SETKEY, FNCCAST_CRYPT): Likewise.
2624	* des.c (selftest_failed): Removed.
2625	(initialized): New variable.
2626	(do_des_setkey): Run selftest, if not yet done.
2627	(FNCCAST_SETKEY, FNCCAST_CRYPT): Removed macros.
2628
2629	* arcfour.c (_gcry_arcfour_get_info): Removed function.
2630	* blowfish.c (_gcry_blowfish_get_info): Removed function.
2631	* cast5.c (_gcry_cast5_get_info): Removed function.
2632	* des.c (_gcry_des_get_info): Removed function.
2633	* rijndael.c (_gcry_rijndael_get_info): Removed function.
2634	* twofish.c (_gcry_twofish_get_info): Removed function.
2635
2636	* arcfour.c (cipher_spec_arcfour): New variable.
2637	* twofish.c (cipher_spec_twofish, cipher_spec_twofish128): New
2638	variables.
2639	* rijndael.c (cipher_spec_aes, cipher_spec_aes192,
2640	cipher_spec256): New variables.
2641	* des.c (cipher_spec_des, cipher_spec_tripledes): New variables.
2642	* cast5.c (cipher_spec_cast5): New variable.
2643	* blowfish.c (cipher_spec_blowfish): Likewise.
2644
2645	* twofish.c: Do not include "dynload.h".
2646	* rijndael.c: Likewise.
2647	* des.c: Likewise.
2648	* cast5.c: Likewise.
2649	* blowfish.c: Likewise.
2650	* cipher.c: Likewise.
2651	* crc.c: Likewise.
2652	* md4.c: Likewise.
2653	* md5.c: Likewise.
2654	* md.c: Likewise.
2655	* pubkey.c: Likewise.
2656	* rijndael.c: Likewise.
2657	* sha1.c: Likewise.
2658	* sha256.c: Likewise.
2659
2660	* arcfour.c: Include "cipher.h".
2661	* twofish.c: Likewise.
2662	* rijndael.c: Likewise.
2663	* des.c: Likewise.
2664	* cast5.c: Likewise.
2665	* blowfish.c: Likewise.
2666
2667	* twofish.c (twofish_setkey): Declared argument `key' const.
2668	(twofish_encrypt): Declared argument `inbuf' const.
2669	(twofish_decrypt): Likewise.
2670
2671	* rijndael.c (rijndael_setkey): Declared argument `key' const.
2672	(rijndael_encrypt): Declared argument `inbuf' const.
2673	(rijndael_decrypt): Likewise.
2674
2675	* des.c (do_des_setkey): Declared argument `key' const.
2676	(do_tripledes_setkey): Likewise.
2677	(do_des_encrypt): Declared argument `inbuf' const.
2678	(do_des_decrypt): Likewise.
2679	(do_tripledes_encrypt): Likewise.
2680	(do_tripledes_decrypt): Likewise.
2681
2682	* cast5.c (encrypt_block): Declared argument `inbuf' const.
2683	(decrypt_block): Likewise.
2684	(cast_setkey): Declared argument `key' const.
2685
2686	* blowfish.c (do_bf_setkey): Declared argument `key' const.
2687	(encrypt_block): Declared argument `inbuf' const.
2688	(encrypt_block): Likewise.
2689
2690
2691
2692	* cipher.c: Remove CIPHER_ALGO_DUMMY related code.
2693	Removed struct cipher_table_s.
2694	Changed definition of cipher_table.
2695	Removed definition of disabled_algos.
2696	(ciphers_registered, default_ciphers_registered): New variables.
2697	(REGISTER_DEFAULT_CIPHERS): New macro.
2698	(dummy_setkey): Declared argument `key' const.
2699	(dummy_encrypt_block): Declared argument `inbuf' const.
2700	(dummy_encrypt_block): Likewise.
2701	(dummy_encrypt_stream): Likewise.
2702	(dummy_encrypt_stream): Likewise.
2703	(dummy_setkey): Use `unsigned char' instead of `byte'.
2704	(dummy_encrypt_block): Likewise.
2705	(dummy_decrypt_block): Likewise.
2706	(dummy_encrypt_stream): Likewise.
2707	(dummy_decrypt_stream): Likewise.
2708	(gcry_cipher_register_default): New function.
2709	(gcry_cipher_lookup_func_id): New function.
2710	(gcry_cipher_lookup_func_name): New function.
2711	(gcry_cipher_lookup_id): New function.
2712	(gcry_cipher_lookup_name): New function.
2713	(gcry_cipher_id_new): New function.
2714	(gcry_cipher_register): New function.
2715	(gcry_cipher_unregister): New function.
2716	(setup_cipher_table): Removed function.
2717	(load_cipher_modules): Removed function.
2718	(gcry_cipher_map_name): Adjusted to use new module management.
2719	(cipher_algo_to_string): Likewise.
2720	(disable_cipher_algo): Likewise.
2721	(check_cipher_algo): Likewise.
2722	(cipher_get_keylen): Likewise.
2723	(cipher_get_blocksize): Likewise.
2724	(gcry_cipher_open): Likewise.
2725	(struct gcry_cipher_handle): Replaced members algo, algo_index,
2726	blocksize, setkey, encrypt, decrypt, stencrypt, stdecrypt with one
2727	member: cipher.
2728	(gcry_cipher_open): Adjusted code for new handle structure.
2729	(cipher_setkey): Likewise.
2730	(cipher_setiv): Likewise.
2731	(cipher_reset): Likewise.
2732	(do_ecb_encrypt): Likewise.
2733	(do_ecb_decrypt): Likewise.
2734	(do_cbc_encrypt): Likewise.
2735	(do_cbc_decrypt): Likewise.
2736	(do_cfb_encrypt): Likewise.
2737	(do_cfb_decrypt): Likewise.
2738	(do_ctr_encrypt): Likewise.
2739	(cipher_encrypt): Likewise.
2740	(gcry_cipher_encrypt): Likewise.
2741	(cipher_decrypt): Likewise.
2742	(gcry_cipher_decrypt): Likewise.
2743	(cipher_sync): Likewise.
2744	(gcry_cipher_ctl): Likewise.
2745
2746	* pubkey.c: Removed struct pubkey_table_s.
2747	Changed definition of pubkey_table.
2748	Removed definition of disabled_algos.
2749	(pubkeys_registered, default_pubkeys_registered): New variables.
2750	(REGISTER_DEFAULT_PUBKEYS): New macro.
2751	(setup_pubkey_table): Removed function.
2752	(load_pubkey_modules): Removed function.
2753	(gcry_pubkey_register_default): New function.
2754	(gcry_pubkey_lookup_func_id): New function.
2755	(gcry_pubkey_lookup_func_name): New function.
2756	(gcry_pubkey_lookup_id): New function.
2757	(gcry_pubkey_lookup_name): New function.
2758	(gcry_pubkey_id_new): New function.
2759	(gcry_pubkey_register): New function.
2760	(gcry_pubkey_unregister): New function.
2761	(gcry_pk_map_name): Adjusted to use new module management.
2762	(gcry_pk_algo_name): Likewise.
2763	(disable_pubkey_algo): Likewise.
2764	(check_pubkey_algo): Likewise.
2765	(pubkey_get_npkey): Likewise.
2766	(pubkey_get_nskey): Likewise.
2767	(pubkey_get_nsig): Likewise.
2768	(pubkey_get_nenc): Likewise.
2769	(pubkey_generate): Likewise.
2770	(pubkey_check_secret_key): Likewise.
2771	(pubkey_encrypt): Likewise.
2772	(pubkey_decrypt): Likewise.
2773	(pubkey_sign): Likewise.
2774	(pubkey_verify): Likewise.
2775	(gcry_pk_get_nbits): Likewise.
2776	(gcry_pk_algo_info): Likewise.
2777
2778	* md.c: Removed struct md_digest_list_s.
2779	(digest_list): Changed definition.
2780	(digests_registered, default_digests_registered): New variables.
2781	(REGISTER_DEFAULT_DIGESTS): New macro.
2782	(new_list_item): Removed function.
2783	(setup_md_table): Removed function.
2784	(load_digest_module): Removed function.
2785	(gcry_digest_register_default): New function.
2786	(gcry_digest_lookup_func_id): New function.
2787	(gcry_digest_lookup_func_name): New function.
2788	(gcry_digest_lookup_id): New function.
2789	(gcry_digest_lookup_name): New function.
2790	(gcry_digest_id_new): New function.
2791	(gcry_digest_register): New function.
2792	(gcry_digest_unregister): New function.
2793	(GcryDigestEntry): New type.
2794	(struct gcry_md_context): Adjusted type of `list'.
2795	(gcry_md_map_name): Adjusted to use new module management.
2796	(digest_algo_to_string): Likewise.
2797	(check_digest_algo): Likewise.
2798	(md_enable): Likewise.
2799	(md_digest_length): Likewise.
2800	(md_asn_oid): Likewise.
2801
28022003-04-07  Moritz Schulte  <moritz@g10code.com>
2803
2804	* pubkey.c: Replaced PUBKEY_ALGO_DSA with GCRY_PK_DSA,
2805	PUBKEY_ALGO_RSA with GCRY_PK_RSA and PUBKEY_ALGO_ELGAMAL with
2806	GCRY_PK_ELG.
2807
2808	* dsa.c: Replaced PUBKEY_ALGO_DSA with GCRY_PK_DSA.
2809
28102003-04-01  Moritz Schulte  <moritz@g10code.com>
2811
2812	* des.c: Removed checks for GCRY_CIPHER_3DES and GCRY_CIPHER_DES.
2813
28142003-03-31  Moritz Schulte  <moritz@g10code.com>
2815
2816	* tiger.c (tiger_get_info): Do not declare static.
2817	* sha256.c (sha256_get_info): Likewise.
2818	* sha1.c (sha1_get_info): Likewise.
2819	* rmd160.c (rmd160_get_info): Likewise.
2820	* md5.c (md5_get_info): Likewise.
2821	* md4.c (md4_get_info): Likewise.
2822	* crc.c (crc_get_info): Likewise.
2823
2824	* md.c (load_digest_module): Call setup_md_table during
2825	initialization.
2826	(new_list_item): Link new element into digest_list.
2827
2828	* cipher.c (do_ctr_decrypt): Made do_ctr_encrypt act as a wrapper
2829	for do_ctr_encrypt, since these functions are identical.
2830
28312003-03-30  Simon Josefsson  <jas@extundo.com>
2832
2833	* cipher.c (struct gcry_cipher_handle): Add counter field.
2834	(gcry_cipher_open): Add CTR.
2835	(cipher_reset): Clear counter field.
2836	(do_ctr_encrypt, do_ctr_decrypt): New functions.
2837	(cipher_encrypt, cipher_decrypt): Call CTR functions.
2838	(gcry_cipher_ctl): Add SET_CTR to set counter.
2839
28402003-03-30  Moritz Schulte  <moritz@g10code.com>
2841
2842	* rsa.c (_gcry_rsa_blind): New function.
2843	(_gcry_rsa_unblind): New function.
2844	(_gcry_rsa_decrypt): Use _gcry_rsa_blind and _gcry_rsa_decrypt.
2845
28462003-03-26  Moritz Schulte  <moritz@g10code.com>
2847
2848	* dynload.c (_gcry_enum_gnupgext_pubkeys): Adjust `encrypt' and
2849	`decrypt' function arguments.
2850	(_gcry_enum_gnupgext_pubkeys): Likewise.
2851	* dynload.h: Likewise.
2852
2853	* pubkey.c (dummy_decrypt): Add argument: int flags.
2854	(dummy_encrypt): Likewise.
2855
2856	* elgamal.c (_gcry_elg_encrypt): Add argument: int flags.
2857	(_gcry_elg_decrypt): Likewise.
2858
2859	* rsa.c (_gcry_rsa_encrypt): Add argument: int flags.
2860	(_gcry_rsa_decrypt): Likewise.
2861
2862	* pubkey.c: Add `flags' argument to members `encrypt' and
2863	`decrypt' of struct `pubkey_table_s'.
2864
2865	* rsa.h: Add `flags' argument to function declarations.
2866	* elgamal.h: Likewise.
2867
2868	* pubkey.c (sexp_data_to_mpi): New variable: int parsed_flags.
2869	(sexp_data_to_mpi): Set `parsed_flags'.
2870	(sexp_data_to_mpi): New argument: int *flags.
2871	(gcry_pk_encrypt): New variable: int flags.
2872	(gcry_pk_encrypt): Pass `flags' to pubkey_encrypt.
2873	(pubkey_encrypt): New variable: int flags.
2874	(pubkey_encrypt): Pass `flags' to pubkey encrypt function.
2875	(pubkey_decrypt): Likewise.
2876	(pubkey_decrypt): Pass `flags' to pubkey encrypt function.
2877	(gcry_pk_encrypt): Include `flags' s-exp in return list.
2878	(sexp_to_enc): New argument: int *flags.
2879	(gcry_pk_decrypt): New variable: int flags.
2880	(gcry_pk_decrypt): Pass `flags' to pubkey_decrypt.
2881	(sexp_to_enc): New variable: int parsed_flags.
2882	(sexp_to_enc): Set `parsed_flags'.
2883
28842003-03-22  Simon Josefsson  <jas@extundo.com>
2885
2886	* cipher.c (gcry_cipher_open, do_cbc_encrypt)
2887	(gcry_cipher_encrypt): Support GCRY_CIPHER_CBC_MAC.
2888	(gcry_cipher_ctl): Support GCRYCTL_SET_CBC_MAC.
2889
28902003-03-19  Werner Koch  <wk@gnupg.org>
2891
2892	* primegen.c (gen_prime): New args EXTRA_CHECK and EXTRA_CHECK_ARG
2893	to allow for a user callback.  Changed all callers.
2894	(_gcry_generate_secret_prime)
2895	(_gcry_generate_public_prime): Ditto, pass them to gen_prime.
2896	* rsa.c (check_exponent): New.
2897	(generate): Use a callback to ensure that a given exponent is
2898	actually generated.
2899
29002003-03-12  Moritz Schulte  <moritz@g10code.com>
2901
2902	* primegen.c: Initialize `no_of_small_prime_numbers' statically.
2903	(gen_prime): Remove calculation of `no_of_small_prime_numbers'.
2904
29052003-03-03  Moritz Schulte  <moritz@g10code.com>
2906
2907	* md.c (gcry_md_ctl): Rewritten to use same style like the other
2908	functions dispatchers.
2909
29102003-03-02  Moritz Schulte  <moritz@g10code.com>
2911
2912	* cipher.c (struct gcry_cipher_handle): New member: algo_index.
2913	(gcry_cipher_open): Allocate memory for two cipher contexts.
2914	Initialize algo_index.
2915	(cipher_setkey): Duplicate context into reserved memory.
2916	(cipher_reset): New function, which resets the context and clear
2917	the IV.
2918	(gcry_cipher_ctl): Call cipher_reset.
2919
29202003-02-23  Moritz Schulte  <moritz@g10code.com>
2921
2922	* cipher.c: Remove (bogus) `digitp' macro definition.
2923	* md.c: Likewise.
2924
2925	* blowfish.c (burn_stack): Removed.
2926	* arcfour.c (burn_stack): Likewise.
2927	* cast5.c (burn_stack): Likewise.
2928	* des.c (burn_stack): Likewise.
2929	* md4.c (burn_stack): Likewise.
2930	* md5.c (burn_stack): Likewise.
2931	* random.c (burn_stack): Likewise.
2932	* rijndael.c (burn_stack): Likewise.
2933	* rmd160.c (burn_stack): Likewise.
2934	* sha1.c (burn_stack): Likewise.
2935	* sha256.c (burn_stack): Likewise.
2936	* tiger.c (burn_stack): Likewise.
2937	* twofish.c (burn_stack): Likewise.
2938
2939	* blowfish.c: Changed all occurences of burn_stack to
2940	_gcry_burn_stack.
2941	* arcfour.c: Likewise.
2942	* cast5.c: Likewise.
2943	* des.c: Likewise.
2944	* md4.c: Likewise.
2945	* md5.c: Likewise.
2946	* random.c: Likewise.
2947	* rijndael.c: Likewise.
2948	* rmd160.c: Likewise.
2949	* sha1.c: Likewise.
2950	* sha256.c: Likewise.
2951	* tiger.c: Likewise.
2952	* twofish.c: Likewise.
2953
2954	* arcfour.c (_gcry_arcfour_get_info): Use GCRY_CIPHER_ARCFOUR
2955	instead of hard-coded value `301'.
2956
29572003-01-24  Werner Koch  <wk@gnupg.org>
2958
2959	* random.c (_gcry_register_random_progress): New.
2960	(_gcry_random_progress): New.
2961
2962	* rndlinux.c (gather_random): Call the random progress function.
2963
29642003-01-23  Werner Koch  <wk@gnupg.org>
2965
2966	* rsa.c (generate): New arg USE_E to request a specific public
2967	exponent.
2968	(_gcry_rsa_generate): Ditto.
2969	* elgamal.c (_gcry_elg_generate): Must add an dummy argument
2970	instead of USE_E.
2971	* dsa.c (_gcry_dsa_generate): Ditto.
2972	* pubkey.c (dummy_generate): Ditto.
2973	(pubkey_generate): Add USE_E arg and pass it down.
2974	(gcry_pk_genkey): Detect "rsa-use-e" parameter and pass it to generate.
2975
2976	* pubkey.c (sexp_to_enc): New arg RET_MODERN.
2977	(gcry_pk_decrypt): Make use of it to return a real S-expression.
2978	Return better error codes.
2979	(gcry_pk_verify): Return better error codes.
2980
29812003-01-21  Werner Koch  <wk@gnupg.org>
2982
2983	* random.c (gcry_random_add_bytes): Add QUALITY argument, let
2984	function return an error code and disable its core for now.
2985
29862003-01-21  Timo Schulz  <twoaday@freakmail.de>
2987
2988	* random.c (gcry_random_add_bytes): New. Function to add external
2989	random to the pool.
2990
29912003-01-20  Simon Josefsson  <jas@extundo.com>
2992
2993	* crc.c: New.
2994	* Makefile.am (EXTRA_PROGRAMS, EXTRA_crc_SOURCES): Add crc.c.
2995	* md.c (gcry_md_get_algo_dlen): Add values for CRC.
2996
29972003-01-20  Werner Koch  <wk@gnupg.org>
2998
2999	* sha256.c: New.
3000	* bithelp.h (ror): New.
3001	* Makfile.am: Add sha256.c.
3002	* md.c (oid_table): Add values for SHA256 et al.
3003	(gcry_md_get_algo_dlen): Likewise
3004
30052003-01-20  Werner Koch  <wk@gnupg.org>
3006
3007	* pubkey.c (gcry_pk_get_keygrip): Implemented keygrips for DSA
3008	and ElGamal.
3009
30102003-01-17  Werner Koch  <wk@gnupg.org>
3011
3012	* cipher.c (gcry_cipher_encrypt): Reworked so that the output will
3013	never contain the plaintext even if the caller did not checked the
3014	return value.
3015
3016	* md.c (gcry_md_get_algo): Changed error code to GCRYERR_GENERAL
3017	because we don't have an invalid md algo but no algorithm enabled.
3018
3019	* pubkey.c (gcry_pk_genkey): Changed error code for bounds check
3020	of table parameters to GCRYERR_INTERNAL.
3021
3022	* md.c (gcry_md_open): Partly reverted Timo's change from
3023	2002-10-10 by removing the check for the algorithm.  An algorithm
3024	of 0 is allowed and anyway we should not double check it or check
3025	it using a different function.  Also fixed the flags check.
3026
3027	* pubkey.c (gcry_pk_encrypt): Make sure that R_CIPH points to NULL
3028	on error.
3029	(gcry_pk_decrypt): Ditto for R_PLAIN.
3030	(gcry_pk_sign): Ditto for R_SIG.
3031	(gcry_pk_genkey): Ditto for R_KEY.
3032
30332003-01-16  Werner Koch  <wk@gnupg.org>
3034
3035	* md.c (gcry_md_write): Changed 2nd argument type to void*.
3036	(gcry_md_hash_buffer): Changed type of boths buffers to void*.
3037	(gcry_md_setkey): Changed 2nd argument type to void*.
3038
30392003-01-15  Werner Koch  <wk@gnupg.org>
3040
3041	* pubkey.c (sexp_data_to_mpi): New.  This handles pkcs1 padding.
3042	(gcry_pk_sign, gcry_pk_verify): Use it here.
3043	(gcry_pk_encrypt): And here.
3044	(pubkey_verify): Add debug code.
3045	(sexp_to_enc): Handle flags in the input and return the pkcs1 flag
3046	in a new parameter.
3047	(gcry_pk_decrypt): Prepare for future pkcs1 handling.
3048
30492002-12-19  Werner Koch  <wk@gnupg.org>
3050
3051	* random.c (_gcry_random_initialize): New.
3052
30532002-12-16  Werner Koch  <wk@gnupg.org>
3054
3055	* cipher.c: Added a Teletrust specific OID for 3DES.
3056
30572002-12-12  Werner Koch  <wk@gnupg.org>
3058
3059	* md.c: Added another oddball OIW OID (sha-1WithRSAEncryption).
3060
30612002-11-23  Werner Koch  <wk@gnupg.org>
3062
3063	* md.c (load_digest_module): Enlarged checked_algos bitmap.
3064	* md4.c (func_table):  Fixed entry for md4.
3065	Both by Simon Josephson.
3066	(transform): Copy data to get the alignment straight. Tested only
3067	on i386.
3068
30692002-11-10  Simon Josefsson  <jas@extundo.com>
3070
3071	* cipher.c (gcry_cipher_open): Don't reject CTS flag.
3072	(do_cbc_encrypt, do_cbc_decrypt, cipher_encrypt)
3073	(gcry_cipher_encrypt, cipher_decrypt)
3074	(gcry_cipher_decrypt): Support CTS flag.
3075	(gcry_cipher_ctl): Toggle CTS flag.
3076
30772002-11-10  Werner Koch  <wk@gnupg.org>
3078
3079	* md4.c: New. By Simon Josefsson.
3080	* Makefile.am (EXTRA_PROGRAMS): Add md4.c.
3081	* md.c (oid_table,gcry_md_get_algo_dlen): MD4 support.
3082
30832002-10-14  Werner Koch  <wk@gnupg.org>
3084
3085	* arcfour.c (do_encrypt_stream): Don't use increment op when
3086	assigning to the same variable.
3087
30882002-10-10  Timo Schulz  <ts@winpt.org>
3089
3090	* pubkey.c (gcry_pk_genkey): Check boundaries.
3091
3092	* md.c (gcry_md_open): Check that algo is available and only
3093	valid flag values are used.
3094	(gcry_md_get_algo): Add error handling.
3095
30962002-09-26  Werner Koch  <wk@gnupg.org>
3097
3098	* md.c: Include an OID for TIGER.
3099	* tiger.c (tiger_get_info): Use a regular OID.
3100
31012002-09-17  Werner Koch  <wk@gnupg.org>
3102
3103	* random.c: Replaced mutex.h by the new ath.h.  Changed all calls.
3104
31052002-09-16  Werner Koch  <wk@gnupg.org>
3106
3107	* arcfour.c (do_encrypt_stream): Use register modifier and modulo.
3108	According to Nikos Mavroyanopoulos this increases perfromace on
3109	i386 system noticable.  And I always tought gcc is clever enough.
3110	* md5.c (transform): Use register modifier.
3111	* rmd160.c (transform): Ditto.
3112	* sha1.c (transform): Ditto.  We hope that there are 6 free registers.
3113	* random.c (gcry_randomize): Rewrote to avoid malloc calls.
3114
3115	* rndlinux.c (gather_random): Replaced remaining fprintfs by log_*.
3116	* arcfour.c (do_arcfour_setkey): Ditto.
3117	* twofish.c (do_twofish_setkey): Ditto.
3118	* rndegd.c (gather_random): Ditto.
3119	* rijndael.c (do_setkey): Ditto.
3120	* random.c (_gcry_random_dump_stats): Ditto.
3121	* primegen.c (_gcry_generate_elg_prime): Ditto.
3122	* des.c (_gcry_des_get_info): Ditto.
3123	* cast5.c (do_cast_setkey): Ditto.
3124	* blowfish.c (do_bf_setkey): Ditto.
3125
31262002-08-26  Werner Koch  <wk@gnupg.org>
3127
3128	* des.c (weak_keys): Fixed one entry in the table and compared
3129	all entries against the literature.
3130	(selftest): Checksum the weak key table.
3131
31322002-08-21  Werner Koch  <wk@gnupg.org>
3133
3134	* pubkey.c: Enable keygrip calculation for "openpgp-rsa".
3135
31362002-08-17  Werner Koch  <wk@gnupg.org>
3137
3138	* cipher.c (setup_cipher_table): Don't overwrite the DES entry
3139	with the entry for DUMMY.
3140
31412002-08-14  Werner Koch  <wk@gnupg.org>
3142
3143	* des.c (do_des_setkey,do_des_encrypt, do_des_decrypt): New.
3144	(_gcry_des_get_info): Support plain old DES.
3145	* cipher.c (setup_cipher_table): Put DES into the table.
3146
31472002-07-25  Werner Koch  <wk@gnupg.org>
3148
3149	* rndunix.c (_gcry_rndunix_constructor): Prefixed with _gcry_.
3150	Noted by Stephan Austermuehle.
3151
31522002-07-08  Timo Schulz  <ts@winpt.org>
3153
3154	* rndw32.c: Replaced the m_ memory functions with the real
3155	gcry_ functions. Renamed all g10_ prefixed functions to log_.
3156
31572002-06-12  Werner Koch  <wk@gnupg.org>
3158
3159	* rsa.c (generate): Use e = 65537 for now.
3160
31612002-06-11  Werner Koch  <wk@gnupg.org>
3162
3163	* pubkey.c (gcry_pk_get_keygrip): Allow a "protected-private-key".
3164
31652002-06-05  Timo Schulz  <ts@winpt.org>
3166
3167	* cipher.c (gcry_cipher_encrypt, gcry_cipher_decrypt):
3168	Check that the input size is a multiple of the blocksize.
3169
31702002-05-23  Werner Koch  <wk@gnupg.org>
3171
3172	* md.c (oid_table): Add an rsadsi OID for MD5.
3173
31742002-05-21  Werner Koch  <wk@gnupg.org>
3175
3176	* primegen.c, elgamal.c, dsa.c (progress): Do not print anything
3177	by default.  Pass an extra identifying string to the callback and
3178	reserved 2 argumenst for current and total counters.  Changed the
3179	register function prototype.
3180
31812002-05-17  Werner Koch  <wk@gnupg.org>
3182
3183	* rndegd.c (rndegd_constructor): Fixed name of register function
3184	and prefixed the function name with _gcry_.
3185	* rndw32.c (rndw32_constructor): Ditto.
3186	* tiger.c (tiger_constructor): Ditto.
3187
3188	* Makefile.am: Removed all dynamic loading stuff.
3189	* dynload.c: Ditto. Now only used for the constructor system.
3190
31912002-05-15  Werner Koch  <wk@gnupg.org>
3192
3193	* random.c (gcry_random_bytes,gcry_random_bytes_secure)
3194	(gcry_randomize): Make sure we are initialized.
3195
31962002-05-14  Werner Koch  <wk@gnupg.org>
3197
3198	Changed license of most files to the LGPL.
3199
32002002-05-02  Werner Koch  <wk@gnupg.org>
3201
3202	* random.c (_gcry_fast_random_poll): Initialize the module so the
3203	mutex can be used.
3204
3205	* primegen.c (small_prime_numbers): Moved table from smallprime.c
3206	* smallprime.c: File removed.
3207
3208	* des.c (leftkey_swap, rightkey_swap, working_memcmp): Made static.
3209
3210	* cipher.c (gcry_cipher_map_name): Map "RIJNDAEL" to "AES".
3211	* rijndael.c (rijndael_get_info): We do only support a 128 bit
3212	blocksize so it makes sense to change the algorithm strings to
3213	AES.
3214
3215	* tiger.c (tiger_final): Removed superfluous token pasting operators.
3216	* md5.c (md5_final): Ditto.
3217
32182002-04-30  Werner Koch  <wk@gnupg.org>
3219
3220	* cipher.c: Fixed list of copyright years.
3221
32222002-03-18  Werner Koch  <wk@gnupg.org>
3223
3224	* random.c (initialize): Initialize the new pool lock mutex.
3225	(_gcry_fast_random_poll): Add locking and moved main
3226	code out to...
3227	(do_fast_random_poll): new function.
3228	(read_pool): Use the new function here.
3229	(get_random_bytes): Add locking.
3230	(_gcry_update_random_seed_file): Ditto.
3231
32322002-03-11  Werner Koch  <wk@gnupg.org>
3233
3234	* md.c: Add rsaSignatureWithripemd160 to OID table.
3235
32362002-02-20  Werner Koch  <wk@gnupg.org>
3237
3238	* sha1.c: Removed a left over comment note.  The code has been
3239	rewritten from scratch in 1998.  Thanks to Niels M��ller for
3240	reporting this misleading comment.
3241
32422002-02-18  Werner Koch  <wk@gnupg.org>
3243
3244	* rndunix.c (rndunix_constructor): Use the the new prefixed
3245	function name.  Reported by Jordi Mallach.
3246
32472002-02-10  Werner Koch  <wk@gnupg.org>
3248
3249	* random.c (mix_pool): Carry an extra failsafe_digest buffer
3250	around to make the function more robust.
3251
32522002-02-08  Werner Koch  <wk@gnupg.org>
3253
3254	* random.c (add_randomness): Xor new data into the pool and not
3255	just copy it.  This avoids any choosen input attacks which are not
3256	serious in our setting because an outsider won't be able to mix
3257	data in and even then we keep going with a PRNG.  Thanks to Stefan
3258	Keller for pointing this out.
3259
32602002-01-04  Werner Koch  <wk@gnupg.org>
3261
3262	* pubkey.c (gcry_pk_genkey): Do not release skey - it is static.
3263
3264	* primegen.c (gen_prime): Of course we should use set_bit
3265	and not set_highbit to set the second high bit.
3266
32672001-12-18  Werner Koch  <wk@gnupg.org>
3268
3269	* rsa.c (generate): Loop until we find the exact modulus size.
3270	Changed the exponent to 41.
3271	(rsa_get_info): s/usage/r_usage/ to avoid shadow warnings.
3272	* primegen.c (gen_prime): Set 2 high order bits for secret primes.
3273
3274	* Makefile.am (DISTCLEANFILES): Include construct.c.
3275
32762001-12-17  Werner Koch  <wk@gnupg.org>
3277
3278	* pubkey.c (gcry_pk_get_keygrip): New - experimental.
3279
32802001-12-11  Werner Koch  <wk@gnupg.org>
3281
3282	* cipher.c: Added OIDs for AES.
3283	(gcry_cipher_mode_from_oid): New.
3284	(gcry_cipher_map_name): Moved OID search code to ..
3285	(search_oid): .. new function.
3286
32872001-12-10  Werner Koch  <wk@gnupg.org>
3288
3289	* pubkey.c (gcry_pk_encrypt): Find the signature algorithm by name
3290	and not by number.
3291
3292	* pubkey.c (gcry_pk_encrypt,gcry_pk_decrypt,gcry_pk_sign)
3293	(gcry_pk_verify,gcry_pk_testkey, gcry_pk_genkey)
3294	(gcry_pk_get_nbits): Release the arrays.  Noted by Nikos
3295	Mavroyanopoulos.
3296
32972001-12-06  Werner Koch  <wk@gnupg.org>
3298
3299	* cipher.c (gcry_cipher_map_name): Look also for OIDs prefixed
3300	with "oid."  or "OID.".
3301
33022001-12-05  Werner Koch  <wk@gnupg.org>
3303
3304	* pubkey.c (algo_info_table): Fixed entry for openpgp-rsa.
3305
33062001-11-24  Werner Koch  <wk@gnupg.org>
3307
3308	* pubkey.c: Added the rsaEncryption OID to the tables.
3309	(sexp_to_key): Add an arg to return the index of the algorithm,
3310	changed all callers.
3311	(gcry_pk_sign): Find the signature algorithm by name and not by
3312	number.
3313	(gcry_pk_get_nbits): Fixed so that we can now really pass a secret
3314	key to get the result.
3315
3316	* md.c (gcry_md_map_name): Look also for OIDs prefixed with "oid."
3317	or "OID." so that an OID string can be used as an S-Exp token.
3318
33192001-11-20  Werner Koch  <wk@gnupg.org>
3320
3321	* md.c (gcry_md_map_name): Lookup by OID if the the name begins
3322	with a digit.
3323	(oid_table): New.
3324
33252001-11-16  Werner Koch  <wk@gnupg.org>
3326
3327	* md.c (gcry_md_info): New operator GCRYCTL_IS_ALGO_ENABLED.
3328
33292001-11-07  Werner Koch  <wk@gnupg.org>
3330
3331	* md.c (gcry_md_hash_buffer): Close the handle which was left open
3332	for algorithms other than rmd160.
3333
33342001-08-08  Werner Koch  <wk@gnupg.org>
3335
3336	* rndw32.c (gather_random): Use toolhelp in addition to the NT
3337	gatherer for Windows2000.  Suggested by Sami Tolvanen.
3338
3339	* random.c (read_pool): Fixed length check, this used to be one
3340	byte to strict.  Made an assert out of it because the caller has
3341	already made sure that only poolsize bytes are requested.
3342	Reported by Marcus Brinkmann.
3343
33442001-08-03  Werner Koch  <wk@gnupg.org>
3345
3346	* cipher.c (cipher_encrypt, cipher_decrypt): Prepare to return
3347	errors. We have to change the interface to all ciphers to make
3348	this really work but we should do so to prepare for hardware
3349	encryption modules.
3350	(gcry_cipher_encrypt, gcry_cipher_decrypt): Return the error and
3351	set lasterr.
3352	(gcry_cipher_ctl): Make sure that errors from setkey are returned.
3353
33542001-08-02  Werner Koch  <wk@gnupg.org>
3355
3356	* rndlinux.c (gather_random): casted a size_t arg to int so that
3357	the format string is correct.  Casting is okay here and avoids
3358	translation changes.
3359
3360	* random.c (fast_random_poll): Do not check the return code of
3361	getrusage.
3362
3363	* rndunix.c: Add a signal.h header to avoid warnings on Solaris 7
3364	and 8.
3365
3366	* tiger.c (print_abc,print_data): Removed.
3367
3368	* rijndael.c, des.c, blowfish.c, twofish.c, cast5.c, arcfour.c
3369	(burn_stack): New.  Add wrappers for most functions to be able to
3370	call burn_stack after the function invocation. This methods seems
3371	to be the most portable way to zeroise the stack used. It does
3372	only work on stack frame based machines but it is highly portable
3373	and has no side effects.  Just setting the automatic variables at
3374	the end of a function to zero does not work well because the
3375	compiler will optimize them away - marking them as volatile would
3376	be bad for performance.
3377	* md5.c, sha1.c, rmd160.c, tiger.c (burn_stack): Likewise.
3378	* random.c (burn_stack): New.
3379	(mix_pool): Use it here to burn the stack of the mixblock function.
3380
3381	* primegen.c (_gcry_generate_elg_prime): Freed q at 3 places.
3382	Thanks to Tommi Komulainen.
3383
3384	* arcfour.c (arcfour_setkey): Check the minimim keylength against
3385	bytes and not bits.
3386	(selftest): Must reset the key before decryption.
3387
33882001-05-31  Werner Koch  <wk@gnupg.org>
3389
3390	* sha1.c (sha1_init): Made static.
3391
3392        Changed all g10_ prefixed function names as well as some mpi_
3393	function names to cope with the introduced naming changes.
3394
3395	* md.c (prepare_macpads): Made key const.
3396
33972001-05-28  Werner Koch  <wk@gnupg.org>
3398
3399	* rndegd.c (gather_random): Removed the use of tty_printf.
3400
34012001-03-29  Werner Koch  <wk@gnupg.org>
3402
3403	* md5.c (md5_final): Fixed calculation of hashed length.  Thanks
3404	to disastry@saiknes.lv for pointing out that it was horrible wrong
3405	for more than 512MB of input.
3406	* sha1.c (sha1_final): Ditto.
3407	* rmd160.c (rmd160_final): Ditto.
3408	* tiger.c (tiger_final): Ditto.
3409
3410	* blowfish.c (encrypt,do_encrypt): Changed name to do_encrypt to
3411	avoid name clashes with an encrypt function in stdlib.h of
3412	Dynix/PIX.  Thanks to Gene Carter.
3413	* elgamal.c (encrypt,do_encrypt): Ditto.
3414
3415	* twofish.c (gnupgext_enum_func): Use only when when compiled as a
3416	module.
3417	* rijndael.c (gnupgext_enum_func): Ditto.
3418
3419	* tiger.c (tiger_get_info): Return "TIGER192" and not just
3420	"TIGER".  By Edwin Woudt.
3421
3422	* random.c: Always include time.h - standard requirement.  Thanks
3423	to James Troup.
3424
3425	* rndw32.c: Fixes to the macros.
3426
34272001-01-11  Werner Koch  <wk@gnupg.org>
3428
3429	* cipher.c (cipher_encrypt,gcry_cipher_encrypt): Use blocksize and
3430	not 8.
3431
34322000-12-19  Werner Koch  <wk@gnupg.org>
3433
3434	Major change:
3435	Removed all GnuPG stuff and renamed this piece of software
3436	to gcrypt.
3437
34382000-11-14  Werner Koch  <wk@gnupg.org>
3439
3440	* dsa.c (test_keys): Replaced mpi_alloc by gcry_mpi_new and
3441	mpi_free by gcry_mpi_release.
3442	* elgamal.c (test_keys,generate): Ditto, also for mpi_alloc_secure.
3443	* rsa.c (test_keys,generate,rsa_verify): Ditto.
3444	* primegen.c (generate_elg_prime): Ditto.
3445	(gen_prime): Ditto and removed nlimbs.
3446
3447	* rsa.c (generate): Allocate 2 more vars in secure memory.
3448
3449	* Makefile.am (OMIT_DEPENDENCIES): Hack to work around dependency
3450	problems.
3451
34522000-10-09  Werner Koch  <wk@gnupg.org>
3453
3454	* arcfour.c, arcfour.h: New.
3455	* cipher.c (cipher_encrypt, cipher_decrypt): Add stream mode.
3456	(setup_cipher_table): Add Arcfour.
3457	(gcry_cipher_open): Kludge to allow stream mode.
3458
3459Wed Oct  4 13:16:18 CEST 2000  Werner Koch  <wk@openit.de>
3460
3461        * sha1.c (transform): Use rol() macro.  Actually this is not needed
3462        for a newer gcc but there are still aoter compilers.
3463
3464        * rsa.c (test_keys): Use new random function.
3465
3466        * md.c (gcry_md_setkey): New function to overcome problems with
3467        const conflics.
3468        (gcry_md_ctl): Pass set key to the new functions.
3469
3470        * rijndael.c: New.
3471        * cipher.c: Add Rijndael support.
3472
3473Mon Sep 18 16:35:45 CEST 2000  Werner Koch  <wk@openit.de>
3474
3475        * rndlinux.c (open_device): Loose random device checking.
3476        By Nils Ellmenreich.
3477
3478        * random.c (fast_random_poll): Check ENOSYS for getrusage.
3479        * rndunix.c:  Add 2 sources for QNX. By Sam Roberts.
3480
3481        * pubkey.c (gcry_pk_algo_info): Add GCRYCTL_GET_ALGO_USAGE.
3482
3483        * rsa.c: Changed the comment about the patent.
3484        (secret): Speed up by using the CRT.  For a 2k keys this
3485        is about 3 times faster.
3486        (stronger_key_check): New but unused code to check the secret key.
3487        * Makefile.am: Included rsa.[ch].
3488        * pubkey.c: Enabled RSA support.
3489        (pubkey_get_npkey): Removed RSA workaround.
3490
3491Mon Jul 31 10:04:47 CEST 2000  Werner Koch  <wk@openit.de>
3492
3493  * pubkey.c: Replaced all gcry_sexp_{car,cdr}_{data,mpi} by the new
3494  gcry_sexp_nth_{data,mpi} functions.
3495
3496Tue Jul 25 17:44:15 CEST 2000  Werner Koch  <wk@openit.de>
3497
3498  * pubkey.c (exp_to_key,sexp_to_sig,sexp_to_enc,gcry_pk_encrypt,
3499    gcry_pk_decrypt,gcry_pk_sign,gcry_pk_genkey): Changed to work with
3500    the new S-Exp interface.
3501
3502Mon Jul 17 16:35:47 CEST 2000  Werner Koch  <wk@>
3503
3504  * random.c (gather_faked): Replaced make_timestamp by time(2) again.
3505
3506Fri Jul 14 19:38:23 CEST 2000  Werner Koch  <wk@>
3507
3508  * md.c (gcry_md_ctl): Support GCRYCTL_{START,STOP}_DUMP.
3509
3510  * Makefile.am: Never compile mingw32 as module.
3511
3512  * Makefile.am: Tweaked module build and removed libtool
3513
3514  * Makefile.am:  Replaced -O1 by -O. Suggested by Alec Habig.
3515
3516  * elgamal.c (sign): Removed inactive code.
3517
3518  * rsa.c, rsa.h: New based on the old module version (only in CVS for now).
3519  * pubkey.c (setup_pubkey_table): Added commented support for RSA.
3520
3521  * rndunix.c (waitpid): New. For UTS 2.1.  All by Dave Dykstra.
3522  (my_popen): Do the FD_CLOEXEC only if it is available
3523  (start_gatherer): Cope with missing _SC_OPEN_MAX
3524
3525  * rndunix.c: Add some more headers for QNX. By Sam Roberts.
3526
3527  * rndegd.c (gather_random): Shortcut level 0.
3528  * rndunix.c (gather_random): Ditto.
3529  * rndw32.c (gather_random): Ditto.
3530
3531  * rndw32.c: Replaced with code from Cryptlib and commented the old stuff.
3532  * rndw32.c: Add some debuging code enabled by an environment variable.
3533
3534  * random.c (read_seed_file): Binary open for DOSish system
3535  (update_random_seed_file): Ditto.
3536  * random.c [MINGW32]: Include process.h for getpid.
3537  * random.c (fast_random_poll): Add clock_gettime() as fallback for
3538  system which support this POSIX.4 fucntion. By Sam Roberts.
3539
3540  * random.c (read_seed_file): Removed the S_ISLNK test becuase it
3541  is already covered by !S_ISREG and is not defined in Unixware.
3542  Reported by Dave Dykstra.
3543  (update_random_seed_file): Silently ignore update request when pool
3544  is not filled.
3545
3546  * random.c (read_seed_file): New.
3547  (set_random_seed_file): New.
3548  (read_pool): Try to read the seeding file.
3549  (update_random_seed_file): New.
3550
3551  (read_pool): Do an initial extra seeding when level 2 quality random
3552  is requested the first time.	This requestes at least POOLSIZE/2 bytes
3553  of entropy.  Compined with the seeding file this should make normal
3554  random bytes cheaper and increase the quality of the random bytes
3555  used for key generation.
3556
3557  * random.c (read_pool): Print a more friendly error message in
3558  cases when too much random is requested in one call.
3559
3560  * random.c (fast_random_poll): Check whether RUSAGE_SELF is defined;
3561  this is not the case for some ESIX and Unixware, although they have
3562  getrusage().
3563
3564  * primegen.c (generate_elg_prime): All primes are now generated with
3565  the lowest random quality level.  Because they are public anyway we
3566  don't need stronger random and by this we do not drain the systems
3567  entropy so much.
3568
3569  * primegen.c (register_primegen_progress): New.
3570  * dsa.c (register_pk_dsa_progress): New.
3571  * elgamal.c (register_pk_elg_progress): New.
3572
3573  * elgamal.c (wiener_map): New.
3574  (gen_k): Use a much smaller k.
3575  (generate): Calculate the qbits using the wiener map and
3576  choose an x at a size comparable to the one choosen in gen_k
3577
3578  * rmd160.c (rmd160_get_info): Moved casting to the left side due to a
3579  problem with UTS4.3.	Suggested by Dave Dykstra.
3580  * sha1.c (sha1_get_info): Ditto.
3581  * tiger.c (tiger_get_info): Ditto.
3582  * md5.c (md5_get_info): Ditto
3583  * des.c (des_get_info): Ditto.
3584  * blowfish.c (blowfish_get_info): Ditto.
3585  * cast5.c (cast5_get_info): Ditto.
3586  * twofish.c (twofish_get_info): Ditto.
3587
3588Fri Mar 24 11:25:45 CET 2000  Werner Koch  <wk@openit.de>
3589
3590	* md.c (md_open): Add hmac arg and allocate space for the pads.
3591	(md_finalize): Add HMAC support.
3592	(md_copy): Ditto.
3593	(md_close): Ditto.
3594	(gcry_md_reset): Ditto.
3595	(gcry_md_ctl): Ditto.
3596	(prepare_macpdas): New.
3597
3598Mon Mar 13 19:22:46 CET 2000  Werner Koch  <wk@openit.de>
3599
3600	* md.c (gcry_md_hash_buffer): Add support for the other algorithms.
3601
3602Mon Jan 31 16:37:34 CET 2000  Werner Koch  <wk@gnupg.de>
3603
3604	* genprime.c (generate_elg_prime): Fixed returned factors which never
3605	worked for non-DSA keys.
3606
3607Thu Jan 27 18:00:44 CET 2000  Werner Koch  <wk@gnupg.de>
3608
3609	* pubkey.c (sexp_to_key): Fixed mem leaks in case of errors.
3610
3611Mon Jan 24 22:24:38 CET 2000  Werner Koch  <wk@gnupg.de>
3612
3613	* pubkey.c (gcry_pk_decrypt): Implemented.
3614	(gcry_pk_encrypt): Implemented.
3615	(gcry_pk_testkey): New.
3616	(gcry_pk_genkey): New.
3617	(pubkey_decrypt): Made static.
3618	(pubkey_encrypt): Ditto.
3619	(pubkey_check_secret_key): Ditto.
3620	(pubkey_generate): Ditto.
3621
3622Mon Jan 24 13:04:28 CET 2000  Werner Koch  <wk@gnupg.de>
3623
3624	* pubkey.c (pubkey_nbits): Removed and replaced by ...
3625	(gcry_pk_get_nbits): this new one.
3626
3627Wed Dec  8 21:58:32 CET 1999  Werner Koch  <wk@gnupg.de>
3628
3629	* dsa.c: s/mpi_powm/gcry_mpi_powm/g
3630	* elgamal.c: Ditto.
3631	* primegen.c: Ditto.
3632
3633	* : Replaced g10_opt_verbose by g10_log_verbosity().
3634
3635	* Makefile.am (INCLUDES): removed intl, add ../gcrypt
3636
3637Fri Nov 19 17:15:20 CET 1999  Werner Koch  <wk@gnupg.de>
3638
3639	* dynload.c (cmp_filenames): New to replaced compare_filename() in
3640	module.
3641	(register_cipher_extension): Removed the tilde expansion stuff.
3642	* rndeg.c (my_make_filename): New.
3643
3644	* : Replaced header util.h by g10lib.h
3645
3646	* random.c (gather_faked): Replaced make_timestamp by time(2).
3647	Disabled wrning printed with tty_printf.
3648	* rndlinux.c (gather_random): Always use fprintf instead of tty_xxx;
3649	this should be replaced by a callback function.
3650
3651	* primegen.c (gen_prime): Use gcry_mpi_randomize.
3652	(is_prime): Ditto.
3653	* elgamal.c (test_keys): Ditto.
3654	* dsa.c (test_keys): Ditto.
3655
3656	* cipher.c (gcry_cipher_close): Die on invalid handle.
3657
3658Mon Nov 15 21:36:02 CET 1999  Werner Koch  <wk@gnupg.de>
3659
3660	* elgamal.c (gen_k): Use the new random API.
3661	(generate): Ditto.
3662	* dsa.c (gen_k): Ditto.
3663	(generate): Ditto.
3664
3665Sat Nov 13 17:44:23 CET 1999  Werner Koch  <wk@gnupg.de>
3666
3667	* pubkey.c (disable_pubkey_algo): Made static.
3668	(gcry_pk_ctl): New.
3669
3670	* random.c (get_random_bits): Renamed to ...
3671	(get_random_bytes): ... this and made static.
3672	(gcry_random_bytes): New.
3673	(gcry_random_bytes_secure): New.
3674	(randomize_buffer): Renamed to ...
3675	(gcry_randomize): ...this.
3676
3677	* md.c (gcry_md_hash_buffer): New.
3678
3679	* pubkey.c (gcry_pk_algo_info): 4 new commands.
3680	(pubkey_get_npkey): Made static.
3681	(pubkey_get_nskey): Made static.
3682	(pubkey_get_nsig): Made static.
3683	(pubkey_get_nenc): Made static.
3684
3685	* pubkey.c: Removed all G10ERR_xxx.
3686	* cipher.c: Changed all GCRYERR_INV_ALGO to GCRYERR_INV_CIPHER_ALGO.
3687	* md.c: Changed all GCRYERR_INV_ALGO to GCRYERR_INV_MD_ALGO.
3688	* cast5.c (cast_setkey): Changed errocodes to GCRYERR_xxx.
3689	* blowfish.c: Ditto.
3690	* des.c: Ditto.
3691	* twofish.c: Ditto.
3692	* dsa.c: Ditto.
3693	* elgamal.c: Ditto.
3694
3695	* g10c.c: Removed
3696
3697	* cipher.c (gcry_cipher_open): Replaced alloc functions and return NULL
3698	if we are out of core.
3699	* dynload.c: Replaced all memory allocation functions.
3700	* md.c: Ditto.
3701	* primegen.c: Ditto.
3702	* pubkey.c: Ditto.
3703	* random.c: Ditto.
3704	* rndw32.c: Ditto.
3705	* elgamal.c: Ditto.
3706	* dsa.c: Ditto.
3707
3708Tue Oct 26 14:10:21 CEST 1999  Werner Koch  <wk@gnupg.de>
3709
3710	* elgamal.c (sign): Hugh found strange code here. Replaced by BUG().
3711
3712	* cipher.c: Merged with gcrypt/symapi.c.
3713
3714	* pubkey.c (string_to_pubkey_algo): Renamed function to ...
3715	(gcry_pk_map_name): ... this.
3716	(pubkey_algo_to_string): Renamed function to ...
3717	(gcry_pk_algo_name): ... this.
3718	(gcry_pk_algo_info): New.
3719	* pubkey.c: Merged with gcrypt/pkapi.c.
3720
3721	* md.c (md_reset): Clear finalized; thanks to Ulf Moeller for
3722	fixing this bug.
3723
3724	* md.c: Merged with gcrypt/mdapi.c
3725
3726Wed Sep 15 14:39:59 CEST 1999  Michael Roth <mroth@nessie.de>
3727
3728	* des.c: Various speed improvements: One bit pre rotation
3729	  trick after initial permutation (Richard Outerbridge).
3730	  Finished test of SSLeay Tripple-DES patterns.
3731
3732Wed Sep 15 16:22:17 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
3733
3734	* rndw32.c: New.
3735
3736Mon Sep 13 10:51:29 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
3737
3738	* bithelp.h: New.
3739	* rmd160.h, sha1.h, md5.h: Use the rol macro from bithelp.h
3740
3741Tue Sep  7 16:23:36 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
3742
3743	* Makefile.am: Fixed seds for latest egcc. By Ollivier Robert.
3744
3745Mon Sep  6 19:59:08 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
3746
3747	* des.c (selftest): Add some testpattern
3748
3749Mon Aug 30 20:38:33 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
3750
3751	* cipher.c (do_cbc_encrypt): Fixed serious bug occuring when not using
3752	in place encryption. Pointed out by Frank Stajano.
3753
3754Mon Jul 26 09:34:46 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
3755
3756	* md5.c (md5_final): Fix for a SCO cpp bug.
3757
3758Thu Jul 15 10:15:35 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
3759
3760	* elgamal.c (elg_check_secret_key,elg_encrypt
3761	elg_decrypt,elg_sign,elg_verify): Sanity check on the args.
3762	* dsa.c (dsa_check_secret_key,dsa_sign,dsa_verify): Ditto.
3763
3764	* pubkey.c (disable_pubkey_algo): New.
3765	(check_pubkey_algo2): Look at disabled algo table.
3766	* cipher.c (disable_cipher_algo): New.
3767	(check_cipher_algo): Look at disabled algo table.
3768
3769Wed Jul  7 13:08:40 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
3770
3771	* Makefile.am: Support for libtool.
3772
3773Fri Jul  2 11:45:54 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
3774
3775	* dsa.c (gen_k): Changed algorithm to consume less random bytes
3776	* elgamal.c (gen_k): Ditto.
3777
3778	* random.c (random_dump_stats): New.
3779
3780Thu Jul  1 12:47:31 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
3781
3782	* primegen.c, elgamal.c, dsa.c (progess): New and replaced all
3783	fputc with a call to this function.
3784
3785Sat Jun 26 12:15:59 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
3786
3787	* rndegd.c (do_write): s/ssize_t/int/ due to SunOS 4.1 probs.
3788
3789	* cipher.c (do_cbc_encrypt, do_cbc_decrypt): New.
3790
3791	* dynload.c (HAVE_DL_SHL_LOAD): Map hpux API to dlopen (Dave Dykstra).
3792	* Makefile.am (install-exec-hook): Removed.
3793
3794Sun May 23 14:20:22 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
3795
3796	* cipher.c (setup_cipher_table): Enable Twofish
3797
3798	* random.c (fast_random_poll): Disable use of times() for mingw32.
3799
3800Mon May 17 21:54:43 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
3801
3802	* dynload.c (register_internal_cipher_extension): Minor init fix.
3803
3804Tue May  4 15:47:53 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
3805
3806	* primegen.c (gen_prime): Readded the Fermat test. Fixed the bug
3807	that we didn't correct for step when passing the prime to the
3808	Rabin-Miller test which led to bad performance (Stefan Keller).
3809	(check_prime): Add a first Fermat test.
3810
3811Sun Apr 18 10:11:28 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
3812
3813	* cipher.c (cipher_setiv): Add ivlen arg, changed all callers.
3814
3815	* random.c (randomize_buffer): alway use secure memory because
3816	we can't use m_is_secure() on a statically allocated buffer.
3817
3818	* twofish.c: Replaced some macros by a loop to reduce text size.
3819	* Makefile.am (twofish): No more need for sed editing.
3820
3821Fri Apr  9 12:26:25 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
3822
3823	* cipher.c (cipher_open): Reversed the changes for AUTO_CFB.
3824
3825	* blowfish.c: Dropped the Blowfish 160 mode.
3826	* cipher.c (cipher_open): Ditto.
3827	(setup_cipher_table): Ditto.  And removed support of twofish128
3828
3829Wed Apr  7 20:51:39 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
3830
3831	* random.c (get_random_bits): Can now handle requests > POOLSIZE
3832
3833	* cipher.c (cipher_open): Now uses standard CFB for automode if
3834	the blocksize is gt 8 (according to rfc2440).
3835
3836	* twofish.c: Applied Matthew Skala's patches for 256 bit key.
3837
3838Tue Apr  6 19:58:12 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
3839
3840	* random.c (get_random_bits): Can now handle requests > POOLSIZE
3841
3842	* cipher.c (cipher_open): Now uses standard CFB for automode if
3843	the blocksize is gt 8 (according to rfc2440).
3844
3845Sat Mar 20 11:44:21 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
3846
3847	* rndlinux.c (tty_printf) [IS_MODULE]: Removed.
3848
3849	* rndegd.c (gather_random): Some fixes.
3850
3851Wed Mar 17 13:09:03 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
3852
3853	* rndegd.c (do_read): New.
3854	(gather_random): Changed the implementation.
3855
3856Mon Mar  8 20:47:17 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
3857
3858	* dynload.c (DLSYM_NEEDS_UNDERSCORE): Renamed.
3859
3860Fri Feb 26 17:55:41 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
3861
3862	* md.c: Nearly a total rewrote.
3863
3864Wed Feb 24 11:07:27 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
3865
3866	* cipher.c (context): Fixed alignment
3867	* md.c: Ditto.
3868
3869	* rndegd.c: New
3870
3871Mon Feb 22 20:04:00 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
3872
3873	* rndegd.c: New.
3874
3875Wed Feb 10 17:15:39 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
3876
3877	* Makefile.am: Modules are now figured out by configure
3878	* construct.c: New. Generated by configure. Changed all modules
3879	to work with that.
3880	* sha1.h: Removed.
3881	* md5.h: Removed.
3882
3883	* twofish.c: Changed interface to allow Twofish/256
3884
3885	* rndunix.c (start_gatherer): Die on SIGPIPE.
3886
3887Wed Jan 20 18:59:49 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
3888
3889	* rndunix.c (gather_random): Fix to avoid infinite loop.
3890
3891Sun Jan 17 11:04:33 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
3892
3893	* des.c (is_weak_key): Replace system memcmp due to bugs
3894	in SunOS's memcmp.
3895	(des_get_info): Return error on failed selftest.
3896	* twofish.c (twofish_setkey): Return error on failed selftest or
3897	invalid keylength.
3898	* cast5.c (cast_setkey): Ditto.
3899	* blowfish.c (bf_setkey): Return error on failed selftest.
3900
3901Tue Jan 12 11:17:18 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
3902
3903	* random.c (random_is_faked): New.
3904
3905	* tiger.c: Only compile if we have the u64 type
3906
3907Sat Jan  9 16:02:23 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
3908
3909	* rndunix.c (gather_random): check for setuid.
3910
3911	* Makefile.am: Add a way to staically link random modules
3912
3913Thu Jan  7 18:00:58 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
3914
3915	* md.c (md_stop_debug): Do a flush first.
3916	(md_open): size of buffer now depends on the secure parameter
3917
3918Sun Jan  3 15:28:44 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
3919
3920	* rndunix.c (start_gatherer): Fixed stupid ==/= bug
3921
39221998-12-31  Geoff Keating  <geoffk@ozemail.com.au>
3923
3924	* des.c (is_weak_key): Rewrite loop end condition.
3925
3926Tue Dec 29 14:41:47 CET 1998  Werner Koch  <wk@isil.d.shuttle.de>
3927
3928	* random.c: add unistd.h for getpid().
3929	(RAND_MAX): Fallback value for Sun.
3930
3931Wed Dec 23 17:12:24 CET 1998  Werner Koch  <wk@isil.d.shuttle.de>
3932
3933	* md.c (md_copy): Reset debug.
3934
3935Mon Dec 14 21:18:49 CET 1998  Werner Koch  <wk@isil.d.shuttle.de>
3936
3937	* random.c (read_random_source): Changed the interface to the
3938	random gathering function.
3939	(gather_faked): Use new interface.
3940	* dynload.c (dynload_getfnc_fast_random_poll): Ditto.
3941	(dynload_getfnc_gather_random): Ditto.
3942	* rndlinux.c (gather_random): Ditto.
3943	* rndunix.c (gather_random): Ditto.
3944
3945Sat Dec 12 18:40:32 CET 1998  Werner Koch  <wk@isil.d.shuttle.de>
3946
3947	* dynload.c (SYMBOL_VERSION): New to cope with system which needs
3948	underscores.
3949
3950	* rndunix.c: Rewrote large parts
3951
3952Thu Dec 10 20:15:36 CET 1998  Werner Koch  <wk@isil.d.shuttle.de>
3953
3954	* dynload.c (load_extension): increased needed verbosity level.
3955
3956	* random.c (fast_random_poll): Fallback to a default fast random
3957	poll function.
3958	(read_random_source): Always use the faked entroy gatherer if no
3959	gather module is available.
3960	* rndlinux.c (fast_poll): Removed.
3961	* rndunix.c (fast_poll): Removed.
3962
3963
3964Wed Nov 25 12:33:41 1998  Werner Koch  (wk@isil.d.shuttle.de)
3965
3966	* rand-*.c: Removed.
3967	* rndlinux.c : New.
3968	* rndunix.c : New.
3969	* random.c : Restructured the interface to the gather modules.
3970	(intialize): Call constructor functions
3971	(read_radnom_source): Moved to here.
3972	* dynload.c (dynload_getfnc_gather_random): New.
3973	(dynload_getfnc_fast_random_poll): New.
3974	(register_internal_cipher_extension): New.
3975	(register_cipher_extension): Support of internal modules.
3976
3977Sun Nov  8 17:44:36 1998  Werner Koch  (wk@isil.d.shuttle.de)
3978
3979	* rand-unix.c (read_random_source): Removed the assert.
3980
3981Mon Oct 19 18:34:30 1998  me,,,  (wk@tobold)
3982
3983	* pubkey.c: Hack to allow us to give some info about RSA keys back.
3984
3985Thu Oct 15 11:47:57 1998  Werner Koch  (wk@isil.d.shuttle.de)
3986
3987	* dynload.c: Support for DLD
3988
3989Wed Oct 14 12:13:07 1998  Werner Koch  (wk@isil.d.shuttle.de)
3990
3991	* rand-unix.c: Now uses names from configure for /dev/random.
3992
39931998-10-10  SL Baur  <steve@altair.xemacs.org>
3994
3995	* Makefile.am: fix sed -O substitutions to catch -O6, etc.
3996
3997Tue Oct  6 10:06:32 1998  Werner Koch  (wk@isil.d.shuttle.de)
3998
3999	* rand-unix.c (HAVE_GETTIMEOFDAY): Fixed (was ..GETTIMEOFTIME :-)
4000	* rand-dummy.c (HAVE_GETTIMEOFDAY): Ditto.
4001
4002Mon Sep 28 13:23:09 1998  Werner Koch  (wk@isil.d.shuttle.de)
4003
4004	* md.c (md_digest): New.
4005	(md_reset): New.
4006
4007Wed Sep 23 12:27:02 1998  Werner Koch  (wk@isil.d.shuttle.de)
4008
4009	* tiger.c (TIGER_CONTEXT): moved "buf", so that it is 64 bit aligned.
4010
4011Mon Sep 21 06:22:53 1998  Werner Koch  (wk@(none))
4012
4013	* des.c: Some patches from Michael.
4014
4015Thu Sep 17 19:00:06 1998  Werner Koch  (wk@(none))
4016
4017	* des.c : New file from Michael Roth <mroth@nessie.de>
4018
4019Mon Sep 14 11:10:55 1998  Werner Koch  (wk@(none))
4020
4021	* blowfish.c (bf_setkey): Niklas Hernaeus patch to detect weak keys.
4022
4023Mon Sep 14 09:19:25 1998  Werner Koch  (wk@(none))
4024
4025	* dynload.c (RTLD_NOW): Now defined to 1 if it is undefined.
4026
4027Mon Sep  7 17:04:33 1998  Werner Koch  (wk@(none))
4028
4029	* Makefile.am: Fixes to allow a different build directory
4030
4031Thu Aug  6 17:25:38 1998  Werner Koch,mobil,,,	(wk@tobold)
4032
4033	* random.c (get_random_byte): Removed and changed all callers
4034	to use get_random_bits()
4035
4036Mon Jul 27 10:30:22 1998  Werner Koch  (wk@(none))
4037
4038	* cipher.c : Support for other blocksizes
4039	(cipher_get_blocksize): New.
4040	* twofish.c: New.
4041	* Makefile.am: Add twofish module.
4042
4043Mon Jul 13 21:30:52 1998  Werner Koch  (wk@isil.d.shuttle.de)
4044
4045	* random.c (read_pool): Simple alloc if secure_alloc is not set.
4046	(get_random_bits): Ditto.
4047
4048Thu Jul  9 13:01:14 1998  Werner Koch  (wk@isil.d.shuttle.de)
4049
4050	* dynload.c (load_extension): Function now nbails out if
4051	the program is run setuid.
4052
4053Wed Jul  8 18:58:23 1998  Werner Koch  (wk@isil.d.shuttle.de)
4054
4055	* rmd160.c (rmd160_hash_buffer): New.
4056
4057Thu Jul  2 10:50:30 1998  Werner Koch  (wk@isil.d.shuttle.de)
4058
4059	* cipher.c (cipher_open): algos >=100 use standard CFB
4060
4061Thu Jun 25 11:18:25 1998  Werner Koch  (wk@isil.d.shuttle.de)
4062
4063	* Makefile.am: Support for extensions
4064
4065Thu Jun 18 12:09:38 1998  Werner Koch  (wk@isil.d.shuttle.de)
4066
4067	* random.c (mix_pool): simpler handling for level 0
4068
4069Mon Jun 15 14:40:48 1998  Werner Koch  (wk@isil.d.shuttle.de)
4070
4071	* tiger.c: Removed from dist, will reappear as dynload module
4072
4073Sat Jun 13 14:16:57 1998  Werner Koch  (wk@isil.d.shuttle.de)
4074
4075	* pubkey.c: Major changes to allow extensions. Changed the inteface
4076	of all public key ciphers and added the ability to load extensions
4077	on demand.
4078
4079	* misc.c: Removed.
4080
4081Wed Jun 10 07:52:08 1998  Werner Koch,mobil,,,	(wk@tobold)
4082
4083	* dynload.c: New.
4084	* cipher.c: Major changes to allow extensions.
4085
4086Mon Jun  8 22:43:00 1998  Werner Koch  (wk@isil.d.shuttle.de)
4087
4088	* cipher.c: Major internal chnages to support extensions.
4089	* blowfish.c (blowfish_get_info): New and made all internal
4090	functions static, changed heder.
4091	* cast5.c (cast5_get_info): Likewise.
4092
4093Mon Jun  8 12:27:52 1998  Werner Koch  (wk@isil.d.shuttle.de)
4094
4095	* tiger.c (transform): Fix for big endian
4096
4097	* cipher.c (do_cfb_decrypt): Big endian fix.
4098
4099Fri May 22 07:30:39 1998  Werner Koch  (wk@isil.d.shuttle.de)
4100
4101	* md.c (md_get_oid): Add a new one for TIGER.
4102
4103Thu May 21 13:24:52 1998  Werner Koch  (wk@isil.d.shuttle.de)
4104
4105	* cipher.c: Add support for a dummy cipher
4106
4107Thu May 14 15:40:36 1998  Werner Koch  (wk@isil.d.shuttle.de)
4108
4109	* rmd160.c (transform): fixed sigbus - I should better
4110	add Christian von Roques's new implemenation of rmd160_write.
4111
4112Fri May  8 18:07:44 1998  Werner Koch  (wk@isil.d.shuttle.de)
4113
4114	* rand-internal.h, rand-unix.c, rand-w32.c, rand_dummy.c: New
4115	* random.c: Moved system specific functions to rand-****.c
4116
4117Fri May  8 14:01:17 1998  Werner Koch  (wk@isil.d.shuttle.de)
4118
4119	* random.c (fast_random_poll): add call to gethrtime.
4120
4121Tue May  5 21:28:55 1998  Werner Koch  (wk@isil.d.shuttle.de)
4122
4123	* elgamal.c (elg_generate): choosing x was not correct, could
4124	yield 6 bytes which are not from the random pool, tsss, tsss..
4125
4126Tue May  5 14:09:06 1998  Werner Koch  (wk@isil.d.shuttle.de)
4127
4128	* primegen.c (generate_elg_prime): Add arg mode, changed all
4129	callers and implemented mode 1.
4130
4131Mon Apr 27 14:41:58 1998  Werner Koch  (wk@isil.d.shuttle.de)
4132
4133	* cipher.c (cipher_get_keylen): New.
4134
4135Sun Apr 26 14:44:52 1998  Werner Koch  (wk@isil.d.shuttle.de)
4136
4137	* tiger.c, tiger.h: New.
4138
4139Wed Apr  8 14:57:11 1998  Werner Koch  (wk@isil.d.shuttle.de)
4140
4141	* misc.c (check_pubkey_algo2): New.
4142
4143Tue Apr  7 18:46:49 1998  Werner Koch  (wk@isil.d.shuttle.de)
4144
4145	* cipher.c: New
4146	* misc.c (check_cipher_algo): Moved to cipher.c
4147	* cast5.c: Moved many functions to cipher.c
4148	* blowfish.c: Likewise.
4149
4150Sat Apr  4 19:52:08 1998  Werner Koch  (wk@isil.d.shuttle.de)
4151
4152	* cast5.c: Implemented and tested.
4153
4154Wed Apr  1 16:38:27 1998  Werner Koch  (wk@isil.d.shuttle.de)
4155
4156	* elgamal.c (elg_generate): Faster generation of x in some cases.
4157
4158Thu Mar 19 13:54:48 1998  Werner Koch  (wk@isil.d.shuttle.de)
4159
4160	* blowfish.c (blowfish_decode_cfb): changed XOR operation
4161	(blowfish_encode_cfb): Ditto.
4162
4163Thu Mar 12 14:04:05 1998  Werner Koch  (wk@isil.d.shuttle.de)
4164
4165	* sha1.c (transform): Rewrote
4166
4167	* blowfish.c (encrypt): Unrolled for rounds == 16
4168	(decrypt): Ditto.
4169
4170Tue Mar 10 16:32:08 1998  Werner Koch  (wk@isil.d.shuttle.de)
4171
4172	* rmd160.c (transform): Unrolled the loop.
4173
4174Tue Mar 10 13:05:14 1998  Werner Koch  (wk@isil.d.shuttle.de)
4175
4176	* random.c (read_pool): Add pool_balance stuff.
4177	(get_random_bits): New.
4178
4179	* elgamal.c (elg_generate): Now uses get_random_bits to generate x.
4180
4181
4182Tue Mar 10 11:33:51 1998  Werner Koch  (wk@isil.d.shuttle.de)
4183
4184	* md.c (md_digest_length): New.
4185
4186Tue Mar 10 11:27:41 1998  Werner Koch  (wk@isil.d.shuttle.de)
4187
4188	* dsa.c (dsa_verify): Works.
4189
4190Mon Mar  9 12:59:08 1998  Werner Koch  (wk@isil.d.shuttle.de)
4191
4192	* dsa.c, dsa.h: Removed some unused code.
4193
4194Wed Mar  4 10:39:22 1998  Werner Koch  (wk@isil.d.shuttle.de)
4195
4196	* md.c (md_open): Add call to fast_random_poll.
4197	blowfish.c (blowfish_setkey): Ditto.
4198
4199Tue Mar  3 13:32:54 1998  Werner Koch  (wk@isil.d.shuttle.de)
4200
4201	* rmd160.c (rmd160_mixblock): New.
4202	* random.c: Restructured to start with a new RNG implementation.
4203	* random.h: New.
4204
4205Mon Mar  2 19:21:46 1998  Werner Koch  (wk@isil.d.shuttle.de)
4206
4207	* gost.c, gost.h: Removed because they did only contain trash.
4208
4209Sun Mar  1 16:42:29 1998  Werner Koch  (wk@isil.d.shuttle.de)
4210
4211	* random.c (fill_buffer): removed error message if n == -1.
4212
4213Fri Feb 27 16:39:34 1998  Werner Koch  (wk@isil.d.shuttle.de)
4214
4215	* md.c (md_enable): No init if called twice.
4216
4217Thu Feb 26 07:57:02 1998  Werner Koch  (wk@isil.d.shuttle.de)
4218
4219	* primegen.c (generate_elg_prime): Changed the progress printing.
4220	(gen_prime): Ditto.
4221
4222Tue Feb 24 12:28:42 1998  Werner Koch  (wk@isil.d.shuttle.de)
4223
4224	* md5.c, md.5 : Replaced by a modified version of md5.c from
4225	GNU textutils 1.22.
4226
4227Wed Feb 18 14:08:30 1998  Werner Koch  (wk@isil.d.shuttle.de)
4228
4229	* md.c, md.h : New debugging support
4230
4231Mon Feb 16 10:08:47 1998  Werner Koch  (wk@isil.d.shuttle.de)
4232
4233	* misc.c (cipher_algo_to_string): New
4234	(pubkey_algo_to_string): New.
4235	(digest_algo_to_string): New.
4236
4237
4238 Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
4239	   2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
4240
4241 This file is free software; as a special exception the author gives
4242 unlimited permission to copy and/or distribute it, with or without
4243 modifications, as long as this notice is preserved.
4244
4245 This file is distributed in the hope that it will be useful, but
4246 WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
4247 implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
4248