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