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