* md.c: Moved a couple of functions down below the data structure
[libgcrypt.git] / cipher / ChangeLog
1 2003-12-19  Werner Koch  <wk@gnupg.org>
2
3         * md.c: Moved a couple of functions down below the data structure
4         definitions.
5         (struct gcry_md_context): New field ACTUAL_HANDLE_SIZE.
6         (md_open): Set it here.
7         (strcut gcry_md_list): New field ACTUAL_STRUCT_SIZE.
8         (md_enable): Set it here.
9         (md_close): Wipe the context memory.
10         secure memory.
11         * cipher.c (struct gcry_cipher_handle): New field ACTUAL_HANDLE_SIZE.
12         (gcry_cipher_open): Set it here.
13         (gcry_cipher_close): Use it to always wipe out the handle data.
14
15         * ac.c (gcry_ac_open): Make sure HANDLE gets initialized even when
16         the function is not successful.
17         (gcry_ac_close): Allow a NULL handle.
18         (gcry_ac_key_destroy, gcry_ac_key_pair_destroy): Ditto.
19         (gcry_ac_key_get_grip): Return INV_OBJ on error.
20
21         * primegen.c (prime_generate_internal): Fixed error code for
22         failed malloc.  Replaced the !err if chain by gotos.
23         (gcry_prime_group_generator): Remove the extra sanity check.
24
25         * md.c: Minor code and comment cleanups.
26
27 2003-12-16  Werner Koch  <wk@gnupg.org>
28
29         * primegen.c (gen_prime): Doc fix.  Thanks to Newton Hammet.
30
31 2003-12-11  Werner Koch  <wk@gnupg.org>
32
33         * rndunix.c (slow_poll): Don't use #warning but #error.
34
35         * rndegd.c: Changed indentation.
36         (my_make_filename): Removd the var_arg cruft becuase we
37         don't need it here.  Changed caller.  
38
39         * rndlinux.c: Changed indentation.
40         (open_device): Remove the superfluous stat call and clarify
41         comment.
42
43         * rsa.c: Changed indentation.
44         (secret): Use the standard algorithm if p, q and u are not
45         available.
46         (rsa_blind, rsa_unblind): Renamed from _gcry_rsa_blind,
47         _gcry_rsa_unblind and moved more to the top.
48
49         * md4.c: Changed indentation.  Removed unnecessary casts.
50         * md5.c, rmd160.c, sha1.c, tiger.c: Ditto.
51         * rijndael.c, twofish.c: Ditto.
52         * serpent.c: Removed unnecessary casts.
53         * sha256.c, sha512.c: Ditto.
54
55 2003-12-09  Werner Koch  <wk@gnupg.org>
56
57         * dsa.c: Unified indentation style.
58         * elgamal.c: Ditto. 
59         * des.c (des_key_schedule): Code beautifications.
60         * blowfish.c: Changed indentation style.
61         * cast5.c (do_cast_setkey): Ditto.
62
63         * pubkey.c (gcry_pk_encrypt): Replaced the chain of if(!err) tests
64         by straightforward gotos. Other cleanups.
65         (gcry_pk_decrypt): Ditto.
66         (gcry_pk_sign): Ditto.
67         (gcry_pk_verify): Ditto.
68         (gcry_pk_genkey): Ditto.  Use strtoul instead of strtol.
69         (gcry_pk_ctl): Use GPG_ERR_INV_ARG to indicate bad arguments.
70
71 2003-12-07  Werner Koch  <wk@gnupg.org>
72
73         * pubkey.c (gcry_pk_register_default): Undef the helper macro.
74         (gcry_pk_map_name): Allow NULL for string.
75         (sexp_to_key): Use memcpy and not strncpy.  Use gcry_free and not
76         free.
77         (sexp_to_sig): Ditto.
78         (sexp_to_enc): Ditto.  Replaced the chain of if(!err) tests by
79         straightforward gotos.
80
81 2003-12-05  Werner Koch  <wk@gnupg.org>
82
83         * cipher.c: Documentation cleanups.
84         (gcry_cipher_mode_from_oid): Allow NULL for STRING.
85
86 2003-12-03  Werner Koch  <wk@gnupg.org>
87
88         * elgamal.c (sign, do_encrypt, gen_k): Make sure that a small K is
89         only used for encryption.
90
91 2003-11-18  Werner Koch  <wk@gnupg.org>
92
93         * random.h (rndw32_set_dll_name): Removed unused prototype.
94
95         * Makefile.am (EXTRA_DIST): Added Manifest.
96
97 2003-11-11  Werner Koch  <wk@gnupg.org>
98
99         * Manifest: New.
100
101 2003-11-04  Werner Koch  <wk@gnupg.org>
102
103         * md.c (gcry_md_hash_buffer): Use shortcut for SHA1
104         * sha1.c (_gcry_sha1_hash_buffer): New.
105
106         * random.c: Reformatted most functions.
107         (mix_pool): Moved the failsafe_digest from global
108         scope to here.
109         (do_fast_random_poll): Use the generic fucntions even if a fast
110         gathering function has been used.
111         (read_pool): Detect a fork and retry.
112         (gcry_randomize, get_random_bytes): Don't distinguish anymore
113         between weak and strong random.
114         (gcry_create_nonce): New.
115
116 2003-10-31  Werner Koch  <wk@gnupg.org>
117
118         * rndw32.c (slow_gatherer_windowsNT): Use a plain buffer for the
119         disk performance values and not the W32 API structure.
120
121         * dsa.c (verify): s/exp/ex/ due to shadowing of a builtin.
122         * elgamal.c (verify): Ditto.
123
124         * ac.c (gcry_ac_data_get_index): s/index/idx/
125         (gcry_ac_data_copy_internal): Remove the cast in _gcry_malloc.
126         (gcry_ac_data_add): Must use gcry_realloc instead of realloc.
127         * pubkey.c (sexp_elements_extract): s/index/idx/ as tribute to the
128         forehackers.
129         (gcry_pk_encrypt): Removed shadowed definition of I. Reordered
130         arguments to malloc for clarity.
131         (gcry_pk_sign, gcry_pk_genkey): Ditto.
132         * primegen.c (prime_generate_internal): s/random/randomlevel/.
133
134 2003-10-27  Moritz Schulte  <mo@g10code.com>
135
136         * pubkey.c (gcry_pk_encrypt): Don't forget to deallocate pkey.
137
138 2003-10-27  Werner Koch  <wk@gnupg.org>
139
140         * random.c (gcry_random_add_bytes): Return if buflen is zero to
141         avoid gcc warning about unsed parameter.
142         (MASK_LEVEL): Simplified; does now work for signed and unsigned
143         w/o warnings.
144
145         * md.c (md_start_debug): Removed the const from SUFFIX, because
146         this function is called from the control fucntion which does not
147         require const.
148
149         Prefixed all (pubkey,digest,cipher}_spec_* globale variables with
150         _gcry_.
151
152         * ac.c (ac_key_identifiers): Made static.
153
154         * random.c (getfnc_gather_random,getfnc_fast_random_poll): Move
155         prototypes to ..
156         * rand-internal.h: .. here 
157         * random.c (getfnc_gather_random): Include rndw32 gatherer.
158         * rndunix.c, rndw32.c, rndegd.c: Include them here.
159         * rndlinux.c (_gcry_rndlinux_gather_random): Prepend the _gcry_
160         prefix.  Changed all callers.
161         * rndegd.c (_gcry_rndegd_gather_random): Likewise.
162         (_gcry_rndegd_connect_socket): Likewise.
163         * rndunix.c (_gcry_rndunix_gather_random): Likewise.
164         (waitpid): Made static.
165         * rndw32.c: Removed the old and unused winseed.dll cruft.
166         (_gcry_rndw32_gather_random_fast): Renamed from
167         gather_random_fast.
168         (_gcry_rndw32_gather_random): Renamed from gather_random.  Note,
169         that the changes 2003-04-08 somehow got lost.
170
171         * sha512.c (sha512_init, sha384_init): Made static.
172
173         * cipher.c (do_ctr_decrypt): Removed "return" from this void
174         function.
175
176 2003-10-24  Moritz Schulte  <mo@g10code.com>
177
178         * serpent.c: Fix an issue on big-endian systems.
179
180         * rndw32.c: Removed IS_MODULE -cruft.
181         * rndlinux.c (rndlinux_gather_random): Likewise.
182
183 2003-10-10  Werner Koch  <wk@gnupg.org>
184
185         * primegen.c (gen_prime): Bail out if NBITS is less than 16.
186         (prime_generate_internal): Initialize prime variable to suppress
187         compiler warning.  Check pbits, initialize qbits when passed as
188         zero.
189
190         * primegen.c (prime_generate_internal): New arg
191         ALL_FACTORS. Changed all callers.
192         (gcry_prime_generate): Make the factors arg optional. Request
193         all_factors.  Make sure PRIME is set to NULL even on error.
194         (gcry_prime_group_generator): New.
195         (gcry_prime_release_factors): New.
196
197 2003-10-06  Werner Koch  <wk@gnupg.org>
198
199         * primegen.c (gen_prime): Assert that NBITS is never zero, it
200         would cause a segv.
201
202 2003-09-28  Moritz Schulte  <mo@g10code.com>
203
204         * ac.c: Include "cipher.h".
205
206 2003-09-27  Moritz Schulte  <mo@g10code.com>
207
208         * rndegd.c (do_read): Return nread instead of nbytes; thanks to
209         Michael Caerwyn.
210
211 2003-09-04  Werner Koch  <wk@gnupg.org>
212
213         * pubkey.c (_gcry_pk_aliased_algo_name): New.
214         * ac.c (gcry_ac_open): Use it here.
215
216         * Makefile.am (EXTRA_libcipher_la_SOURCES): Add serpent.c
217
218 2003-09-02  Moritz Schulte  <mo@g10code.com>
219
220         * primegen.c (gcry_prime_check, gcry_prime_generate): New
221         functions.
222         (prime_generate_internal): New function, based on
223         _gcry_generate_elg_prime.
224         (_gcry_generate_elg_prime): Rewritten as a wrapper for
225         prime_generate_internal.
226
227 2003-08-28  Werner Koch  <wk@gnupg.org>
228
229         * pubkey.c (gcry_pk_encrypt): Don't include the flags list in the
230         return value.  This does not make sense and breaks any programs
231         parsing the output strictly (e.g. current gpgsm).
232         (gcry_pk_encrypt): If aliases for the algorithm name exists, take
233         the first one instead of the regular name to adhere to SPKI
234         conventions.
235         (gcry_pk_genkey): Ditto.
236         (gcry_pk_sign): Ditto. Removed unused KEY_ALGO_NAME.
237
238 2003-08-19  Moritz Schulte  <mo@g10code.com>
239
240         * cipher.c: Add support for Serpent
241         * serpent.c: New file.
242
243 2003-08-10  Moritz Schulte  <moritz@g10code.com>
244
245         * rsa.c (_gcry_rsa_blind, _gcry_rsa_unblind): Declare static.
246
247 2003-08-09  Timo Schulz  <twoaday@freakmail.de>
248
249         * random.c (getfnc_gather_random): Don't check NAME_OF_DEV_RANDOM
250         two times, but also the NAME_OF_DEV_URANDOM device.
251         
252 2003-08-08  Moritz Schulte  <moritz@g10code.com>
253
254         * pubkey.c (sexp_to_enc): Fixed extraction of S-Expression: do not
255         fail if no `flags' sub S-Expression is found.
256
257 2003-07-27  Werner Koch  <wk@gnupg.org>
258
259         * md.c (gcry_md_lookup_func_oid): Allow for empty OID lists.
260
261 2003-07-23  Moritz Schulte  <moritz@g10code.com>
262
263         * ac.c (gcry_ac_data_construct): New argument: include_flags, only
264         include `flags' S-expression, if include_flags is true.  Adjust
265         callers.  Thanks for triggering a bug caused by `flags'
266         sub-S-expression where they are not expected to Ralf Schneider.
267
268 2003-07-21  Moritz Schulte  <moritz@g10code.com>
269
270         * pubkey.c (gcry_pk_lookup_func_name): Use new member name
271         `aliases' instead of `sexp_names'.
272
273         * ac.c (gcry_ac_key_data_get): New function.
274
275         * cipher.c (gcry_cipher_lookup_func_name): Fix return value.
276
277 2003-07-20  Moritz Schulte  <moritz@g10code.com>
278
279         * blowfish.c: Adjusted for new gcry_cipher_spec_t structure.
280         * cast5.c: Likewise.
281         * twofish.c: Likewise.
282         * arcfour.c: Likewise.
283         * rijndael.c (rijndael_oids, rijndael192_oids, rijndael256_oids):
284         New variables, adjust for new gcry_cipher_spec_t structure.
285         * des.c (oids_tripledes): New variable, adjust for new
286         gcry_cipher_spec_t structure.
287
288         * md.c (oid_table): Removed.
289
290         * tiger.c (oid_spec_tiger): New variable.
291         (digest_spec_tiger): Adjusted for new gry_md_spec_t structure.
292
293         * sha512.c (oid_spec_sha512): New variable.
294         (digest_spec_sha512): Adjusted for new gry_md_spec_t structure.
295
296         * sha512.c (oid_spec_sha384): New variable.
297         (digest_spec_sha384): Adjusted for new gry_md_spec_t structure.
298
299         * sha256.c (oid_spec_sha256): New variable.
300         (digest_spec_sha256): Adjusted for new gry_md_spec_t structure.
301
302         * sha1.c (oid_spec_sha1): New variable.
303         (digest_spec_sha1): Adjusted for new gry_md_spec_t structure.
304
305         * rmd160.c (oid_spec_rmd160): New variable.
306         (digest_spec_rnd160): Adjusted for new gry_md_spec_t structure.
307
308         * md5.c (oid_spec_md5): New variable.
309         (digest_spec_md5): Adjusted for new gry_md_spec_t structure.
310
311         * md4.c (oid_spec_md4): New variable.
312         (digest_spec_md4): Adjusted for new gry_md_spec_t structure.
313
314         * crc.c (digest_spec_crc32, digest_spec_crc32_rfc1510,
315         digest_spec_crc32_rfc2440): Adjusted for new gry_md_spec_t
316         structure.
317
318 2003-07-19  Moritz Schulte  <moritz@g10code.com>
319
320         * md.c (gcry_md_lookup_func_oid): New function.
321         (search_oid): New function, copied from cipher.c.
322         (gcry_md_map_name): Adjust for new search_oid_interface.
323
324         * cipher.c (oid_table): Removed table.
325         (gcry_cipher_lookup_func_oid): New function.
326         (search_oid): Rewritten to use the module functions.
327         (gcry_cipher_map_name): Adjust for new search_oid interface.
328         (gcry_cipher_mode_from_oid): Likewise.
329
330 2003-07-18  Werner Koch  <wk@gnupg.org>
331
332         * md.c (gcry_md_hash_buffer): Convert ERR to gpg_error_t in
333         gpg_strerror.
334
335 2003-07-14  Moritz Schulte  <moritz@g10code.com>
336
337         * cipher.c (gcry_cipher_lookup_func_name): Also check the cipher
338         name aliases, not just the primary name.
339         (gcry_cipher_map_name): Remove kludge for aliasing Rijndael to
340         AES.
341
342         * arcfour.c, blowfish.c, cast5.c, des.c, twofish.c: Adjust cipher
343         specification structures.
344
345         * rijndael.c (rijndael_names, rijndael192_names,
346         rijndael256_names): New variables, use them in the cipher
347         specifications.
348
349         * rmd160test.c: Removed file.
350
351         * ac.c, arcfour.c, blowfish.c, cast5.c, cipher.c, des.c, dsa.c,
352         elgamal.c, md.c, pubkey.c, random.c, rijndael.c, rsa.c, twofish.c:
353         Used gcry_err* wrappers for libgpg symbols.
354
355         * primegen.c (gen_prime): Correct the order arguments to
356         extra_check.
357
358 2003-07-12  Moritz Schulte  <moritz@g10code.com>
359
360         * ac.c: Replaced all public occurences of gpg_error_t with
361         gcry_error_t.
362         * cipher.c: Likewise.
363         * md.c: Likewise.
364         * pubkey.c: Likewise.
365         * random.c: Likewise.
366
367         * cipher.c: Added support for TWOFISH128.
368
369 2003-07-08  Moritz Schulte  <moritz@g10code.com>
370
371         * ac.c (gcry_ac_data_copy_internal): New function, based on
372         gcry_ac_data_copy.
373         (gcry_ac_data_copy): Made public, use gcry_ac_data_copy_internal.
374         (gcry_ac_key_init): Use gcry_ac_data_copy_internal.
375
376 2003-07-07  Moritz Schulte  <moritz@g10code.com>
377
378         * ac.c (gcry_ac_data_set): Only release old MPI value if it is
379         different from the new value.  Bug reported by Simon Josefsson
380         <jas@extundo.com>.
381
382         * pubkey.c (gcry_pk_list): New function.
383         * md.c (gcry_md_list): New function.
384
385         * ac.c (gcry_ac_key_pair_generate): Fix calculation of format
386         string size.
387
388 2003-07-05  Moritz Schulte  <moritz@g10code.com>
389
390         * md.c: Named struct of digest_table `digest_table_entry'.
391         (digest_table_entry): New member: algorithm; filled in.
392         (digest_table_entry): Removed unused member: flags.
393         (gcry_md_register): New argument: algorithm_id, filled in.
394         (gcry_md_register_default): Used algorithm ID from module
395         structure.
396         (gcry_md_map_name): Likewise.
397         (md_enable): Likewise.
398         (md_read): Likewise.
399         (gcry_md_info): Likewise.
400
401         * pubkey.c: Named truct for pubkey_table `pubkey_table_entry'.
402         (pubkey_table_entry): New member: algorithm; filled in.
403         (gcry_pk_register_default): Used algorithm ID from pubkey_table.
404         (gcry_pk_register): New argument: algorithm_id, filled in.
405         (gcry_pk_map_name): Used algorithm ID from module structure.
406         (gcry_pk_decrypt): Likewise.
407         (gcry_pk_encrypt): Likewise.
408         (gcry_pk_verify): Likewise.
409         (gcry_pk_sign): Likewise.
410         (gcry_pk_testkey): Likewise.
411         (gcry_pk_genkey): Likewise.
412         (gcry_pk_get_nbits): Likewise.
413         (sexp_to_key): Removed unused variable: algo.
414         (sexp_to_sig): Likewise.
415
416         * cipher.c: Named struct for cipher_table `cipher_table_entry'.
417         (cipher_table_entry): New member: algorithm; filled in.
418         (gcry_cipher_register_default): Used algorithm ID from
419         cipher_table.
420         (gcry_cipher_register): New argument: algorithm_id, filled in.
421         (gcry_cipher_map_name): Used algorithm ID from module structure.
422
423         * arcfour.c (cipher_spec_arcfour): Removed algorithm ID.
424         * blowfish.c (cipher_spec_blowfish): Likewise.
425         * cast5.c (cipher_spec_cast5): Likewise.
426         * crc.c (digest_spec_crc32): Likewise.
427         * crc.c (digest_spec_crc32_rfc1510): Likewise.
428         * crc.c (digest_spec_crc32_rfc2440): Likewise.
429         * des.c (cipher_spec_des): Likewise.
430         * des.c (cipher_spec_tripledes): Likewise.
431         * dsa.c (pubkey_spec_dsa): Likewise.
432         * elgamal.c (pubkey_spec_elg): Likewise.
433         * md4.c (digest_spec_md4): Likewise.
434         * md5.c (digest_spec_md5): Likewise.
435         * aes.c (cipher_spec_aes): Likewise.
436         * aes.c (cipher_spec_aes192): Likewise.
437         * aes.c (cipher_spec_aes256): Likewise.
438         * rsa.c (pubkey_spec_rsa): Likewise.
439         * sha1.c (digest_spec_sha1): Likewise.
440         * sha256.c (digest_spec_sha256): Likewise.
441         * sha512.c (digest_spec_sha512): Likewise.
442         * tiger.c (digest_spec_tiger): Likewise.
443         * twofish.c (cipher_spec_twofish): Likewise.
444         * twofish.c (cipher_spec_twofish128): Likewise.
445
446         * Makefile.am (EXTRA_libcipher_la_SOURCES): Fix list of source
447         files; reported by Simon Josefsson <jas@extundo.com>.
448
449         * pubkey.c: Replaced all occurences of `id' with `algorithm',
450         since `id' is a keyword in obj-c.
451         * md.c: Likewise.
452         * cipher.c: Likewise.
453
454         * crc.c, md4.c, md5.c, rmd160.c, sha1.c, sha256.c, tiger.c:
455         Replaced all occurences of gcry_digest_spec_t with gcry_md_spec_t.
456
457         * dsa.c, rsa.c, elgamal.c: Replaced all occurencens of
458         gcry_pubkey_spec_t with gcry_pk_spec_t.
459
460         * md.c: Replaced all occurences of gcry_digest_spec_t with
461         gcry_md_spec_t.
462         (gcry_digest_register_default): Renamed to ...
463         (gcry_md_register_default): ... this; adjusted callers.
464         (gcry_digest_lookup_func_name): Renamed to ...
465         (gcry_md_lookup_func_name): ... this; adjusted callers.
466         (gcry_digest_lookup_name): Renamed to ...
467         (gcry_md_lookup_name): ... this; adjusted callers.
468         (gcry_digest_register): Renamed to ...
469         (gcry_md_register): ... this.
470         (gcry_digest_unregister): Renamed to ...
471         (gcry_md_unregister): ... this.
472
473         * pubkey.c (gcry_pubkey_register): Renamed to ...
474         (gcry_pk_register): ... this.
475         (gcry_pubkey_unregister): Renamed to ...
476         (gcry_pk_unregister): ... this.
477         Replaced all occurences of gcry_pubkey_spec_t with gcry_pk_spec_t.
478         (gcry_pubkey_register_default): Renamed to ...
479         (gcry_pk_register_default): ... this; adjusted callers.
480         (gcry_pubkey_lookup_func_name): Renamed to ...
481         (gcry_pk_lookup_func_name): ... this; adjusted callers.
482         (gcry_pubkey_lookup_name): Renamed to ...
483         (gcry_pk_lookup_name): ... this; adjusted callers.
484
485         * md.c (gcry_md_hash_buffer): Fix error checking.  Thanks to Simon
486         Josefsson <jas@extunde.com>.
487
488 2003-07-04  Moritz Schulte  <moritz@g10code.com>
489
490         * cipher.c (gcry_cipher_list): New function.
491
492 2003-07-01  Moritz Schulte  <moritz@g10code.com>
493
494         * pubkey.c (sexp_to_sig): Accept a `flags' S-expression to be more
495         consistent with sexp_to_enc.
496
497 2003-06-30  Moritz Schulte  <moritz@g10code.com>
498
499         * Makefile.am (libcipher_la_SOURCES): Added: ac.c.
500
501         * pubkey.c (_gcry_pk_module_lookup): New function.
502         (_gcry_pk_module_release): New function.
503
504 2003-06-29  Moritz Schulte  <moritz@g10code.com>
505
506         * ac.c: New file.
507
508 2003-06-26  Werner Koch  <wk@gnupg.org>
509
510         * md.c (gcry_md_hash_buffer): Trigger BUG correcly with new API.
511
512 2003-06-19  Werner Koch  <wk@gnupg.org>
513
514         * md.c (gcry_md_is_enabled): Fixed. 
515
516 2003-06-18  Werner Koch  <wk@gnupg.org>
517
518         * cipher.c (gcry_cipher_get_algo_keylen): New.
519         (gcry_cipher_get_algo_blklen): New.
520
521 2003-06-18  Moritz Schulte  <moritz@g10code.com>
522
523         * arcfour.c, cipher.c, blowfish.c, md.c, cast5.c, pubkey.c, crc.c,
524         des.c, dsa.c, elgamal.c, md4.c, md5.c, random.c, rijndael.c,
525         rmd160.c, rsa.c, sha1.c, sha256.c, sha512.c, tiger.c, twofish.c:
526         Replaced older types GcryDigestSpec, GcryCipherSpec and
527         GcryPubkeySpec with newer types: gcry_digest_spec_t,
528         gcry_cipher_spec_t and gcry_pubkey_spec_t.
529
530         * md.c (gcry_digest_id_new): Removed function.
531         (gcry_digest_register): Removed code for generating a new module
532         ID.
533
534         * pubkey.c (gcry_pubkey_id_new): Removed function.
535         (gcry_pubkey_register): Removed code for generating a new module
536         ID.
537
538         * cipher.c, md.c, pubkey.c: Replace old type GcryModule with newer
539         one: gcry_module_t.
540         (gcry_cipher_id_new): Removed function.
541         (gcry_cipher_register): Removed code for generating a new module
542         ID.
543
544         * cipher.c (gcry_cipher_register): Adjust call to
545         _gcry_module_add.
546         (gcry_cipher_register_default): Likewise.
547         * pubkey.c (gcry_pubkey_register_default): Likewise.
548         (gcry_pubkey_register): Likewise.
549         * md.c (gcry_digest_register_default): Likewise.
550         (gcry_digest_register): Likewise.
551
552         * md.c (gcry_digest_lookup_func_id): Removed function.
553         (gcry_digest_lookup_id): Likewise.
554         (gcry_digest_id_new): Use _gcry_module_lookup_id instead of
555         gcry_digest_lookup_id.
556         (digest_algo_to_string): Likewise.
557         (check_digest_algo): Likewise.
558         (md_enable): Likewise.
559         (md_digest_length): Likewise.
560         (md_asn_oid): Likewise.
561
562         * pubkey.c (gcry_pubkey_lookup_id): Removed function.
563         (gcry_pubkey_lookup_func_id): Likewise.
564         (gcry_pubkey_id_new): Use _gcry_module_lookup_id instead of
565         gcry_pubkey_id_new.
566         (gcry_pk_algo_name): Likewise.
567         (disable_pubkey_algo): Likewise.
568         (check_pubkey_algo): Likewise.
569         (pubkey_get_npkey): Likewise.
570         (pubkey_get_nskey): Likewise.
571         (pubkey_get_nsig): Likewise.
572         (pubkey_get_nenc): Likewise.
573         (pubkey_generate): Likewise.
574         (pubkey_check_secret_key): Likewise.
575         (pubkey_encrypt): Likewise.
576         (pubkey_decrypt): Likewise.
577         (pubkey_sign): Likewise.
578         (pubkey_verify): Likewise.
579         (gcry_pk_algo_info): Likewise.
580
581         * cipher.c (gcry_cipher_lookup_func_id): Removed function.
582         (gcry_cipher_lookup_id): Likewise.
583         (cipher_algo_to_string): use _gcry_module_lookup_id instead of
584         gcry_cipher_lookup_id.
585         (disable_cipher_algo): Likewise.
586         (check_cipher_algo): Likewise.
587         (cipher_get_blocksize): Likewise.
588         (gcry_cipher_open): Likewise.
589         (gcry_cipher_id_new): Likewise.
590
591 2003-06-17  Moritz Schulte  <moritz@g10code.com>
592
593         * Makefile.am (GCRYPT_MODULES): Set to @GCRYPT_CIPHERS@,
594         @GCRYPT_PUBKEY_CIPHERS@, @GCRYPT_DIGESTS@ and @GCRYPT_RANDOM@.
595         (libcipher_la_DEPENDENCIES): Set to $(GCRYPT_MODULES).
596         (libcipher_la_LIBADD): Likewise.
597         (AM_CFLAGS): Added: @GPG_ERROR_CFLAGS@.
598         (EXTRA_libcipher_la_SOURCES): Added all conditional sources.
599
600         * md.c (md_open): Use _gcry_fast_random_poll instead of
601         fast_random_poll.
602         * cipher.c (gcry_cipher_open): Likewise.
603
604         * random.h (fast_random_poll): Removed macro.
605
606         * blowfish.c, md4.c, md5.c, rmd160.c, sha1.c, sha256.c, sha512.c,
607         tiger.c: Use Autoconf's WORDS_BIGENDIAN instead of our own
608         BIG_ENDIAN_HOST.
609
610 2003-06-16  Moritz Schulte  <moritz@g10code.com>
611
612         * random.c (getfnc_gather_random): Do not special-case
613         USE_ALL_RANDOM_MODULES, make it the default.
614
615         * dsa.c: Replace last occurences of old type names with newer
616         names (i.e. replace MPI with gcry_mpi_t).
617         * elgamal.c: Likewise.
618         * primegen.c: Likewise.
619         * pubkey.c: Likewise.
620         * rsa.c: Likewise.
621
622 2003-06-14  Moritz Schulte  <moritz@g10code.com>
623
624         * des.c (des_setkey): Add selftest check.
625         (tripledes_set3keys): Likewise.
626         (do_tripledes_setkey): Remove selftest check.
627         (do_des_setkey): Likewise.
628
629 2003-06-11  Moritz Schulte  <moritz@g10code.com>
630
631         * md.c (_gcry_md_init): New function.
632         * cipher.c (_gcry_cipher_init): New function.
633         * pubkey.c (_gcry_pk_init): New function.
634
635 2003-06-13  Werner Koch  <wk@gnupg.org>
636
637         * md.c (gcry_md_get_algo): Reverted to old API.  This is a
638         convenience function anyway and error checking is not approriate.
639         (gcry_md_is_secure): New.
640         (gcry_md_is_enabled): New.
641
642 2003-06-12  Werner Koch  <wk@gnupg.org>
643
644         * cipher.c (gcry_cipher_open): Make sure HANDLE is set to NULL on
645         error.
646
647 2003-06-11  Werner Koch  <wk@gnupg.org>
648
649         * md.c (gcry_md_open): Make sure H receives either NULL or an
650         valid handle.
651         (gcry_md_copy): Swapped arguments so that it is more in lione with
652         md_open and most other API fucntions like memcpy (destination
653         comes first).  Make sure HANDLE is set to NULL on error.
654         
655         * rijndael.c (do_encrypt): Hack to force correct alignment.  It
656         seems not to be not sufficient, though.  We should rework this
657         fucntions and remove all these ugly casts.  Let the compiler
658         optimize or have an assembler implementation.
659
660 2003-06-09  Moritz Schulte  <moritz@g10code.com>
661
662         * Makefile.am: Removed rules serpent, since that is not commited
663         yet.
664
665 2003-06-08  Moritz Schulte  <moritz@g10code.com>
666
667         * pubkey.c (gcry_pk_encrypt): Improve calculation for size of the
668         format string.
669
670 2003-06-07  Moritz Schulte  <moritz@g10code.com>
671
672         * arcfour.c, bithelp.h, blowfish.c, cast5.c, cipher.c, crc.c,
673         des.c, dsa.c, elgamal.c, md4.c, md5.c, md.c, primegen.c, pubkey.c,
674         rand-internal.h, random.c, random.h, rijndael.c, rmd160.c,
675         rmd160test.c, rmd.h, rndeged.c, rndlinux.c, rndunix.c, rndw32.c,
676         rsa.c, sha1.c, sha256.c, sha512.c, tiger.c, twofish.c: Edited all
677         preprocessor instructions to remove whitespace before the '#'.
678         This is not required by C89, but there are some compilers out
679         there that don't like it.  Replaced any occurence of the now
680         deprecated type names with the new ones.
681         
682 2003-06-04  Moritz Schulte  <moritz@g10code.com>
683
684         * pubkey.c (gcry_pk_encrypt): Construct an arg_list and use
685         gcry_sexp_build_array instead of gcry_sexp_build.
686         (gcry_pk_sign): Likewise.
687         (gcry_pk_genkey): Likewise.
688
689 2003-06-01  Moritz Schulte  <moritz@g10code.com>
690
691         * dsa.c (_gcry_dsa_generate): Do not check wether the algorithm ID
692         does indeed belong to DSA.
693         (_gcry_dsa_sign): Likewise.
694         (_gcry_dsa_verify): Likewise.
695         (_gcry_dsa_get_nbits): Likewise.
696
697         * elgamal.c (_gcry_elg_check_secret_key): Do not check wether the
698         algorithm ID does indeed belong to ElGamal.
699         (_gcry_elg_encrypt): Likewise.
700         (_gcry_elg_decrypt): Likewise.
701         (_gcry_elg_sign): Likewise.
702         (_gcry_elg_verify): Likewise.
703         (_gcry_elg_get_nbits): Likewise.
704         (_gcry_elg_generate): Likewise.
705
706         * rsa.c (_gcry_rsa_generate): Do not check wether the algorithm ID
707         does indeed belong to RSA.
708         (_gcry_rsa_encrypt): Likewise.
709         (_gcry_rsa_decrypt): Likewise.
710         (_gcry_rsa_sign): Likewise.
711         (_gcry_rsa_verify): Likewise.
712         (_gcry_rsa_get_nbits): Likewise.
713
714 2003-05-30  Moritz Schulte  <moritz@g10code.com>
715
716         * md.c (md_get_algo): Return zero in case to algorithm is enabled.
717
718         * md.c (gcry_md_info): Adjusted for new no-errno-API.
719         (md_final): Likewise.
720         (gcry_md_get_algo): Likewise.
721         * pubkey.c (gcry_pk_get_keygrip): Likewise.
722         (gcry_pk_ctl): Likewise.
723         (gcry_pk_algo_info): Likewise.
724         * des.c (selftest): Likewise.
725
726 2003-05-29  Moritz Schulte  <moritz@g10code.com>
727
728         * md.c (md_enable): Do not forget to release module on error.
729         (gcry_md_open): Adjusted for new no-errno-API.
730         (md_open): Likewise.
731         (md_copy): Likewise.
732         (gcry_md_copy): Likewise.
733         (gcry_md_setkey): Likewise.
734         (gcry_md_algo_info): Likewise.
735
736         * cipher.c (gcry_cipher_open): Adjusted for new no-errno-API and
737         also fixed a locking bug.
738         (gcry_cipher_encrypt): Adjusted for new no-errno-API.
739         (gcry_cipher_decrypt): Likewise.
740         (gcry_cipher_ctl): Likewise.
741         (gcry_cipher_info): Likewise.
742         (gcry_cipher_algo_info): Likewise.
743
744 2003-05-28  Moritz Schulte  <moritz@g10code.com>
745
746         * md.c (md_enable): Adjusted for libgpg-error.
747         (gcry_md_enable): Likewise.
748         (gcry_digest_register_default): Likewise.
749         (gcry_digest_register): Likewise.
750         (check_digest_algo): Likewise.
751         (prepare_macpads): Likewise.
752         (gcry_md_setkey): Likewise.
753         (gcry_md_ctl): Likewise.
754         (gcry_md_get): Likewise.
755         (gcry_md_algo_info): Likewise.
756         (gcry_md_info): Likewise.
757         * dsa.c (_gcry_dsa_generate): Likewise.
758         (_gcry_dsa_check_secret_key): Likewise.
759         (_gcry_dsa_sign): Likewie.
760         (_gcry_dsa_verify): Likewise.
761         * twofish.c (do_twofish_setkey): Likewise.
762         (twofish_setkey): Likewise.
763         * cipher.c (gcry_cipher_register): Likewise.
764
765 2003-05-25  Moritz Schulte  <moritz@g10code.com>
766
767         * rijndael.c (do_setkey): Adjusted for libgpg-error.
768         (rijndael_setkey): Likewise.
769         * random.c (gcry_random_add_bytes): Likewise.
770         * elgamal.c (_gcry_elg_generate): Likewise.
771         (_gcry_elg_check_secret_key): Likewise.
772         (_gcry_elg_encrypt): Likewise.
773         (_gcry_elg_decrypt): Likewise.
774         (_gcry_elg_sign): Likewise.
775         (_gcry_elg_verify): Likewise.
776         * rsa.c (_gcry_rsa_generate): Likewise.
777         (_gcry_rsa_check_secret_key): Likewise.
778         (_gcry_rsa_encrypt): Likewise.
779         (_gcry_rsa_decrypt): Likewise.
780         (_gcry_rsa_sign): Likewise.
781         (_gcry_rsa_verify): Likewise.
782         * pubkey.c (dummy_generate, dummy_check_secret_key, dummy_encrypt,
783         dummy_decrypt, dummy_sign, dummy_verify): Likewise.
784         (gcry_pubkey_register): Likewise.
785         (check_pubkey_algo): Likewise.
786         (pubkey_generate): Likewise.
787         (pubkey_check_secret_key): Likewise.
788         (pubkey_encrypt): Likewise.
789         (pubkey_decrypt): Likewise.
790         (pubkey_sign): Likewise.
791         (pubkey_verify): Likewise.
792         (sexp_elements_extract): Likewise.
793         (sexp_to_key): Likewise.
794         (sexp_to_sig): Likewise.
795         (sexp_to_enc): Likewise.
796         (sexp_data_to_mpi): Likewise.
797         (gcry_pk_encrypt): Likewise.
798         (gcry_pk_decrypt): Likewise.
799         (gcry_pk_sign): Likewise.
800         (gcry_pk_verify): Likewise.
801         (gcry_pk_testkey): Likewise.
802         (gcry_pk_genkey): Likewise.
803         (gcry_pk_ctl): Likewise.
804         * cipher.c (dummy_setkey): Likewise.
805         (check_cipher_algo): Likewise.
806         (gcry_cipher_open): Likewise.
807         (cipher_setkey): Likewise.
808         (gcry_cipher_ctl): Likewise.
809         (cipher_encrypt): Likewise.
810         (gcry_cipher_encrypt): Likewise.
811         (cipher_decrypt): Likewise.
812         (gcry_cipher_decrypt): Likewise.
813         (gcry_cipher_info): Likewise.
814         (gcry_cipher_algo_info): Likewise.
815         * cast5.c (cast_setkey): Likewise.
816         (do_cast_setkey): Likewise.
817         * arcfour.c (arcfour_setkey): Likewise.
818         (do_arcfour_setkey): Likewise.
819         * blowfish.c (do_bf_setkey): Likewise.
820         (bf_setkey): Likewise.
821         * des.c (do_des_setkey): Likewise.
822         (do_tripledes_setkey): Likewise.
823
824 2003-05-22  Moritz Schulte  <moritz@g10code.com>
825
826         * tiger.c: Merged code ussing the U64_C macro from GnuPG.
827
828         * sha512.c: Likewise.
829
830 2003-05-17  Moritz Schulte  <moritz@g10code.com>
831
832         * pubkey.c (gcry_pk_genkey): Fix type: acquire a lock, instead of
833         releasing it.
834
835 2003-05-11  Moritz Schulte  <moritz@g10code.com>
836
837         * pubkey.c (gcry_pk_testkey): Call REGISTER_DEFAULT_CIPHERS.
838         (gcry_pk_ctl): Likewise.
839
840 2003-04-27  Moritz Schulte  <moritz@g10code.com>
841
842         * pubkey.c (gcry_pk_genkey): Release sexp after extracted data has
843         been used.
844
845         * md.c (gcry_md_get_algo_dlen): Simplified, simply call
846         md_digest_length to do the job.
847
848         * des.c (do_des_setkey): Check for selftest failure not only
849         during initialization.
850         (do_tripledes_setkey): Include check for selftest failure.
851
852         * pubkey.c (gcry_pubkey_register_default): New macro
853         `pubkey_use_dummy', use it.
854
855         * elgamal.c (elg_names): New variable.
856         (pubkey_spec_elg): Include elg_names.
857
858         * dsa.c (dsa_names): New variable.
859         (pubkey_spec_dsa): Include dsa_names.
860
861         * rsa.c (rsa_names): New variable.
862         (pubkey_spec_rsa): Include rsa_names.
863
864         * pubkey.c (gcry_pubkey_lookup_func_name): Compare name also with
865         the names listed in `sexp_names'.
866
867 2003-04-24  Moritz Schulte  <moritz@g10code.com>
868
869         * pubkey.c (sexp_to_key): New variables: module, pubkey.  Adjusted
870         to new module interface.
871         (sexp_to_key): Changend type of argument `retalgo' from `int *' to
872         `GcryModule **'.  Adjusted all callers.  Removed argument:
873         r_algotblidx.
874         (sexp_to_sig): Changend type of argument `retalgo' from `int *' to
875         `GcryModule **'.  Adjusted all callers.
876         (sexp_to_enc): Likewise.
877
878         (pubkey_get_npkey, pubkey_get_nskey, pubkey_get_nsig,
879         pubkey_get_nenc): Use strlen to find out the number.
880
881         * rsa.c: Adjust pubkey_spec_rsa to new internal interface.
882         * dsa.c: Likewise.
883         * elgamal.c: Likewise.
884
885 2003-04-17  Moritz Schulte  <moritz@g10code.com>
886
887         * pubkey.c (sexp_elements_extract): New function.
888         * pubkey.c (sexp_to_key): Removed variable `idx', added `err', use
889         sexp_elements_extract.
890         (sexp_to_sig): Likewise.
891         (sexp_to_enc): Likewise.
892
893         * pubkey.c: Terminate list correctly.
894         * md.c: Include sha512/sha384 in digest_table.
895
896 2003-04-16  Moritz Schulte  <moritz@g10code.com>
897
898         * Makefile.am: Include support for sha512.c.
899
900         * sha512.c: New file, merged from GnuPG, with few modifications
901         for libgcrypt.
902
903         * rand-internal.h: Removed declarations for constructor functions.
904
905         * md.c (md_copy): Call _gcry_module_use for incrementing the usage
906         counter of the digest modules.
907
908         * rsa.c: Do not include "rsa.h".
909         * dsa.c: Do not include "dsa.h".
910         * elgamal.c: Do not include "elgamal.h".
911         * des.c: Do not include "des.h".
912         * cast5.c: Do not include "cast5.h".
913         * blowfish.c: Do not include "blowfish.h".
914         * arcfour.c: Do not include "arcfour.h".
915
916         * Makefile.am (libcipher_la_DEPENDENCIES): Removed.
917         (libcipher_la_LIBADD): Removed.
918         Use Automake conditionals for conditional compilation.
919
920 2003-04-13  Moritz Schulte  <moritz@g10code.com>
921
922         * cipher.c (gcry_cipher_open): Call REGISTER_DEFAULT_CIPHERS.
923
924         * md.c (gcry_md_list): New member: module.
925         (md_enable): New variable: module, changed use of module and
926         digest.
927         (md_enable): Initialize member: module.
928         (md_close): Call _gcry_module_release.
929
930         * cipher.c (gcry_cipher_open): New variable: module, changed use of
931         module and cipher.
932         (struct gcry_cipher_handle): New member: module.
933         (gcry_cipher_open): Initialize member: module.
934         (gcry_cipher_close): Call _gcry_module_release.
935
936 2003-04-09  Moritz Schulte  <moritz@g10code.com>
937         
938         * cipher.c: Include "ath.h".
939         * md.c: Likewise.
940         * pubkey.c: Likewise.
941
942         * cipher.c (ciphers_registered_lock): New variable.
943         * md.c (digests_registered_lock): New variable.
944         * pubkey.c (pubkeys_registered_lock): New variable.
945
946         * rndlinux.c (gnupgext_version, func_table): Removed definitions.
947         (gnupgext_enum_func): Removed function.
948         (_gcry_rndlinux_constructor): Removed function.
949
950         * rndegd.c (gnupgext_version, func_table): Removed definitions.
951         (gnupgext_enum_func): Removed function.
952         (_gcry_rndegd_constructor): Removed function.
953
954         * rndunix.c (gnupgext_version, func_table): Removed definitions.
955         (gnupgext_enum_func): Removed function.
956         (_gcry_rndunix_constructor): Removed function.
957
958         * rndw32.c (gnupgext_version, func_table): Removed definitions.
959         (gnupgext_enum_func): Removed function.
960         (_gcry_rndw32_constructor): Removed function.
961
962         * rndegd.c (rndegd_connect_socket): Simplify code for creating the
963         egd socket address.
964         (rndegd_connect_socket): Call log_fatal use instead of
965         g10_log_fatal.
966         (egd_gather_random): Renamed to ...
967         (rndegd_gather_random): ... here.
968
969 2003-04-08  Moritz Schulte  <moritz@g10code.com>
970
971         * rndlinux.c: Do not include "dynload.h".
972         * rndunix.c: Likewise.
973         * rndw32.c: Likewise.
974
975         * rndegd.c (rndegd_connect_socket): Factored out from ...
976         (egd_gather_random): here; call it.
977         (egd_socket): New variable.
978         (egd_gather_random): Initialize fd with egd_socket, do not declare
979         fd static.
980         (do_read): Merged few changes from GnuPG. FIXME - not finished?
981         Do not include "dynload.h".
982
983         * rndw32.c (gather_random): Renamed to rndw32_gather_random, do
984         not declare static.
985         (gather_random_fast): Renamed to rndw32_gather_random_fast, do not
986         declare static.
987
988         * rndunix.c (gather_random): Renamed to rndunix_gather_random, do
989         not declare static.
990         * rndegd.c (gather_random): Renamed to rndegd_gather_random, do
991         not declare static.
992         * rndlinux.c (gather_random): Renamed to rndlinux_gather_random,
993         do not declare static.
994
995 2003-04-07  Moritz Schulte  <moritz@g10code.com>
996
997         * Makefile.am (libcipher_la_SOURCES): Removed construct.c.
998         (libcipher_la_SOURCES): Added sha1.c, sha256.c, rmd160.c, md4.c,
999         md5.c, tiger.c and crc.c
1000         (EXTRA_PROGRAMS): Removed sha1, sha256, rmd160, md4, md5, tiger
1001         and crc.  Removed definitions: EXTRA_md4_SOURCES,
1002         EXTRA_md5_SOURCES, EXTRA_rmd160_SOURCES, EXTRA_sha1_SOURCES,
1003         EXTRA_sha256_SOURCES, EXTRA_tiger_SOURCES and EXTRA_crc_SOURCES,
1004         BUILT_SOURCES, DISTCLEANFILES.
1005
1006         * pubkey.c: Do not include "elgamal.h", "dsa.h" and "rsa.h".
1007
1008         * Makefile.am (libcipher_la_SOURCES): Removed rsa.h, elgamal.h,
1009         dsa.h, des.h, cast5.h, arcfour.h and blowfish.h.
1010
1011         * rsa.h: Removed file.
1012         * elgamal.h: Removed file.
1013         * dsa.h: Removed file.
1014         * des.h: Removed file.
1015         * cast5.h: Removed file.
1016         * arcfour.h: Removed file.
1017         * blowfish.h: Removed file.
1018
1019         * Makefile.am (libcipher_la_SOURCES): Removed dynload.c and
1020         dynload.h.
1021
1022         * rsa.c (pubkey_spec_rsa): New variable.
1023         * dsa.c (pubkey_spec_rsa): New variable.
1024         * elgamal.c (pubkey_spec_elg): New variable.
1025         
1026         * rsa.c (_gcry_rsa_get_info): Removed function.
1027         * elgamal.c (_gcry_elg_get_info): Removed function.
1028         * dsa.c (_gcry_dsa_get_info): Removed function.
1029
1030         * tiger.c (tiger_get_info): Removed function.
1031         (gnupgext_version, func_table): Removed definitions.
1032         (gnupgext_enum_func): Removed function.
1033         (_gcry_tiger_constructor): Removed function.
1034         
1035         * sha1.c (sha1_get_info): Removed function.
1036         (gnupgext_version, func_table): Removed definitions.
1037         (gnupgext_enum_func): Removed function.
1038         (_gcry_sha1_constructor): Removed function.
1039
1040         * sha256.c (sha256_get_info): Removed function.
1041         (gnupgext_version, func_table): Removed definitions.
1042         (gnupgext_enum_func): Removed function.
1043         (_gcry_sha256_constructor): Removed function.
1044
1045         * rmd160.c (rmd160_get_info): Removed function.
1046         (gnupgext_version, func_table): Removed definitions.
1047         (gnupgext_enum_func): Removed function.
1048         (_gcry_rmd160_constructor): Removed function.
1049
1050         * md5.c (md5_get_info): Removed function.
1051         (gnupgext_version, func_table): Removed definitions.
1052         (gnupgext_enum_func): Removed function.
1053         (_gcry_md5_constructor): Removed function.
1054
1055         * md4.c (md4_get_info): Removed function.
1056         (gnupgext_version, func_table): Removed definitions.
1057         (gnupgext_enum_func): Removed function.
1058         (_gcry_md4_constructor): Removed function.
1059
1060         * crc.c (crc_get_info): Removed function.
1061
1062         * arcfour.c (do_arcfour_setkey): Changed type of context argument
1063         to `void *', added local variable for cast, adjusted callers.
1064         (arcfour_setkey): Likewise.
1065         (encrypt_stream): Likewise.
1066         * cast5.c (cast_setkey): Likewise.
1067         (encrypt_block): Likewise.
1068         * rijndael.c (rijndael_setkey): Likewise.
1069         (rijndael_encrypt): Likewise.
1070         (rijndael_decrypt): Likewise.
1071         * twofish.c (twofish_setkey): Likewise.
1072         (twofish_encrypt): Likewise.
1073         (twofish_decrypt): Likewise.
1074         * des.c (do_des_setkey): Likewise.
1075         (do_des_encrypt): Likewise.
1076         (do_des_encrypt): Likewise.
1077         (do_tripledes_encrypt): Likewise.
1078         (do_tripledes_encrypt): Likewise.
1079         * blowfish.c (bf_setkey: Likewise.
1080         (encrypt_block): Likewise.
1081         (decrypt_block): Likewise.
1082         
1083         * arcfour.c (encrypt_stream): Likewise.
1084
1085         * rijndael.c (gnupgext_version, func_table): Removed definitions.
1086         (gnupgext_enum_func) Removed function.  
1087         
1088         * twofish.c (gnupgext_version, func_table): Removed definitions.
1089         (gnupgext_enum_func) Removed function.  
1090
1091         * cast5.c (CIPHER_ALGO_CAST5): Removed.
1092
1093         * blowfish.c (FNCCAST_SETKEY, FNCCAST_CRYPT): Removed macros.
1094         (CIPHER_ALGO_BLOWFISH): Removed symbol.
1095         * cast5.c (FNCCAST_SETKEY, FNCCAST_CRYPT): Likewise.
1096         * des.c (selftest_failed): Removed.
1097         (initialized): New variable.
1098         (do_des_setkey): Run selftest, if not yet done.
1099         (FNCCAST_SETKEY, FNCCAST_CRYPT): Removed macros.
1100
1101         * arcfour.c (_gcry_arcfour_get_info): Removed function.
1102         * blowfish.c (_gcry_blowfish_get_info): Removed function.
1103         * cast5.c (_gcry_cast5_get_info): Removed function.
1104         * des.c (_gcry_des_get_info): Removed function.
1105         * rijndael.c (_gcry_rijndael_get_info): Removed function.
1106         * twofish.c (_gcry_twofish_get_info): Removed function.
1107
1108         * arcfour.c (cipher_spec_arcfour): New variable.
1109         * twofish.c (cipher_spec_twofish, cipher_spec_twofish128): New
1110         variables.
1111         * rijndael.c (cipher_spec_aes, cipher_spec_aes192,
1112         cipher_spec256): New variables.
1113         * des.c (cipher_spec_des, cipher_spec_tripledes): New variables.
1114         * cast5.c (cipher_spec_cast5): New variable.
1115         * blowfish.c (cipher_spec_blowfish): Likewise.
1116         
1117         * twofish.c: Do not include "dynload.h".
1118         * rijndael.c: Likewise.
1119         * des.c: Likewise.
1120         * cast5.c: Likewise.
1121         * blowfish.c: Likewise.
1122         * cipher.c: Likewise.
1123         * crc.c: Likewise.
1124         * md4.c: Likewise.
1125         * md5.c: Likewise.
1126         * md.c: Likewise.
1127         * pubkey.c: Likewise.
1128         * rijndael.c: Likewise.
1129         * sha1.c: Likewise.
1130         * sha256.c: Likewise.
1131
1132         * arcfour.c: Include "cipher.h".
1133         * twofish.c: Likewise.
1134         * rijndael.c: Likewise.
1135         * des.c: Likewise.
1136         * cast5.c: Likewise.
1137         * blowfish.c: Likewise.
1138
1139         * twofish.c (twofish_setkey): Declared argument `key' const.
1140         (twofish_encrypt): Declared argument `inbuf' const.
1141         (twofish_decrypt): Likewise.
1142
1143         * rijndael.c (rijndael_setkey): Declared argument `key' const.
1144         (rijndael_encrypt): Declared argument `inbuf' const.
1145         (rijndael_decrypt): Likewise.
1146
1147         * des.c (do_des_setkey): Declared argument `key' const.
1148         (do_tripledes_setkey): Likewise.
1149         (do_des_encrypt): Declared argument `inbuf' const.
1150         (do_des_decrypt): Likewise.
1151         (do_tripledes_encrypt): Likewise.
1152         (do_tripledes_decrypt): Likewise.
1153
1154         * cast5.c (encrypt_block): Declared argument `inbuf' const.
1155         (decrypt_block): Likewise.
1156         (cast_setkey): Declared argument `key' const.
1157
1158         * blowfish.c (do_bf_setkey): Declared argument `key' const.
1159         (encrypt_block): Declared argument `inbuf' const.
1160         (encrypt_block): Likewise.
1161
1162         
1163
1164         * cipher.c: Remove CIPHER_ALGO_DUMMY related code.
1165         Removed struct cipher_table_s.
1166         Changed definition of cipher_table.
1167         Removed definition of disabled_algos.
1168         (ciphers_registered, default_ciphers_registered): New variables.
1169         (REGISTER_DEFAULT_CIPHERS): New macro.
1170         (dummy_setkey): Declared argument `key' const.
1171         (dummy_encrypt_block): Declared argument `inbuf' const.
1172         (dummy_encrypt_block): Likewise.
1173         (dummy_encrypt_stream): Likewise.
1174         (dummy_encrypt_stream): Likewise.
1175         (dummy_setkey): Use `unsigned char' instead of `byte'.
1176         (dummy_encrypt_block): Likewise.
1177         (dummy_decrypt_block): Likewise.
1178         (dummy_encrypt_stream): Likewise.
1179         (dummy_decrypt_stream): Likewise.
1180         (gcry_cipher_register_default): New function.
1181         (gcry_cipher_lookup_func_id): New function.
1182         (gcry_cipher_lookup_func_name): New function.
1183         (gcry_cipher_lookup_id): New function.
1184         (gcry_cipher_lookup_name): New function.
1185         (gcry_cipher_id_new): New function.
1186         (gcry_cipher_register): New function.
1187         (gcry_cipher_unregister): New function.
1188         (setup_cipher_table): Removed function.
1189         (load_cipher_modules): Removed function.
1190         (gcry_cipher_map_name): Adjusted to use new module management.
1191         (cipher_algo_to_string): Likewise.
1192         (disable_cipher_algo): Likewise.
1193         (check_cipher_algo): Likewise.
1194         (cipher_get_keylen): Likewise.
1195         (cipher_get_blocksize): Likewise.
1196         (gcry_cipher_open): Likewise.
1197         (struct gcry_cipher_handle): Replaced members algo, algo_index,
1198         blocksize, setkey, encrypt, decrypt, stencrypt, stdecrypt with one
1199         member: cipher.
1200         (gcry_cipher_open): Adjusted code for new handle structure.
1201         (cipher_setkey): Likewise.
1202         (cipher_setiv): Likewise.
1203         (cipher_reset): Likewise.
1204         (do_ecb_encrypt): Likewise.
1205         (do_ecb_decrypt): Likewise.
1206         (do_cbc_encrypt): Likewise.
1207         (do_cbc_decrypt): Likewise.
1208         (do_cfb_encrypt): Likewise.
1209         (do_cfb_decrypt): Likewise.
1210         (do_ctr_encrypt): Likewise.
1211         (cipher_encrypt): Likewise.
1212         (gcry_cipher_encrypt): Likewise.
1213         (cipher_decrypt): Likewise.
1214         (gcry_cipher_decrypt): Likewise.
1215         (cipher_sync): Likewise.
1216         (gcry_cipher_ctl): Likewise.
1217
1218         * pubkey.c: Removed struct pubkey_table_s.
1219         Changed definition of pubkey_table.
1220         Removed definition of disabled_algos.
1221         (pubkeys_registered, default_pubkeys_registered): New variables.
1222         (REGISTER_DEFAULT_PUBKEYS): New macro.
1223         (setup_pubkey_table): Removed function.
1224         (load_pubkey_modules): Removed function.
1225         (gcry_pubkey_register_default): New function.
1226         (gcry_pubkey_lookup_func_id): New function.
1227         (gcry_pubkey_lookup_func_name): New function.
1228         (gcry_pubkey_lookup_id): New function.
1229         (gcry_pubkey_lookup_name): New function.
1230         (gcry_pubkey_id_new): New function.
1231         (gcry_pubkey_register): New function.
1232         (gcry_pubkey_unregister): New function.
1233         (gcry_pk_map_name): Adjusted to use new module management.
1234         (gcry_pk_algo_name): Likewise.
1235         (disable_pubkey_algo): Likewise.
1236         (check_pubkey_algo): Likewise.
1237         (pubkey_get_npkey): Likewise.
1238         (pubkey_get_nskey): Likewise.
1239         (pubkey_get_nsig): Likewise.
1240         (pubkey_get_nenc): Likewise.
1241         (pubkey_generate): Likewise.
1242         (pubkey_check_secret_key): Likewise.
1243         (pubkey_encrypt): Likewise.
1244         (pubkey_decrypt): Likewise.
1245         (pubkey_sign): Likewise.
1246         (pubkey_verify): Likewise.
1247         (gcry_pk_get_nbits): Likewise.
1248         (gcry_pk_algo_info): Likewise.
1249
1250         * md.c: Removed struct md_digest_list_s.
1251         (digest_list): Changed definition.
1252         (digests_registered, default_digests_registered): New variables.
1253         (REGISTER_DEFAULT_DIGESTS): New macro.
1254         (new_list_item): Removed function.
1255         (setup_md_table): Removed function.
1256         (load_digest_module): Removed function.
1257         (gcry_digest_register_default): New function.
1258         (gcry_digest_lookup_func_id): New function.
1259         (gcry_digest_lookup_func_name): New function.
1260         (gcry_digest_lookup_id): New function.
1261         (gcry_digest_lookup_name): New function.
1262         (gcry_digest_id_new): New function.
1263         (gcry_digest_register): New function.
1264         (gcry_digest_unregister): New function.
1265         (GcryDigestEntry): New type.
1266         (struct gcry_md_context): Adjusted type of `list'.
1267         (gcry_md_map_name): Adjusted to use new module management.
1268         (digest_algo_to_string): Likewise.
1269         (check_digest_algo): Likewise.
1270         (md_enable): Likewise.
1271         (md_digest_length): Likewise.
1272         (md_asn_oid): Likewise.
1273
1274 2003-04-07  Moritz Schulte  <moritz@g10code.com>
1275
1276         * pubkey.c: Replaced PUBKEY_ALGO_DSA with GCRY_PK_DSA,
1277         PUBKEY_ALGO_RSA with GCRY_PK_RSA and PUBKEY_ALGO_ELGAMAL with
1278         GCRY_PK_ELG.
1279
1280         * dsa.c: Replaced PUBKEY_ALGO_DSA with GCRY_PK_DSA.
1281
1282 2003-04-01  Moritz Schulte  <moritz@g10code.com>
1283
1284         * des.c: Removed checks for GCRY_CIPHER_3DES and GCRY_CIPHER_DES.
1285
1286 2003-03-31  Moritz Schulte  <moritz@g10code.com>
1287
1288         * tiger.c (tiger_get_info): Do not declare static.
1289         * sha256.c (sha256_get_info): Likewise.
1290         * sha1.c (sha1_get_info): Likewise.
1291         * rmd160.c (rmd160_get_info): Likewise.
1292         * md5.c (md5_get_info): Likewise.
1293         * md4.c (md4_get_info): Likewise.
1294         * crc.c (crc_get_info): Likewise.
1295
1296         * md.c (load_digest_module): Call setup_md_table during
1297         initialization.
1298         (new_list_item): Link new element into digest_list.
1299
1300         * cipher.c (do_ctr_decrypt): Made do_ctr_encrypt act as a wrapper
1301         for do_ctr_encrypt, since these functions are identical.
1302
1303 2003-03-30  Simon Josefsson  <jas@extundo.com>
1304
1305         * cipher.c (struct gcry_cipher_handle): Add counter field.
1306         (gcry_cipher_open): Add CTR.
1307         (cipher_reset): Clear counter field.
1308         (do_ctr_encrypt, do_ctr_decrypt): New functions.
1309         (cipher_encrypt, cipher_decrypt): Call CTR functions.
1310         (gcry_cipher_ctl): Add SET_CTR to set counter.
1311
1312 2003-03-30  Moritz Schulte  <moritz@g10code.com>
1313
1314         * rsa.c (_gcry_rsa_blind): New function.
1315         (_gcry_rsa_unblind): New function.
1316         (_gcry_rsa_decrypt): Use _gcry_rsa_blind and _gcry_rsa_decrypt.
1317
1318 2003-03-26  Moritz Schulte  <moritz@g10code.com>
1319
1320         * dynload.c (_gcry_enum_gnupgext_pubkeys): Adjust `encrypt' and
1321         `decrypt' function arguments.
1322         (_gcry_enum_gnupgext_pubkeys): Likewise.
1323         * dynload.h: Likewise.
1324         
1325         * pubkey.c (dummy_decrypt): Add argument: int flags.
1326         (dummy_encrypt): Likewise.
1327
1328         * elgamal.c (_gcry_elg_encrypt): Add argument: int flags.
1329         (_gcry_elg_decrypt): Likewise.
1330
1331         * rsa.c (_gcry_rsa_encrypt): Add argument: int flags.
1332         (_gcry_rsa_decrypt): Likewise.
1333
1334         * pubkey.c: Add `flags' argument to members `encrypt' and
1335         `decrypt' of struct `pubkey_table_s'.
1336
1337         * rsa.h: Add `flags' argument to function declarations.
1338         * elgamal.h: Likewise.
1339
1340         * pubkey.c (sexp_data_to_mpi): New variable: int parsed_flags.
1341         (sexp_data_to_mpi): Set `parsed_flags'.
1342         (sexp_data_to_mpi): New argument: int *flags.
1343         (gcry_pk_encrypt): New variable: int flags.
1344         (gcry_pk_encrypt): Pass `flags' to pubkey_encrypt.
1345         (pubkey_encrypt): New variable: int flags.
1346         (pubkey_encrypt): Pass `flags' to pubkey encrypt function.
1347         (pubkey_decrypt): Likewise.
1348         (pubkey_decrypt): Pass `flags' to pubkey encrypt function.
1349         (gcry_pk_encrypt): Include `flags' s-exp in return list.
1350         (sexp_to_enc): New argument: int *flags.
1351         (gcry_pk_decrypt): New variable: int flags.
1352         (gcry_pk_decrypt): Pass `flags' to pubkey_decrypt.
1353         (sexp_to_enc): New variable: int parsed_flags.
1354         (sexp_to_enc): Set `parsed_flags'.
1355
1356 2003-03-22  Simon Josefsson  <jas@extundo.com>
1357
1358         * cipher.c (gcry_cipher_open, do_cbc_encrypt)
1359         (gcry_cipher_encrypt): Support GCRY_CIPHER_CBC_MAC.
1360         (gcry_cipher_ctl): Support GCRYCTL_SET_CBC_MAC.
1361
1362 2003-03-19  Werner Koch  <wk@gnupg.org>
1363
1364         * primegen.c (gen_prime): New args EXTRA_CHECK and EXTRA_CHECK_ARG
1365         to allow for a user callback.  Changed all callers.
1366         (_gcry_generate_secret_prime)
1367         (_gcry_generate_public_prime): Ditto, pass them to gen_prime.
1368         * rsa.c (check_exponent): New.
1369         (generate): Use a callback to ensure that a given exponent is
1370         actually generated.
1371
1372 2003-03-12  Moritz Schulte  <moritz@g10code.com>
1373
1374         * primegen.c: Initialize `no_of_small_prime_numbers' statically.
1375         (gen_prime): Remove calculation of `no_of_small_prime_numbers'.
1376
1377 2003-03-03  Moritz Schulte  <moritz@g10code.com>
1378
1379         * md.c (gcry_md_ctl): Rewritten to use same style like the other
1380         functions dispatchers.
1381
1382 2003-03-02  Moritz Schulte  <moritz@g10code.com>
1383
1384         * cipher.c (struct gcry_cipher_handle): New member: algo_index.
1385         (gcry_cipher_open): Allocate memory for two cipher contexts.
1386         Initialize algo_index.
1387         (cipher_setkey): Duplicate context into reserved memory.
1388         (cipher_reset): New function, which resets the context and clear
1389         the IV.
1390         (gcry_cipher_ctl): Call cipher_reset.
1391
1392 2003-02-23  Moritz Schulte  <moritz@g10code.com>
1393
1394         * cipher.c: Remove (bogus) `digitp' macro definition.
1395         * md.c: Likewise.
1396
1397         * blowfish.c (burn_stack): Removed.
1398         * arcfour.c (burn_stack): Likewise.
1399         * cast5.c (burn_stack): Likewise.
1400         * des.c (burn_stack): Likewise.
1401         * md4.c (burn_stack): Likewise.
1402         * md5.c (burn_stack): Likewise.
1403         * random.c (burn_stack): Likewise.
1404         * rijndael.c (burn_stack): Likewise.
1405         * rmd160.c (burn_stack): Likewise.
1406         * sha1.c (burn_stack): Likewise.
1407         * sha256.c (burn_stack): Likewise.
1408         * tiger.c (burn_stack): Likewise.
1409         * twofish.c (burn_stack): Likewise.
1410
1411         * blowfish.c: Changed all occurences of burn_stack to
1412         _gcry_burn_stack.
1413         * arcfour.c: Likewise.
1414         * cast5.c: Likewise.
1415         * des.c: Likewise.
1416         * md4.c: Likewise.
1417         * md5.c: Likewise.
1418         * random.c: Likewise.
1419         * rijndael.c: Likewise.
1420         * rmd160.c: Likewise.
1421         * sha1.c: Likewise.
1422         * sha256.c: Likewise.
1423         * tiger.c: Likewise.
1424         * twofish.c: Likewise.
1425
1426         * arcfour.c (_gcry_arcfour_get_info): Use GCRY_CIPHER_ARCFOUR
1427         instead of hard-coded value `301'.
1428
1429 2003-01-24  Werner Koch  <wk@gnupg.org>
1430
1431         * random.c (_gcry_register_random_progress): New.
1432         (_gcry_random_progress): New.
1433
1434         * rndlinux.c (gather_random): Call the random progress function. 
1435
1436 2003-01-23  Werner Koch  <wk@gnupg.org>
1437
1438         * rsa.c (generate): New arg USE_E to request a specific public
1439         exponent.
1440         (_gcry_rsa_generate): Ditto.
1441         * elgamal.c (_gcry_elg_generate): Must add an dummy argument
1442         instead of USE_E.
1443         * dsa.c (_gcry_dsa_generate): Ditto.
1444         * pubkey.c (dummy_generate): Ditto.
1445         (pubkey_generate): Add USE_E arg and pass it down.
1446         (gcry_pk_genkey): Detect "rsa-use-e" parameter and pass it to generate.
1447
1448         * pubkey.c (sexp_to_enc): New arg RET_MODERN.
1449         (gcry_pk_decrypt): Make use of it to return a real S-expression.
1450         Return better error codes.
1451         (gcry_pk_verify): Return better error codes.
1452
1453 2003-01-21  Werner Koch  <wk@gnupg.org>
1454
1455         * random.c (gcry_random_add_bytes): Add QUALITY argument, let
1456         function return an error code and disable its core for now.
1457
1458 2003-01-21  Timo Schulz  <twoaday@freakmail.de>
1459
1460         * random.c (gcry_random_add_bytes): New. Function to add external
1461         random to the pool.
1462         
1463 2003-01-20  Simon Josefsson  <jas@extundo.com>
1464
1465         * crc.c: New.
1466         * Makefile.am (EXTRA_PROGRAMS, EXTRA_crc_SOURCES): Add crc.c.
1467         * md.c (gcry_md_get_algo_dlen): Add values for CRC.
1468
1469 2003-01-20  Werner Koch  <wk@gnupg.org>
1470
1471         * sha256.c: New.
1472         * bithelp.h (ror): New.
1473         * Makfile.am: Add sha256.c.
1474         * md.c (oid_table): Add values for SHA256 et al.
1475         (gcry_md_get_algo_dlen): Likewise
1476
1477 2003-01-20  Werner Koch  <wk@gnupg.org>
1478
1479         * pubkey.c (gcry_pk_get_keygrip): Implemented keygrips for DSA
1480         and ElGamal.
1481
1482 2003-01-17  Werner Koch  <wk@gnupg.org>
1483
1484         * cipher.c (gcry_cipher_encrypt): Reworked so that the output will
1485         never contain the plaintext even if the caller did not checked the
1486         return value.
1487
1488         * md.c (gcry_md_get_algo): Changed error code to GCRYERR_GENERAL
1489         because we don't have an invalid md algo but no algorithm enabled.
1490
1491         * pubkey.c (gcry_pk_genkey): Changed error code for bounds check
1492         of table parameters to GCRYERR_INTERNAL.
1493
1494         * md.c (gcry_md_open): Partly reverted Timo's change from
1495         2002-10-10 by removing the check for the algorithm.  An algorithm
1496         of 0 is allowed and anyway we should not double check it or check
1497         it using a different function.  Also fixed the flags check.
1498
1499         * pubkey.c (gcry_pk_encrypt): Make sure that R_CIPH points to NULL
1500         on error.
1501         (gcry_pk_decrypt): Ditto for R_PLAIN.
1502         (gcry_pk_sign): Ditto for R_SIG.
1503         (gcry_pk_genkey): Ditto for R_KEY.
1504
1505 2003-01-16  Werner Koch  <wk@gnupg.org>
1506
1507         * md.c (gcry_md_write): Changed 2nd argument type to void*.
1508         (gcry_md_hash_buffer): Changed type of boths buffers to void*.
1509         (gcry_md_setkey): Changed 2nd argument type to void*.
1510
1511 2003-01-15  Werner Koch  <wk@gnupg.org>
1512
1513         * pubkey.c (sexp_data_to_mpi): New.  This handles pkcs1 padding.
1514         (gcry_pk_sign, gcry_pk_verify): Use it here.
1515         (gcry_pk_encrypt): And here.
1516         (pubkey_verify): Add debug code.
1517         (sexp_to_enc): Handle flags in the input and return the pkcs1 flag
1518         in a new parameter.
1519         (gcry_pk_decrypt): Prepare for future pkcs1 handling.
1520
1521 2002-12-19  Werner Koch  <wk@gnupg.org>
1522
1523         * random.c (_gcry_random_initialize): New.
1524
1525 2002-12-16  Werner Koch  <wk@gnupg.org>
1526
1527         * cipher.c: Added a Teletrust specific OID for 3DES.
1528
1529 2002-12-12  Werner Koch  <wk@gnupg.org>
1530
1531         * md.c: Added another oddball OIW OID (sha-1WithRSAEncryption).
1532
1533 2002-11-23  Werner Koch  <wk@gnupg.org>
1534
1535         * md.c (load_digest_module): Enlarged checked_algos bitmap.
1536         * md4.c (func_table):  Fixed entry for md4. 
1537         Both by Simon Josephson.
1538         (transform): Copy data to get the alignment straight. Tested only
1539         on i386.
1540
1541 2002-11-10  Simon Josefsson  <jas@extundo.com>
1542
1543         * cipher.c (gcry_cipher_open): Don't reject CTS flag.
1544         (do_cbc_encrypt, do_cbc_decrypt, cipher_encrypt) 
1545         (gcry_cipher_encrypt, cipher_decrypt)
1546         (gcry_cipher_decrypt): Support CTS flag.
1547         (gcry_cipher_ctl): Toggle CTS flag.
1548
1549 2002-11-10  Werner Koch  <wk@gnupg.org>
1550
1551         * md4.c: New. By Simon Josefsson.
1552         * Makefile.am (EXTRA_PROGRAMS): Add md4.c. 
1553         * md.c (oid_table,gcry_md_get_algo_dlen): MD4 support. 
1554
1555 2002-10-14  Werner Koch  <wk@gnupg.org>
1556
1557         * arcfour.c (do_encrypt_stream): Don't use increment op when
1558         assigning to the same variable.
1559
1560 2002-10-10  Timo Schulz  <ts@winpt.org>
1561
1562         * pubkey.c (gcry_pk_genkey): Check boundaries.
1563         
1564         * md.c (gcry_md_open): Check that algo is available and only
1565         valid flag values are used.
1566         (gcry_md_get_algo): Add error handling.
1567         
1568 2002-09-26  Werner Koch  <wk@gnupg.org>
1569
1570         * md.c: Include an OID for TIGER.
1571         * tiger.c (tiger_get_info): Use a regular OID.
1572
1573 2002-09-17  Werner Koch  <wk@gnupg.org>
1574
1575         * random.c: Replaced mutex.h by the new ath.h.  Changed all calls.
1576
1577 2002-09-16  Werner Koch  <wk@gnupg.org>
1578
1579         * arcfour.c (do_encrypt_stream): Use register modifier and modulo.
1580         According to Nikos Mavroyanopoulos this increases perfromace on
1581         i386 system noticable.  And I always tought gcc is clever enough.
1582         * md5.c (transform): Use register modifier.
1583         * rmd160.c (transform): Ditto.
1584         * sha1.c (transform): Ditto.  We hope that there are 6 free registers.
1585         * random.c (gcry_randomize): Rewrote to avoid malloc calls.
1586
1587         * rndlinux.c (gather_random): Replaced remaining fprintfs by log_*.
1588         * arcfour.c (do_arcfour_setkey): Ditto.
1589         * twofish.c (do_twofish_setkey): Ditto.
1590         * rndegd.c (gather_random): Ditto.
1591         * rijndael.c (do_setkey): Ditto.
1592         * random.c (_gcry_random_dump_stats): Ditto. 
1593         * primegen.c (_gcry_generate_elg_prime): Ditto.
1594         * des.c (_gcry_des_get_info): Ditto.
1595         * cast5.c (do_cast_setkey): Ditto.
1596         * blowfish.c (do_bf_setkey): Ditto.
1597
1598 2002-08-26  Werner Koch  <wk@gnupg.org>
1599
1600         * des.c (weak_keys): Fixed one entry in the table and compared
1601         all entries against the literature.
1602         (selftest): Checksum the weak key table.
1603
1604 2002-08-21  Werner Koch  <wk@gnupg.org>
1605
1606         * pubkey.c: Enable keygrip calculation for "openpgp-rsa".
1607
1608 2002-08-17  Werner Koch  <wk@gnupg.org>
1609
1610         * cipher.c (setup_cipher_table): Don't overwrite the DES entry
1611         with the entry for DUMMY.
1612
1613 2002-08-14  Werner Koch  <wk@gnupg.org>
1614
1615         * des.c (do_des_setkey,do_des_encrypt, do_des_decrypt): New.
1616         (_gcry_des_get_info): Support plain old DES.
1617         * cipher.c (setup_cipher_table): Put DES into the table.
1618
1619 2002-07-25  Werner Koch  <wk@gnupg.org>
1620
1621         * rndunix.c (_gcry_rndunix_constructor): Prefixed with _gcry_.
1622         Noted by Stephan Austermuehle.
1623
1624 2002-07-08  Timo Schulz  <ts@winpt.org>
1625
1626         * rndw32.c: Replaced the m_ memory functions with the real 
1627         gcry_ functions. Renamed all g10_ prefixed functions to log_.
1628         
1629 2002-06-12  Werner Koch  <wk@gnupg.org>
1630
1631         * rsa.c (generate): Use e = 65537 for now.
1632
1633 2002-06-11  Werner Koch  <wk@gnupg.org>
1634
1635         * pubkey.c (gcry_pk_get_keygrip): Allow a "protected-private-key".
1636
1637 2002-06-05  Timo Schulz  <ts@winpt.org>
1638
1639         * cipher.c (gcry_cipher_encrypt, gcry_cipher_decrypt):
1640         Check that the input size is a multiple of the blocksize.
1641         
1642 2002-05-23  Werner Koch  <wk@gnupg.org>
1643
1644         * md.c (oid_table): Add an rsadsi OID for MD5.
1645
1646 2002-05-21  Werner Koch  <wk@gnupg.org>
1647
1648         * primegen.c, elgamal.c, dsa.c (progress): Do not print anything
1649         by default.  Pass an extra identifying string to the callback and
1650         reserved 2 argumenst for current and total counters.  Changed the
1651         register function prototype.
1652
1653 2002-05-17  Werner Koch  <wk@gnupg.org>
1654
1655         * rndegd.c (rndegd_constructor): Fixed name of register function
1656         and prefixed the function name with _gcry_.
1657         * rndw32.c (rndw32_constructor): Ditto.
1658         * tiger.c (tiger_constructor): Ditto.
1659
1660         * Makefile.am: Removed all dynamic loading stuff.
1661         * dynload.c: Ditto. Now only used for the constructor system.
1662
1663 2002-05-15  Werner Koch  <wk@gnupg.org>
1664
1665         * random.c (gcry_random_bytes,gcry_random_bytes_secure)
1666         (gcry_randomize): Make sure we are initialized.
1667
1668 2002-05-14  Werner Koch  <wk@gnupg.org>
1669
1670         Changed license of most files to the LGPL.
1671
1672 2002-05-02  Werner Koch  <wk@gnupg.org>
1673
1674         * random.c (_gcry_fast_random_poll): Initialize the module so the
1675         mutex can be used.
1676
1677         * primegen.c (small_prime_numbers): Moved table from smallprime.c
1678         * smallprime.c: File removed.
1679
1680         * des.c (leftkey_swap, rightkey_swap, working_memcmp): Made static.
1681
1682         * cipher.c (gcry_cipher_map_name): Map "RIJNDAEL" to "AES".
1683         * rijndael.c (rijndael_get_info): We do only support a 128 bit
1684         blocksize so it makes sense to change the algorithm strings to
1685         AES.
1686
1687         * tiger.c (tiger_final): Removed superfluous token pasting operators.
1688         * md5.c (md5_final): Ditto.
1689
1690 2002-04-30  Werner Koch  <wk@gnupg.org>
1691
1692         * cipher.c: Fixed list of copyright years.
1693
1694 2002-03-18  Werner Koch  <wk@gnupg.org>
1695
1696         * random.c (initialize): Initialize the new pool lock mutex.
1697         (_gcry_fast_random_poll): Add locking and moved main
1698         code out to...
1699         (do_fast_random_poll): new function.
1700         (read_pool): Use the new function here.
1701         (get_random_bytes): Add locking.
1702         (_gcry_update_random_seed_file): Ditto.
1703
1704 2002-03-11  Werner Koch  <wk@gnupg.org>
1705
1706         * md.c: Add rsaSignatureWithripemd160 to OID table.
1707
1708 2002-02-20  Werner Koch  <wk@gnupg.org>
1709
1710         * sha1.c: Removed a left over comment note.  The code has been
1711         rewritten from scratch in 1998.  Thanks to Niels Möller for
1712         reporting this misleading comment.
1713
1714 2002-02-18  Werner Koch  <wk@gnupg.org>
1715
1716         * rndunix.c (rndunix_constructor): Use the the new prefixed
1717         function name.  Reported by Jordi Mallach.
1718
1719 2002-02-10  Werner Koch  <wk@gnupg.org>
1720
1721         * random.c (mix_pool): Carry an extra failsafe_digest buffer
1722         around to make the function more robust.
1723
1724 2002-02-08  Werner Koch  <wk@gnupg.org>
1725
1726         * random.c (add_randomness): Xor new data into the pool and not
1727         just copy it.  This avoids any choosen input attacks which are not
1728         serious in our setting because an outsider won't be able to mix
1729         data in and even then we keep going with a PRNG.  Thanks to Stefan
1730         Keller for pointing this out.
1731
1732 2002-01-04  Werner Koch  <wk@gnupg.org>
1733
1734         * pubkey.c (gcry_pk_genkey): Do not release skey - it is static.
1735
1736         * primegen.c (gen_prime): Of course we should use set_bit
1737         and not set_highbit to set the second high bit.
1738
1739 2001-12-18  Werner Koch  <wk@gnupg.org>
1740
1741         * rsa.c (generate): Loop until we find the exact modulus size.
1742         Changed the exponent to 41.
1743         (rsa_get_info): s/usage/r_usage/ to avoid shadow warnings.
1744         * primegen.c (gen_prime): Set 2 high order bits for secret primes.
1745
1746         * Makefile.am (DISTCLEANFILES): Include construct.c.
1747
1748 2001-12-17  Werner Koch  <wk@gnupg.org>
1749
1750         * pubkey.c (gcry_pk_get_keygrip): New - experimental.
1751
1752 2001-12-11  Werner Koch  <wk@gnupg.org>
1753
1754         * cipher.c: Added OIDs for AES.
1755         (gcry_cipher_mode_from_oid): New.
1756         (gcry_cipher_map_name): Moved OID search code to ..
1757         (search_oid): .. new function.
1758
1759 2001-12-10  Werner Koch  <wk@gnupg.org>
1760
1761         * pubkey.c (gcry_pk_encrypt): Find the signature algorithm by name
1762         and not by number.
1763         
1764         * pubkey.c (gcry_pk_encrypt,gcry_pk_decrypt,gcry_pk_sign)
1765         (gcry_pk_verify,gcry_pk_testkey, gcry_pk_genkey)
1766         (gcry_pk_get_nbits): Release the arrays.  Noted by Nikos
1767         Mavroyanopoulos.
1768
1769 2001-12-06  Werner Koch  <wk@gnupg.org>
1770
1771         * cipher.c (gcry_cipher_map_name): Look also for OIDs prefixed
1772         with "oid."  or "OID.".
1773
1774 2001-12-05  Werner Koch  <wk@gnupg.org>
1775
1776         * pubkey.c (algo_info_table): Fixed entry for openpgp-rsa. 
1777
1778 2001-11-24  Werner Koch  <wk@gnupg.org>
1779
1780         * pubkey.c: Added the rsaEncryption OID to the tables.
1781         (sexp_to_key): Add an arg to return the index of the algorithm,
1782         changed all callers.
1783         (gcry_pk_sign): Find the signature algorithm by name and not by
1784         number.
1785         (gcry_pk_get_nbits): Fixed so that we can now really pass a secret
1786         key to get the result.
1787         
1788         * md.c (gcry_md_map_name): Look also for OIDs prefixed with "oid."
1789         or "OID." so that an OID string can be used as an S-Exp token.
1790
1791 2001-11-20  Werner Koch  <wk@gnupg.org>
1792
1793         * md.c (gcry_md_map_name): Lookup by OID if the the name begins
1794         with a digit.
1795         (oid_table): New.
1796         
1797 2001-11-16  Werner Koch  <wk@gnupg.org>
1798
1799         * md.c (gcry_md_info): New operator GCRYCTL_IS_ALGO_ENABLED.
1800
1801 2001-11-07  Werner Koch  <wk@gnupg.org>
1802
1803         * md.c (gcry_md_hash_buffer): Close the handle which was left open
1804         for algorithms other than rmd160.
1805
1806 2001-08-08  Werner Koch  <wk@gnupg.org>
1807
1808         * rndw32.c (gather_random): Use toolhelp in addition to the NT
1809         gatherer for Windows2000.  Suggested by Sami Tolvanen.
1810
1811         * random.c (read_pool): Fixed length check, this used to be one
1812         byte to strict.  Made an assert out of it because the caller has
1813         already made sure that only poolsize bytes are requested.
1814         Reported by Marcus Brinkmann.
1815
1816 2001-08-03  Werner Koch  <wk@gnupg.org>
1817
1818         * cipher.c (cipher_encrypt, cipher_decrypt): Prepare to return
1819         errors. We have to change the interface to all ciphers to make
1820         this really work but we should do so to prepare for hardware
1821         encryption modules.
1822         (gcry_cipher_encrypt, gcry_cipher_decrypt): Return the error and
1823         set lasterr. 
1824         (gcry_cipher_ctl): Make sure that errors from setkey are returned.
1825
1826 2001-08-02  Werner Koch  <wk@gnupg.org>
1827
1828         * rndlinux.c (gather_random): casted a size_t arg to int so that
1829         the format string is correct.  Casting is okay here and avoids
1830         translation changes. 
1831
1832         * random.c (fast_random_poll): Do not check the return code of
1833         getrusage.
1834
1835         * rndunix.c: Add a signal.h header to avoid warnings on Solaris 7
1836         and 8.
1837
1838         * tiger.c (print_abc,print_data): Removed.
1839
1840         * rijndael.c, des.c, blowfish.c, twofish.c, cast5.c, arcfour.c
1841         (burn_stack): New.  Add wrappers for most functions to be able to
1842         call burn_stack after the function invocation. This methods seems
1843         to be the most portable way to zeroise the stack used. It does
1844         only work on stack frame based machines but it is highly portable
1845         and has no side effects.  Just setting the automatic variables at
1846         the end of a function to zero does not work well because the
1847         compiler will optimize them away - marking them as volatile would
1848         be bad for performance.
1849         * md5.c, sha1.c, rmd160.c, tiger.c (burn_stack): Likewise.
1850         * random.c (burn_stack): New.
1851         (mix_pool): Use it here to burn the stack of the mixblock function.
1852
1853         * primegen.c (_gcry_generate_elg_prime): Freed q at 3 places.
1854         Thanks to Tommi Komulainen.
1855
1856         * arcfour.c (arcfour_setkey): Check the minimim keylength against
1857         bytes and not bits.
1858         (selftest): Must reset the key before decryption. 
1859
1860 2001-05-31  Werner Koch  <wk@gnupg.org>
1861
1862         * sha1.c (sha1_init): Made static.
1863
1864         Changed all g10_ prefixed function names as well as some mpi_
1865         function names to cope with the introduced naming changes.
1866         
1867         * md.c (prepare_macpads): Made key const.
1868
1869 2001-05-28  Werner Koch  <wk@gnupg.org>
1870
1871         * rndegd.c (gather_random): Removed the use of tty_printf.
1872
1873 2001-03-29  Werner Koch  <wk@gnupg.org>
1874
1875         * md5.c (md5_final): Fixed calculation of hashed length.  Thanks
1876         to disastry@saiknes.lv for pointing out that it was horrible wrong
1877         for more than 512MB of input.
1878         * sha1.c (sha1_final): Ditto.
1879         * rmd160.c (rmd160_final): Ditto.
1880         * tiger.c (tiger_final): Ditto.
1881
1882         * blowfish.c (encrypt,do_encrypt): Changed name to do_encrypt to
1883         avoid name clashes with an encrypt function in stdlib.h of
1884         Dynix/PIX.  Thanks to Gene Carter.
1885         * elgamal.c (encrypt,do_encrypt): Ditto.
1886
1887         * twofish.c (gnupgext_enum_func): Use only when when compiled as a
1888         module.
1889         * rijndael.c (gnupgext_enum_func): Ditto.
1890
1891         * tiger.c (tiger_get_info): Return "TIGER192" and not just
1892         "TIGER".  By Edwin Woudt.
1893         
1894         * random.c: Always include time.h - standard requirement.  Thanks
1895         to James Troup.
1896
1897         * rndw32.c: Fixes to the macros.
1898
1899 2001-01-11  Werner Koch  <wk@gnupg.org>
1900
1901         * cipher.c (cipher_encrypt,gcry_cipher_encrypt): Use blocksize and
1902         not 8.
1903
1904 2000-12-19  Werner Koch  <wk@gnupg.org>
1905
1906         Major change:
1907         Removed all GnuPG stuff and renamed this piece of software
1908         to gcrypt. 
1909
1910 2000-11-14  Werner Koch  <wk@gnupg.org>
1911
1912         * dsa.c (test_keys): Replaced mpi_alloc by gcry_mpi_new and
1913         mpi_free by gcry_mpi_release.
1914         * elgamal.c (test_keys,generate): Ditto, also for mpi_alloc_secure.
1915         * rsa.c (test_keys,generate,rsa_verify): Ditto.
1916         * primegen.c (generate_elg_prime): Ditto.
1917         (gen_prime): Ditto and removed nlimbs.
1918
1919         * rsa.c (generate): Allocate 2 more vars in secure memory.
1920
1921         * Makefile.am (OMIT_DEPENDENCIES): Hack to work around dependency
1922         problems.
1923
1924 2000-10-09  Werner Koch  <wk@gnupg.org>
1925
1926         * arcfour.c, arcfour.h: New.
1927         * cipher.c (cipher_encrypt, cipher_decrypt): Add stream mode.
1928         (setup_cipher_table): Add Arcfour.
1929         (gcry_cipher_open): Kludge to allow stream mode.
1930
1931 Wed Oct  4 13:16:18 CEST 2000  Werner Koch  <wk@openit.de>
1932
1933         * sha1.c (transform): Use rol() macro.  Actually this is not needed
1934         for a newer gcc but there are still aoter compilers.
1935
1936         * rsa.c (test_keys): Use new random function. 
1937
1938         * md.c (gcry_md_setkey): New function to overcome problems with
1939         const conflics.  
1940         (gcry_md_ctl): Pass set key to the new functions.
1941
1942         * rijndael.c: New.
1943         * cipher.c: Add Rijndael support.
1944
1945 Mon Sep 18 16:35:45 CEST 2000  Werner Koch  <wk@openit.de>
1946
1947         * rndlinux.c (open_device): Loose random device checking.
1948         By Nils Ellmenreich.
1949
1950         * random.c (fast_random_poll): Check ENOSYS for getrusage.
1951         * rndunix.c:  Add 2 sources for QNX. By Sam Roberts.
1952
1953         * pubkey.c (gcry_pk_algo_info): Add GCRYCTL_GET_ALGO_USAGE.
1954
1955         * rsa.c: Changed the comment about the patent.
1956         (secret): Speed up by using the CRT.  For a 2k keys this
1957         is about 3 times faster.
1958         (stronger_key_check): New but unused code to check the secret key.
1959         * Makefile.am: Included rsa.[ch].
1960         * pubkey.c: Enabled RSA support.
1961         (pubkey_get_npkey): Removed RSA workaround.
1962
1963 Mon Jul 31 10:04:47 CEST 2000  Werner Koch  <wk@openit.de>
1964
1965   * pubkey.c: Replaced all gcry_sexp_{car,cdr}_{data,mpi} by the new
1966   gcry_sexp_nth_{data,mpi} functions.
1967
1968 Tue Jul 25 17:44:15 CEST 2000  Werner Koch  <wk@openit.de>
1969
1970   * pubkey.c (exp_to_key,sexp_to_sig,sexp_to_enc,gcry_pk_encrypt,
1971     gcry_pk_decrypt,gcry_pk_sign,gcry_pk_genkey): Changed to work with
1972     the new S-Exp interface.
1973
1974 Mon Jul 17 16:35:47 CEST 2000  Werner Koch  <wk@>
1975
1976   * random.c (gather_faked): Replaced make_timestamp by time(2) again.
1977
1978 Fri Jul 14 19:38:23 CEST 2000  Werner Koch  <wk@>
1979
1980   * md.c (gcry_md_ctl): Support GCRYCTL_{START,STOP}_DUMP.
1981
1982   * Makefile.am: Never compile mingw32 as module.
1983
1984   * Makefile.am: Tweaked module build and removed libtool
1985
1986   * Makefile.am:  Replaced -O1 by -O. Suggested by Alec Habig.
1987
1988   * elgamal.c (sign): Removed inactive code.
1989
1990   * rsa.c, rsa.h: New based on the old module version (only in CVS for now).
1991   * pubkey.c (setup_pubkey_table): Added commented support for RSA.
1992
1993   * rndunix.c (waitpid): New. For UTS 2.1.  All by Dave Dykstra.
1994   (my_popen): Do the FD_CLOEXEC only if it is available
1995   (start_gatherer): Cope with missing _SC_OPEN_MAX
1996
1997   * rndunix.c: Add some more headers for QNX. By Sam Roberts.
1998
1999   * rndegd.c (gather_random): Shortcut level 0.
2000   * rndunix.c (gather_random): Ditto.
2001   * rndw32.c (gather_random): Ditto.
2002
2003   * rndw32.c: Replaced with code from Cryptlib and commented the old stuff.
2004   * rndw32.c: Add some debuging code enabled by an environment variable.
2005
2006   * random.c (read_seed_file): Binary open for DOSish system
2007   (update_random_seed_file): Ditto.
2008   * random.c [MINGW32]: Include process.h for getpid.
2009   * random.c (fast_random_poll): Add clock_gettime() as fallback for
2010   system which support this POSIX.4 fucntion. By Sam Roberts.
2011
2012   * random.c (read_seed_file): Removed the S_ISLNK test becuase it
2013   is already covered by !S_ISREG and is not defined in Unixware.
2014   Reported by Dave Dykstra.
2015   (update_random_seed_file): Silently ignore update request when pool
2016   is not filled.
2017
2018   * random.c (read_seed_file): New.
2019   (set_random_seed_file): New.
2020   (read_pool): Try to read the seeding file.
2021   (update_random_seed_file): New.
2022
2023   (read_pool): Do an initial extra seeding when level 2 quality random
2024   is requested the first time.  This requestes at least POOLSIZE/2 bytes
2025   of entropy.  Compined with the seeding file this should make normal
2026   random bytes cheaper and increase the quality of the random bytes
2027   used for key generation.
2028
2029   * random.c (read_pool): Print a more friendly error message in
2030   cases when too much random is requested in one call.
2031
2032   * random.c (fast_random_poll): Check whether RUSAGE_SELF is defined;
2033   this is not the case for some ESIX and Unixware, although they have
2034   getrusage().
2035
2036   * primegen.c (generate_elg_prime): All primes are now generated with
2037   the lowest random quality level.  Because they are public anyway we
2038   don't need stronger random and by this we do not drain the systems
2039   entropy so much.
2040
2041   * primegen.c (register_primegen_progress): New.
2042   * dsa.c (register_pk_dsa_progress): New.
2043   * elgamal.c (register_pk_elg_progress): New.
2044
2045   * elgamal.c (wiener_map): New.
2046   (gen_k): Use a much smaller k.
2047   (generate): Calculate the qbits using the wiener map and
2048   choose an x at a size comparable to the one choosen in gen_k
2049
2050   * rmd160.c (rmd160_get_info): Moved casting to the left side due to a
2051   problem with UTS4.3.  Suggested by Dave Dykstra.
2052   * sha1.c (sha1_get_info): Ditto.
2053   * tiger.c (tiger_get_info): Ditto.
2054   * md5.c (md5_get_info): Ditto
2055   * des.c (des_get_info): Ditto.
2056   * blowfish.c (blowfish_get_info): Ditto.
2057   * cast5.c (cast5_get_info): Ditto.
2058   * twofish.c (twofish_get_info): Ditto.
2059
2060 Fri Mar 24 11:25:45 CET 2000  Werner Koch  <wk@openit.de>
2061
2062         * md.c (md_open): Add hmac arg and allocate space for the pads.
2063         (md_finalize): Add HMAC support.
2064         (md_copy): Ditto.
2065         (md_close): Ditto.
2066         (gcry_md_reset): Ditto.
2067         (gcry_md_ctl): Ditto.
2068         (prepare_macpdas): New.
2069
2070 Mon Mar 13 19:22:46 CET 2000  Werner Koch  <wk@openit.de>
2071
2072         * md.c (gcry_md_hash_buffer): Add support for the other algorithms.
2073
2074 Mon Jan 31 16:37:34 CET 2000  Werner Koch  <wk@gnupg.de>
2075
2076         * genprime.c (generate_elg_prime): Fixed returned factors which never
2077         worked for non-DSA keys.
2078
2079 Thu Jan 27 18:00:44 CET 2000  Werner Koch  <wk@gnupg.de>
2080
2081         * pubkey.c (sexp_to_key): Fixed mem leaks in case of errors.
2082
2083 Mon Jan 24 22:24:38 CET 2000  Werner Koch  <wk@gnupg.de>
2084
2085         * pubkey.c (gcry_pk_decrypt): Implemented.
2086         (gcry_pk_encrypt): Implemented.
2087         (gcry_pk_testkey): New.
2088         (gcry_pk_genkey): New.
2089         (pubkey_decrypt): Made static.
2090         (pubkey_encrypt): Ditto.
2091         (pubkey_check_secret_key): Ditto.
2092         (pubkey_generate): Ditto.
2093
2094 Mon Jan 24 13:04:28 CET 2000  Werner Koch  <wk@gnupg.de>
2095
2096         * pubkey.c (pubkey_nbits): Removed and replaced by ...
2097         (gcry_pk_get_nbits): this new one.
2098
2099 Wed Dec  8 21:58:32 CET 1999  Werner Koch  <wk@gnupg.de>
2100
2101         * dsa.c: s/mpi_powm/gcry_mpi_powm/g
2102         * elgamal.c: Ditto.
2103         * primegen.c: Ditto.
2104
2105         * : Replaced g10_opt_verbose by g10_log_verbosity().
2106
2107         * Makefile.am (INCLUDES): removed intl, add ../gcrypt
2108
2109 Fri Nov 19 17:15:20 CET 1999  Werner Koch  <wk@gnupg.de>
2110
2111         * dynload.c (cmp_filenames): New to replaced compare_filename() in
2112         module.
2113         (register_cipher_extension): Removed the tilde expansion stuff.
2114         * rndeg.c (my_make_filename): New.
2115
2116         * : Replaced header util.h by g10lib.h
2117
2118         * random.c (gather_faked): Replaced make_timestamp by time(2).
2119         Disabled wrning printed with tty_printf.
2120         * rndlinux.c (gather_random): Always use fprintf instead of tty_xxx;
2121         this should be replaced by a callback function.
2122
2123         * primegen.c (gen_prime): Use gcry_mpi_randomize.
2124         (is_prime): Ditto.
2125         * elgamal.c (test_keys): Ditto.
2126         * dsa.c (test_keys): Ditto.
2127
2128         * cipher.c (gcry_cipher_close): Die on invalid handle.
2129
2130 Mon Nov 15 21:36:02 CET 1999  Werner Koch  <wk@gnupg.de>
2131
2132         * elgamal.c (gen_k): Use the new random API.
2133         (generate): Ditto.
2134         * dsa.c (gen_k): Ditto.
2135         (generate): Ditto.
2136
2137 Sat Nov 13 17:44:23 CET 1999  Werner Koch  <wk@gnupg.de>
2138
2139         * pubkey.c (disable_pubkey_algo): Made static.
2140         (gcry_pk_ctl): New.
2141
2142         * random.c (get_random_bits): Renamed to ...
2143         (get_random_bytes): ... this and made static.
2144         (gcry_random_bytes): New.
2145         (gcry_random_bytes_secure): New.
2146         (randomize_buffer): Renamed to ...
2147         (gcry_randomize): ...this.
2148
2149         * md.c (gcry_md_hash_buffer): New.
2150
2151         * pubkey.c (gcry_pk_algo_info): 4 new commands.
2152         (pubkey_get_npkey): Made static.
2153         (pubkey_get_nskey): Made static.
2154         (pubkey_get_nsig): Made static.
2155         (pubkey_get_nenc): Made static.
2156
2157         * pubkey.c: Removed all G10ERR_xxx.
2158         * cipher.c: Changed all GCRYERR_INV_ALGO to GCRYERR_INV_CIPHER_ALGO.
2159         * md.c: Changed all GCRYERR_INV_ALGO to GCRYERR_INV_MD_ALGO.
2160         * cast5.c (cast_setkey): Changed errocodes to GCRYERR_xxx.
2161         * blowfish.c: Ditto.
2162         * des.c: Ditto.
2163         * twofish.c: Ditto.
2164         * dsa.c: Ditto.
2165         * elgamal.c: Ditto.
2166
2167         * g10c.c: Removed
2168
2169         * cipher.c (gcry_cipher_open): Replaced alloc functions and return NULL
2170         if we are out of core.
2171         * dynload.c: Replaced all memory allocation functions.
2172         * md.c: Ditto.
2173         * primegen.c: Ditto.
2174         * pubkey.c: Ditto.
2175         * random.c: Ditto.
2176         * rndw32.c: Ditto.
2177         * elgamal.c: Ditto.
2178         * dsa.c: Ditto.
2179
2180 Tue Oct 26 14:10:21 CEST 1999  Werner Koch  <wk@gnupg.de>
2181
2182         * elgamal.c (sign): Hugh found strange code here. Replaced by BUG().
2183
2184         * cipher.c: Merged with gcrypt/symapi.c.
2185
2186         * pubkey.c (string_to_pubkey_algo): Renamed function to ...
2187         (gcry_pk_map_name): ... this.
2188         (pubkey_algo_to_string): Renamed function to ...
2189         (gcry_pk_algo_name): ... this.
2190         (gcry_pk_algo_info): New.
2191         * pubkey.c: Merged with gcrypt/pkapi.c.
2192
2193         * md.c (md_reset): Clear finalized; thanks to Ulf Moeller for
2194         fixing this bug.
2195
2196         * md.c: Merged with gcrypt/mdapi.c
2197
2198 Wed Sep 15 14:39:59 CEST 1999  Michael Roth <mroth@nessie.de>
2199
2200         * des.c: Various speed improvements: One bit pre rotation
2201           trick after initial permutation (Richard Outerbridge).
2202           Finished test of SSLeay Tripple-DES patterns.
2203
2204 Wed Sep 15 16:22:17 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
2205
2206         * rndw32.c: New.
2207
2208 Mon Sep 13 10:51:29 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
2209
2210         * bithelp.h: New.
2211         * rmd160.h, sha1.h, md5.h: Use the rol macro from bithelp.h
2212
2213 Tue Sep  7 16:23:36 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
2214
2215         * Makefile.am: Fixed seds for latest egcc. By Ollivier Robert.
2216
2217 Mon Sep  6 19:59:08 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
2218
2219         * des.c (selftest): Add some testpattern
2220
2221 Mon Aug 30 20:38:33 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
2222
2223         * cipher.c (do_cbc_encrypt): Fixed serious bug occuring when not using
2224         in place encryption. Pointed out by Frank Stajano.
2225
2226 Mon Jul 26 09:34:46 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
2227
2228         * md5.c (md5_final): Fix for a SCO cpp bug.
2229
2230 Thu Jul 15 10:15:35 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
2231
2232         * elgamal.c (elg_check_secret_key,elg_encrypt
2233         elg_decrypt,elg_sign,elg_verify): Sanity check on the args.
2234         * dsa.c (dsa_check_secret_key,dsa_sign,dsa_verify): Ditto.
2235
2236         * pubkey.c (disable_pubkey_algo): New.
2237         (check_pubkey_algo2): Look at disabled algo table.
2238         * cipher.c (disable_cipher_algo): New.
2239         (check_cipher_algo): Look at disabled algo table.
2240
2241 Wed Jul  7 13:08:40 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
2242
2243         * Makefile.am: Support for libtool.
2244
2245 Fri Jul  2 11:45:54 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
2246
2247         * dsa.c (gen_k): Changed algorithm to consume less random bytes
2248         * elgamal.c (gen_k): Ditto.
2249
2250         * random.c (random_dump_stats): New.
2251
2252 Thu Jul  1 12:47:31 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
2253
2254         * primegen.c, elgamal.c, dsa.c (progess): New and replaced all
2255         fputc with a call to this function.
2256
2257 Sat Jun 26 12:15:59 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
2258
2259         * rndegd.c (do_write): s/ssize_t/int/ due to SunOS 4.1 probs.
2260
2261         * cipher.c (do_cbc_encrypt, do_cbc_decrypt): New.
2262
2263         * dynload.c (HAVE_DL_SHL_LOAD): Map hpux API to dlopen (Dave Dykstra).
2264         * Makefile.am (install-exec-hook): Removed.
2265
2266 Sun May 23 14:20:22 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
2267
2268         * cipher.c (setup_cipher_table): Enable Twofish
2269
2270         * random.c (fast_random_poll): Disable use of times() for mingw32.
2271
2272 Mon May 17 21:54:43 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
2273
2274         * dynload.c (register_internal_cipher_extension): Minor init fix.
2275
2276 Tue May  4 15:47:53 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
2277
2278         * primegen.c (gen_prime): Readded the Fermat test. Fixed the bug
2279         that we didn't correct for step when passing the prime to the
2280         Rabin-Miller test which led to bad performance (Stefan Keller).
2281         (check_prime): Add a first Fermat test.
2282
2283 Sun Apr 18 10:11:28 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
2284
2285         * cipher.c (cipher_setiv): Add ivlen arg, changed all callers.
2286
2287         * random.c (randomize_buffer): alway use secure memory because
2288         we can't use m_is_secure() on a statically allocated buffer.
2289
2290         * twofish.c: Replaced some macros by a loop to reduce text size.
2291         * Makefile.am (twofish): No more need for sed editing.
2292
2293 Fri Apr  9 12:26:25 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
2294
2295         * cipher.c (cipher_open): Reversed the changes for AUTO_CFB.
2296
2297         * blowfish.c: Dropped the Blowfish 160 mode.
2298         * cipher.c (cipher_open): Ditto.
2299         (setup_cipher_table): Ditto.  And removed support of twofish128
2300
2301 Wed Apr  7 20:51:39 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
2302
2303         * random.c (get_random_bits): Can now handle requests > POOLSIZE
2304
2305         * cipher.c (cipher_open): Now uses standard CFB for automode if
2306         the blocksize is gt 8 (according to rfc2440).
2307
2308         * twofish.c: Applied Matthew Skala's patches for 256 bit key.
2309
2310 Tue Apr  6 19:58:12 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
2311
2312         * random.c (get_random_bits): Can now handle requests > POOLSIZE
2313
2314         * cipher.c (cipher_open): Now uses standard CFB for automode if
2315         the blocksize is gt 8 (according to rfc2440).
2316
2317 Sat Mar 20 11:44:21 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
2318
2319         * rndlinux.c (tty_printf) [IS_MODULE]: Removed.
2320
2321         * rndegd.c (gather_random): Some fixes.
2322
2323 Wed Mar 17 13:09:03 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
2324
2325         * rndegd.c (do_read): New.
2326         (gather_random): Changed the implementation.
2327
2328 Mon Mar  8 20:47:17 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
2329
2330         * dynload.c (DLSYM_NEEDS_UNDERSCORE): Renamed.
2331
2332 Fri Feb 26 17:55:41 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
2333
2334         * md.c: Nearly a total rewrote.
2335
2336 Wed Feb 24 11:07:27 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
2337
2338         * cipher.c (context): Fixed alignment
2339         * md.c: Ditto.
2340
2341         * rndegd.c: New
2342
2343 Mon Feb 22 20:04:00 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
2344
2345         * rndegd.c: New.
2346
2347 Wed Feb 10 17:15:39 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
2348
2349         * Makefile.am: Modules are now figured out by configure
2350         * construct.c: New. Generated by configure. Changed all modules
2351         to work with that.
2352         * sha1.h: Removed.
2353         * md5.h: Removed.
2354
2355         * twofish.c: Changed interface to allow Twofish/256
2356
2357         * rndunix.c (start_gatherer): Die on SIGPIPE.
2358
2359 Wed Jan 20 18:59:49 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
2360
2361         * rndunix.c (gather_random): Fix to avoid infinite loop.
2362
2363 Sun Jan 17 11:04:33 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
2364
2365         * des.c (is_weak_key): Replace system memcmp due to bugs
2366         in SunOS's memcmp.
2367         (des_get_info): Return error on failed selftest.
2368         * twofish.c (twofish_setkey): Return error on failed selftest or
2369         invalid keylength.
2370         * cast5.c (cast_setkey): Ditto.
2371         * blowfish.c (bf_setkey): Return error on failed selftest.
2372
2373 Tue Jan 12 11:17:18 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
2374
2375         * random.c (random_is_faked): New.
2376
2377         * tiger.c: Only compile if we have the u64 type
2378
2379 Sat Jan  9 16:02:23 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
2380
2381         * rndunix.c (gather_random): check for setuid.
2382
2383         * Makefile.am: Add a way to staically link random modules
2384
2385 Thu Jan  7 18:00:58 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
2386
2387         * md.c (md_stop_debug): Do a flush first.
2388         (md_open): size of buffer now depends on the secure parameter
2389
2390 Sun Jan  3 15:28:44 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
2391
2392         * rndunix.c (start_gatherer): Fixed stupid ==/= bug
2393
2394 1998-12-31  Geoff Keating  <geoffk@ozemail.com.au>
2395
2396         * des.c (is_weak_key): Rewrite loop end condition.
2397
2398 Tue Dec 29 14:41:47 CET 1998  Werner Koch  <wk@isil.d.shuttle.de>
2399
2400         * random.c: add unistd.h for getpid().
2401         (RAND_MAX): Fallback value for Sun.
2402
2403 Wed Dec 23 17:12:24 CET 1998  Werner Koch  <wk@isil.d.shuttle.de>
2404
2405         * md.c (md_copy): Reset debug.
2406
2407 Mon Dec 14 21:18:49 CET 1998  Werner Koch  <wk@isil.d.shuttle.de>
2408
2409         * random.c (read_random_source): Changed the interface to the
2410         random gathering function.
2411         (gather_faked): Use new interface.
2412         * dynload.c (dynload_getfnc_fast_random_poll): Ditto.
2413         (dynload_getfnc_gather_random): Ditto.
2414         * rndlinux.c (gather_random): Ditto.
2415         * rndunix.c (gather_random): Ditto.
2416
2417 Sat Dec 12 18:40:32 CET 1998  Werner Koch  <wk@isil.d.shuttle.de>
2418
2419         * dynload.c (SYMBOL_VERSION): New to cope with system which needs
2420         underscores.
2421
2422         * rndunix.c: Rewrote large parts
2423
2424 Thu Dec 10 20:15:36 CET 1998  Werner Koch  <wk@isil.d.shuttle.de>
2425
2426         * dynload.c (load_extension): increased needed verbosity level.
2427
2428         * random.c (fast_random_poll): Fallback to a default fast random
2429         poll function.
2430         (read_random_source): Always use the faked entroy gatherer if no
2431         gather module is available.
2432         * rndlinux.c (fast_poll): Removed.
2433         * rndunix.c (fast_poll): Removed.
2434
2435
2436 Wed Nov 25 12:33:41 1998  Werner Koch  (wk@isil.d.shuttle.de)
2437
2438         * rand-*.c: Removed.
2439         * rndlinux.c : New.
2440         * rndunix.c : New.
2441         * random.c : Restructured the interface to the gather modules.
2442         (intialize): Call constructor functions
2443         (read_radnom_source): Moved to here.
2444         * dynload.c (dynload_getfnc_gather_random): New.
2445         (dynload_getfnc_fast_random_poll): New.
2446         (register_internal_cipher_extension): New.
2447         (register_cipher_extension): Support of internal modules.
2448
2449 Sun Nov  8 17:44:36 1998  Werner Koch  (wk@isil.d.shuttle.de)
2450
2451         * rand-unix.c (read_random_source): Removed the assert.
2452
2453 Mon Oct 19 18:34:30 1998  me,,,  (wk@tobold)
2454
2455         * pubkey.c: Hack to allow us to give some info about RSA keys back.
2456
2457 Thu Oct 15 11:47:57 1998  Werner Koch  (wk@isil.d.shuttle.de)
2458
2459         * dynload.c: Support for DLD
2460
2461 Wed Oct 14 12:13:07 1998  Werner Koch  (wk@isil.d.shuttle.de)
2462
2463         * rand-unix.c: Now uses names from configure for /dev/random.
2464
2465 1998-10-10  SL Baur  <steve@altair.xemacs.org>
2466
2467         * Makefile.am: fix sed -O substitutions to catch -O6, etc.
2468
2469 Tue Oct  6 10:06:32 1998  Werner Koch  (wk@isil.d.shuttle.de)
2470
2471         * rand-unix.c (HAVE_GETTIMEOFDAY): Fixed (was ..GETTIMEOFTIME :-)
2472         * rand-dummy.c (HAVE_GETTIMEOFDAY): Ditto.
2473
2474 Mon Sep 28 13:23:09 1998  Werner Koch  (wk@isil.d.shuttle.de)
2475
2476         * md.c (md_digest): New.
2477         (md_reset): New.
2478
2479 Wed Sep 23 12:27:02 1998  Werner Koch  (wk@isil.d.shuttle.de)
2480
2481         * tiger.c (TIGER_CONTEXT): moved "buf", so that it is 64 bit aligned.
2482
2483 Mon Sep 21 06:22:53 1998  Werner Koch  (wk@(none))
2484
2485         * des.c: Some patches from Michael.
2486
2487 Thu Sep 17 19:00:06 1998  Werner Koch  (wk@(none))
2488
2489         * des.c : New file from Michael Roth <mroth@nessie.de>
2490
2491 Mon Sep 14 11:10:55 1998  Werner Koch  (wk@(none))
2492
2493         * blowfish.c (bf_setkey): Niklas Hernaeus patch to detect weak keys.
2494
2495 Mon Sep 14 09:19:25 1998  Werner Koch  (wk@(none))
2496
2497         * dynload.c (RTLD_NOW): Now defined to 1 if it is undefined.
2498
2499 Mon Sep  7 17:04:33 1998  Werner Koch  (wk@(none))
2500
2501         * Makefile.am: Fixes to allow a different build directory
2502
2503 Thu Aug  6 17:25:38 1998  Werner Koch,mobil,,,  (wk@tobold)
2504
2505         * random.c (get_random_byte): Removed and changed all callers
2506         to use get_random_bits()
2507
2508 Mon Jul 27 10:30:22 1998  Werner Koch  (wk@(none))
2509
2510         * cipher.c : Support for other blocksizes
2511         (cipher_get_blocksize): New.
2512         * twofish.c: New.
2513         * Makefile.am: Add twofish module.
2514
2515 Mon Jul 13 21:30:52 1998  Werner Koch  (wk@isil.d.shuttle.de)
2516
2517         * random.c (read_pool): Simple alloc if secure_alloc is not set.
2518         (get_random_bits): Ditto.
2519
2520 Thu Jul  9 13:01:14 1998  Werner Koch  (wk@isil.d.shuttle.de)
2521
2522         * dynload.c (load_extension): Function now nbails out if
2523         the program is run setuid.
2524
2525 Wed Jul  8 18:58:23 1998  Werner Koch  (wk@isil.d.shuttle.de)
2526
2527         * rmd160.c (rmd160_hash_buffer): New.
2528
2529 Thu Jul  2 10:50:30 1998  Werner Koch  (wk@isil.d.shuttle.de)
2530
2531         * cipher.c (cipher_open): algos >=100 use standard CFB
2532
2533 Thu Jun 25 11:18:25 1998  Werner Koch  (wk@isil.d.shuttle.de)
2534
2535         * Makefile.am: Support for extensions
2536
2537 Thu Jun 18 12:09:38 1998  Werner Koch  (wk@isil.d.shuttle.de)
2538
2539         * random.c (mix_pool): simpler handling for level 0
2540
2541 Mon Jun 15 14:40:48 1998  Werner Koch  (wk@isil.d.shuttle.de)
2542
2543         * tiger.c: Removed from dist, will reappear as dynload module
2544
2545 Sat Jun 13 14:16:57 1998  Werner Koch  (wk@isil.d.shuttle.de)
2546
2547         * pubkey.c: Major changes to allow extensions. Changed the inteface
2548         of all public key ciphers and added the ability to load extensions
2549         on demand.
2550
2551         * misc.c: Removed.
2552
2553 Wed Jun 10 07:52:08 1998  Werner Koch,mobil,,,  (wk@tobold)
2554
2555         * dynload.c: New.
2556         * cipher.c: Major changes to allow extensions.
2557
2558 Mon Jun  8 22:43:00 1998  Werner Koch  (wk@isil.d.shuttle.de)
2559
2560         * cipher.c: Major internal chnages to support extensions.
2561         * blowfish.c (blowfish_get_info): New and made all internal
2562         functions static, changed heder.
2563         * cast5.c (cast5_get_info): Likewise.
2564
2565 Mon Jun  8 12:27:52 1998  Werner Koch  (wk@isil.d.shuttle.de)
2566
2567         * tiger.c (transform): Fix for big endian
2568
2569         * cipher.c (do_cfb_decrypt): Big endian fix.
2570
2571 Fri May 22 07:30:39 1998  Werner Koch  (wk@isil.d.shuttle.de)
2572
2573         * md.c (md_get_oid): Add a new one for TIGER.
2574
2575 Thu May 21 13:24:52 1998  Werner Koch  (wk@isil.d.shuttle.de)
2576
2577         * cipher.c: Add support for a dummy cipher
2578
2579 Thu May 14 15:40:36 1998  Werner Koch  (wk@isil.d.shuttle.de)
2580
2581         * rmd160.c (transform): fixed sigbus - I should better
2582         add Christian von Roques's new implemenation of rmd160_write.
2583
2584 Fri May  8 18:07:44 1998  Werner Koch  (wk@isil.d.shuttle.de)
2585
2586         * rand-internal.h, rand-unix.c, rand-w32.c, rand_dummy.c: New
2587         * random.c: Moved system specific functions to rand-****.c
2588
2589 Fri May  8 14:01:17 1998  Werner Koch  (wk@isil.d.shuttle.de)
2590
2591         * random.c (fast_random_poll): add call to gethrtime.
2592
2593 Tue May  5 21:28:55 1998  Werner Koch  (wk@isil.d.shuttle.de)
2594
2595         * elgamal.c (elg_generate): choosing x was not correct, could
2596         yield 6 bytes which are not from the random pool, tsss, tsss..
2597
2598 Tue May  5 14:09:06 1998  Werner Koch  (wk@isil.d.shuttle.de)
2599
2600         * primegen.c (generate_elg_prime): Add arg mode, changed all
2601         callers and implemented mode 1.
2602
2603 Mon Apr 27 14:41:58 1998  Werner Koch  (wk@isil.d.shuttle.de)
2604
2605         * cipher.c (cipher_get_keylen): New.
2606
2607 Sun Apr 26 14:44:52 1998  Werner Koch  (wk@isil.d.shuttle.de)
2608
2609         * tiger.c, tiger.h: New.
2610
2611 Wed Apr  8 14:57:11 1998  Werner Koch  (wk@isil.d.shuttle.de)
2612
2613         * misc.c (check_pubkey_algo2): New.
2614
2615 Tue Apr  7 18:46:49 1998  Werner Koch  (wk@isil.d.shuttle.de)
2616
2617         * cipher.c: New
2618         * misc.c (check_cipher_algo): Moved to cipher.c
2619         * cast5.c: Moved many functions to cipher.c
2620         * blowfish.c: Likewise.
2621
2622 Sat Apr  4 19:52:08 1998  Werner Koch  (wk@isil.d.shuttle.de)
2623
2624         * cast5.c: Implemented and tested.
2625
2626 Wed Apr  1 16:38:27 1998  Werner Koch  (wk@isil.d.shuttle.de)
2627
2628         * elgamal.c (elg_generate): Faster generation of x in some cases.
2629
2630 Thu Mar 19 13:54:48 1998  Werner Koch  (wk@isil.d.shuttle.de)
2631
2632         * blowfish.c (blowfish_decode_cfb): changed XOR operation
2633         (blowfish_encode_cfb): Ditto.
2634
2635 Thu Mar 12 14:04:05 1998  Werner Koch  (wk@isil.d.shuttle.de)
2636
2637         * sha1.c (transform): Rewrote
2638
2639         * blowfish.c (encrypt): Unrolled for rounds == 16
2640         (decrypt): Ditto.
2641
2642 Tue Mar 10 16:32:08 1998  Werner Koch  (wk@isil.d.shuttle.de)
2643
2644         * rmd160.c (transform): Unrolled the loop.
2645
2646 Tue Mar 10 13:05:14 1998  Werner Koch  (wk@isil.d.shuttle.de)
2647
2648         * random.c (read_pool): Add pool_balance stuff.
2649         (get_random_bits): New.
2650
2651         * elgamal.c (elg_generate): Now uses get_random_bits to generate x.
2652
2653
2654 Tue Mar 10 11:33:51 1998  Werner Koch  (wk@isil.d.shuttle.de)
2655
2656         * md.c (md_digest_length): New.
2657
2658 Tue Mar 10 11:27:41 1998  Werner Koch  (wk@isil.d.shuttle.de)
2659
2660         * dsa.c (dsa_verify): Works.
2661
2662 Mon Mar  9 12:59:08 1998  Werner Koch  (wk@isil.d.shuttle.de)
2663
2664         * dsa.c, dsa.h: Removed some unused code.
2665
2666 Wed Mar  4 10:39:22 1998  Werner Koch  (wk@isil.d.shuttle.de)
2667
2668         * md.c (md_open): Add call to fast_random_poll.
2669         blowfish.c (blowfish_setkey): Ditto.
2670
2671 Tue Mar  3 13:32:54 1998  Werner Koch  (wk@isil.d.shuttle.de)
2672
2673         * rmd160.c (rmd160_mixblock): New.
2674         * random.c: Restructured to start with a new RNG implementation.
2675         * random.h: New.
2676
2677 Mon Mar  2 19:21:46 1998  Werner Koch  (wk@isil.d.shuttle.de)
2678
2679         * gost.c, gost.h: Removed because they did only conatin trash.
2680
2681 Sun Mar  1 16:42:29 1998  Werner Koch  (wk@isil.d.shuttle.de)
2682
2683         * random.c (fill_buffer): removed error message if n == -1.
2684
2685 Fri Feb 27 16:39:34 1998  Werner Koch  (wk@isil.d.shuttle.de)
2686
2687         * md.c (md_enable): No init if called twice.
2688
2689 Thu Feb 26 07:57:02 1998  Werner Koch  (wk@isil.d.shuttle.de)
2690
2691         * primegen.c (generate_elg_prime): Changed the progress printing.
2692         (gen_prime): Ditto.
2693
2694 Tue Feb 24 12:28:42 1998  Werner Koch  (wk@isil.d.shuttle.de)
2695
2696         * md5.c, md.5 : Replaced by a modified version of md5.c from
2697         GNU textutils 1.22.
2698
2699 Wed Feb 18 14:08:30 1998  Werner Koch  (wk@isil.d.shuttle.de)
2700
2701         * md.c, md.h : New debugging support
2702
2703 Mon Feb 16 10:08:47 1998  Werner Koch  (wk@isil.d.shuttle.de)
2704
2705         * misc.c (cipher_algo_to_string): New
2706         (pubkey_algo_to_string): New.
2707         (digest_algo_to_string): New.
2708
2709
2710  Copyright 1998,1999,2000,2001,2002,2003 Free Software Foundation, Inc.
2711
2712  This file is free software; as a special exception the author gives
2713  unlimited permission to copy and/or distribute it, with or without
2714  modifications, as long as this notice is preserved.
2715
2716  This file is distributed in the hope that it will be useful, but
2717  WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
2718  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.