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