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