2003-04-17 Moritz Schulte <moritz@g10code.com>
[libgcrypt.git] / cipher / ChangeLog
1 2003-04-17  Moritz Schulte  <moritz@g10code.com>
2
3         * md.c: Include sha512/sha384 in digest_table.
4
5 2003-04-16  Moritz Schulte  <moritz@g10code.com>
6
7         * Makefile.am: Include support for sha512.c.
8
9         * sha512.c: New file, merged from GnuPG, with few modifications
10         for libgcrypt.
11
12         * rand-internal.h: Removed declarations for constructor functions.
13
14         * md.c (md_copy): Call _gcry_module_use for incrementing the usage
15         counter of the digest modules.
16
17         * rsa.c: Do not include "rsa.h".
18         * dsa.c: Do not include "dsa.h".
19         * elgamal.c: Do not include "elgamal.h".
20         * des.c: Do not include "des.h".
21         * cast5.c: Do not include "cast5.h".
22         * blowfish.c: Do not include "blowfish.h".
23         * arcfour.c: Do not include "arcfour.h".
24
25         * Makefile.am (libcipher_la_DEPENDENCIES): Removed.
26         (libcipher_la_LIBADD): Removed.
27         Use Automake conditionals for conditional compilation.
28
29 2003-04-13  Moritz Schulte  <moritz@g10code.com>
30
31         * cipher.c (gcry_cipher_open): Call REGISTER_DEFAULT_CIPHERS.
32
33         * md.c (gcry_md_list): New member: module.
34         (md_enable): New variable: module, changed use of module and
35         digest.
36         (md_enable): Initialize member: module.
37         (md_close): Call _gcry_module_release.
38
39         * cipher.c (gcry_cipher_open): New variable: module, changed use of
40         module and cipher.
41         (struct gcry_cipher_handle): New member: module.
42         (gcry_cipher_open): Initialize member: module.
43         (gcry_cipher_close): Call _gcry_module_release.
44
45 2003-04-09  Moritz Schulte  <moritz@g10code.com>
46         
47         * cipher.c: Include "ath.h".
48         * md.c: Likewise.
49         * pubkey.c: Likewise.
50
51         * cipher.c (ciphers_registered_lock): New variable.
52         * md.c (digests_registered_lock): New variable.
53         * pubkey.c (pubkeys_registered_lock): New variable.
54
55         * rndlinux.c (gnupgext_version, func_table): Removed definitions.
56         (gnupgext_enum_func): Removed function.
57         (_gcry_rndlinux_constructor): Removed function.
58
59         * rndegd.c (gnupgext_version, func_table): Removed definitions.
60         (gnupgext_enum_func): Removed function.
61         (_gcry_rndegd_constructor): Removed function.
62
63         * rndunix.c (gnupgext_version, func_table): Removed definitions.
64         (gnupgext_enum_func): Removed function.
65         (_gcry_rndunix_constructor): Removed function.
66
67         * rndw32.c (gnupgext_version, func_table): Removed definitions.
68         (gnupgext_enum_func): Removed function.
69         (_gcry_rndw32_constructor): Removed function.
70
71         * rndegd.c (rndegd_connect_socket): Simplify code for creating the
72         egd socket address.
73         (rndegd_connect_socket): Call log_fatal use instead of
74         g10_log_fatal.
75         (egd_gather_random): Renamed to ...
76         (rndegd_gather_random): ... here.
77
78 2003-04-08  Moritz Schulte  <moritz@g10code.com>
79
80         * rndlinux.c: Do not include "dynload.h".
81         * rndunix.c: Likewise.
82         * rndw32.c: Likewise.
83
84         * rndegd.c (rndegd_connect_socket): Factored out from ...
85         (egd_gather_random): here; call it.
86         (egd_socket): New variable.
87         (egd_gather_random): Initialize fd with egd_socket, do not declare
88         fd static.
89         (do_read): Merged few changes from GnuPG. FIXME - not finished?
90         Do not include "dynload.h".
91
92         * rndw32.c (gather_random): Renamed to rndw32_gather_random, do
93         not declare static.
94         (gather_random_fast): Renamed to rndw32_gather_random_fast, do not
95         declare static.
96
97         * rndunix.c (gather_random): Renamed to rndunix_gather_random, do
98         not declare static.
99         * rndegd.c (gather_random): Renamed to rndegd_gather_random, do
100         not declare static.
101         * rndlinux.c (gather_random): Renamed to rndlinux_gather_random,
102         do not declare static.
103
104 2003-04-07  Moritz Schulte  <moritz@g10code.com>
105
106         * Makefile.am (libcipher_la_SOURCES): Removed construct.c.
107         (libcipher_la_SOURCES): Added sha1.c, sha256.c, rmd160.c, md4.c,
108         md5.c, tiger.c and crc.c
109         (EXTRA_PROGRAMS): Removed sha1, sha256, rmd160, md4, md5, tiger
110         and crc.  Removed definitions: EXTRA_md4_SOURCES,
111         EXTRA_md5_SOURCES, EXTRA_rmd160_SOURCES, EXTRA_sha1_SOURCES,
112         EXTRA_sha256_SOURCES, EXTRA_tiger_SOURCES and EXTRA_crc_SOURCES,
113         BUILT_SOURCES, DISTCLEANFILES.
114
115         * pubkey.c: Do not include "elgamal.h", "dsa.h" and "rsa.h".
116
117         * Makefile.am (libcipher_la_SOURCES): Removed rsa.h, elgamal.h,
118         dsa.h, des.h, cast5.h, arcfour.h and blowfish.h.
119
120         * rsa.h: Removed file.
121         * elgamal.h: Removed file.
122         * dsa.h: Removed file.
123         * des.h: Removed file.
124         * cast5.h: Removed file.
125         * arcfour.h: Removed file.
126         * blowfish.h: Removed file.
127
128         * Makefile.am (libcipher_la_SOURCES): Removed dynload.c and
129         dynload.h.
130
131         * rsa.c (pubkey_spec_rsa): New variable.
132         * dsa.c (pubkey_spec_rsa): New variable.
133         * elgamal.c (pubkey_spec_elg): New variable.
134         
135         * rsa.c (_gcry_rsa_get_info): Removed function.
136         * elgamal.c (_gcry_elg_get_info): Removed function.
137         * dsa.c (_gcry_dsa_get_info): Removed function.
138
139         * tiger.c (tiger_get_info): Removed function.
140         (gnupgext_version, func_table): Removed definitions.
141         (gnupgext_enum_func): Removed function.
142         (_gcry_tiger_constructor): Removed function.
143         
144         * sha1.c (sha1_get_info): Removed function.
145         (gnupgext_version, func_table): Removed definitions.
146         (gnupgext_enum_func): Removed function.
147         (_gcry_sha1_constructor): Removed function.
148
149         * sha256.c (sha256_get_info): Removed function.
150         (gnupgext_version, func_table): Removed definitions.
151         (gnupgext_enum_func): Removed function.
152         (_gcry_sha256_constructor): Removed function.
153
154         * rmd160.c (rmd160_get_info): Removed function.
155         (gnupgext_version, func_table): Removed definitions.
156         (gnupgext_enum_func): Removed function.
157         (_gcry_rmd160_constructor): Removed function.
158
159         * md5.c (md5_get_info): Removed function.
160         (gnupgext_version, func_table): Removed definitions.
161         (gnupgext_enum_func): Removed function.
162         (_gcry_md5_constructor): Removed function.
163
164         * md4.c (md4_get_info): Removed function.
165         (gnupgext_version, func_table): Removed definitions.
166         (gnupgext_enum_func): Removed function.
167         (_gcry_md4_constructor): Removed function.
168
169         * crc.c (crc_get_info): Removed function.
170
171         * arcfour.c (do_arcfour_setkey): Changed type of context argument
172         to `void *', added local variable for cast, adjusted callers.
173         (arcfour_setkey): Likewise.
174         (encrypt_stream): Likewise.
175         * cast5.c (cast_setkey): Likewise.
176         (encrypt_block): Likewise.
177         * rijndael.c (rijndael_setkey): Likewise.
178         (rijndael_encrypt): Likewise.
179         (rijndael_decrypt): Likewise.
180         * twofish.c (twofish_setkey): Likewise.
181         (twofish_encrypt): Likewise.
182         (twofish_decrypt): Likewise.
183         * des.c (do_des_setkey): Likewise.
184         (do_des_encrypt): Likewise.
185         (do_des_encrypt): Likewise.
186         (do_tripledes_encrypt): Likewise.
187         (do_tripledes_encrypt): Likewise.
188         * blowfish.c (bf_setkey: Likewise.
189         (encrypt_block): Likewise.
190         (decrypt_block): Likewise.
191         
192         * arcfour.c (encrypt_stream): Likewise.
193
194         * rijndael.c (gnupgext_version, func_table): Removed definitions.
195         (gnupgext_enum_func) Removed function.  
196         
197         * twofish.c (gnupgext_version, func_table): Removed definitions.
198         (gnupgext_enum_func) Removed function.  
199
200         * cast5.c (CIPHER_ALGO_CAST5): Removed.
201
202         * blowfish.c (FNCCAST_SETKEY, FNCCAST_CRYPT): Removed macros.
203         (CIPHER_ALGO_BLOWFISH): Removed symbol.
204         * cast5.c (FNCCAST_SETKEY, FNCCAST_CRYPT): Likewise.
205         * des.c (selftest_failed): Removed.
206         (initialized): New variable.
207         (do_des_setkey): Run selftest, if not yet done.
208         (FNCCAST_SETKEY, FNCCAST_CRYPT): Removed macros.
209
210         * arcfour.c (_gcry_arcfour_get_info): Removed function.
211         * blowfish.c (_gcry_blowfish_get_info): Removed function.
212         * cast5.c (_gcry_cast5_get_info): Removed function.
213         * des.c (_gcry_des_get_info): Removed function.
214         * rijndael.c (_gcry_rijndael_get_info): Removed function.
215         * twofish.c (_gcry_twofish_get_info): Removed function.
216
217         * arcfour.c (cipher_spec_arcfour): New variable.
218         * twofish.c (cipher_spec_twofish, cipher_spec_twofish128): New
219         variables.
220         * rijndael.c (cipher_spec_aes, cipher_spec_aes192,
221         cipher_spec256): New variables.
222         * des.c (cipher_spec_des, cipher_spec_tripledes): New variables.
223         * cast5.c (cipher_spec_cast5): New variable.
224         * blowfish.c (cipher_spec_blowfish): Likewise.
225         
226         * twofish.c: Do not include "dynload.h".
227         * rijndael.c: Likewise.
228         * des.c: Likewise.
229         * cast5.c: Likewise.
230         * blowfish.c: Likewise.
231         * cipher.c: Likewise.
232         * crc.c: Likewise.
233         * md4.c: Likewise.
234         * md5.c: Likewise.
235         * md.c: Likewise.
236         * pubkey.c: Likewise.
237         * rijndael.c: Likewise.
238         * sha1.c: Likewise.
239         * sha256.c: Likewise.
240
241         * arcfour.c: Include "cipher.h".
242         * twofish.c: Likewise.
243         * rijndael.c: Likewise.
244         * des.c: Likewise.
245         * cast5.c: Likewise.
246         * blowfish.c: Likewise.
247
248         * twofish.c (twofish_setkey): Declared argument `key' const.
249         (twofish_encrypt): Declared argument `inbuf' const.
250         (twofish_decrypt): Likewise.
251
252         * rijndael.c (rijndael_setkey): Declared argument `key' const.
253         (rijndael_encrypt): Declared argument `inbuf' const.
254         (rijndael_decrypt): Likewise.
255
256         * des.c (do_des_setkey): Declared argument `key' const.
257         (do_tripledes_setkey): Likewise.
258         (do_des_encrypt): Declared argument `inbuf' const.
259         (do_des_decrypt): Likewise.
260         (do_tripledes_encrypt): Likewise.
261         (do_tripledes_decrypt): Likewise.
262
263         * cast5.c (encrypt_block): Declared argument `inbuf' const.
264         (decrypt_block): Likewise.
265         (cast_setkey): Declared argument `key' const.
266
267         * blowfish.c (do_bf_setkey): Declared argument `key' const.
268         (encrypt_block): Declared argument `inbuf' const.
269         (encrypt_block): Likewise.
270
271         
272
273         * cipher.c: Remove CIPHER_ALGO_DUMMY related code.
274         Removed struct cipher_table_s.
275         Changed definition of cipher_table.
276         Removed definition of disabled_algos.
277         (ciphers_registered, default_ciphers_registered): New variables.
278         (REGISTER_DEFAULT_CIPHERS): New macro.
279         (dummy_setkey): Declared argument `key' const.
280         (dummy_encrypt_block): Declared argument `inbuf' const.
281         (dummy_encrypt_block): Likewise.
282         (dummy_encrypt_stream): Likewise.
283         (dummy_encrypt_stream): Likewise.
284         (dummy_setkey): Use `unsigned char' instead of `byte'.
285         (dummy_encrypt_block): Likewise.
286         (dummy_decrypt_block): Likewise.
287         (dummy_encrypt_stream): Likewise.
288         (dummy_decrypt_stream): Likewise.
289         (gcry_cipher_register_default): New function.
290         (gcry_cipher_lookup_func_id): New function.
291         (gcry_cipher_lookup_func_name): New function.
292         (gcry_cipher_lookup_id): New function.
293         (gcry_cipher_lookup_name): New function.
294         (gcry_cipher_id_new): New function.
295         (gcry_cipher_register): New function.
296         (gcry_cipher_unregister): New function.
297         (setup_cipher_table): Removed function.
298         (load_cipher_modules): Removed function.
299         (gcry_cipher_map_name): Adjusted to use new module management.
300         (cipher_algo_to_string): Likewise.
301         (disable_cipher_algo): Likewise.
302         (check_cipher_algo): Likewise.
303         (cipher_get_keylen): Likewise.
304         (cipher_get_blocksize): Likewise.
305         (gcry_cipher_open): Likewise.
306         (struct gcry_cipher_handle): Replaced members algo, algo_index,
307         blocksize, setkey, encrypt, decrypt, stencrypt, stdecrypt with one
308         member: cipher.
309         (gcry_cipher_open): Adjusted code for new handle structure.
310         (cipher_setkey): Likewise.
311         (cipher_setiv): Likewise.
312         (cipher_reset): Likewise.
313         (do_ecb_encrypt): Likewise.
314         (do_ecb_decrypt): Likewise.
315         (do_cbc_encrypt): Likewise.
316         (do_cbc_decrypt): Likewise.
317         (do_cfb_encrypt): Likewise.
318         (do_cfb_decrypt): Likewise.
319         (do_ctr_encrypt): Likewise.
320         (cipher_encrypt): Likewise.
321         (gcry_cipher_encrypt): Likewise.
322         (cipher_decrypt): Likewise.
323         (gcry_cipher_decrypt): Likewise.
324         (cipher_sync): Likewise.
325         (gcry_cipher_ctl): Likewise.
326
327         * pubkey.c: Removed struct pubkey_table_s.
328         Changed definition of pubkey_table.
329         Removed definition of disabled_algos.
330         (pubkeys_registered, default_pubkeys_registered): New variables.
331         (REGISTER_DEFAULT_PUBKEYS): New macro.
332         (setup_pubkey_table): Removed function.
333         (load_pubkey_modules): Removed function.
334         (gcry_pubkey_register_default): New function.
335         (gcry_pubkey_lookup_func_id): New function.
336         (gcry_pubkey_lookup_func_name): New function.
337         (gcry_pubkey_lookup_id): New function.
338         (gcry_pubkey_lookup_name): New function.
339         (gcry_pubkey_id_new): New function.
340         (gcry_pubkey_register): New function.
341         (gcry_pubkey_unregister): New function.
342         (gcry_pk_map_name): Adjusted to use new module management.
343         (gcry_pk_algo_name): Likewise.
344         (disable_pubkey_algo): Likewise.
345         (check_pubkey_algo): Likewise.
346         (pubkey_get_npkey): Likewise.
347         (pubkey_get_nskey): Likewise.
348         (pubkey_get_nsig): Likewise.
349         (pubkey_get_nenc): Likewise.
350         (pubkey_generate): Likewise.
351         (pubkey_check_secret_key): Likewise.
352         (pubkey_encrypt): Likewise.
353         (pubkey_decrypt): Likewise.
354         (pubkey_sign): Likewise.
355         (pubkey_verify): Likewise.
356         (gcry_pk_get_nbits): Likewise.
357         (gcry_pk_algo_info): Likewise.
358
359         * md.c: Removed struct md_digest_list_s.
360         (digest_list): Changed definition.
361         (digests_registered, default_digests_registered): New variables.
362         (REGISTER_DEFAULT_DIGESTS): New macro.
363         (new_list_item): Removed function.
364         (setup_md_table): Removed function.
365         (load_digest_module): Removed function.
366         (gcry_digest_register_default): New function.
367         (gcry_digest_lookup_func_id): New function.
368         (gcry_digest_lookup_func_name): New function.
369         (gcry_digest_lookup_id): New function.
370         (gcry_digest_lookup_name): New function.
371         (gcry_digest_id_new): New function.
372         (gcry_digest_register): New function.
373         (gcry_digest_unregister): New function.
374         (GcryDigestEntry): New type.
375         (struct gcry_md_context): Adjusted type of `list'.
376         (gcry_md_map_name): Adjusted to use new module management.
377         (digest_algo_to_string): Likewise.
378         (check_digest_algo): Likewise.
379         (md_enable): Likewise.
380         (md_digest_length): Likewise.
381         (md_asn_oid): Likewise.
382
383 2003-04-07  Moritz Schulte  <moritz@g10code.com>
384
385         * pubkey.c: Replaced PUBKEY_ALGO_DSA with GCRY_PK_DSA,
386         PUBKEY_ALGO_RSA with GCRY_PK_RSA and PUBKEY_ALGO_ELGAMAL with
387         GCRY_PK_ELG.
388
389         * dsa.c: Replaced PUBKEY_ALGO_DSA with GCRY_PK_DSA.
390
391 2003-04-01  Moritz Schulte  <moritz@g10code.com>
392
393         * des.c: Removed checks for GCRY_CIPHER_3DES and GCRY_CIPHER_DES.
394
395 2003-03-31  Moritz Schulte  <moritz@g10code.com>
396
397         * tiger.c (tiger_get_info): Do not declare static.
398         * sha256.c (sha256_get_info): Likewise.
399         * sha1.c (sha1_get_info): Likewise.
400         * rmd160.c (rmd160_get_info): Likewise.
401         * md5.c (md5_get_info): Likewise.
402         * md4.c (md4_get_info): Likewise.
403         * crc.c (crc_get_info): Likewise.
404
405         * md.c (load_digest_module): Call setup_md_table during
406         initialization.
407         (new_list_item): Link new element into digest_list.
408
409         * cipher.c (do_ctr_decrypt): Made do_ctr_encrypt act as a wrapper
410         for do_ctr_encrypt, since these functions are identical.
411
412 2003-03-30  Simon Josefsson  <jas@extundo.com>
413
414         * cipher.c (struct gcry_cipher_handle): Add counter field.
415         (gcry_cipher_open): Add CTR.
416         (cipher_reset): Clear counter field.
417         (do_ctr_encrypt, do_ctr_decrypt): New functions.
418         (cipher_encrypt, cipher_decrypt): Call CTR functions.
419         (gcry_cipher_ctl): Add SET_CTR to set counter.
420
421 2003-03-30  Moritz Schulte  <moritz@g10code.com>
422
423         * rsa.c (_gcry_rsa_blind): New function.
424         (_gcry_rsa_unblind): New function.
425         (_gcry_rsa_decrypt): Use _gcry_rsa_blind and _gcry_rsa_decrypt.
426
427 2003-03-26  Moritz Schulte  <moritz@g10code.com>
428
429         * dynload.c (_gcry_enum_gnupgext_pubkeys): Adjust `encrypt' and
430         `decrypt' function arguments.
431         (_gcry_enum_gnupgext_pubkeys): Likewise.
432         * dynload.h: Likewise.
433         
434         * pubkey.c (dummy_decrypt): Add argument: int flags.
435         (dummy_encrypt): Likewise.
436
437         * elgamal.c (_gcry_elg_encrypt): Add argument: int flags.
438         (_gcry_elg_decrypt): Likewise.
439
440         * rsa.c (_gcry_rsa_encrypt): Add argument: int flags.
441         (_gcry_rsa_decrypt): Likewise.
442
443         * pubkey.c: Add `flags' argument to members `encrypt' and
444         `decrypt' of struct `pubkey_table_s'.
445
446         * rsa.h: Add `flags' argument to function declarations.
447         * elgamal.h: Likewise.
448
449         * pubkey.c (sexp_data_to_mpi): New variable: int parsed_flags.
450         (sexp_data_to_mpi): Set `parsed_flags'.
451         (sexp_data_to_mpi): New argument: int *flags.
452         (gcry_pk_encrypt): New variable: int flags.
453         (gcry_pk_encrypt): Pass `flags' to pubkey_encrypt.
454         (pubkey_encrypt): New variable: int flags.
455         (pubkey_encrypt): Pass `flags' to pubkey encrypt function.
456         (pubkey_decrypt): Likewise.
457         (pubkey_decrypt): Pass `flags' to pubkey encrypt function.
458         (gcry_pk_encrypt): Include `flags' s-exp in return list.
459         (sexp_to_enc): New argument: int *flags.
460         (gcry_pk_decrypt): New variable: int flags.
461         (gcry_pk_decrypt): Pass `flags' to pubkey_decrypt.
462         (sexp_to_enc): New variable: int parsed_flags.
463         (sexp_to_enc): Set `parsed_flags'.
464
465 2003-03-22  Simon Josefsson  <jas@extundo.com>
466
467         * cipher.c (gcry_cipher_open, do_cbc_encrypt)
468         (gcry_cipher_encrypt): Support GCRY_CIPHER_CBC_MAC.
469         (gcry_cipher_ctl): Support GCRYCTL_SET_CBC_MAC.
470
471 2003-03-19  Werner Koch  <wk@gnupg.org>
472
473         * primegen.c (gen_prime): New args EXTRA_CHECK and EXTRA_CHECK_ARG
474         to allow for a user callback.  Changed all callers.
475         (_gcry_generate_secret_prime)
476         (_gcry_generate_public_prime): Ditto, pass them to gen_prime.
477         * rsa.c (check_exponent): New.
478         (generate): Use a callback to ensure that a given exponent is
479         actually generated.
480
481 2003-03-12  Moritz Schulte  <moritz@g10code.com>
482
483         * primegen.c: Initialize `no_of_small_prime_numbers' statically.
484         (gen_prime): Remove calculation of `no_of_small_prime_numbers'.
485
486 2003-03-03  Moritz Schulte  <moritz@g10code.com>
487
488         * md.c (gcry_md_ctl): Rewritten to use same style like the other
489         functions dispatchers.
490
491 2003-03-02  Moritz Schulte  <moritz@g10code.com>
492
493         * cipher.c (struct gcry_cipher_handle): New member: algo_index.
494         (gcry_cipher_open): Allocate memory for two cipher contexts.
495         Initialize algo_index.
496         (cipher_setkey): Duplicate context into reserved memory.
497         (cipher_reset): New function, which resets the context and clear
498         the IV.
499         (gcry_cipher_ctl): Call cipher_reset.
500
501 2003-02-23  Moritz Schulte  <moritz@g10code.com>
502
503         * cipher.c: Remove (bogus) `digitp' macro definition.
504         * md.c: Likewise.
505
506         * blowfish.c (burn_stack): Removed.
507         * arcfour.c (burn_stack): Likewise.
508         * cast5.c (burn_stack): Likewise.
509         * des.c (burn_stack): Likewise.
510         * md4.c (burn_stack): Likewise.
511         * md5.c (burn_stack): Likewise.
512         * random.c (burn_stack): Likewise.
513         * rijndael.c (burn_stack): Likewise.
514         * rmd160.c (burn_stack): Likewise.
515         * sha1.c (burn_stack): Likewise.
516         * sha256.c (burn_stack): Likewise.
517         * tiger.c (burn_stack): Likewise.
518         * twofish.c (burn_stack): Likewise.
519
520         * blowfish.c: Changed all occurences of burn_stack to
521         _gcry_burn_stack.
522         * arcfour.c: Likewise.
523         * cast5.c: Likewise.
524         * des.c: Likewise.
525         * md4.c: Likewise.
526         * md5.c: Likewise.
527         * random.c: Likewise.
528         * rijndael.c: Likewise.
529         * rmd160.c: Likewise.
530         * sha1.c: Likewise.
531         * sha256.c: Likewise.
532         * tiger.c: Likewise.
533         * twofish.c: Likewise.
534
535         * arcfour.c (_gcry_arcfour_get_info): Use GCRY_CIPHER_ARCFOUR
536         instead of hard-coded value `301'.
537
538 2003-01-24  Werner Koch  <wk@gnupg.org>
539
540         * random.c (_gcry_register_random_progress): New.
541         (_gcry_random_progress): New.
542
543         * rndlinux.c (gather_random): Call the random progress function. 
544
545 2003-01-23  Werner Koch  <wk@gnupg.org>
546
547         * rsa.c (generate): New arg USE_E to request a specific public
548         exponent.
549         (_gcry_rsa_generate): Ditto.
550         * elgamal.c (_gcry_elg_generate): Must add an dummy argument
551         instead of USE_E.
552         * dsa.c (_gcry_dsa_generate): Ditto.
553         * pubkey.c (dummy_generate): Ditto.
554         (pubkey_generate): Add USE_E arg and pass it down.
555         (gcry_pk_genkey): Detect "rsa-use-e" parameter and pass it to generate.
556
557         * pubkey.c (sexp_to_enc): New arg RET_MODERN.
558         (gcry_pk_decrypt): Make use of it to return a real S-expression.
559         Return better error codes.
560         (gcry_pk_verify): Return better error codes.
561
562 2003-01-21  Werner Koch  <wk@gnupg.org>
563
564         * random.c (gcry_random_add_bytes): Add QUALITY argument, let
565         function return an error code and disable its core for now.
566
567 2003-01-21  Timo Schulz  <twoaday@freakmail.de>
568
569         * random.c (gcry_random_add_bytes): New. Function to add external
570         random to the pool.
571         
572 2003-01-20  Simon Josefsson  <jas@extundo.com>
573
574         * crc.c: New.
575         * Makefile.am (EXTRA_PROGRAMS, EXTRA_crc_SOURCES): Add crc.c.
576         * md.c (gcry_md_get_algo_dlen): Add values for CRC.
577
578 2003-01-20  Werner Koch  <wk@gnupg.org>
579
580         * sha256.c: New.
581         * bithelp.h (ror): New.
582         * Makfile.am: Add sha256.c.
583         * md.c (oid_table): Add values for SHA256 et al.
584         (gcry_md_get_algo_dlen): Likewise
585
586 2003-01-20  Werner Koch  <wk@gnupg.org>
587
588         * pubkey.c (gcry_pk_get_keygrip): Implemented keygrips for DSA
589         and ElGamal.
590
591 2003-01-17  Werner Koch  <wk@gnupg.org>
592
593         * cipher.c (gcry_cipher_encrypt): Reworked so that the output will
594         never contain the plaintext even if the caller did not checked the
595         return value.
596
597         * md.c (gcry_md_get_algo): Changed error code to GCRYERR_GENERAL
598         because we don't have an invalid md algo but no algorithm enabled.
599
600         * pubkey.c (gcry_pk_genkey): Changed error code for bounds check
601         of table parameters to GCRYERR_INTERNAL.
602
603         * md.c (gcry_md_open): Partly reverted Timo's change from
604         2002-10-10 by removing the check for the algorithm.  An algorithm
605         of 0 is allowed and anyway we should not double check it or check
606         it using a different function.  Also fixed the flags check.
607
608         * pubkey.c (gcry_pk_encrypt): Make sure that R_CIPH points to NULL
609         on error.
610         (gcry_pk_decrypt): Ditto for R_PLAIN.
611         (gcry_pk_sign): Ditto for R_SIG.
612         (gcry_pk_genkey): Ditto for R_KEY.
613
614 2003-01-16  Werner Koch  <wk@gnupg.org>
615
616         * md.c (gcry_md_write): Changed 2nd argument type to void*.
617         (gcry_md_hash_buffer): Changed type of boths buffers to void*.
618         (gcry_md_setkey): Changed 2nd argument type to void*.
619
620 2003-01-15  Werner Koch  <wk@gnupg.org>
621
622         * pubkey.c (sexp_data_to_mpi): New.  This handles pkcs1 padding.
623         (gcry_pk_sign, gcry_pk_verify): Use it here.
624         (gcry_pk_encrypt): And here.
625         (pubkey_verify): Add debug code.
626         (sexp_to_enc): Handle flags in the input and return the pkcs1 flag
627         in a new parameter.
628         (gcry_pk_decrypt): Prepare for future pkcs1 handling.
629
630 2002-12-19  Werner Koch  <wk@gnupg.org>
631
632         * random.c (_gcry_random_initialize): New.
633
634 2002-12-16  Werner Koch  <wk@gnupg.org>
635
636         * cipher.c: Added a Tetetrust specific OID for 3DES.
637
638 2002-12-12  Werner Koch  <wk@gnupg.org>
639
640         * md.c: Added another oddball OIW OID (sha-1WithRSAEncryption).
641
642 2002-11-23  Werner Koch  <wk@gnupg.org>
643
644         * md.c (load_digest_module): Enlarged checked_algos bitmap.
645         * md4.c (func_table):  Fixed entry for md4. 
646         Both by Simon Josephson.
647         (transform): Copy data to get the alignment straight. Tested only
648         on i386.
649
650 2002-11-10  Simon Josefsson  <jas@extundo.com>
651
652         * cipher.c (gcry_cipher_open): Don't reject CTS flag.
653         (do_cbc_encrypt, do_cbc_decrypt, cipher_encrypt) 
654         (gcry_cipher_encrypt, cipher_decrypt)
655         (gcry_cipher_decrypt): Support CTS flag.
656         (gcry_cipher_ctl): Toggle CTS flag.
657
658 2002-11-10  Werner Koch  <wk@gnupg.org>
659
660         * md4.c: New. By Simon Josefsson.
661         * Makefile.am (EXTRA_PROGRAMS): Add md4.c. 
662         * md.c (oid_table,gcry_md_get_algo_dlen): MD4 support. 
663
664 2002-10-14  Werner Koch  <wk@gnupg.org>
665
666         * arcfour.c (do_encrypt_stream): Don't use increment op when
667         assigning to the same variable.
668
669 2002-10-10  Timo Schulz  <ts@winpt.org>
670
671         * pubkey.c (gcry_pk_genkey): Check boundaries.
672         
673         * md.c (gcry_md_open): Check that algo is available and only
674         valid flag values are used.
675         (gcry_md_get_algo): Add error handling.
676         
677 2002-09-26  Werner Koch  <wk@gnupg.org>
678
679         * md.c: Include an OID for TIGER.
680         * tiger.c (tiger_get_info): Use a regular OID.
681
682 2002-09-17  Werner Koch  <wk@gnupg.org>
683
684         * random.c: Replaced mutex.h by the new ath.h.  Changed all calls.
685
686 2002-09-16  Werner Koch  <wk@gnupg.org>
687
688         * arcfour.c (do_encrypt_stream): Use register modifier and modulo.
689         According to Nikos Mavroyanopoulos this increases perfromace on
690         i386 system noticable.  And I always tought gcc is clever enough.
691         * md5.c (transform): Use register modifier.
692         * rmd160.c (transform): Ditto.
693         * sha1.c (transform): Ditto.  We hope that there are 6 free registers.
694         * random.c (gcry_randomize): Rewrote to avoid malloc calls.
695
696         * rndlinux.c (gather_random): Replaced remaining fprintfs by log_*.
697         * arcfour.c (do_arcfour_setkey): Ditto.
698         * twofish.c (do_twofish_setkey): Ditto.
699         * rndegd.c (gather_random): Ditto.
700         * rijndael.c (do_setkey): Ditto.
701         * random.c (_gcry_random_dump_stats): Ditto. 
702         * primegen.c (_gcry_generate_elg_prime): Ditto.
703         * des.c (_gcry_des_get_info): Ditto.
704         * cast5.c (do_cast_setkey): Ditto.
705         * blowfish.c (do_bf_setkey): Ditto.
706
707 2002-08-26  Werner Koch  <wk@gnupg.org>
708
709         * des.c (weak_keys): Fixed one entry in the table and compared
710         all entries against the literature.
711         (selftest): Checksum the weak key table.
712
713 2002-08-21  Werner Koch  <wk@gnupg.org>
714
715         * pubkey.c: Enable keygrip calculation for "openpgp-rsa".
716
717 2002-08-17  Werner Koch  <wk@gnupg.org>
718
719         * cipher.c (setup_cipher_table): Don't overwrite the DES entry
720         with the entry for DUMMY.
721
722 2002-08-14  Werner Koch  <wk@gnupg.org>
723
724         * des.c (do_des_setkey,do_des_encrypt, do_des_decrypt): New.
725         (_gcry_des_get_info): Support plain old DES.
726         * cipher.c (setup_cipher_table): Put DES into the table.
727
728 2002-07-25  Werner Koch  <wk@gnupg.org>
729
730         * rndunix.c (_gcry_rndunix_constructor): Prefixed with _gcry_.
731         Noted by Stephan Austermuehle.
732
733 2002-07-08  Timo Schulz  <ts@winpt.org>
734
735         * rndw32.c: Replaced the m_ memory functions with the real 
736         gcry_ functions. Renamed all g10_ prefixed functions to log_.
737         
738 2002-06-12  Werner Koch  <wk@gnupg.org>
739
740         * rsa.c (generate): Use e = 65537 for now.
741
742 2002-06-11  Werner Koch  <wk@gnupg.org>
743
744         * pubkey.c (gcry_pk_get_keygrip): Allow a "protected-private-key".
745
746 2002-06-05  Timo Schulz  <ts@winpt.org>
747
748         * cipher.c (gcry_cipher_encrypt, gcry_cipher_decrypt):
749         Check that the input size is a multiple of the blocksize.
750         
751 2002-05-23  Werner Koch  <wk@gnupg.org>
752
753         * md.c (oid_table): Add an rsadsi OID for MD5.
754
755 2002-05-21  Werner Koch  <wk@gnupg.org>
756
757         * primegen.c, elgamal.c, dsa.c (progress): Do not print anything
758         by default.  Pass an extra identifying string to the callback and
759         reserved 2 argumenst for current and total counters.  Changed the
760         register function prototype.
761
762 2002-05-17  Werner Koch  <wk@gnupg.org>
763
764         * rndegd.c (rndegd_constructor): Fixed name of register function
765         and prefixed the function name with _gcry_.
766         * rndw32.c (rndw32_constructor): Ditto.
767         * tiger.c (tiger_constructor): Ditto.
768
769         * Makefile.am: Removed all dynamic loading stuff.
770         * dynload.c: Ditto. Now only used for the constructor system.
771
772 2002-05-15  Werner Koch  <wk@gnupg.org>
773
774         * random.c (gcry_random_bytes,gcry_random_bytes_secure)
775         (gcry_randomize): Make sure we are initialized.
776
777 2002-05-14  Werner Koch  <wk@gnupg.org>
778
779         Changed license of most files to the LGPL.
780
781 2002-05-02  Werner Koch  <wk@gnupg.org>
782
783         * random.c (_gcry_fast_random_poll): Initialize the module so the
784         mutex can be used.
785
786         * primegen.c (small_prime_numbers): Moved table from smallprime.c
787         * smallprime.c: Fiel removed.
788
789         * des.c (leftkey_swap, rightkey_swap, working_memcmp): Made static.
790
791         * cipher.c (gcry_cipher_map_name): Map "RIJNDAEL" to "AES".
792         * rijndael.c (rijndael_get_info): We do only support a 128 bit
793         blocksize so it makes sense to change the algorithm strings to
794         AES.
795
796         * tiger.c (tiger_final): Removed superfluous token pasting operators.
797         * md5.c (md5_final): Ditto.
798
799 2002-04-30  Werner Koch  <wk@gnupg.org>
800
801         * cipher.c: Fixed list of copyright years.
802
803 2002-03-18  Werner Koch  <wk@gnupg.org>
804
805         * random.c (initialize): Initialize the new pool lock mutex.
806         (_gcry_fast_random_poll): Add locking and moved main
807         code out to...
808         (do_fast_random_poll): new function.
809         (read_pool): Use the new function here.
810         (get_random_bytes): Add locking.
811         (_gcry_update_random_seed_file): Ditto.
812
813 2002-03-11  Werner Koch  <wk@gnupg.org>
814
815         * md.c: Add rsaSignatureWithripemd160 to OID table.
816
817 2002-02-20  Werner Koch  <wk@gnupg.org>
818
819         * sha1.c: Removed a left over comment note.  The code has been
820         rewritten from scratch in 1998.  Thanks to Niels Möller for
821         reporting this misleading comment.
822
823 2002-02-18  Werner Koch  <wk@gnupg.org>
824
825         * rndunix.c (rndunix_constructor): Use the the new prefixed
826         function name.  Reported by Jordi Mallach.
827
828 2002-02-10  Werner Koch  <wk@gnupg.org>
829
830         * random.c (mix_pool): Carry an extra failsafe_digest buffer
831         around to make the function more robust.
832
833 2002-02-08  Werner Koch  <wk@gnupg.org>
834
835         * random.c (add_randomness): Xor new data into the pool and not
836         just copy it.  This avoids any choosen input attacks which are not
837         serious in our setting because an outsider won't be able to mix
838         data in and even then we keep going with a PRNG.  Thanks to Stefan
839         Keller for pointing this out.
840
841 2002-01-04  Werner Koch  <wk@gnupg.org>
842
843         * pubkey.c (gcry_pk_genkey): Do not release skey - it is static.
844
845         * primegen.c (gen_prime): Of course we should use set_bit
846         and not set_highbit to set the second high bit.
847
848 2001-12-18  Werner Koch  <wk@gnupg.org>
849
850         * rsa.c (generate): Loop until we find the exact modulus size.
851         Changed the exponent to 41.
852         (rsa_get_info): s/usage/r_usage/ to avoid shadow warnings.
853         * primegen.c (gen_prime): Set 2 high order bits for secret primes.
854
855         * Makefile.am (DISTCLEANFILES): Include construct.c.
856
857 2001-12-17  Werner Koch  <wk@gnupg.org>
858
859         * pubkey.c (gcry_pk_get_keygrip): New - experimental.
860
861 2001-12-11  Werner Koch  <wk@gnupg.org>
862
863         * cipher.c: Added OIDs for AES.
864         (gcry_cipher_mode_from_oid): New.
865         (gcry_cipher_map_name): Moved OID search code to ..
866         (search_oid): .. new function.
867
868 2001-12-10  Werner Koch  <wk@gnupg.org>
869
870         * pubkey.c (gcry_pk_encrypt): Find the signature algorithm by name
871         and not by number.
872         
873         * pubkey.c (gcry_pk_encrypt,gcry_pk_decrypt,gcry_pk_sign)
874         (gcry_pk_verify,gcry_pk_testkey, gcry_pk_genkey)
875         (gcry_pk_get_nbits): Release the arrays.  Noted by Nikos
876         Mavroyanopoulos.
877
878 2001-12-06  Werner Koch  <wk@gnupg.org>
879
880         * cipher.c (gcry_cipher_map_name): Look also for OIDs prefixed
881         with "oid."  or "OID.".
882
883 2001-12-05  Werner Koch  <wk@gnupg.org>
884
885         * pubkey.c (algo_info_table): Fixed entry for openpgp-rsa. 
886
887 2001-11-24  Werner Koch  <wk@gnupg.org>
888
889         * pubkey.c: Added the rsaEncryption OID to the tables.
890         (sexp_to_key): Add an arg to return the index of the algorithm,
891         changed all callers.
892         (gcry_pk_sign): Find the signature algorithm by name and not by
893         number.
894         (gcry_pk_get_nbits): Fixed so that we can now really pass a secret
895         key to get the result.
896         
897         * md.c (gcry_md_map_name): Look also for OIDs prefixed with "oid."
898         or "OID." so that an OID string can be used as an S-Exp token.
899
900 2001-11-20  Werner Koch  <wk@gnupg.org>
901
902         * md.c (gcry_md_map_name): Lookup by OID if the the name begins
903         with a digit.
904         (oid_table): New.
905         
906 2001-11-16  Werner Koch  <wk@gnupg.org>
907
908         * md.c (gcry_md_info): New operator GCRYCTL_IS_ALGO_ENABLED.
909
910 2001-11-07  Werner Koch  <wk@gnupg.org>
911
912         * md.c (gcry_md_hash_buffer): Close the handle which was left open
913         for algorithms other than rmd160.
914
915 2001-08-08  Werner Koch  <wk@gnupg.org>
916
917         * rndw32.c (gather_random): Use toolhelp in addition to the NT
918         gatherer for Windows2000.  Suggested by Sami Tolvanen.
919
920         * random.c (read_pool): Fixed length check, this used to be one
921         byte to strict.  Made an assert out of it because the caller has
922         already made sure that only poolsize bytes are requested.
923         Reported by Marcus Brinkmann.
924
925 2001-08-03  Werner Koch  <wk@gnupg.org>
926
927         * cipher.c (cipher_encrypt, cipher_decrypt): Prepare to return
928         errors. We have to change the interface to all ciphers to make
929         this really work but we should do so to prepare for hardware
930         encryption modules.
931         (gcry_cipher_encrypt, gcry_cipher_decrypt): Return the error and
932         set lasterr. 
933         (gcry_cipher_ctl): Make sure that errors from setkey are returned.
934
935 2001-08-02  Werner Koch  <wk@gnupg.org>
936
937         * rndlinux.c (gather_random): casted a size_t arg to int so that
938         the format string is correct.  Casting is okay here and avoids
939         translation changes. 
940
941         * random.c (fast_random_poll): Do not check the return code of
942         getrusage.
943
944         * rndunix.c: Add a signal.h header to avoid warnings on Solaris 7
945         and 8.
946
947         * tiger.c (print_abc,print_data): Removed.
948
949         * rijndael.c, des.c, blowfish.c, twofish.c, cast5.c, arcfour.c
950         (burn_stack): New.  Add wrappers for most functions to be able to
951         call burn_stack after the function invocation. This methods seems
952         to be the most portable way to zeroise the stack used. It does
953         only work on stack frame based machines but it is highly portable
954         and has no side effects.  Just setting the automatic variables at
955         the end of a function to zero does not work well because the
956         compiler will optimize them away - marking them as volatile would
957         be bad for performance.
958         * md5.c, sha1.c, rmd160.c, tiger.c (burn_stack): Likewise.
959         * random.c (burn_stack): New.
960         (mix_pool): Use it here to burn the stack of the mixblock function.
961
962         * primegen.c (_gcry_generate_elg_prime): Freed q at 3 places.
963         Thanks to Tommi Komulainen.
964
965         * arcfour.c (arcfour_setkey): Check the minimim keylength against
966         bytes and not bits.
967         (selftest): Must reset the key before decryption. 
968
969 2001-05-31  Werner Koch  <wk@gnupg.org>
970
971         * sha1.c (sha1_init): Made static.
972
973         Changed all g10_ prefixed function names as well as some mpi_
974         function names to cope with the introduced naming changes.
975         
976         * md.c (prepare_macpads): Made key const.
977
978 2001-05-28  Werner Koch  <wk@gnupg.org>
979
980         * rndegd.c (gather_random): Removed the use of tty_printf.
981
982 2001-03-29  Werner Koch  <wk@gnupg.org>
983
984         * md5.c (md5_final): Fixed calculation of hashed length.  Thanks
985         to disastry@saiknes.lv for pointing out that it was horrible wrong
986         for more than 512MB of input.
987         * sha1.c (sha1_final): Ditto.
988         * rmd160.c (rmd160_final): Ditto.
989         * tiger.c (tiger_final): Ditto.
990
991         * blowfish.c (encrypt,do_encrypt): Changed name to do_encrypt to
992         avoid name clashes with an encrypt function in stdlib.h of
993         Dynix/PIX.  Thanks to Gene Carter.
994         * elgamal.c (encrypt,do_encrypt): Ditto.
995
996         * twofish.c (gnupgext_enum_func): Use only when when compiled as a
997         module.
998         * rijndael.c (gnupgext_enum_func): Ditto.
999
1000         * tiger.c (tiger_get_info): Return "TIGER192" and not just
1001         "TIGER".  By Edwin Woudt.
1002         
1003         * random.c: Always include time.h - standard requirement.  Thanks
1004         to James Troup.
1005
1006         * rndw32.c: Fixes to the macros.
1007
1008 2001-01-11  Werner Koch  <wk@gnupg.org>
1009
1010         * cipher.c (cipher_encrypt,gcry_cipher_encrypt): Use blocksize and
1011         not 8.
1012
1013 2000-12-19  Werner Koch  <wk@gnupg.org>
1014
1015         Major change:
1016         Removed all GnuPG stuff and renamed this piece of software
1017         to gcrypt. 
1018
1019 2000-11-14  Werner Koch  <wk@gnupg.org>
1020
1021         * dsa.c (test_keys): Replaced mpi_alloc by gcry_mpi_new and
1022         mpi_free by gcry_mpi_release.
1023         * elgamal.c (test_keys,generate): Ditto, also for mpi_alloc_secure.
1024         * rsa.c (test_keys,generate,rsa_verify): Ditto.
1025         * primegen.c (generate_elg_prime): Ditto.
1026         (gen_prime): Ditto and removed nlimbs.
1027
1028         * rsa.c (generate): Allocate 2 more vars in secure memory.
1029
1030         * Makefile.am (OMIT_DEPENDENCIES): Hack to work around dependency
1031         problems.
1032
1033 2000-10-09  Werner Koch  <wk@gnupg.org>
1034
1035         * arcfour.c, arcfour.h: New.
1036         * cipher.c (cipher_encrypt, cipher_decrypt): Add stream mode.
1037         (setup_cipher_table): Add Arcfour.
1038         (gcry_cipher_open): Kludge to allow stream mode.
1039
1040 Wed Oct  4 13:16:18 CEST 2000  Werner Koch  <wk@openit.de>
1041
1042         * sha1.c (transform): Use rol() macro.  Actually this is not needed
1043         for a newer gcc but there are still aoter compilers.
1044
1045         * rsa.c (test_keys): Use new random function. 
1046
1047         * md.c (gcry_md_setkey): New function to overcome problems with
1048         const conflics.  
1049         (gcry_md_ctl): Pass set key to the new functions.
1050
1051         * rijndael.c: New.
1052         * cipher.c: Add Rijndael support.
1053
1054 Mon Sep 18 16:35:45 CEST 2000  Werner Koch  <wk@openit.de>
1055
1056         * rndlinux.c (open_device): Loose random device checking.
1057         By Nils Ellmenreich.
1058
1059         * random.c (fast_random_poll): Check ENOSYS for getrusage.
1060         * rndunix.c:  Add 2 sources for QNX. By Sam Roberts.
1061
1062         * pubkey.c (gcry_pk_algo_info): Add GCRYCTL_GET_ALGO_USAGE.
1063
1064         * rsa.c: Changed the comment about the patent.
1065         (secret): Speed up by using the CRT.  For a 2k keys this
1066         is about 3 times faster.
1067         (stronger_key_check): New but unused code to check the secret key.
1068         * Makefile.am: Included rsa.[ch].
1069         * pubkey.c: Enabled RSA support.
1070         (pubkey_get_npkey): Removed RSA workaround.
1071
1072 Mon Jul 31 10:04:47 CEST 2000  Werner Koch  <wk@openit.de>
1073
1074   * pubkey.c: Replaced all gcry_sexp_{car,cdr}_{data,mpi} by the new
1075   gcry_sexp_nth_{data,mpi} functions.
1076
1077 Tue Jul 25 17:44:15 CEST 2000  Werner Koch  <wk@openit.de>
1078
1079   * pubkey.c (exp_to_key,sexp_to_sig,sexp_to_enc,gcry_pk_encrypt,
1080     gcry_pk_decrypt,gcry_pk_sign,gcry_pk_genkey): Changed to work with
1081     the new S-Exp interface.
1082
1083 Mon Jul 17 16:35:47 CEST 2000  Werner Koch  <wk@>
1084
1085   * random.c (gather_faked): Replaced make_timestamp by time(2) again.
1086
1087 Fri Jul 14 19:38:23 CEST 2000  Werner Koch  <wk@>
1088
1089   * md.c (gcry_md_ctl): Support GCRYCTL_{START,STOP}_DUMP.
1090
1091   * Makefile.am: Never compile mingw32 as module.
1092
1093   * Makefile.am: Tweaked module build and removed libtool
1094
1095   * Makefile.am:  Replaced -O1 by -O. Suggested by Alec Habig.
1096
1097   * elgamal.c (sign): Removed inactive code.
1098
1099   * rsa.c, rsa.h: New based on the old module version (only in CVS for now).
1100   * pubkey.c (setup_pubkey_table): Added commented support for RSA.
1101
1102   * rndunix.c (waitpid): New. For UTS 2.1.  All by Dave Dykstra.
1103   (my_popen): Do the FD_CLOEXEC only if it is available
1104   (start_gatherer): Cope with missing _SC_OPEN_MAX
1105
1106   * rndunix.c: Add some more headers for QNX. By Sam Roberts.
1107
1108   * rndegd.c (gather_random): Shortcut level 0.
1109   * rndunix.c (gather_random): Ditto.
1110   * rndw32.c (gather_random): Ditto.
1111
1112   * rndw32.c: Replaced with code from Cryptlib and commented the old stuff.
1113   * rndw32.c: Add some debuging code enabled by an environment variable.
1114
1115   * random.c (read_seed_file): Binary open for DOSish system
1116   (update_random_seed_file): Ditto.
1117   * random.c [MINGW32]: Include process.h for getpid.
1118   * random.c (fast_random_poll): Add clock_gettime() as fallback for
1119   system which support this POSIX.4 fucntion. By Sam Roberts.
1120
1121   * random.c (read_seed_file): Removed the S_ISLNK test becuase it
1122   is already covered by !S_ISREG and is not defined in Unixware.
1123   Reported by Dave Dykstra.
1124   (update_random_seed_file): Silently ignore update request when pool
1125   is not filled.
1126
1127   * random.c (read_seed_file): New.
1128   (set_random_seed_file): New.
1129   (read_pool): Try to read the seeding file.
1130   (update_random_seed_file): New.
1131
1132   (read_pool): Do an initial extra seeding when level 2 quality random
1133   is requested the first time.  This requestes at least POOLSIZE/2 bytes
1134   of entropy.  Compined with the seeding file this should make normal
1135   random bytes cheaper and increase the quality of the random bytes
1136   used for key generation.
1137
1138   * random.c (read_pool): Print a more friendly error message in
1139   cases when too much random is requested in one call.
1140
1141   * random.c (fast_random_poll): Check whether RUSAGE_SELF is defined;
1142   this is not the case for some ESIX and Unixware, although they have
1143   getrusage().
1144
1145   * primegen.c (generate_elg_prime): All primes are now generated with
1146   the lowest random quality level.  Because they are public anyway we
1147   don't need stronger random and by this we do not drain the systems
1148   entropy so much.
1149
1150   * primegen.c (register_primegen_progress): New.
1151   * dsa.c (register_pk_dsa_progress): New.
1152   * elgamal.c (register_pk_elg_progress): New.
1153
1154   * elgamal.c (wiener_map): New.
1155   (gen_k): Use a much smaller k.
1156   (generate): Calculate the qbits using the wiener map and
1157   choose an x at a size comparable to the one choosen in gen_k
1158
1159   * rmd160.c (rmd160_get_info): Moved casting to the left side due to a
1160   problem with UTS4.3.  Suggested by Dave Dykstra.
1161   * sha1.c (sha1_get_info): Ditto.
1162   * tiger.c (tiger_get_info): Ditto.
1163   * md5.c (md5_get_info): Ditto
1164   * des.c (des_get_info): Ditto.
1165   * blowfish.c (blowfish_get_info): Ditto.
1166   * cast5.c (cast5_get_info): Ditto.
1167   * twofish.c (twofish_get_info): Ditto.
1168
1169 Fri Mar 24 11:25:45 CET 2000  Werner Koch  <wk@openit.de>
1170
1171         * md.c (md_open): Add hmac arg and allocate space for the pads.
1172         (md_finalize): Add HMAC support.
1173         (md_copy): Ditto.
1174         (md_close): Ditto.
1175         (gcry_md_reset): Ditto.
1176         (gcry_md_ctl): Ditto.
1177         (prepare_macpdas): New.
1178
1179 Mon Mar 13 19:22:46 CET 2000  Werner Koch  <wk@openit.de>
1180
1181         * md.c (gcry_md_hash_buffer): Add support for the other algorithms.
1182
1183 Mon Jan 31 16:37:34 CET 2000  Werner Koch  <wk@gnupg.de>
1184
1185         * genprime.c (generate_elg_prime): Fixed returned factors which never
1186         worked for non-DSA keys.
1187
1188 Thu Jan 27 18:00:44 CET 2000  Werner Koch  <wk@gnupg.de>
1189
1190         * pubkey.c (sexp_to_key): Fixed mem leaks in case of errors.
1191
1192 Mon Jan 24 22:24:38 CET 2000  Werner Koch  <wk@gnupg.de>
1193
1194         * pubkey.c (gcry_pk_decrypt): Implemented.
1195         (gcry_pk_encrypt): Implemented.
1196         (gcry_pk_testkey): New.
1197         (gcry_pk_genkey): New.
1198         (pubkey_decrypt): Made static.
1199         (pubkey_encrypt): Ditto.
1200         (pubkey_check_secret_key): Ditto.
1201         (pubkey_generate): Ditto.
1202
1203 Mon Jan 24 13:04:28 CET 2000  Werner Koch  <wk@gnupg.de>
1204
1205         * pubkey.c (pubkey_nbits): Removed and replaced by ...
1206         (gcry_pk_get_nbits): this new one.
1207
1208 Wed Dec  8 21:58:32 CET 1999  Werner Koch  <wk@gnupg.de>
1209
1210         * dsa.c: s/mpi_powm/gcry_mpi_powm/g
1211         * elgamal.c: Ditto.
1212         * primegen.c: Ditto.
1213
1214         * : Replaced g10_opt_verbose by g10_log_verbosity().
1215
1216         * Makefile.am (INCLUDES): removed intl, add ../gcrypt
1217
1218 Fri Nov 19 17:15:20 CET 1999  Werner Koch  <wk@gnupg.de>
1219
1220         * dynload.c (cmp_filenames): New to replaced compare_filename() in
1221         module.
1222         (register_cipher_extension): Removed the tilde expansion stuff.
1223         * rndeg.c (my_make_filename): New.
1224
1225         * : Replaced header util.h by g10lib.h
1226
1227         * random.c (gather_faked): Replaced make_timestamp by time(2).
1228         Disabled wrning printed with tty_printf.
1229         * rndlinux.c (gather_random): Always use fprintf instead of tty_xxx;
1230         this should be replaced by a callback function.
1231
1232         * primegen.c (gen_prime): Use gcry_mpi_randomize.
1233         (is_prime): Ditto.
1234         * elgamal.c (test_keys): Ditto.
1235         * dsa.c (test_keys): Ditto.
1236
1237         * cipher.c (gcry_cipher_close): Die on invalid handle.
1238
1239 Mon Nov 15 21:36:02 CET 1999  Werner Koch  <wk@gnupg.de>
1240
1241         * elgamal.c (gen_k): Use the new random API.
1242         (generate): Ditto.
1243         * dsa.c (gen_k): Ditto.
1244         (generate): Ditto.
1245
1246 Sat Nov 13 17:44:23 CET 1999  Werner Koch  <wk@gnupg.de>
1247
1248         * pubkey.c (disable_pubkey_algo): Made static.
1249         (gcry_pk_ctl): New.
1250
1251         * random.c (get_random_bits): Renamed to ...
1252         (get_random_bytes): ... this and made static.
1253         (gcry_random_bytes): New.
1254         (gcry_random_bytes_secure): New.
1255         (randomize_buffer): Renamed to ...
1256         (gcry_randomize): ...this.
1257
1258         * md.c (gcry_md_hash_buffer): New.
1259
1260         * pubkey.c (gcry_pk_algo_info): 4 new commands.
1261         (pubkey_get_npkey): Made static.
1262         (pubkey_get_nskey): Made static.
1263         (pubkey_get_nsig): Made static.
1264         (pubkey_get_nenc): Made static.
1265
1266         * pubkey.c: Removed all G10ERR_xxx.
1267         * cipher.c: Changed all GCRYERR_INV_ALGO to GCRYERR_INV_CIPHER_ALGO.
1268         * md.c: Changed all GCRYERR_INV_ALGO to GCRYERR_INV_MD_ALGO.
1269         * cast5.c (cast_setkey): Changed errocodes to GCRYERR_xxx.
1270         * blowfish.c: Ditto.
1271         * des.c: Ditto.
1272         * twofish.c: Ditto.
1273         * dsa.c: Ditto.
1274         * elgamal.c: Ditto.
1275
1276         * g10c.c: Removed
1277
1278         * cipher.c (gcry_cipher_open): Replaced alloc functions and return NULL
1279         if we are out of core.
1280         * dynload.c: Replaced all memory allocation functions.
1281         * md.c: Ditto.
1282         * primegen.c: Ditto.
1283         * pubkey.c: Ditto.
1284         * random.c: Ditto.
1285         * rndw32.c: Ditto.
1286         * elgamal.c: Ditto.
1287         * dsa.c: Ditto.
1288
1289 Tue Oct 26 14:10:21 CEST 1999  Werner Koch  <wk@gnupg.de>
1290
1291         * elgamal.c (sign): Hugh found strange code here. Replaced by BUG().
1292
1293         * cipher.c: Merged with gcrypt/symapi.c.
1294
1295         * pubkey.c (string_to_pubkey_algo): Renamed function to ...
1296         (gcry_pk_map_name): ... this.
1297         (pubkey_algo_to_string): Renamed function to ...
1298         (gcry_pk_algo_name): ... this.
1299         (gcry_pk_algo_info): New.
1300         * pubkey.c: Merged with gcrypt/pkapi.c.
1301
1302         * md.c (md_reset): Clear finalized; thanks to Ulf Moeller for
1303         fixing this bug.
1304
1305         * md.c: Merged with gcrypt/mdapi.c
1306
1307 Wed Sep 15 14:39:59 CEST 1999  Michael Roth <mroth@nessie.de>
1308
1309         * des.c: Various speed improvements: One bit pre rotation
1310           trick after initial permutation (Richard Outerbridge).
1311           Finished test of SSLeay Tripple-DES patterns.
1312
1313 Wed Sep 15 16:22:17 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
1314
1315         * rndw32.c: New.
1316
1317 Mon Sep 13 10:51:29 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
1318
1319         * bithelp.h: New.
1320         * rmd160.h, sha1.h, md5.h: Use the rol macro from bithelp.h
1321
1322 Tue Sep  7 16:23:36 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
1323
1324         * Makefile.am: Fixed seds for latest egcc. By Ollivier Robert.
1325
1326 Mon Sep  6 19:59:08 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
1327
1328         * des.c (selftest): Add some testpattern
1329
1330 Mon Aug 30 20:38:33 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
1331
1332         * cipher.c (do_cbc_encrypt): Fixed serious bug occuring when not using
1333         in place encryption. Pointed out by Frank Stajano.
1334
1335 Mon Jul 26 09:34:46 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
1336
1337         * md5.c (md5_final): Fix for a SCO cpp bug.
1338
1339 Thu Jul 15 10:15:35 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
1340
1341         * elgamal.c (elg_check_secret_key,elg_encrypt
1342         elg_decrypt,elg_sign,elg_verify): Sanity check on the args.
1343         * dsa.c (dsa_check_secret_key,dsa_sign,dsa_verify): Ditto.
1344
1345         * pubkey.c (disable_pubkey_algo): New.
1346         (check_pubkey_algo2): Look at disabled algo table.
1347         * cipher.c (disable_cipher_algo): New.
1348         (check_cipher_algo): Look at disabled algo table.
1349
1350 Wed Jul  7 13:08:40 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
1351
1352         * Makefile.am: Support for libtool.
1353
1354 Fri Jul  2 11:45:54 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
1355
1356         * dsa.c (gen_k): Changed algorithm to consume less random bytes
1357         * elgamal.c (gen_k): Ditto.
1358
1359         * random.c (random_dump_stats): New.
1360
1361 Thu Jul  1 12:47:31 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
1362
1363         * primegen.c, elgamal.c, dsa.c (progess): New and replaced all
1364         fputc with a call to this function.
1365
1366 Sat Jun 26 12:15:59 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
1367
1368         * rndegd.c (do_write): s/ssize_t/int/ due to SunOS 4.1 probs.
1369
1370         * cipher.c (do_cbc_encrypt, do_cbc_decrypt): New.
1371
1372         * dynload.c (HAVE_DL_SHL_LOAD): Map hpux API to dlopen (Dave Dykstra).
1373         * Makefile.am (install-exec-hook): Removed.
1374
1375 Sun May 23 14:20:22 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
1376
1377         * cipher.c (setup_cipher_table): Enable Twofish
1378
1379         * random.c (fast_random_poll): Disable use of times() for mingw32.
1380
1381 Mon May 17 21:54:43 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
1382
1383         * dynload.c (register_internal_cipher_extension): Minor init fix.
1384
1385 Tue May  4 15:47:53 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
1386
1387         * primegen.c (gen_prime): Readded the Fermat test. Fixed the bug
1388         that we didn't correct for step when passing the prime to the
1389         Rabin-Miller test which led to bad performance (Stefan Keller).
1390         (check_prime): Add a first Fermat test.
1391
1392 Sun Apr 18 10:11:28 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
1393
1394         * cipher.c (cipher_setiv): Add ivlen arg, changed all callers.
1395
1396         * random.c (randomize_buffer): alway use secure memory because
1397         we can't use m_is_secure() on a statically allocated buffer.
1398
1399         * twofish.c: Replaced some macros by a loop to reduce text size.
1400         * Makefile.am (twofish): No more need for sed editing.
1401
1402 Fri Apr  9 12:26:25 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
1403
1404         * cipher.c (cipher_open): Reversed the changes for AUTO_CFB.
1405
1406         * blowfish.c: Dropped the Blowfish 160 mode.
1407         * cipher.c (cipher_open): Ditto.
1408         (setup_cipher_table): Ditto.  And removed support of twofish128
1409
1410 Wed Apr  7 20:51:39 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
1411
1412         * random.c (get_random_bits): Can now handle requests > POOLSIZE
1413
1414         * cipher.c (cipher_open): Now uses standard CFB for automode if
1415         the blocksize is gt 8 (according to rfc2440).
1416
1417         * twofish.c: Applied Matthew Skala's patches for 256 bit key.
1418
1419 Tue Apr  6 19:58:12 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
1420
1421         * random.c (get_random_bits): Can now handle requests > POOLSIZE
1422
1423         * cipher.c (cipher_open): Now uses standard CFB for automode if
1424         the blocksize is gt 8 (according to rfc2440).
1425
1426 Sat Mar 20 11:44:21 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
1427
1428         * rndlinux.c (tty_printf) [IS_MODULE]: Removed.
1429
1430         * rndegd.c (gather_random): Some fixes.
1431
1432 Wed Mar 17 13:09:03 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
1433
1434         * rndegd.c (do_read): New.
1435         (gather_random): Changed the implementation.
1436
1437 Mon Mar  8 20:47:17 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
1438
1439         * dynload.c (DLSYM_NEEDS_UNDERSCORE): Renamed.
1440
1441 Fri Feb 26 17:55:41 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
1442
1443         * md.c: Nearly a total rewrote.
1444
1445 Wed Feb 24 11:07:27 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
1446
1447         * cipher.c (context): Fixed alignment
1448         * md.c: Ditto.
1449
1450         * rndegd.c: New
1451
1452 Mon Feb 22 20:04:00 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
1453
1454         * rndegd.c: New.
1455
1456 Wed Feb 10 17:15:39 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
1457
1458         * Makefile.am: Modules are now figured out by configure
1459         * construct.c: New. Generated by configure. Changed all modules
1460         to work with that.
1461         * sha1.h: Removed.
1462         * md5.h: Removed.
1463
1464         * twofish.c: Changed interface to allow Twofish/256
1465
1466         * rndunix.c (start_gatherer): Die on SIGPIPE.
1467
1468 Wed Jan 20 18:59:49 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
1469
1470         * rndunix.c (gather_random): Fix to avoid infinite loop.
1471
1472 Sun Jan 17 11:04:33 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
1473
1474         * des.c (is_weak_key): Replace system memcmp due to bugs
1475         in SunOS's memcmp.
1476         (des_get_info): Return error on failed selftest.
1477         * twofish.c (twofish_setkey): Return error on failed selftest or
1478         invalid keylength.
1479         * cast5.c (cast_setkey): Ditto.
1480         * blowfish.c (bf_setkey): Return error on failed selftest.
1481
1482 Tue Jan 12 11:17:18 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
1483
1484         * random.c (random_is_faked): New.
1485
1486         * tiger.c: Only compile if we have the u64 type
1487
1488 Sat Jan  9 16:02:23 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
1489
1490         * rndunix.c (gather_random): check for setuid.
1491
1492         * Makefile.am: Add a way to staically link random modules
1493
1494 Thu Jan  7 18:00:58 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
1495
1496         * md.c (md_stop_debug): Do a flush first.
1497         (md_open): size of buffer now depends on the secure parameter
1498
1499 Sun Jan  3 15:28:44 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
1500
1501         * rndunix.c (start_gatherer): Fixed stupid ==/= bug
1502
1503 1998-12-31  Geoff Keating  <geoffk@ozemail.com.au>
1504
1505         * des.c (is_weak_key): Rewrite loop end condition.
1506
1507 Tue Dec 29 14:41:47 CET 1998  Werner Koch  <wk@isil.d.shuttle.de>
1508
1509         * random.c: add unistd.h for getpid().
1510         (RAND_MAX): Fallback value for Sun.
1511
1512 Wed Dec 23 17:12:24 CET 1998  Werner Koch  <wk@isil.d.shuttle.de>
1513
1514         * md.c (md_copy): Reset debug.
1515
1516 Mon Dec 14 21:18:49 CET 1998  Werner Koch  <wk@isil.d.shuttle.de>
1517
1518         * random.c (read_random_source): Changed the interface to the
1519         random gathering function.
1520         (gather_faked): Use new interface.
1521         * dynload.c (dynload_getfnc_fast_random_poll): Ditto.
1522         (dynload_getfnc_gather_random): Ditto.
1523         * rndlinux.c (gather_random): Ditto.
1524         * rndunix.c (gather_random): Ditto.
1525
1526 Sat Dec 12 18:40:32 CET 1998  Werner Koch  <wk@isil.d.shuttle.de>
1527
1528         * dynload.c (SYMBOL_VERSION): New to cope with system which needs
1529         underscores.
1530
1531         * rndunix.c: Rewrote large parts
1532
1533 Thu Dec 10 20:15:36 CET 1998  Werner Koch  <wk@isil.d.shuttle.de>
1534
1535         * dynload.c (load_extension): increased needed verbosity level.
1536
1537         * random.c (fast_random_poll): Fallback to a default fast random
1538         poll function.
1539         (read_random_source): Always use the faked entroy gatherer if no
1540         gather module is available.
1541         * rndlinux.c (fast_poll): Removed.
1542         * rndunix.c (fast_poll): Removed.
1543
1544
1545 Wed Nov 25 12:33:41 1998  Werner Koch  (wk@isil.d.shuttle.de)
1546
1547         * rand-*.c: Removed.
1548         * rndlinux.c : New.
1549         * rndunix.c : New.
1550         * random.c : Restructured the interface to the gather modules.
1551         (intialize): Call constructor functions
1552         (read_radnom_source): Moved to here.
1553         * dynload.c (dynload_getfnc_gather_random): New.
1554         (dynload_getfnc_fast_random_poll): New.
1555         (register_internal_cipher_extension): New.
1556         (register_cipher_extension): Support of internal modules.
1557
1558 Sun Nov  8 17:44:36 1998  Werner Koch  (wk@isil.d.shuttle.de)
1559
1560         * rand-unix.c (read_random_source): Removed the assert.
1561
1562 Mon Oct 19 18:34:30 1998  me,,,  (wk@tobold)
1563
1564         * pubkey.c: Hack to allow us to give some info about RSA keys back.
1565
1566 Thu Oct 15 11:47:57 1998  Werner Koch  (wk@isil.d.shuttle.de)
1567
1568         * dynload.c: Support for DLD
1569
1570 Wed Oct 14 12:13:07 1998  Werner Koch  (wk@isil.d.shuttle.de)
1571
1572         * rand-unix.c: Now uses names from configure for /dev/random.
1573
1574 1998-10-10  SL Baur  <steve@altair.xemacs.org>
1575
1576         * Makefile.am: fix sed -O substitutions to catch -O6, etc.
1577
1578 Tue Oct  6 10:06:32 1998  Werner Koch  (wk@isil.d.shuttle.de)
1579
1580         * rand-unix.c (HAVE_GETTIMEOFDAY): Fixed (was ..GETTIMEOFTIME :-)
1581         * rand-dummy.c (HAVE_GETTIMEOFDAY): Ditto.
1582
1583 Mon Sep 28 13:23:09 1998  Werner Koch  (wk@isil.d.shuttle.de)
1584
1585         * md.c (md_digest): New.
1586         (md_reset): New.
1587
1588 Wed Sep 23 12:27:02 1998  Werner Koch  (wk@isil.d.shuttle.de)
1589
1590         * tiger.c (TIGER_CONTEXT): moved "buf", so that it is 64 bit aligned.
1591
1592 Mon Sep 21 06:22:53 1998  Werner Koch  (wk@(none))
1593
1594         * des.c: Some patches from Michael.
1595
1596 Thu Sep 17 19:00:06 1998  Werner Koch  (wk@(none))
1597
1598         * des.c : New file from Michael Roth <mroth@nessie.de>
1599
1600 Mon Sep 14 11:10:55 1998  Werner Koch  (wk@(none))
1601
1602         * blowfish.c (bf_setkey): Niklas Hernaeus patch to detect weak keys.
1603
1604 Mon Sep 14 09:19:25 1998  Werner Koch  (wk@(none))
1605
1606         * dynload.c (RTLD_NOW): Now defined to 1 if it is undefined.
1607
1608 Mon Sep  7 17:04:33 1998  Werner Koch  (wk@(none))
1609
1610         * Makefile.am: Fixes to allow a different build directory
1611
1612 Thu Aug  6 17:25:38 1998  Werner Koch,mobil,,,  (wk@tobold)
1613
1614         * random.c (get_random_byte): Removed and changed all callers
1615         to use get_random_bits()
1616
1617 Mon Jul 27 10:30:22 1998  Werner Koch  (wk@(none))
1618
1619         * cipher.c : Support for other blocksizes
1620         (cipher_get_blocksize): New.
1621         * twofish.c: New.
1622         * Makefile.am: Add twofish module.
1623
1624 Mon Jul 13 21:30:52 1998  Werner Koch  (wk@isil.d.shuttle.de)
1625
1626         * random.c (read_pool): Simple alloc if secure_alloc is not set.
1627         (get_random_bits): Ditto.
1628
1629 Thu Jul  9 13:01:14 1998  Werner Koch  (wk@isil.d.shuttle.de)
1630
1631         * dynload.c (load_extension): Function now nbails out if
1632         the program is run setuid.
1633
1634 Wed Jul  8 18:58:23 1998  Werner Koch  (wk@isil.d.shuttle.de)
1635
1636         * rmd160.c (rmd160_hash_buffer): New.
1637
1638 Thu Jul  2 10:50:30 1998  Werner Koch  (wk@isil.d.shuttle.de)
1639
1640         * cipher.c (cipher_open): algos >=100 use standard CFB
1641
1642 Thu Jun 25 11:18:25 1998  Werner Koch  (wk@isil.d.shuttle.de)
1643
1644         * Makefile.am: Support for extensions
1645
1646 Thu Jun 18 12:09:38 1998  Werner Koch  (wk@isil.d.shuttle.de)
1647
1648         * random.c (mix_pool): simpler handling for level 0
1649
1650 Mon Jun 15 14:40:48 1998  Werner Koch  (wk@isil.d.shuttle.de)
1651
1652         * tiger.c: Removed from dist, will reappear as dynload module
1653
1654 Sat Jun 13 14:16:57 1998  Werner Koch  (wk@isil.d.shuttle.de)
1655
1656         * pubkey.c: Major changes to allow extensions. Changed the inteface
1657         of all public key ciphers and added the ability to load extensions
1658         on demand.
1659
1660         * misc.c: Removed.
1661
1662 Wed Jun 10 07:52:08 1998  Werner Koch,mobil,,,  (wk@tobold)
1663
1664         * dynload.c: New.
1665         * cipher.c: Major changes to allow extensions.
1666
1667 Mon Jun  8 22:43:00 1998  Werner Koch  (wk@isil.d.shuttle.de)
1668
1669         * cipher.c: Major internal chnages to support extensions.
1670         * blowfish.c (blowfish_get_info): New and made all internal
1671         functions static, changed heder.
1672         * cast5.c (cast5_get_info): Likewise.
1673
1674 Mon Jun  8 12:27:52 1998  Werner Koch  (wk@isil.d.shuttle.de)
1675
1676         * tiger.c (transform): Fix for big endian
1677
1678         * cipher.c (do_cfb_decrypt): Big endian fix.
1679
1680 Fri May 22 07:30:39 1998  Werner Koch  (wk@isil.d.shuttle.de)
1681
1682         * md.c (md_get_oid): Add a new one for TIGER.
1683
1684 Thu May 21 13:24:52 1998  Werner Koch  (wk@isil.d.shuttle.de)
1685
1686         * cipher.c: Add support for a dummy cipher
1687
1688 Thu May 14 15:40:36 1998  Werner Koch  (wk@isil.d.shuttle.de)
1689
1690         * rmd160.c (transform): fixed sigbus - I should better
1691         add Christian von Roques's new implemenation of rmd160_write.
1692
1693 Fri May  8 18:07:44 1998  Werner Koch  (wk@isil.d.shuttle.de)
1694
1695         * rand-internal.h, rand-unix.c, rand-w32.c, rand_dummy.c: New
1696         * random.c: Moved system specific functions to rand-****.c
1697
1698 Fri May  8 14:01:17 1998  Werner Koch  (wk@isil.d.shuttle.de)
1699
1700         * random.c (fast_random_poll): add call to gethrtime.
1701
1702 Tue May  5 21:28:55 1998  Werner Koch  (wk@isil.d.shuttle.de)
1703
1704         * elgamal.c (elg_generate): choosing x was not correct, could
1705         yield 6 bytes which are not from the random pool, tsss, tsss..
1706
1707 Tue May  5 14:09:06 1998  Werner Koch  (wk@isil.d.shuttle.de)
1708
1709         * primegen.c (generate_elg_prime): Add arg mode, changed all
1710         callers and implemented mode 1.
1711
1712 Mon Apr 27 14:41:58 1998  Werner Koch  (wk@isil.d.shuttle.de)
1713
1714         * cipher.c (cipher_get_keylen): New.
1715
1716 Sun Apr 26 14:44:52 1998  Werner Koch  (wk@isil.d.shuttle.de)
1717
1718         * tiger.c, tiger.h: New.
1719
1720 Wed Apr  8 14:57:11 1998  Werner Koch  (wk@isil.d.shuttle.de)
1721
1722         * misc.c (check_pubkey_algo2): New.
1723
1724 Tue Apr  7 18:46:49 1998  Werner Koch  (wk@isil.d.shuttle.de)
1725
1726         * cipher.c: New
1727         * misc.c (check_cipher_algo): Moved to cipher.c
1728         * cast5.c: Moved many functions to cipher.c
1729         * blowfish.c: Likewise.
1730
1731 Sat Apr  4 19:52:08 1998  Werner Koch  (wk@isil.d.shuttle.de)
1732
1733         * cast5.c: Implemented and tested.
1734
1735 Wed Apr  1 16:38:27 1998  Werner Koch  (wk@isil.d.shuttle.de)
1736
1737         * elgamal.c (elg_generate): Faster generation of x in some cases.
1738
1739 Thu Mar 19 13:54:48 1998  Werner Koch  (wk@isil.d.shuttle.de)
1740
1741         * blowfish.c (blowfish_decode_cfb): changed XOR operation
1742         (blowfish_encode_cfb): Ditto.
1743
1744 Thu Mar 12 14:04:05 1998  Werner Koch  (wk@isil.d.shuttle.de)
1745
1746         * sha1.c (transform): Rewrote
1747
1748         * blowfish.c (encrypt): Unrolled for rounds == 16
1749         (decrypt): Ditto.
1750
1751 Tue Mar 10 16:32:08 1998  Werner Koch  (wk@isil.d.shuttle.de)
1752
1753         * rmd160.c (transform): Unrolled the loop.
1754
1755 Tue Mar 10 13:05:14 1998  Werner Koch  (wk@isil.d.shuttle.de)
1756
1757         * random.c (read_pool): Add pool_balance stuff.
1758         (get_random_bits): New.
1759
1760         * elgamal.c (elg_generate): Now uses get_random_bits to generate x.
1761
1762
1763 Tue Mar 10 11:33:51 1998  Werner Koch  (wk@isil.d.shuttle.de)
1764
1765         * md.c (md_digest_length): New.
1766
1767 Tue Mar 10 11:27:41 1998  Werner Koch  (wk@isil.d.shuttle.de)
1768
1769         * dsa.c (dsa_verify): Works.
1770
1771 Mon Mar  9 12:59:08 1998  Werner Koch  (wk@isil.d.shuttle.de)
1772
1773         * dsa.c, dsa.h: Removed some unused code.
1774
1775 Wed Mar  4 10:39:22 1998  Werner Koch  (wk@isil.d.shuttle.de)
1776
1777         * md.c (md_open): Add call to fast_random_poll.
1778         blowfish.c (blowfish_setkey): Ditto.
1779
1780 Tue Mar  3 13:32:54 1998  Werner Koch  (wk@isil.d.shuttle.de)
1781
1782         * rmd160.c (rmd160_mixblock): New.
1783         * random.c: Restructured to start with a new RNG implementation.
1784         * random.h: New.
1785
1786 Mon Mar  2 19:21:46 1998  Werner Koch  (wk@isil.d.shuttle.de)
1787
1788         * gost.c, gost.h: Removed because they did only conatin trash.
1789
1790 Sun Mar  1 16:42:29 1998  Werner Koch  (wk@isil.d.shuttle.de)
1791
1792         * random.c (fill_buffer): removed error message if n == -1.
1793
1794 Fri Feb 27 16:39:34 1998  Werner Koch  (wk@isil.d.shuttle.de)
1795
1796         * md.c (md_enable): No init if called twice.
1797
1798 Thu Feb 26 07:57:02 1998  Werner Koch  (wk@isil.d.shuttle.de)
1799
1800         * primegen.c (generate_elg_prime): Changed the progress printing.
1801         (gen_prime): Ditto.
1802
1803 Tue Feb 24 12:28:42 1998  Werner Koch  (wk@isil.d.shuttle.de)
1804
1805         * md5.c, md.5 : Replaced by a modified version of md5.c from
1806         GNU textutils 1.22.
1807
1808 Wed Feb 18 14:08:30 1998  Werner Koch  (wk@isil.d.shuttle.de)
1809
1810         * md.c, md.h : New debugging support
1811
1812 Mon Feb 16 10:08:47 1998  Werner Koch  (wk@isil.d.shuttle.de)
1813
1814         * misc.c (cipher_algo_to_string): New
1815         (pubkey_algo_to_string): New.
1816         (digest_algo_to_string): New.
1817
1818
1819  Copyright 1998,1999,2000,2001,2002,2003 Free Software Foundation, Inc.
1820
1821  This file is free software; as a special exception the author gives
1822  unlimited permission to copy and/or distribute it, with or without
1823  modifications, as long as this notice is preserved.
1824
1825  This file is distributed in the hope that it will be useful, but
1826  WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
1827  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.