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