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