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