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