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