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