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