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