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