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