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