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