596611f5964176590f260b2e9c2ff9275cf62dba
[libgcrypt.git] / cipher / ChangeLog
1 2002-10-10  Timo Schulz  <ts@winpt.org>
2
3         * md.c (gcry_md_open): Check that algo is available and only
4         valid flags values are used.
5         (gcry_md_get_algo): Add error handling.
6         
7 2002-09-17  Werner Koch  <wk@gnupg.org>
8
9         * random.c: Replaced mutex.h by the new ath.h.  Changed all calls.
10
11 2002-09-16  Werner Koch  <wk@gnupg.org>
12
13         * arcfour.c (do_encrypt_stream): Use register modifier and modulo.
14         According to Nikos Mavroyanopoulos this increases perfromace on
15         i386 system noticable.  And I always tought gcc is clever enough.
16         * md5.c (transform): Use register modifier.
17         * rmd160.c (transform): Ditto.
18         * sha1.c (transform): Ditto.  We hope that there are 6 free registers.
19         * random.c (gcry_randomize): Rewrote to avoid malloc calls.
20
21         * rndlinux.c (gather_random): Replaced remaining fprintfs by log_*.
22         * arcfour.c (do_arcfour_setkey): Ditto.
23         * twofish.c (do_twofish_setkey): Ditto.
24         * rndegd.c (gather_random): Ditto.
25         * rijndael.c (do_setkey): Ditto.
26         * random.c (_gcry_random_dump_stats): Ditto. 
27         * primegen.c (_gcry_generate_elg_prime): Ditto.
28         * des.c (_gcry_des_get_info): Ditto.
29         * cast5.c (do_cast_setkey): Ditto.
30         * blowfish.c (do_bf_setkey): Ditto.
31
32 2002-08-26  Werner Koch  <wk@gnupg.org>
33
34         * des.c (weak_keys): Fixed one entry in the table and compared
35         all entries against the literature.
36         (selftest): Checksum the weak key table.
37
38 2002-08-21  Werner Koch  <wk@gnupg.org>
39
40         * pubkey.c: Enable keygrip calculation for "openpgp-rsa".
41
42 2002-08-17  Werner Koch  <wk@gnupg.org>
43
44         * cipher.c (setup_cipher_table): Don't overwrite the DES entry
45         with the entry for DUMMY.
46
47 2002-08-14  Werner Koch  <wk@gnupg.org>
48
49         * des.c (do_des_setkey,do_des_encrypt, do_des_decrypt): New.
50         (_gcry_des_get_info): Support plain old DES.
51         * cipher.c (setup_cipher_table): Put DES into the table.
52
53 2002-07-25  Werner Koch  <wk@gnupg.org>
54
55         * rndunix.c (_gcry_rndunix_constructor): Prefixed with _gcry_.
56         Noted by Stephan Austermuehle.
57
58 2002-07-08  Timo Schulz  <ts@winpt.org>
59
60         * rndw32.c: Replaced the m_ memory functions with the real 
61         gcry_ functions. Renamed all g10_ prefixed functions to log_.
62         
63 2002-06-12  Werner Koch  <wk@gnupg.org>
64
65         * rsa.c (generate): Use e = 65537 for now.
66
67 2002-06-11  Werner Koch  <wk@gnupg.org>
68
69         * pubkey.c (gcry_pk_get_keygrip): Allow a "protected-private-key".
70
71 2002-06-05  Timo Schulz  <ts@winpt.org>
72
73         * cipher.c (gcry_cipher_encrypt, gcry_cipher_decrypt):
74         Check that the input size is a multiple of the blocksize.
75         
76 2002-05-23  Werner Koch  <wk@gnupg.org>
77
78         * md.c (oid_table): Add an rsadsi OID for MD5.
79
80 2002-05-21  Werner Koch  <wk@gnupg.org>
81
82         * primegen.c, elgamal.c, dsa.c (progress): Do not print anything
83         by default.  Pass an extra identifying string to the callback and
84         reserved 2 argumenst for current and total counters.  Changed the
85         register function prototype.
86
87 2002-05-17  Werner Koch  <wk@gnupg.org>
88
89         * rndegd.c (rndegd_constructor): Fixed name of register function
90         and prefixed the function name with _gcry_.
91         * rndw32.c (rndw32_constructor): Ditto.
92         * tiger.c (tiger_constructor): Ditto.
93
94         * Makefile.am: Removed all dynamic loading stuff.
95         * dynload.c: Ditto. Now only used for the constructor system.
96
97 2002-05-15  Werner Koch  <wk@gnupg.org>
98
99         * random.c (gcry_random_bytes,gcry_random_bytes_secure)
100         (gcry_randomize): Make sure we are initialized.
101
102 2002-05-14  Werner Koch  <wk@gnupg.org>
103
104         Changed license of most files to the LGPL.
105
106 2002-05-02  Werner Koch  <wk@gnupg.org>
107
108         * random.c (_gcry_fast_random_poll): Initialize the module so the
109         mutex can be used.
110
111         * primegen.c (small_prime_numbers): Moved table from smallprime.c
112         * smallprime.c: Fiel removed.
113
114         * des.c (leftkey_swap, rightkey_swap, working_memcmp): Made static.
115
116         * cipher.c (gcry_cipher_map_name): Map "RIJNDAEL" to "AES".
117         * rijndael.c (rijndael_get_info): We do only support a 128 bit
118         blocksize so it makes sense to change the algorithm strings to
119         AES.
120
121         * tiger.c (tiger_final): Removed superfluous token pasting operators.
122         * md5.c (md5_final): Ditto.
123
124 2002-04-30  Werner Koch  <wk@gnupg.org>
125
126         * cipher.c: Fixed list of copyright years.
127
128 2002-03-18  Werner Koch  <wk@gnupg.org>
129
130         * random.c (initialize): Initialize the new pool lock mutex.
131         (_gcry_fast_random_poll): Add locking and moved main
132         code out to...
133         (do_fast_random_poll): new function.
134         (read_pool): Use the new function here.
135         (get_random_bytes): Add locking.
136         (_gcry_update_random_seed_file): Ditto.
137
138 2002-03-11  Werner Koch  <wk@gnupg.org>
139
140         * md.c: Add rsaSignatureWithripemd160 to OID table.
141
142 2002-02-20  Werner Koch  <wk@gnupg.org>
143
144         * sha1.c: Removed a left over comment note.  The code has been
145         rewritten from scratch in 1998.  Thanks to Niels Möller for
146         reporting this misleading comment.
147
148 2002-02-18  Werner Koch  <wk@gnupg.org>
149
150         * rndunix.c (rndunix_constructor): Use the the new prefixed
151         function name.  Reported by Jordi Mallach.
152
153 2002-02-10  Werner Koch  <wk@gnupg.org>
154
155         * random.c (mix_pool): Carry an extra failsafe_digest buffer
156         around to make the function more robust.
157
158 2002-02-08  Werner Koch  <wk@gnupg.org>
159
160         * random.c (add_randomness): Xor new data into the pool and not
161         just copy it.  This avoids any choosen input attacks which are not
162         serious in our setting because an outsider won't be able to mix
163         data in and even then we keep going with a PRNG.  Thanks to Stefan
164         Keller for pointing this out.
165
166 2002-01-04  Werner Koch  <wk@gnupg.org>
167
168         * pubkey.c (gcry_pk_genkey): Do not release skey - it is static.
169
170         * primegen.c (gen_prime): Of course we should use set_bit
171         and not set_highbit to set the second high bit.
172
173 2001-12-18  Werner Koch  <wk@gnupg.org>
174
175         * rsa.c (generate): Loop until we find the exact modulus size.
176         Changed the exponent to 41.
177         (rsa_get_info): s/usage/r_usage/ to avoid shadow warnings.
178         * primegen.c (gen_prime): Set 2 high order bits for secret primes.
179
180         * Makefile.am (DISTCLEANFILES): Include construct.c.
181
182 2001-12-17  Werner Koch  <wk@gnupg.org>
183
184         * pubkey.c (gcry_pk_get_keygrip): New - experimental.
185
186 2001-12-11  Werner Koch  <wk@gnupg.org>
187
188         * cipher.c: Added OIDs for AES.
189         (gcry_cipher_mode_from_oid): New.
190         (gcry_cipher_map_name): Moved OID search code to ..
191         (search_oid): .. new function.
192
193 2001-12-10  Werner Koch  <wk@gnupg.org>
194
195         * pubkey.c (gcry_pk_encrypt): Find the signature algorithm by name
196         and not by number.
197         
198         * pubkey.c (gcry_pk_encrypt,gcry_pk_decrypt,gcry_pk_sign)
199         (gcry_pk_verify,gcry_pk_testkey, gcry_pk_genkey)
200         (gcry_pk_get_nbits): Release the arrays.  Noted by Nikos
201         Mavroyanopoulos.
202
203 2001-12-06  Werner Koch  <wk@gnupg.org>
204
205         * cipher.c (gcry_cipher_map_name): Look also for OIDs prefixed
206         with "oid."  or "OID.".
207
208 2001-12-05  Werner Koch  <wk@gnupg.org>
209
210         * pubkey.c (algo_info_table): Fixed entry for openpgp-rsa. 
211
212 2001-11-24  Werner Koch  <wk@gnupg.org>
213
214         * pubkey.c: Added the rsaEncryption OID to the tables.
215         (sexp_to_key): Add an arg to return the index of the algorithm,
216         changed all callers.
217         (gcry_pk_sign): Find the signature algorithm by name and not by
218         number.
219         (gcry_pk_get_nbits): Fixed so that we can now really pass a secret
220         key to get the result.
221         
222         * md.c (gcry_md_map_name): Look also for OIDs prefixed with "oid."
223         or "OID." so that an OID string can be used as an S-Exp token.
224
225 2001-11-20  Werner Koch  <wk@gnupg.org>
226
227         * md.c (gcry_md_map_name): Lookup by OID if the the name begins
228         with a digit.
229         (oid_table): New.
230         
231 2001-11-16  Werner Koch  <wk@gnupg.org>
232
233         * md.c (gcry_md_info): New operator GCRYCTL_IS_ALGO_ENABLED.
234
235 2001-11-07  Werner Koch  <wk@gnupg.org>
236
237         * md.c (gcry_md_hash_buffer): Close the handle which was left open
238         for algorithms other than rmd160.
239
240 2001-08-08  Werner Koch  <wk@gnupg.org>
241
242         * rndw32.c (gather_random): Use toolhelp in addition to the NT
243         gatherer for Windows2000.  Suggested by Sami Tolvanen.
244
245         * random.c (read_pool): Fixed length check, this used to be one
246         byte to strict.  Made an assert out of it because the caller has
247         already made sure that only poolsize bytes are requested.
248         Reported by Marcus Brinkmann.
249
250 2001-08-03  Werner Koch  <wk@gnupg.org>
251
252         * cipher.c (cipher_encrypt, cipher_decrypt): Prepare to return
253         errors. We have to change the interface to all ciphers to make
254         this really work but we should do so to prepare for hardware
255         encryption modules.
256         (gcry_cipher_encrypt, gcry_cipher_decrypt): Return the error and
257         set lasterr. 
258         (gcry_cipher_ctl): Make sure that errors from setkey are returned.
259
260 2001-08-02  Werner Koch  <wk@gnupg.org>
261
262         * rndlinux.c (gather_random): casted a size_t arg to int so that
263         the format string is correct.  Casting is okay here and avoids
264         translation changes. 
265
266         * random.c (fast_random_poll): Do not check the return code of
267         getrusage.
268
269         * rndunix.c: Add a signal.h header to avoid warnings on Solaris 7
270         and 8.
271
272         * tiger.c (print_abc,print_data): Removed.
273
274         * rijndael.c, des.c, blowfish.c, twofish.c, cast5.c, arcfour.c
275         (burn_stack): New.  Add wrappers for most functions to be able to
276         call burn_stack after the function invocation. This methods seems
277         to be the most portable way to zeroise the stack used. It does
278         only work on stack frame based machines but it is highly portable
279         and has no side effects.  Just setting the automatic variables at
280         the end of a function to zero does not work well because the
281         compiler will optimize them away - marking them as volatile would
282         be bad for performance.
283         * md5.c, sha1.c, rmd160.c, tiger.c (burn_stack): Likewise.
284         * random.c (burn_stack): New.
285         (mix_pool): Use it here to burn the stack of the mixblock function.
286
287         * primegen.c (_gcry_generate_elg_prime): Freed q at 3 places.
288         Thanks to Tommi Komulainen.
289
290         * arcfour.c (arcfour_setkey): Check the minimim keylength against
291         bytes and not bits.
292         (selftest): Must reset the key before decryption. 
293
294 2001-05-31  Werner Koch  <wk@gnupg.org>
295
296         * sha1.c (sha1_init): Made static.
297
298         Changed all g10_ prefixed function names as well as some mpi_
299         function names to cope with the introduced naming changes.
300         
301         * md.c (prepare_macpads): Made key const.
302
303 2001-05-28  Werner Koch  <wk@gnupg.org>
304
305         * rndegd.c (gather_random): Removed the use of tty_printf.
306
307 2001-03-29  Werner Koch  <wk@gnupg.org>
308
309         * md5.c (md5_final): Fixed calculation of hashed length.  Thanks
310         to disastry@saiknes.lv for pointing out that it was horrible wrong
311         for more than 512MB of input.
312         * sha1.c (sha1_final): Ditto.
313         * rmd160.c (rmd160_final): Ditto.
314         * tiger.c (tiger_final): Ditto.
315
316         * blowfish.c (encrypt,do_encrypt): Changed name to do_encrypt to
317         avoid name clashes with an encrypt function in stdlib.h of
318         Dynix/PIX.  Thanks to Gene Carter.
319         * elgamal.c (encrypt,do_encrypt): Ditto.
320
321         * twofish.c (gnupgext_enum_func): Use only when when compiled as a
322         module.
323         * rijndael.c (gnupgext_enum_func): Ditto.
324
325         * tiger.c (tiger_get_info): Return "TIGER192" and not just
326         "TIGER".  By Edwin Woudt.
327         
328         * random.c: Always include time.h - standard requirement.  Thanks
329         to James Troup.
330
331         * rndw32.c: Fixes to the macros.
332
333 2001-01-11  Werner Koch  <wk@gnupg.org>
334
335         * cipher.c (cipher_encrypt,gcry_cipher_encrypt): Use blocksize and
336         not 8.
337
338 2000-12-19  Werner Koch  <wk@gnupg.org>
339
340         Major change:
341         Removed all GnuPG stuff and renamed this piece of software
342         to gcrypt. 
343
344 2000-11-14  Werner Koch  <wk@gnupg.org>
345
346         * dsa.c (test_keys): Replaced mpi_alloc by gcry_mpi_new and
347         mpi_free by gcry_mpi_release.
348         * elgamal.c (test_keys,generate): Ditto, also for mpi_alloc_secure.
349         * rsa.c (test_keys,generate,rsa_verify): Ditto.
350         * primegen.c (generate_elg_prime): Ditto.
351         (gen_prime): Ditto and removed nlimbs.
352
353         * rsa.c (generate): Allocate 2 more vars in secure memory.
354
355         * Makefile.am (OMIT_DEPENDENCIES): Hack to work around dependency
356         problems.
357
358 2000-10-09  Werner Koch  <wk@gnupg.org>
359
360         * arcfour.c, arcfour.h: New.
361         * cipher.c (cipher_encrypt, cipher_decrypt): Add stream mode.
362         (setup_cipher_table): Add Arcfour.
363         (gcry_cipher_open): Kludge to allow stream mode.
364
365 Wed Oct  4 13:16:18 CEST 2000  Werner Koch  <wk@openit.de>
366
367         * sha1.c (transform): Use rol() macro.  Actually this is not needed
368         for a newer gcc but there are still aoter compilers.
369
370         * rsa.c (test_keys): Use new random function. 
371
372         * md.c (gcry_md_setkey): New function to overcome problems with
373         const conflics.  
374         (gcry_md_ctl): Pass set key to the new functions.
375
376         * rijndael.c: New.
377         * cipher.c: Add Rijndael support.
378
379 Mon Sep 18 16:35:45 CEST 2000  Werner Koch  <wk@openit.de>
380
381         * rndlinux.c (open_device): Loose random device checking.
382         By Nils Ellmenreich.
383
384         * random.c (fast_random_poll): Check ENOSYS for getrusage.
385         * rndunix.c:  Add 2 sources for QNX. By Sam Roberts.
386
387         * pubkey.c (gcry_pk_algo_info): Add GCRYCTL_GET_ALGO_USAGE.
388
389         * rsa.c: Changed the comment about the patent.
390         (secret): Speed up by using the CRT.  For a 2k keys this
391         is about 3 times faster.
392         (stronger_key_check): New but unused code to check the secret key.
393         * Makefile.am: Included rsa.[ch].
394         * pubkey.c: Enabled RSA support.
395         (pubkey_get_npkey): Removed RSA workaround.
396
397 Mon Jul 31 10:04:47 CEST 2000  Werner Koch  <wk@openit.de>
398
399   * pubkey.c: Replaced all gcry_sexp_{car,cdr}_{data,mpi} by the new
400   gcry_sexp_nth_{data,mpi} functions.
401
402 Tue Jul 25 17:44:15 CEST 2000  Werner Koch  <wk@openit.de>
403
404   * pubkey.c (exp_to_key,sexp_to_sig,sexp_to_enc,gcry_pk_encrypt,
405     gcry_pk_decrypt,gcry_pk_sign,gcry_pk_genkey): Changed to work with
406     the new S-Exp interface.
407
408 Mon Jul 17 16:35:47 CEST 2000  Werner Koch  <wk@>
409
410   * random.c (gather_faked): Replaced make_timestamp by time(2) again.
411
412 Fri Jul 14 19:38:23 CEST 2000  Werner Koch  <wk@>
413
414   * md.c (gcry_md_ctl): Support GCRYCTL_{START,STOP}_DUMP.
415
416   * Makefile.am: Never compile mingw32 as module.
417
418   * Makefile.am: Tweaked module build and removed libtool
419
420   * Makefile.am:  Replaced -O1 by -O. Suggested by Alec Habig.
421
422   * elgamal.c (sign): Removed inactive code.
423
424   * rsa.c, rsa.h: New based on the old module version (only in CVS for now).
425   * pubkey.c (setup_pubkey_table): Added commented support for RSA.
426
427   * rndunix.c (waitpid): New. For UTS 2.1.  All by Dave Dykstra.
428   (my_popen): Do the FD_CLOEXEC only if it is available
429   (start_gatherer): Cope with missing _SC_OPEN_MAX
430
431   * rndunix.c: Add some more headers for QNX. By Sam Roberts.
432
433   * rndegd.c (gather_random): Shortcut level 0.
434   * rndunix.c (gather_random): Ditto.
435   * rndw32.c (gather_random): Ditto.
436
437   * rndw32.c: Replaced with code from Cryptlib and commented the old stuff.
438   * rndw32.c: Add some debuging code enabled by an environment variable.
439
440   * random.c (read_seed_file): Binary open for DOSish system
441   (update_random_seed_file): Ditto.
442   * random.c [MINGW32]: Include process.h for getpid.
443   * random.c (fast_random_poll): Add clock_gettime() as fallback for
444   system which support this POSIX.4 fucntion. By Sam Roberts.
445
446   * random.c (read_seed_file): Removed the S_ISLNK test becuase it
447   is already covered by !S_ISREG and is not defined in Unixware.
448   Reported by Dave Dykstra.
449   (update_random_seed_file): Silently ignore update request when pool
450   is not filled.
451
452   * random.c (read_seed_file): New.
453   (set_random_seed_file): New.
454   (read_pool): Try to read the seeding file.
455   (update_random_seed_file): New.
456
457   (read_pool): Do an initial extra seeding when level 2 quality random
458   is requested the first time.  This requestes at least POOLSIZE/2 bytes
459   of entropy.  Compined with the seeding file this should make normal
460   random bytes cheaper and increase the quality of the random bytes
461   used for key generation.
462
463   * random.c (read_pool): Print a more friendly error message in
464   cases when too much random is requested in one call.
465
466   * random.c (fast_random_poll): Check whether RUSAGE_SELF is defined;
467   this is not the case for some ESIX and Unixware, although they have
468   getrusage().
469
470   * primegen.c (generate_elg_prime): All primes are now generated with
471   the lowest random quality level.  Because they are public anyway we
472   don't need stronger random and by this we do not drain the systems
473   entropy so much.
474
475   * primegen.c (register_primegen_progress): New.
476   * dsa.c (register_pk_dsa_progress): New.
477   * elgamal.c (register_pk_elg_progress): New.
478
479   * elgamal.c (wiener_map): New.
480   (gen_k): Use a much smaller k.
481   (generate): Calculate the qbits using the wiener map and
482   choose an x at a size comparable to the one choosen in gen_k
483
484   * rmd160.c (rmd160_get_info): Moved casting to the left side due to a
485   problem with UTS4.3.  Suggested by Dave Dykstra.
486   * sha1.c (sha1_get_info): Ditto.
487   * tiger.c (tiger_get_info): Ditto.
488   * md5.c (md5_get_info): Ditto
489   * des.c (des_get_info): Ditto.
490   * blowfish.c (blowfish_get_info): Ditto.
491   * cast5.c (cast5_get_info): Ditto.
492   * twofish.c (twofish_get_info): Ditto.
493
494 Fri Mar 24 11:25:45 CET 2000  Werner Koch  <wk@openit.de>
495
496         * md.c (md_open): Add hmac arg and allocate space for the pads.
497         (md_finalize): Add HMAC support.
498         (md_copy): Ditto.
499         (md_close): Ditto.
500         (gcry_md_reset): Ditto.
501         (gcry_md_ctl): Ditto.
502         (prepare_macpdas): New.
503
504 Mon Mar 13 19:22:46 CET 2000  Werner Koch  <wk@openit.de>
505
506         * md.c (gcry_md_hash_buffer): Add support for the other algorithms.
507
508 Mon Jan 31 16:37:34 CET 2000  Werner Koch  <wk@gnupg.de>
509
510         * genprime.c (generate_elg_prime): Fixed returned factors which never
511         worked for non-DSA keys.
512
513 Thu Jan 27 18:00:44 CET 2000  Werner Koch  <wk@gnupg.de>
514
515         * pubkey.c (sexp_to_key): Fixed mem leaks in case of errors.
516
517 Mon Jan 24 22:24:38 CET 2000  Werner Koch  <wk@gnupg.de>
518
519         * pubkey.c (gcry_pk_decrypt): Implemented.
520         (gcry_pk_encrypt): Implemented.
521         (gcry_pk_testkey): New.
522         (gcry_pk_genkey): New.
523         (pubkey_decrypt): Made static.
524         (pubkey_encrypt): Ditto.
525         (pubkey_check_secret_key): Ditto.
526         (pubkey_generate): Ditto.
527
528 Mon Jan 24 13:04:28 CET 2000  Werner Koch  <wk@gnupg.de>
529
530         * pubkey.c (pubkey_nbits): Removed and replaced by ...
531         (gcry_pk_get_nbits): this new one.
532
533 Wed Dec  8 21:58:32 CET 1999  Werner Koch  <wk@gnupg.de>
534
535         * dsa.c: s/mpi_powm/gcry_mpi_powm/g
536         * elgamal.c: Ditto.
537         * primegen.c: Ditto.
538
539         * : Replaced g10_opt_verbose by g10_log_verbosity().
540
541         * Makefile.am (INCLUDES): removed intl, add ../gcrypt
542
543 Fri Nov 19 17:15:20 CET 1999  Werner Koch  <wk@gnupg.de>
544
545         * dynload.c (cmp_filenames): New to replaced compare_filename() in
546         module.
547         (register_cipher_extension): Removed the tilde expansion stuff.
548         * rndeg.c (my_make_filename): New.
549
550         * : Replaced header util.h by g10lib.h
551
552         * random.c (gather_faked): Replaced make_timestamp by time(2).
553         Disabled wrning printed with tty_printf.
554         * rndlinux.c (gather_random): Always use fprintf instead of tty_xxx;
555         this should be replaced by a callback function.
556
557         * primegen.c (gen_prime): Use gcry_mpi_randomize.
558         (is_prime): Ditto.
559         * elgamal.c (test_keys): Ditto.
560         * dsa.c (test_keys): Ditto.
561
562         * cipher.c (gcry_cipher_close): Die on invalid handle.
563
564 Mon Nov 15 21:36:02 CET 1999  Werner Koch  <wk@gnupg.de>
565
566         * elgamal.c (gen_k): Use the new random API.
567         (generate): Ditto.
568         * dsa.c (gen_k): Ditto.
569         (generate): Ditto.
570
571 Sat Nov 13 17:44:23 CET 1999  Werner Koch  <wk@gnupg.de>
572
573         * pubkey.c (disable_pubkey_algo): Made static.
574         (gcry_pk_ctl): New.
575
576         * random.c (get_random_bits): Renamed to ...
577         (get_random_bytes): ... this and made static.
578         (gcry_random_bytes): New.
579         (gcry_random_bytes_secure): New.
580         (randomize_buffer): Renamed to ...
581         (gcry_randomize): ...this.
582
583         * md.c (gcry_md_hash_buffer): New.
584
585         * pubkey.c (gcry_pk_algo_info): 4 new commands.
586         (pubkey_get_npkey): Made static.
587         (pubkey_get_nskey): Made static.
588         (pubkey_get_nsig): Made static.
589         (pubkey_get_nenc): Made static.
590
591         * pubkey.c: Removed all G10ERR_xxx.
592         * cipher.c: Changed all GCRYERR_INV_ALGO to GCRYERR_INV_CIPHER_ALGO.
593         * md.c: Changed all GCRYERR_INV_ALGO to GCRYERR_INV_MD_ALGO.
594         * cast5.c (cast_setkey): Changed errocodes to GCRYERR_xxx.
595         * blowfish.c: Ditto.
596         * des.c: Ditto.
597         * twofish.c: Ditto.
598         * dsa.c: Ditto.
599         * elgamal.c: Ditto.
600
601         * g10c.c: Removed
602
603         * cipher.c (gcry_cipher_open): Replaced alloc functions and return NULL
604         if we are out of core.
605         * dynload.c: Replaced all memory allocation functions.
606         * md.c: Ditto.
607         * primegen.c: Ditto.
608         * pubkey.c: Ditto.
609         * random.c: Ditto.
610         * rndw32.c: Ditto.
611         * elgamal.c: Ditto.
612         * dsa.c: Ditto.
613
614 Tue Oct 26 14:10:21 CEST 1999  Werner Koch  <wk@gnupg.de>
615
616         * elgamal.c (sign): Hugh found strange code here. Replaced by BUG().
617
618         * cipher.c: Merged with gcrypt/symapi.c.
619
620         * pubkey.c (string_to_pubkey_algo): Renamed function to ...
621         (gcry_pk_map_name): ... this.
622         (pubkey_algo_to_string): Renamed function to ...
623         (gcry_pk_algo_name): ... this.
624         (gcry_pk_algo_info): New.
625         * pubkey.c: Merged with gcrypt/pkapi.c.
626
627         * md.c (md_reset): Clear finalized; thanks to Ulf Moeller for
628         fixing this bug.
629
630         * md.c: Merged with gcrypt/mdapi.c
631
632 Wed Sep 15 14:39:59 CEST 1999  Michael Roth <mroth@nessie.de>
633
634         * des.c: Various speed improvements: One bit pre rotation
635           trick after initial permutation (Richard Outerbridge).
636           Finished test of SSLeay Tripple-DES patterns.
637
638 Wed Sep 15 16:22:17 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
639
640         * rndw32.c: New.
641
642 Mon Sep 13 10:51:29 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
643
644         * bithelp.h: New.
645         * rmd160.h, sha1.h, md5.h: Use the rol macro from bithelp.h
646
647 Tue Sep  7 16:23:36 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
648
649         * Makefile.am: Fixed seds for latest egcc. By Ollivier Robert.
650
651 Mon Sep  6 19:59:08 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
652
653         * des.c (selftest): Add some testpattern
654
655 Mon Aug 30 20:38:33 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
656
657         * cipher.c (do_cbc_encrypt): Fixed serious bug occuring when not using
658         in place encryption. Pointed out by Frank Stajano.
659
660 Mon Jul 26 09:34:46 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
661
662         * md5.c (md5_final): Fix for a SCO cpp bug.
663
664 Thu Jul 15 10:15:35 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
665
666         * elgamal.c (elg_check_secret_key,elg_encrypt
667         elg_decrypt,elg_sign,elg_verify): Sanity check on the args.
668         * dsa.c (dsa_check_secret_key,dsa_sign,dsa_verify): Ditto.
669
670         * pubkey.c (disable_pubkey_algo): New.
671         (check_pubkey_algo2): Look at disabled algo table.
672         * cipher.c (disable_cipher_algo): New.
673         (check_cipher_algo): Look at disabled algo table.
674
675 Wed Jul  7 13:08:40 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
676
677         * Makefile.am: Support for libtool.
678
679 Fri Jul  2 11:45:54 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
680
681         * dsa.c (gen_k): Changed algorithm to consume less random bytes
682         * elgamal.c (gen_k): Ditto.
683
684         * random.c (random_dump_stats): New.
685
686 Thu Jul  1 12:47:31 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
687
688         * primegen.c, elgamal.c, dsa.c (progess): New and replaced all
689         fputc with a call to this function.
690
691 Sat Jun 26 12:15:59 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
692
693         * rndegd.c (do_write): s/ssize_t/int/ due to SunOS 4.1 probs.
694
695         * cipher.c (do_cbc_encrypt, do_cbc_decrypt): New.
696
697         * dynload.c (HAVE_DL_SHL_LOAD): Map hpux API to dlopen (Dave Dykstra).
698         * Makefile.am (install-exec-hook): Removed.
699
700 Sun May 23 14:20:22 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
701
702         * cipher.c (setup_cipher_table): Enable Twofish
703
704         * random.c (fast_random_poll): Disable use of times() for mingw32.
705
706 Mon May 17 21:54:43 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
707
708         * dynload.c (register_internal_cipher_extension): Minor init fix.
709
710 Tue May  4 15:47:53 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
711
712         * primegen.c (gen_prime): Readded the Fermat test. Fixed the bug
713         that we didn't correct for step when passing the prime to the
714         Rabin-Miller test which led to bad performance (Stefan Keller).
715         (check_prime): Add a first Fermat test.
716
717 Sun Apr 18 10:11:28 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
718
719         * cipher.c (cipher_setiv): Add ivlen arg, changed all callers.
720
721         * random.c (randomize_buffer): alway use secure memory because
722         we can't use m_is_secure() on a statically allocated buffer.
723
724         * twofish.c: Replaced some macros by a loop to reduce text size.
725         * Makefile.am (twofish): No more need for sed editing.
726
727 Fri Apr  9 12:26:25 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
728
729         * cipher.c (cipher_open): Reversed the changes for AUTO_CFB.
730
731         * blowfish.c: Dropped the Blowfish 160 mode.
732         * cipher.c (cipher_open): Ditto.
733         (setup_cipher_table): Ditto.  And removed support of twofish128
734
735 Wed Apr  7 20:51:39 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
736
737         * random.c (get_random_bits): Can now handle requests > POOLSIZE
738
739         * cipher.c (cipher_open): Now uses standard CFB for automode if
740         the blocksize is gt 8 (according to rfc2440).
741
742         * twofish.c: Applied Matthew Skala's patches for 256 bit key.
743
744 Tue Apr  6 19:58:12 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
745
746         * random.c (get_random_bits): Can now handle requests > POOLSIZE
747
748         * cipher.c (cipher_open): Now uses standard CFB for automode if
749         the blocksize is gt 8 (according to rfc2440).
750
751 Sat Mar 20 11:44:21 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
752
753         * rndlinux.c (tty_printf) [IS_MODULE]: Removed.
754
755         * rndegd.c (gather_random): Some fixes.
756
757 Wed Mar 17 13:09:03 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
758
759         * rndegd.c (do_read): New.
760         (gather_random): Changed the implementation.
761
762 Mon Mar  8 20:47:17 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
763
764         * dynload.c (DLSYM_NEEDS_UNDERSCORE): Renamed.
765
766 Fri Feb 26 17:55:41 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
767
768         * md.c: Nearly a total rewrote.
769
770 Wed Feb 24 11:07:27 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
771
772         * cipher.c (context): Fixed alignment
773         * md.c: Ditto.
774
775         * rndegd.c: New
776
777 Mon Feb 22 20:04:00 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
778
779         * rndegd.c: New.
780
781 Wed Feb 10 17:15:39 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
782
783         * Makefile.am: Modules are now figured out by configure
784         * construct.c: New. Generated by configure. Changed all modules
785         to work with that.
786         * sha1.h: Removed.
787         * md5.h: Removed.
788
789         * twofish.c: Changed interface to allow Twofish/256
790
791         * rndunix.c (start_gatherer): Die on SIGPIPE.
792
793 Wed Jan 20 18:59:49 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
794
795         * rndunix.c (gather_random): Fix to avoid infinite loop.
796
797 Sun Jan 17 11:04:33 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
798
799         * des.c (is_weak_key): Replace system memcmp due to bugs
800         in SunOS's memcmp.
801         (des_get_info): Return error on failed selftest.
802         * twofish.c (twofish_setkey): Return error on failed selftest or
803         invalid keylength.
804         * cast5.c (cast_setkey): Ditto.
805         * blowfish.c (bf_setkey): Return error on failed selftest.
806
807 Tue Jan 12 11:17:18 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
808
809         * random.c (random_is_faked): New.
810
811         * tiger.c: Only compile if we have the u64 type
812
813 Sat Jan  9 16:02:23 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
814
815         * rndunix.c (gather_random): check for setuid.
816
817         * Makefile.am: Add a way to staically link random modules
818
819 Thu Jan  7 18:00:58 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
820
821         * md.c (md_stop_debug): Do a flush first.
822         (md_open): size of buffer now depends on the secure parameter
823
824 Sun Jan  3 15:28:44 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
825
826         * rndunix.c (start_gatherer): Fixed stupid ==/= bug
827
828 1998-12-31  Geoff Keating  <geoffk@ozemail.com.au>
829
830         * des.c (is_weak_key): Rewrite loop end condition.
831
832 Tue Dec 29 14:41:47 CET 1998  Werner Koch  <wk@isil.d.shuttle.de>
833
834         * random.c: add unistd.h for getpid().
835         (RAND_MAX): Fallback value for Sun.
836
837 Wed Dec 23 17:12:24 CET 1998  Werner Koch  <wk@isil.d.shuttle.de>
838
839         * md.c (md_copy): Reset debug.
840
841 Mon Dec 14 21:18:49 CET 1998  Werner Koch  <wk@isil.d.shuttle.de>
842
843         * random.c (read_random_source): Changed the interface to the
844         random gathering function.
845         (gather_faked): Use new interface.
846         * dynload.c (dynload_getfnc_fast_random_poll): Ditto.
847         (dynload_getfnc_gather_random): Ditto.
848         * rndlinux.c (gather_random): Ditto.
849         * rndunix.c (gather_random): Ditto.
850
851 Sat Dec 12 18:40:32 CET 1998  Werner Koch  <wk@isil.d.shuttle.de>
852
853         * dynload.c (SYMBOL_VERSION): New to cope with system which needs
854         underscores.
855
856         * rndunix.c: Rewrote large parts
857
858 Thu Dec 10 20:15:36 CET 1998  Werner Koch  <wk@isil.d.shuttle.de>
859
860         * dynload.c (load_extension): increased needed verbosity level.
861
862         * random.c (fast_random_poll): Fallback to a default fast random
863         poll function.
864         (read_random_source): Always use the faked entroy gatherer if no
865         gather module is available.
866         * rndlinux.c (fast_poll): Removed.
867         * rndunix.c (fast_poll): Removed.
868
869
870 Wed Nov 25 12:33:41 1998  Werner Koch  (wk@isil.d.shuttle.de)
871
872         * rand-*.c: Removed.
873         * rndlinux.c : New.
874         * rndunix.c : New.
875         * random.c : Restructured the interface to the gather modules.
876         (intialize): Call constructor functions
877         (read_radnom_source): Moved to here.
878         * dynload.c (dynload_getfnc_gather_random): New.
879         (dynload_getfnc_fast_random_poll): New.
880         (register_internal_cipher_extension): New.
881         (register_cipher_extension): Support of internal modules.
882
883 Sun Nov  8 17:44:36 1998  Werner Koch  (wk@isil.d.shuttle.de)
884
885         * rand-unix.c (read_random_source): Removed the assert.
886
887 Mon Oct 19 18:34:30 1998  me,,,  (wk@tobold)
888
889         * pubkey.c: Hack to allow us to give some info about RSA keys back.
890
891 Thu Oct 15 11:47:57 1998  Werner Koch  (wk@isil.d.shuttle.de)
892
893         * dynload.c: Support for DLD
894
895 Wed Oct 14 12:13:07 1998  Werner Koch  (wk@isil.d.shuttle.de)
896
897         * rand-unix.c: Now uses names from configure for /dev/random.
898
899 1998-10-10  SL Baur  <steve@altair.xemacs.org>
900
901         * Makefile.am: fix sed -O substitutions to catch -O6, etc.
902
903 Tue Oct  6 10:06:32 1998  Werner Koch  (wk@isil.d.shuttle.de)
904
905         * rand-unix.c (HAVE_GETTIMEOFDAY): Fixed (was ..GETTIMEOFTIME :-)
906         * rand-dummy.c (HAVE_GETTIMEOFDAY): Ditto.
907
908 Mon Sep 28 13:23:09 1998  Werner Koch  (wk@isil.d.shuttle.de)
909
910         * md.c (md_digest): New.
911         (md_reset): New.
912
913 Wed Sep 23 12:27:02 1998  Werner Koch  (wk@isil.d.shuttle.de)
914
915         * tiger.c (TIGER_CONTEXT): moved "buf", so that it is 64 bit aligned.
916
917 Mon Sep 21 06:22:53 1998  Werner Koch  (wk@(none))
918
919         * des.c: Some patches from Michael.
920
921 Thu Sep 17 19:00:06 1998  Werner Koch  (wk@(none))
922
923         * des.c : New file from Michael Roth <mroth@nessie.de>
924
925 Mon Sep 14 11:10:55 1998  Werner Koch  (wk@(none))
926
927         * blowfish.c (bf_setkey): Niklas Hernaeus patch to detect weak keys.
928
929 Mon Sep 14 09:19:25 1998  Werner Koch  (wk@(none))
930
931         * dynload.c (RTLD_NOW): Now defined to 1 if it is undefined.
932
933 Mon Sep  7 17:04:33 1998  Werner Koch  (wk@(none))
934
935         * Makefile.am: Fixes to allow a different build directory
936
937 Thu Aug  6 17:25:38 1998  Werner Koch,mobil,,,  (wk@tobold)
938
939         * random.c (get_random_byte): Removed and changed all callers
940         to use get_random_bits()
941
942 Mon Jul 27 10:30:22 1998  Werner Koch  (wk@(none))
943
944         * cipher.c : Support for other blocksizes
945         (cipher_get_blocksize): New.
946         * twofish.c: New.
947         * Makefile.am: Add twofish module.
948
949 Mon Jul 13 21:30:52 1998  Werner Koch  (wk@isil.d.shuttle.de)
950
951         * random.c (read_pool): Simple alloc if secure_alloc is not set.
952         (get_random_bits): Ditto.
953
954 Thu Jul  9 13:01:14 1998  Werner Koch  (wk@isil.d.shuttle.de)
955
956         * dynload.c (load_extension): Function now nbails out if
957         the program is run setuid.
958
959 Wed Jul  8 18:58:23 1998  Werner Koch  (wk@isil.d.shuttle.de)
960
961         * rmd160.c (rmd160_hash_buffer): New.
962
963 Thu Jul  2 10:50:30 1998  Werner Koch  (wk@isil.d.shuttle.de)
964
965         * cipher.c (cipher_open): algos >=100 use standard CFB
966
967 Thu Jun 25 11:18:25 1998  Werner Koch  (wk@isil.d.shuttle.de)
968
969         * Makefile.am: Support for extensions
970
971 Thu Jun 18 12:09:38 1998  Werner Koch  (wk@isil.d.shuttle.de)
972
973         * random.c (mix_pool): simpler handling for level 0
974
975 Mon Jun 15 14:40:48 1998  Werner Koch  (wk@isil.d.shuttle.de)
976
977         * tiger.c: Removed from dist, will reappear as dynload module
978
979 Sat Jun 13 14:16:57 1998  Werner Koch  (wk@isil.d.shuttle.de)
980
981         * pubkey.c: Major changes to allow extensions. Changed the inteface
982         of all public key ciphers and added the ability to load extensions
983         on demand.
984
985         * misc.c: Removed.
986
987 Wed Jun 10 07:52:08 1998  Werner Koch,mobil,,,  (wk@tobold)
988
989         * dynload.c: New.
990         * cipher.c: Major changes to allow extensions.
991
992 Mon Jun  8 22:43:00 1998  Werner Koch  (wk@isil.d.shuttle.de)
993
994         * cipher.c: Major internal chnages to support extensions.
995         * blowfish.c (blowfish_get_info): New and made all internal
996         functions static, changed heder.
997         * cast5.c (cast5_get_info): Likewise.
998
999 Mon Jun  8 12:27:52 1998  Werner Koch  (wk@isil.d.shuttle.de)
1000
1001         * tiger.c (transform): Fix for big endian
1002
1003         * cipher.c (do_cfb_decrypt): Big endian fix.
1004
1005 Fri May 22 07:30:39 1998  Werner Koch  (wk@isil.d.shuttle.de)
1006
1007         * md.c (md_get_oid): Add a new one for TIGER.
1008
1009 Thu May 21 13:24:52 1998  Werner Koch  (wk@isil.d.shuttle.de)
1010
1011         * cipher.c: Add support for a dummy cipher
1012
1013 Thu May 14 15:40:36 1998  Werner Koch  (wk@isil.d.shuttle.de)
1014
1015         * rmd160.c (transform): fixed sigbus - I should better
1016         add Christian von Roques's new implemenation of rmd160_write.
1017
1018 Fri May  8 18:07:44 1998  Werner Koch  (wk@isil.d.shuttle.de)
1019
1020         * rand-internal.h, rand-unix.c, rand-w32.c, rand_dummy.c: New
1021         * random.c: Moved system specific functions to rand-****.c
1022
1023 Fri May  8 14:01:17 1998  Werner Koch  (wk@isil.d.shuttle.de)
1024
1025         * random.c (fast_random_poll): add call to gethrtime.
1026
1027 Tue May  5 21:28:55 1998  Werner Koch  (wk@isil.d.shuttle.de)
1028
1029         * elgamal.c (elg_generate): choosing x was not correct, could
1030         yield 6 bytes which are not from the random pool, tsss, tsss..
1031
1032 Tue May  5 14:09:06 1998  Werner Koch  (wk@isil.d.shuttle.de)
1033
1034         * primegen.c (generate_elg_prime): Add arg mode, changed all
1035         callers and implemented mode 1.
1036
1037 Mon Apr 27 14:41:58 1998  Werner Koch  (wk@isil.d.shuttle.de)
1038
1039         * cipher.c (cipher_get_keylen): New.
1040
1041 Sun Apr 26 14:44:52 1998  Werner Koch  (wk@isil.d.shuttle.de)
1042
1043         * tiger.c, tiger.h: New.
1044
1045 Wed Apr  8 14:57:11 1998  Werner Koch  (wk@isil.d.shuttle.de)
1046
1047         * misc.c (check_pubkey_algo2): New.
1048
1049 Tue Apr  7 18:46:49 1998  Werner Koch  (wk@isil.d.shuttle.de)
1050
1051         * cipher.c: New
1052         * misc.c (check_cipher_algo): Moved to cipher.c
1053         * cast5.c: Moved many functions to cipher.c
1054         * blowfish.c: Likewise.
1055
1056 Sat Apr  4 19:52:08 1998  Werner Koch  (wk@isil.d.shuttle.de)
1057
1058         * cast5.c: Implemented and tested.
1059
1060 Wed Apr  1 16:38:27 1998  Werner Koch  (wk@isil.d.shuttle.de)
1061
1062         * elgamal.c (elg_generate): Faster generation of x in some cases.
1063
1064 Thu Mar 19 13:54:48 1998  Werner Koch  (wk@isil.d.shuttle.de)
1065
1066         * blowfish.c (blowfish_decode_cfb): changed XOR operation
1067         (blowfish_encode_cfb): Ditto.
1068
1069 Thu Mar 12 14:04:05 1998  Werner Koch  (wk@isil.d.shuttle.de)
1070
1071         * sha1.c (transform): Rewrote
1072
1073         * blowfish.c (encrypt): Unrolled for rounds == 16
1074         (decrypt): Ditto.
1075
1076 Tue Mar 10 16:32:08 1998  Werner Koch  (wk@isil.d.shuttle.de)
1077
1078         * rmd160.c (transform): Unrolled the loop.
1079
1080 Tue Mar 10 13:05:14 1998  Werner Koch  (wk@isil.d.shuttle.de)
1081
1082         * random.c (read_pool): Add pool_balance stuff.
1083         (get_random_bits): New.
1084
1085         * elgamal.c (elg_generate): Now uses get_random_bits to generate x.
1086
1087
1088 Tue Mar 10 11:33:51 1998  Werner Koch  (wk@isil.d.shuttle.de)
1089
1090         * md.c (md_digest_length): New.
1091
1092 Tue Mar 10 11:27:41 1998  Werner Koch  (wk@isil.d.shuttle.de)
1093
1094         * dsa.c (dsa_verify): Works.
1095
1096 Mon Mar  9 12:59:08 1998  Werner Koch  (wk@isil.d.shuttle.de)
1097
1098         * dsa.c, dsa.h: Removed some unused code.
1099
1100 Wed Mar  4 10:39:22 1998  Werner Koch  (wk@isil.d.shuttle.de)
1101
1102         * md.c (md_open): Add call to fast_random_poll.
1103         blowfish.c (blowfish_setkey): Ditto.
1104
1105 Tue Mar  3 13:32:54 1998  Werner Koch  (wk@isil.d.shuttle.de)
1106
1107         * rmd160.c (rmd160_mixblock): New.
1108         * random.c: Restructured to start with a new RNG implementation.
1109         * random.h: New.
1110
1111 Mon Mar  2 19:21:46 1998  Werner Koch  (wk@isil.d.shuttle.de)
1112
1113         * gost.c, gost.h: Removed because they did only conatin trash.
1114
1115 Sun Mar  1 16:42:29 1998  Werner Koch  (wk@isil.d.shuttle.de)
1116
1117         * random.c (fill_buffer): removed error message if n == -1.
1118
1119 Fri Feb 27 16:39:34 1998  Werner Koch  (wk@isil.d.shuttle.de)
1120
1121         * md.c (md_enable): No init if called twice.
1122
1123 Thu Feb 26 07:57:02 1998  Werner Koch  (wk@isil.d.shuttle.de)
1124
1125         * primegen.c (generate_elg_prime): Changed the progress printing.
1126         (gen_prime): Ditto.
1127
1128 Tue Feb 24 12:28:42 1998  Werner Koch  (wk@isil.d.shuttle.de)
1129
1130         * md5.c, md.5 : Replaced by a modified version of md5.c from
1131         GNU textutils 1.22.
1132
1133 Wed Feb 18 14:08:30 1998  Werner Koch  (wk@isil.d.shuttle.de)
1134
1135         * md.c, md.h : New debugging support
1136
1137 Mon Feb 16 10:08:47 1998  Werner Koch  (wk@isil.d.shuttle.de)
1138
1139         * misc.c (cipher_algo_to_string): New
1140         (pubkey_algo_to_string): New.
1141         (digest_algo_to_string): New.
1142
1143
1144  Copyright 1998,1999,2000,2001 Free Software Foundation, Inc.
1145
1146  This file is free software; as a special exception the author gives
1147  unlimited permission to copy and/or distribute it, with or without
1148  modifications, as long as this notice is preserved.
1149
1150  This file is distributed in the hope that it will be useful, but
1151  WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
1152  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.