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