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