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