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