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