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