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