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