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