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