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