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