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