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