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