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