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