Implemented the AES-Wrap algorithm
[libgcrypt.git] / src / ChangeLog
1 2009-12-08  Werner Koch  <wk@g10code.com>
2
3         * gcrypt.h.in (GCRY_CIPHER_MODE_AESWRAP): New.
4
5 2009-12-08  Marcus Brinkmann  <marcus@g10code.de>
6
7         * Makefile.am (LTRCCOMPILE): Refactor with ...
8         (RCCOMPILE): ... this new macro.  Add $(libgcrypt_la_CPPFLAGS).
9         (SUFFIXES): Add .lo.
10         (.rc.o): Change to ...
11         (.rc.lo): ... this implicit rule.
12         (gcrypt_res_ldflag): Removed.
13         (gcrypt_res): Use libtool object file name here.
14         (libgcrypt_la_LDFLAGS): Remove gcrypt_res_ldflag usage.
15         (libgcrypt_la_LIBADD): Add gcrypt_res.
16
17 2009-11-29  Werner Koch  <wk@g10code.com>
18
19         * hwfeatures.c (detect_ia32_gnuc): Repalce "=r" by "+r" so that
20         HAS-CPUDID is always initialized.  Thanks to Ben Hutchings for
21         pointing out this problem.
22
23 2009-08-05  Werner Koch  <wk@g10code.com>
24
25         * ath.h: Include sys/msg.h.
26
27 2009-07-02  Werner Koch  <wk@g10code.com>
28
29         * fips.c (_gcry_initialize_fips_mode): Do not use FIPS mode if
30         /proc/.../fips_enabled has insufficient permissions.
31
32         * dumpsexp.c (main): Fix handling multiple files.
33         (parse_and_print): Implement hex and octal escaping.
34
35         * sexp.c (unquote_string): Remove superfluous clearing of ESC.
36         * dumpsexp.c (parse_and_print): Add missing break.
37         (main): Fix return value.
38         Reported by Fabian Keil.
39
40 2009-02-16  Werner Koch  <wk@g10code.com>
41
42         * ath.h [HAVE_SYS_SELECT_H]: Include <sys/select.h> for fd_set.
43         [!HAVE_SYS_SELECT_H]: Include <sys/time.h>.  Move inclusion of
44         config.h to the top.  The actual configure check was already
45         there.
46
47         * sexp.c: Remove memory.h.
48         * mpi.h: Remove memory.h.  Add string.h.
49
50 2009-02-02  Werner Koch  <wk@g10code.com>
51
52         * ath.h: Include sys/time.h.  Fixes bug#993.
53
54 2009-01-22  Werner Koch  <wk@g10code.com>
55
56         * fips.c (_gcry_initialize_fips_mode): Remove superfluous const
57         from static string.  Reported by Albert Chin.
58         * hmac256.c (selftest): Ditto and change to unsigned char.
59
60 2008-12-10  Werner Koch  <wk@g10code.com>
61
62         * hmac256.c (finalize): Fix for big endian hosts.
63
64 2008-12-05  Werner Koch  <wk@g10code.com>
65
66         * global.c (gcry_free): Save and restore ERRNO if set.
67
68 2008-11-24  Werner Koch  <wk@g10code.com>
69
70         * sexp.c (get_internal_buffer): New.
71         (sexp_sscan): Add format character S.
72         * cipher-proto.h (pk_ext_generate_t): Add field EXTRAINFO  changed
73         all implementors.
74
75         * cipher-proto.h (pk_ext_generate_t): Simplify. 
76         (pk_get_param): New.
77         (pk_extra_spec_t): Add field GET_PARAM.
78         * cipher.h (PUBKEY_FLAG_TRANSIENT_KEY): Remove.
79         (_gcry_pubkey_extraspec_elg): New.
80
81 2008-11-05  Werner Koch  <wk@g10code.com>
82
83         * cipher.h (CIPHER_INFO_NO_WEAK_KEY): New.
84
85         * cipher-proto.h (cipher_set_extra_info_t): New.
86         (cipher_extra_spec): Add field SET_EXTRA_INFO.
87
88 2008-10-30  Werner Koch  <wk@g10code.com>
89
90         * g10lib.h (GCC_ATTR_FORMAT_ARG): New.
91         (_gcry_gettext): Use it.
92
93 2008-10-24  Werner Koch  <wk@g10code.com>
94
95         * global.c (inactive_fips_mode): Move to fips.c. 
96         (gcry_set_allocation_handler): Factor code out to ...
97         * fips.c (_gcry_inactivate_fips_mode): New.
98         (_gcry_is_fips_mode_inactive): New.
99
100 2008-09-29  Werner Koch  <wk@g10code.com>
101
102         * gcrypt-module.h (GCRY_MODULE_ID_USER, GCRY_MODULE_ID_USER_LAST):
103         New.
104         * module.c (MODULE_ID_USER, MODULE_ID_USER_LAST): Define using new
105         macros.
106
107 2008-09-20  Werner Koch  <wk@g10code.com>
108
109         * hmac256.c (finalize) [WORDS_BIGENDIAN]: Fix sigbus problem.
110
111 2008-09-18  Werner Koch  <wk@g10code.com>
112
113         * cipher-proto.h (pk_ext_generate_t): Add args QBITS, NAME, DOMAIN.
114
115         * fips.c (fips_new_state): Allow Error => Error transition.
116
117 2008-09-18  Werner Koch  <wk@g10code.com>
118
119         * gcrypt.h.in (gcry_fips_mode_active): New.
120
121         * secmem.c (_gcry_secmem_init): Factor most code out to ..
122         (secmem_init): .. new.
123         (DEFAULT_POOL_SIZE): Rename to MINIMUM_POOL_SIZE.
124         (STANDARD_POOL_SIZE): New.
125         (_gcry_secmem_malloc_internal): Don't abort if the pool is not
126         initialized but try to out intialize it first and only then print
127         an error message and return NULL.  If the pool is not locked while
128         in FIPS mode, return NULL.
129
130         * fips.c (FIPS_FORCE_FILE): New constant.  Change the file name to
131         "/etc/gcrypt/fips_enabled".
132         (enforced_fips_mode): New.
133         (_gcry_initialize_fips_mode): Set that flag.
134         (_gcry_enforced_fips_mode): New.
135         * global.c (inactive_fips_mode): New.
136         (_gcry_vcontrol): Take that flag in account for GCRYCTL_FIPS_MODE_P.
137         (gcry_set_allocation_handler): Take care of the enforced fips mdoe
138         flag.
139         (get_no_secure_memory): New.
140         (do_malloc, gcry_is_secure): Use it.
141
142 2008-09-16  Werner Koch  <wk@g10code.com>
143
144         * global.c (print_config): Use y/n for fips mode.
145
146         * fips.c (fips_new_state): Allow transition to Error and
147         Fatal-error from Init.
148
149 2008-09-15  Werner Koch  <wk@g10code.com>
150
151         * fips.c [HAVE_SYSLOG]: Include syslog.h.
152         (_gcry_initialize_fips_mode, lock_fsm, unlock_fsm)
153         (_gcry_fips_signal_error, fips_new_state)
154         (_gcry_fips_noreturn) [HAVE_SYSLOG]: Also log via syslog.
155         (check_binary_integrity) [HAVE_SYSLOG]: Log failure.
156         * global.h [HAVE_SYSLOG]: Include syslog.h.
157         (_gcry_global_is_operational) [HAVE_SYSLOG]: Print warning.
158
159         * global.c (_gcry_vcontrol): Use GCRYCTL_INITIALIZATION_FINISHED
160         to run power-up tests.  Add unpublished control commands 58-60.
161
162         * global.c (_gcry_global_is_operational): New.
163         * g10lib.h (fips_is_operational): Change to call this function.
164
165 2008-09-12  Werner Koch  <wk@g10code.com>
166
167         * fips.c (_gcry_fips_run_selftests): Add arg EXTENDED.
168         (run_cipher_selftests, run_digest_selftests, run_hmac_selftests) 
169         (run_pubkey_selftests): Ditto.
170         * cipher-proto.h (selftest_func_t): Add arg EXTENDED
171
172 2008-09-11  Werner Koch  <wk@g10code.com>
173
174         * fips.c: Include string.h.
175         (loxtoi_1, loxtoi_2, loxdigit_p): New.
176         (check_binary_integrity): Change the format of the expected file.
177
178         * fips.c (_gcry_fips_run_selftests): Run random tests before the
179         pubkey tests.
180
181 2008-09-05  Werner Koch  <wk@g10code.com>
182
183         * gcrypt.h.in (GCYRCTL_SELFTEST): New.
184         * global.c (_gcry_vcontrol): Implement.
185         * fips.c (_gcry_fips_run_selftests): Do state transitions only if
186         in fips mode.  Return an error code.
187
188 2008-09-01  Werner Koch  <wk@g10code.com>
189
190         * stdmem.c: Re-indented.
191
192 2008-08-29  Werner Koch  <wk@g10code.com>
193
194         * fips.c (_gcry_initialize_fips_mode): Changed /proc file to test
195         for FIPS mode.
196
197         * cipher-proto.h (pk_compute_keygrip_t): New.
198         (pk_extra_spec): Add field comp_keygrip.
199
200 2008-08-28  Werner Koch  <wk@g10code.com>
201
202         * hwfeatures.c (_gcry_detect_hw_features): Disable hardware
203         detection in FIPS mode.
204
205 2008-08-27  Werner Koch  <wk@g10code.com>
206
207         * global.c (_gcry_vcontrol): Allow running selftests from error
208         state.
209         (gcry_set_outofcore_handler): Only print a warning if used in FIPS
210         mode.
211         (gcry_xmalloc, gcry_xrealloc, gcry_xmalloc_secure, gcry_xstrdup):
212         Ignore an outofcore handler in FIPS mode.
213
214         * fips.c (_gcry_fips_test_error_or_operational): New.
215         (fips_new_state): Allow transition from error into selftest.
216         Disallow error to init.
217
218 2008-08-26  Werner Koch  <wk@g10code.com>
219
220         * fips.c (fips_new_state): Print state transitions only at
221         verbosity level of 2.
222         (reporter): Likewise.
223
224         * cipher-proto.h (pk_ext_generate_t): New.
225         (pk_extra_spec): Add member ext_generate.
226         * cipher.h (PUBKEY_FLAG_TRANSIENT_KEY): New.
227
228 2008-08-22  Werner Koch  <wk@g10code.com>
229
230         * hmac256.c (_gcry_hmac256_file): New.
231         (main): New option --binary.
232         * fips.c (check_binary_integrity): New.
233         (_gcry_fips_run_selftests): Run it.
234
235         * global.c (_gcry_vcontrol) <GCRYCTL_UPDATE_RANDOM_SEED_FILE>:
236         Check for fips operational state.
237         (_gcry_vcontrol) <GCRYCTL_FAST_POLL>: Ditt.
238
239 2008-08-21  Werner Koch  <wk@g10code.com>
240
241         * misc.c (_gcry_log_printhex): New.
242
243 2008-08-20  Werner Koch  <wk@g10code.com>
244
245         * g10lib.h (gcry_assert): New.  use this at almost all places
246         where we used a plain assert.
247         * misc.c (_gcry_assert_failed): New.
248         (_gcry_bug): Also use func variant for ISO-C99.
249
250 2008-08-19  Werner Koch  <wk@g10code.com>
251
252         * visibility.c, visibility.h (gcry_mpi_lshift): New.
253         * libgcrypt.vers, libgcrypt.def, gcrypt.h.in: Ditto.
254
255 2008-08-15  Werner Koch  <wk@g10code.com>
256
257         * gcrypt.h.in (gcry_cipher_setkey): Replace macro by function.
258         (gcry_cipher_setiv):  Ditto.
259         (gcry_cipher_setctr): Ditto.
260         * visibility.c (gcry_cipher_setkey, gcry_cipher_setiv) 
261         (gcry_cipher_setctr): New.
262         * visibility.h (gcry_cipher_setkey, gcry_cipher_setiv) 
263         (gcry_cipher_setctr): New.
264         * libgcrypt.vers (gcry_cipher_setkey, gcry_cipher_setiv)
265         (gcry_cipher_setctr): New.
266         * libgcrypt.def (gcry_cipher_setkey, gcry_cipher_setiv) 
267         (gcry_cipher_setctr): New.
268
269         * hmac256.h, hmac256.c: New.
270         * Makefile.am (hmac256_SOURCES): New. 
271         * Makefile.am (bin_PROGRAMS): Add hmac256.
272
273         * gcrypt.h.in (struct gcry_thread_cbs): Change type of OPTION to
274         unsigned int.  Although this is a type change it does not make a
275         difference.
276         * ath.c (ath_install): Take the version of the option field in
277         account.
278         
279         * visibility.c (gcry_pk_encrypt, gcry_pk_decrypt, gcry_pk_sign)
280         (gcry_pk_verify, gcry_pk_testkey, gcry_pk_genkey)
281         (gcry_pk_get_nbits, gcry_pk_get_keygrip)
282         (gcry_md_open, gcry_md_copy, gcry_md_enable) 
283         (gcry_md_write, md_final, gcry_md_ctl, gcry_md_setkey) 
284         (gcry_md_hash_buffer, gcry_md_get_algo, gcry_md_info) 
285         (gcry_md_is_enabled)
286         (gcry_cipher_open, gcry_cipher_encrypt)
287         (gcry_cipher_decrypt, gcry_cipher_ctl)
288         (gcry_cipher_algo_info): Check whether the library is operational.
289
290         * cipher-proto.h: New.
291         * cipher.h: Include cipher-proto.h.
292         * visibility.h: Remove duplicate macro definitions.  Remove
293         gcry_cipher_register, gcry_md_register, gcry_pk_register macros.
294         * visibility.c: Include cipher-proto.h. 
295         (gcry_cipher_register): Pass dummy extra args to the internal
296         register function.
297         (gcry_md_register, gcry_pk_register): Ditto.
298         * g10lib.h (struct gcry_module): Add field EXTRASPEC.
299         * module.c (_gcry_module_add): Add arg EXTRASPEC.  Changed all
300         callers to pass NULL.
301
302         * fips.c: New.
303         * gcrypt.h.in (GCRYCTL_FIPS_MODE_P): New.
304         * global.c (global_init): Call fips initialization.
305         (_gcry_vcontrol): Add GCRYCTL_FIPS_MODE_P code.
306         (print_config): Add config item fips-mode.
307         (gcry_set_allocation_handler): Do not allow the use of custom
308         allocation handlers.
309         (gcry_set_outofcore_handler): Ditto.
310         (_gcry_get_debug_flag): Do not return any debug flags in fips mode.
311         * misc.c (_gcry_logv): Signal fips error on BUG or FATAL.
312         (_gcry_fatal_error): Ditto.
313
314 2008-07-05  Werner Koch  <wk@g10code.com>
315
316         * Makefile.am: Include librandom.la.
317
318 2008-04-18  Werner Koch  <wk@g10code.com>
319
320         * missing-string.c (vasprintf): Remove.  It is not used.  Reported
321         by Simon Josefsson.
322
323 2008-03-11  Werner Koch  <wk@g10code.com>
324
325         * gcrypt.h.in (gcry_ac_em_t, gcry_ac_scheme_t): Remove trailing
326         comma for full C-89 compatibility.
327         
328 2008-01-21  Marcus Brinkmann  <marcus@g10code.de>
329
330         * hwfeatures.c (detect_ia32_gnuc): Fix inline asm.
331
332 2007-12-11  Werner Koch  <wk@g10code.com>
333
334         * visibility.c (gcry_md_hash_buffer): Don't use return vor a void
335         function.  Hey, why does gcc not complain about this?
336         (gcry_ac_io_init_va): Ditto.
337
338 2007-12-05  Werner Koch  <wk@g10code.com>
339
340         * hwfeatures.c (detect_ia32_gnuc): Depend on ENABLE_PADLOCK_SUPPORT.
341
342 2007-12-03  Werner Koch  <wk@g10code.com>
343
344         * misc.c (_gcry_logv): Use abort for error levels fatal and bug as
345         this is more approriate for a library.  Terminate the secmem
346         before doing so.
347         (_gcry_fatal_error): Terminate secmem before abort.
348         * secmem.c (_gcry_secmem_malloc_internal): Use log_bug instead of
349         exit.
350
351 2007-11-29  Werner Koch  <wk@g10code.com>
352
353         * hwfeatures.c (detect_ia32_gnuc): Detect Padlock engine.
354
355 2007-11-13  Werner Koch  <wk@g10code.com>
356
357         * gcrypt.h.in (_GCRY_GCC_ATTR_MALLOC): Fixed gcc version check.
358         Reported by Gabriele Monti.
359
360 2007-10-31  Werner Koch  <wk@g10code.com>
361
362         * global.c (gcry_control): Factor most code out to ..
363         (_gcry_vcontrol): .. new.
364         * sexp.c (_gcry_sexp_vbuild): New.
365         * mpi.h (_gcry_mpi_set, _gcry_mpi_set_ui, _gcry_mpi_invm): Remove
366         prototypes as they are already in gcrypt.h.
367
368 2007-10-30  Werner Koch  <wk@g10code.com>
369
370         * sexp.c (gcry_sexp_nth_string): Replace by _gcry_sexp_nth_string.
371
372         * visibility.h, visibility.c: New.
373         * g10lib.h: Include visibility.h instead of gcrypt.h.
374         * globals.c (_gcry_malloc): Rename to ..
375         (do_malloc): .. this.
376
377         * hwfeatures.c: New.
378         * global.c (global_init): Detect features.
379         (print_config): Print them.
380
381 2007-08-22  Werner Koch  <wk@g10code.com>
382
383         * dumpsexp.c: New.
384         * Makefile.am (bin_PROGRAMS): Install it.
385
386         * getrandom.c (print_version): Use new standard license line.
387         * gcryptrnd.c (print_version): Ditto.
388
389 2007-06-06  Werner Koch  <wk@g10code.com>
390
391         * gcrypt.h.in (GCRY_THREAD_OPTION_PTH_IMPL): Factror network
392         related code out so that the prototypes can be adjusted for W32.
393         (_GCRY_THREAD_OPTION_PTH_IMPL_NET): New.
394
395 2007-05-09  Werner Koch  <wk@g10code.com>
396
397         * libgcrypt.m4: Print found version on success.
398
399 2007-05-09  Marcus Brinkmann  <marcus@g10code.de>
400
401         * gcrypt.h.in (gcry_ac_io_t): Add name for anonymous union, and mark
402         all members as internal (actually: deprecated).
403
404 2007-05-04  Werner Koch  <wk@g10code.com>
405
406         * Makefile.am (.rc.lo): New to replace gmake specific suffix rule.
407
408 2007-05-03  Werner Koch  <wk@g10code.com>
409
410         * libgcrypt.def (gcry_sexp_nth_string): New.
411         * Makefile.am (EXTRA_DIST): Add libgcrypt.def.
412
413 2007-05-02  Werner Koch  <wk@g10code.com>
414
415         * global.c (print_config): Print ciphers, digests and pubkeys.
416
417 2007-05-02  David Shaw  <dshaw@jabberwocky.com>
418
419         * cipher.h, gcrypt.h.in: Add Camellia.
420
421 2007-04-30  Werner Koch  <wk@g10code.com>
422
423         * gcrypt.h.in (GCRYCTL_PRINT_CONFIG): New.
424         (GCRYCTL_SET_RNDEGD_SOCKET): New.
425         * global.c (gcry_control): Add GCRYCTL_PRINT_CONFIG and
426         GCRYCTL_SET_RNDEGD_SOCKET.
427         (print_config): New.
428         * misc.c (_gcry_log_info_with_dummy_fp): New.
429
430 2007-04-18  Werner Koch  <wk@g10code.com>
431
432         * gcrypt.h.in (gcry_sexp_nth_string): New.
433
434         * sexp.c (gcry_sexp_nth_data): Factored code out to ...
435         (sexp_nth_data): ... new.
436         (gcry_sexp_nth_string): New.
437         (gcry_sexp_nth_mpi): Reimplemented in terms of sexp_ntd_data.
438
439 2007-04-16  Werner Koch  <wk@g10code.com>
440
441         * secmem.c (init_pool): Use sysconf() if available to determine
442         page size.
443         
444 2007-03-22  Werner Koch  <wk@g10code.com>
445
446         * mpi.h (mpi_mod): New.
447         (mpi_new, mpi_snew): New.
448
449         * gcrypt.h.in: Add GCRY_PK_ECDSA.
450
451 2007-03-16  Werner Koch  <wk@g10code.com>
452
453         * gcrypt.h.in (GCRY_THREAD_OPTION_PTHREAD_IMPL): Fixed typo
454         introduced by me on 2006-10-23.
455
456 2007-02-22  Werner Koch  <wk@g10code.com>
457
458         * gcrypt.h.in (gcry_ac_id_to_name, gcry_ac_name_to_id): Mark as
459         deprecated.
460
461         * libgcrypt.def (gcry_fast_random_poll): Removed - it is a macro.
462         (gcry_cipher_register, gcry_cipher_unregister): New.
463         (gcry_md_register, gcry_md_unregister): New.
464         (gcry_pk_register, gcry_pk_unregister): New.
465         (gcry_ac_data_from_sexp, gcry_ac_data_to_sexp): New.
466         (gcry_ac_io_init, gcry_ac_io_init_va): New.
467         (gcry_ac_data_encrypt_scheme, gcry_ac_data_decrypt_scheme): New.
468         (gcry_ac_data_sign_scheme, gcry_ac_data_verify_scheme): New.
469
470         * missing-string.c: Include stdio.h for the vsprintf prototype.
471
472         * ath.h (struct ath_ops) [_WIN32]: Use int instead of socklen_t.
473
474 2007-02-21  Werner Koch  <wk@g10code.com>
475
476         * libgcrypt.def (gcry_create_nonce, gcry_fast_random_poll)
477         (gcry_md_debug): New.
478
479         * libgcrypt-config.in: Remove duplicates from --cflags and --libs.
480         Print a error for option --thread.
481
482         * gcrypt.h.in (gcry_sexp_sprint): Change BUFFER from char* to void*.
483         (gcry_md_ctl): Change BUFFER from unsigned char* to void*.
484         (gcry_md_debug): New.
485         (gcry_cipher_encrypt, gcry_cipher_decrypt): Change buffer args to
486         void*.
487         (gcry_randomize): Change BUFFER to void.
488         (gcry_create_nonce): Ditto.
489
490         * libgcrypt.vers (gcry_md_debug): New.
491
492         * sexp.c (gcry_sexp_sprint): Ditto.
493         (normalize): Make P unsigned.
494         (gcry_sexp_nth_data): Cast return value to char*.
495         (sexp_sscan): Fix sign/unsigned conflicts.
496         (whitespacep): Change P to char*.
497         (unquote_string): Change STRING to char*.
498         (convert_to_hex): Change DEST to char*.
499         (convert_to_string): Change DEST and P to char*.
500         (convert_to_token): Chnage DEST to char*.
501         (gcry_sexp_canon_len): Change DISPHINT to unsigned char*.
502
503         * gcrypt-module.h (gcry_pk_spec): Made ALIASES a const.
504         (gcry_md_write_t): Changed BUF to a const void*.
505
506 2007-02-12  Werner Koch  <wk@g10code.com>
507
508         * gcrypt.h.in: Include stdlib.h for the sake fo the trheading
509         macros.  Suggested by Andreas Metzler.
510
511         * secmem.c (ptr_into_pool_p): New.
512         (_gcry_private_is_secure): Implement in terms of new function.
513         (BLOCK_VALID): Removed.  Replaced all users by new function.
514
515 2007-01-31  Werner Koch  <wk@g10code.com>
516
517         * secmem.c (_gcry_private_is_secure): Fixed severe implementation
518         flaw.  Might be the reason for some of the more obscure bugs.
519         (MB_WIPE_OUT): Use wipememory2.
520
521 2006-10-23  Werner Koch  <wk@g10code.com>
522
523         * gcrypt.h.in (GCRY_THREAD_OPTION_PTHREAD_IMPL): Add some cast for
524         use by C-doubleplus.  In general I don't like this but due to
525         public demand I give up ;-)
526
527 2006-10-19  Werner Koch  <wk@g10code.com>
528
529         * global.c (gcry_control) <GCRYCTL_INIT_SECMEM>: Return an error
530         if the memory could not be locked.
531         * secmem.c (not_locked): New.
532         (_gcry_secmem_get_flags): Return that flag.
533         * secmem.h (GCRY_SECMEM_FLAG_NOT_LOCKED): New.
534
535 2006-10-05  Werner Koch  <wk@g10code.com>
536
537         * module.c (_gcry_module_id_new): Don't assign modules in the range
538         the range of 1024..4096.
539         * gcrypt.h (GCRY_MD_USER, GCRY_MD_USER_LAST): New
540         (GCRY_PK_USER, GCRY_PK_USER_LAST): New.
541         (GCRY_CIPHER_USER, GCRY_CIPHER_USER_LAST): New.
542
543 2006-10-12  Marcus Brinkmann  <marcus@g10code.de>
544
545         * gcrypt.h.in: Replace socklen_t with gcry_socklen_t.
546
547 2006-10-11  Marcus Brinkmann  <marcus@g10code.de>
548
549         * gcrypt.h.in: Replace version by @VERSION@.
550
551 2006-10-10  Marcus Brinkmann  <marcus@g10code.de>
552
553         * gcrypt.h: Add fallback type for socklen_t.  Move to ...
554         * gcrypt.h.in: ... this file.
555         * Makefile.am (EXTRA_DIST): Add gcrypt.h.in.
556
557 2006-09-04  Werner Koch  <wk@g10code.com>
558
559         * gcrypt.h: Removed some trailing comma in enums.
560
561 2006-08-29  Werner Koch  <wk@g10code.com>
562
563         * global.c (gcry_xrealloc): Pass secure flag to outofcore handler.
564
565         * gcrypt.h (GCRY_CIPHER_SEED): New.
566
567 2006-08-21  Werner Koch  <wk@g10code.com>
568
569         * gcrypt.h (GCRYCTL_FAKED_RANDOM_P): New.
570
571 2006-07-29  Marcus Brinkmann  <marcus@g10code.de>
572
573         * secmem.c (init_pool): Close FD after establishing the mapping.
574
575 2006-07-12  Marcus Brinkmann  <marcus@g10code.de>
576
577         * ath.c (ath_mutex_destroy): Microoptimize destruction of unused
578         statitically initialized mutexes.  Suggested by Victor Stinner
579         <victor.stinner@inl.fr>.
580
581         * gcrypt.h (GCRY_THREAD_OPTION_PTHREAD_IMPL,
582         (GCRY_THREAD_OPTION_PTH_IMPL): Add missing initializers to
583         suppress gcc warning.
584         Submitted by Victor Stinner <victor.stinner@inl.fr>.
585
586 2006-07-04  Marcus Brinkmann  <marcus@g10code.de>
587
588         * ath.c: Avoid warning about double defined type byte and other
589         hacks to let it build for W32 (backported from LIBGCRYPT-1-2-BRANCH).
590         * ath.h, gcrypt.h, tests/benchmark.c, src/types.h: Likewise.
591
592         * gcrypt.h: Revert last change, and instead:
593         [_WIN32 || __WIN32__]: Do not include <sys/socket.h>, but
594         <winsock2.h> and <ws2tcpip.h>.
595         Suggested by Simon Josefsson <jas@extundo.com>.
596         
597         * Makefile.am (install-data-local, uninstall-local, %.lo,
598         (install-def-file, uninstall-def-file): New targets.
599         (LTRCCOMPILE, gcrypt_res, gcrypt_res_ldflag, no_undefined,
600         (export_symbols, gcrypt_deps): New variables.
601         * versioninfo.rc.in: New file.
602         * libgcrypt.def: New file from ../w32-dll/libgcrypt.def.
603
604         * gcrypt.h [!HAVE_SYS_SOCKET_H]: Do not include sys/socket.h, but
605         the appropriate windows socket header.
606
607 2006-06-21  Werner Koch  <wk@g10code.com>
608
609         * global.c (gcry_xcalloc, gcry_xcalloc_secure): Made safe against
610         integer overflow.
611
612         * sexp.c (make_space): Return an error on out of core.
613         (sexp_sscan): Remove all xmalloc style calls and return proper
614         error codes on allocation failures.
615         (gcry_sexp_find_token): Ditto.
616         (gcry_sexp_nth): 
617         
618         * sexp.c (gcry_sexp_find_token): Re-indented and removed a cruft
619         "while(level);" which fortunately had no effect.
620
621 2006-04-28  Werner Koch  <wk@g10code.com>
622
623         * gcrypt.h (GCRY_MD_SHA224): Change value from 306 to 11 to match
624         the use in OpenPGP.  There has been no release yet, so we can
625         safely do it.
626
627 2006-04-22  Moritz Schulte  <moritz@g10code.com>
628
629         * gcrypt.h (gcry_ctl_cmds): New commands:
630         GCRYCTL_SET_RANDOM_DAEMON_SOCKET, GCRYCTL_USE_RANDOM_DAEMON.  
631         * global.c (gcry_control): Handle new commands, calling
632         _gcry_set_random_daemon_socket() and _gcry_use_random_daemon().
633
634 2006-04-18  Werner Koch  <wk@g10code.com>
635
636         * gcrypt.h (GCRY_PK_USAGE_CERT, GCRY_PK_USAGE_AUTH)
637         (GCRY_PK_USAGE_UNKN): New.
638
639 2006-04-01  Moritz Schulte  <moritz@g10code.com>
640
641         * gcrypt.h (gcry_ac_eme_pkcs_v1_5): Removed members: key, handle;
642         added member: key_size.
643
644         * secmem.c (MB_FLAG_ACTIVE): Write braces around MB_FLAG_ACTIVE
645         definition.
646
647 2006-03-15  Werner Koch  <wk@g10code.com>
648
649         * getrandom.c: New.
650
651 2006-03-14  Werner Koch  <wk@g10code.com>
652
653         * gcryptrnd.c: New.
654
655 2006-03-10  Werner Koch  <wk@g10code.com>
656
657         * gcrypt.h: Add GCRY_MD_SHA224.
658
659 2005-11-02  Moritz Schulte  <moritz@g10code.com>
660
661         * gcrypt.h: Update comments for functions: gcry_cipher_algo_name,
662         gcry_pk_algo_name.
663
664 2005-10-31  Moritz Schulte  <moritz@g10code.com>
665
666         * global.c: Added documentation.
667
668 2005-10-16  Moritz Schulte  <moritz@g10code.com>
669
670         * global.c (global_init): Use gcry_error_t instead of
671         gcry_err_code_t; use goto instead of if constructs.
672
673         * stdmem.c: Inserted description of the layered memory management
674         in Libgcrypt.
675
676         * g10lib.h: Removed G10_I18N_H related check; it seems to be a
677         GnuPG relict (Libgcrypt does not define this symbol anywhere).
678         (FLAG_MODULE_DISABLED): Don't forget parantheses around shifted
679         value.
680         
681         Removed GCC_ATTR_PURE macro definitions, since gcrypt.h does
682         already contain such a macro named _GCRY_GCC_ATTR_PURE, which we
683         can use here as well.
684
685         Likewise for GCC_ATTR_MALLOC and _GCRY_GCC_ATTR_MALLOC.
686
687         * stdmem.h: Use _GCRY_GCC_ATTR_MALLOC instead of GCC_ATTR_MALLOC.
688         * secmem.h: Likewise.
689
690 2005-10-09  Moritz Schulte  <moritz@g10code.com>
691
692         * global.c (gcry_control): Call global_init() after passing thread
693         cbs to ath.  global_init() MUST to be called AFTER passing the cbs
694         to ath and BEFORE calling library functions, which make use of
695         ath.  This change combines cbs installing with ath initialization
696         and thus removes the need to call other library initialization
697         functions inbetween like e.g. gcry_check_version().
698
699 2005-10-01  Moritz Schulte  <moritz@g10code.com>
700
701         * ath.c: Assign copyright to FSF.
702         * ath.h: Likewise.
703
704 2005-06-25  Moritz Schulte  <moritz@g10code.com>
705
706         * Makefile.am (pkgconfigdir, pkgconfig_DATA): Removed variables.
707         * libgcrypt.pc.in: Removed file - we do not want to support a
708         second, foreign configuration system.
709
710 2005-06-17  Moritz Schulte  <moritz@g10code.com>
711
712         * global.c (gcry_xstrdup): Removed superfluous strcpy call.
713
714 2005-04-22  Moritz Schulte  <moritz@g10code.com>
715
716         * Makefile.am (pkgconfigdir, pkgconfig_DATA): New; support for
717         pkgconfig provided by Albert Chin.
718         * libgcrypt.pc.in (Cflags): New file.
719
720 2005-04-16  Moritz Schulte  <moritz@g10code.com>
721
722         * g10lib.h (_gcry_ac_init): Declare.
723         * global.c (global_init): Call _gcry_ac_init; don't forget to set
724         err.
725
726 2005-04-14  Werner Koch  <wk@g10code.com>
727
728         * sexp.c (whitespacep): New.
729         (sexp_sscan): Replaced isdigit and isspace by whitespacep and
730         digitp.
731
732 2005-04-11  Moritz Schulte  <moritz@g10code.com>
733
734         * gcrypt.h (gcry_md_algos): Added: GCRY_MD_WHIRLPOOL.
735         * cipher.h (_gcry_digest_spec_whirlpool): Declare.
736
737 2005-03-30  Moritz Schulte  <moritz@g10code.com>
738
739         * libgcrypt.vers: Added: gcry_ac_io_init, gry_ac_io_init_va.
740
741         * gcrypt.h (gcry_ac_data_read_cb_t, gcry_ac_data_write_cb_t,
742         gcry_ac_io_mode_t, gcry_ac_io_type_t, gcry_ac_io_t): New types.
743         (gcry_ac_io_init_va): Declare function.
744         (gcry_ac_data_encode, gcry_ac_data_decode,
745         gcry_ac_data_encrypt_scheme, gcry_ac_data_decrypt_scheme,
746         gcry_ac_data_sign_scheme, gcry_ac_data_verify_scheme): Use
747         gcry_ac_io_type_t objects instead of memory strings directly.
748
749 2005-03-03  Moritz Schulte  <moritz@g10code.com>
750
751         * libgcrypt.vers: Added: gcry_ac_data_to_sexp() and
752         gcry_ac_data_from_sexp().
753
754 2005-02-22  Werner Koch  <wk@g10code.com>
755
756         * global.c (_gcry_malloc): Make sure ERRNO is set if we return
757         NULL.  Remove unneeded initialization of M to allow the compiler
758         to catch errors.
759         (gcry_realloc): Make sure ERRNO is set if we return NULL>
760
761 2005-02-13  Moritz Schulte  <moritz@g10code.com>
762
763         * gcrypt.h: Declare new functions: gcry_ac_data_encrypt_scheme,
764         gcry_ac_data_decrypt_scheme, gcry_ac_data_sign_scheme,
765         gcry_ac_data_verify_scheme, gcry_ac_data_encode,
766         gcry_ac_data_decode, gcry_ac_data_to_sexp, gcry_ac_data_from_sexp.
767         New types: gcry_ac_emsa_pkcs_v1_5_t, gcry_ac_ssa_pkcs_v1_5_t,
768         gcry_md_algo_t.
769         New enumeration lists: gcry_ac_scheme_t, gcry_ac_em_t.
770         * libgcrypt.vers: Added new ac functions.
771         * g10lib.h: Declare function: _gcry_pk_get_elements.
772         * mpi.h (mpi_get_ui): New macro.
773         Declare function: _gcry_mpi_get_ui.
774
775 2004-11-09  Werner Koch  <wk@g10code.com>
776
777         * gcrypt.h: Removed 3 trailing commas from enums.  Noted by Heiko
778         Stamer.
779
780 2004-09-21  Werner Koch  <wk@g10code.de>
781
782         * sexp.c (sexp_sscan): Removed C++ style comments.  Noted by Yoann
783         Vandoorselaere.
784
785 2004-08-23  Moritz Schulte  <moritz@g10code.com>
786
787         * global.c: Do not include <assert.h>. 
788         * sexp.c: Likewise.
789         * module.c: Likewise.
790         * misc.c: Likewise.
791
792 2004-08-18  Moritz Schulte  <moritz@g10code.com>
793
794         * secmem.c (_gcry_secmem_init): Try to lock pool into core not
795         only when running with root privileges.
796
797 2004-08-16  Werner Koch  <wk@g10code.de>
798
799         * secmem.h (_gcry_secmem_set_flags,_gcry_secmem_get_flags):
800         Removed __pure__.
801         (GCRY_SECMEM_FLAG_NO_WARNING): Put macro value into parens.
802
803         * secmem.c (_gcry_secmem_init): Defer printing of the warning.
804
805 2004-08-10  Moritz Schulte  <moritz@g10code.com>
806
807         * gcrypt.h: Include <sys/time.h>, thanks to Simon Josefsson.
808
809 2004-05-07  Werner Koch  <wk@gnupg.org>
810
811         * gcrypt.h: Added GCRYCTL_FAST_POLL.
812         (gcry_fast_random_poll): New.
813         * global.c (gcry_control) <INITIALIZATION_FINISHED>: Do only basic
814         random subsystem init.
815         (gcry_control) <FAST_POLL>: New.
816
817 2004-04-22  Marcus Brinkmann  <marcus@g10code.de>
818
819         * libgcrypt.m4: Quote first argument to AC_DEFUN.
820
821 2004-04-15  Werner Koch  <wk@gnupg.org>
822
823         * secmem.c (_gcry_secmem_malloc_internal): Removed old extra info
824         error output.
825         (_gcry_secmem_term): Use wipememory2 here.
826
827         * misc.c (_gcry_burn_stack): Use wipememory to avoid optimizations.
828
829         * string.c: Removed.  Was never used.
830         * global.c (gcry_strdup): Replaced by the version from string.c
831         (gcry_xstrdup): Rewritten.
832         * gcrypt.h: Removed duplicate prototype for gcry_strdup.
833
834 2004-03-29  Werner Koch  <wk@gnupg.org>
835
836         * secmem.c (_gcry_secmem_realloc): Fixed double unlock; bug
837         manifested itself due to the more rigorous checking in the changed
838         ath.h
839
840         * libgcrypt-config.in (Options): Ignore the obsolete --threads
841         option for now.
842
843 2004-03-17  Marcus Brinkmann  <marcus@g10code.de>
844
845         * libgcrypt-config.in (includedir, libdir): Quote'em.  Use
846         $gpg_error_cflags and $gpg_error_libs.  Fix construction of
847         $includes.
848
849 2004-03-14  Marcus Brinkmann  <marcus@g10code.de>
850
851         * libgcrypt-config.in (includedir, libdir): New variables.  For
852         --cflags, don't test $cflags.  Also check against /include for the
853         GNU/Hurd.  Don't overwrite but extend $cflags_final.  Likewise for
854         --libs.
855
856 2004-03-10  Marcus Brinkmann  <marcus@g10code.de>
857
858         * Makefile.am (ltlib_libgcrypt_pthread, ltlib_libgcrypt_pth): Removed.
859         (lib_LTLIBRARIES): Remove those variables from here.
860         (libgcrypt_pthread_la_SOURCES, libgcrypt_pthread_la_LDFLAGS,
861         (libgcrypt_pthread_la_DEPENDENCIES, libgcrypt_pthread_la_LIBADD,
862         (libgcrypt_pth_la_SOURCES, libgcrypt_pth_la_LDFLAGS,
863         (libgcrypt_pth_la_DEPENDENCIES, libgcrypt_pth_la_LIBADD,
864         (noinst_LTLIBRARIES): Removed.
865         (libgcrypt_real_la_SOURCES): Merge with ...
866         (libgcrypt_la_SOURCES): ... likewise.
867         (libgcrypt_real_la_DEPENDENCIES): Merge with ...
868         (libgcrypt_la_DEPENDENCIES): ... this.
869         (libgcrypt_real_la_LIBADD): Merge with ...
870         (libgcrypt_la_LIBADD): ... this.
871         * libgcrypt-config.in (libs_pthread, libs_pth, cflags_pth) 
872         (cflags_pthread, thread_module, thread_modules): Removed.
873         (Options): Remove --thread option from help output.  If the option
874         is specified, output an error and exit.
875         For --cflags and --libs option, remove pth and pthread from output.
876         * gcrypt.h: Include <sys/types.h> and <sys/socket.h>.
877         (enum gcry_ctl_cmds): Add GCRYCTL_SET_THREAD_CBS.
878         (gcry_thread_cbs): New struct.
879         * global.c (gcry_control): Implement GCRYCTL_SET_THREAD_CBS.
880         (global_init): Don't call ath_init here.
881         * ath.h: Rewritten.
882         * ath.c: Rewritten.
883
884 2004-03-06  Werner Koch  <wk@gnupg.org>
885
886         * libgcrypt-config.in: s/--soname-number/--api-version/
887         * libgcrypt.m4: Changed test for API version.
888
889 2004-03-05  Werner Koch  <wk@gnupg.org>
890
891         * libgcrypt.m4: Optionally check the SONAME number.
892
893         * libgcrypt-config.in: Add option --soname-number
894
895 2004-03-01  Marcus Brinkmann  <marcus@g10code.de>
896
897         * Makefile.am (libgcrypt_la_SOURCES): Add ath.c.
898         * ath.c (ath_init): Add missing function.
899
900         * Makefile.am (ath_pth_src): Removed.
901         (ath_pthread_src): Removed.
902         (libgcrypt_la_SOURCES): Remove ath-compat, $(ath_pth_src) and
903         $(ath_pthread_src).
904         * ath-compat.c, ath-pth-compat.c, ath-pthread-compat.c: Files
905         removed.
906         
907 2004-02-20  Werner Koch  <wk@gnupg.org>
908
909         * gcrypt.h (GCRY_PRIME_CHECK_AT_GOT_PRIME)
910         (GCRY_PRIME_CHECK_AT_FINISH),
911         (GCRY_PRIME_CHECK_AT_MAYBE_PRIME): New.
912
913 2004-02-18  Werner Koch  <wk@gnupg.org>
914
915         * libgcrypt-config.in: Ignore setting of --prefix.
916
917 2004-02-13  Werner Koch  <wk@gnupg.org>
918
919         * gcrypt.h: Added GCRY_CIPHER_RFC2268_128, alsthough not yet
920         supported.
921
922 2004-02-06  Werner Koch  <wk@gnupg.org>
923
924         * gcrypt.h: Added GCRY_CIPHER_RFC2268_40.
925
926 2004-02-03  Werner Koch  <wk@gnupg.org>
927
928         * secmem.c (_gcry_secmem_init): Do not print the "not locked into
929         core warning" if the NO_WARNING flag has been set.
930
931         * sexp.c (sexp_sscan): Allocate result in secure memory if BUFFER
932         is in secure memory. Switch to secure memory for the a secure %b
933         format item. Extra paranoid wipe on error.
934         (gcry_sexp_release): Added paranoid wiping for securely allocated
935         S-expressions.
936
937 2004-01-25  Moritz Schulte  <mo@g10code.com>
938
939         * ath.h: Include <config.h>.
940
941 2004-01-12  Moritz Schulte  <mo@g10code.com>
942
943         * gcrypt.h: Adjusted declarations of: gcry_ac_data_set,
944         gcry_ac_data_get_name, gcry_ac_data_get_index,
945         gcry_ac_key_pair_generate, gcry_ac_key_test,
946         gcry_ac_key_get_nbits, gcry_ac_key_get_grip.
947
948         * gcrypt.h (GCRY_AC_FLAG_DATA_NO_BLINDING): Removed symbol.
949         (GCRY_AC_FLAG_DEALLOC, GCRY_AC_FLAG_COPY) 
950         (GCRY_AC_FLAG_NO_BLINDING): New symbols.
951
952         * global.c (gcry_strdup): Removed function.
953         * string.c: New file.
954         * Makefile.am (libgcrypt_real_la_SOURCES): Added: string.c.
955         * string.c (gcry_strdup): New function.
956         * gcrypt.h (gcry_strdup): Declare.
957
958 2003-12-19  Werner Koch  <wk@gnupg.org>
959
960         * g10lib.h (wipememory, wipememory2): New; taken from gnupg.
961
962 2003-11-14  Werner Koch  <wk@gnupg.org>
963
964         * global.c (gcry_strdup): Don't copy the string after a malloc
965         error.
966
967 2003-11-11  Werner Koch  <wk@gnupg.org>
968
969         * sexp.c (sexp_sscan): Implemented "%b" format specifier.
970
971 2003-11-11  Moritz Schulte  <mo@g10code.com>
972
973         * libgcrypt.m4: Do not set prefix when calling libgcrypt-config.
974         Thanks to Nikos Mavroyanopoulos.
975
976 2003-11-08  Moritz Schulte  <mo@g10code.com>
977
978         * cipher.h (small_prime_numbers): Removed declaration.
979         (PUBKEY_FLAG_NO_BLINDING): Put braces around shift.
980
981 2003-11-04  Werner Koch  <wk@gnupg.org>
982
983         * cipher.h (_gcry_sha1_has_buffer): New.
984
985         * gcrypt.h (gcry_create_nonce): New.
986
987 2003-10-31  Werner Koch  <wk@gnupg.org>
988
989         * libgcrypt.vers (_gcry_generate_elg_prime): Removed this symbol;
990         gnutls does not need it anymore.
991
992         * secmem.c (mb_get_new): s/pool/block/ due to global pool.
993
994         * misc.c (gcry_set_log_handler): s/logf/f/ to avoid shadowing
995         warning against a builtin.
996
997         * ath-pth-compat.c: cast pth_connect to get rid of the const
998         prototype.
999
1000 2003-10-27  Werner Koch  <wk@gnupg.org>
1001
1002         * ath.h (ATH_MUTEX_INITIALIZER): Removed spurious semicolon.
1003
1004 2003-10-27  Moritz Schulte  <mo@g10code.com>
1005
1006         * libgcrypt-config.in: Include libs/cflags of libgpg-error.
1007
1008         * sexp.c (sexp_sscan): Cleaned up, deallocate scanned sexp on
1009         error.
1010
1011         * module.c (MODULE_ID_MIN): New symbol, use it.
1012
1013 2003-10-27  Werner Koch  <wk@gnupg.org>
1014
1015         * gcrypt.h (gcry_pk_testkey): Doc fix.
1016
1017 2003-09-29  Moritz Schulte  <mo@g10code.com>
1018
1019         * libgcrypt-config.in: Fix --algorithms option.
1020
1021 2003-10-23  Werner Koch  <wk@gnupg.org>
1022
1023         * gcrypt.h (gcry_err_code): Use GPG_ERR_INLINE instead of
1024         __inline__.
1025
1026         * secmem.c (lock_pool): Don't print the warning for certain
1027         systems, handle ENOMEM.
1028
1029 2003-10-21  Werner Koch  <wk@gnupg.org>
1030
1031         * secmem.c (_gcry_secmem_dump_stats): Fixed format sepcifier for a
1032         size_t.  Reported by Stephane Corthesy.
1033
1034 2003-10-10  Werner Koch  <wk@gnupg.org>
1035
1036         * global.c (_gcry_malloc): Handle the no_secure_memory option.
1037
1038         * gcrypt.h (gcry_prime_group_generator): New.
1039         (gcry_prime_release_factors): New.
1040
1041 2003-10-07  Werner Koch  <wk@gnupg.org>
1042
1043         * sexp.c (sexp_sscan): Check that parenthesis are matching.
1044
1045 2003-09-28  Moritz Schulte  <mo@g10code.com>
1046
1047         * g10lib.h: Declare: _gcry_malloc.
1048         (GCRY_ALLOC_FLAG_SECURE): New symbol.
1049
1050         * global.c (_gcry_malloc): New function...
1051         (gcry_malloc): ... use it.
1052         (gcry_malloc_secure): Likewise.
1053
1054         * ath.c: Change License to LGPL.
1055         * ath-pthread-compat.c: Likewise.
1056         * ath-pthread.c: Likewise.
1057         * ath-pth-compat.c: Likewise.
1058         * ath-pth.c: Likewise.
1059         * ath.h: Likewise.
1060         * ath-compat.c: Likewise.
1061
1062         * secmem.c (_gcry_secmem_realloc): Do not forget to release secmem
1063         lock.  Thanks to low halo for triggering this bug.
1064
1065 2003-09-04  Werner Koch  <wk@gnupg.org>
1066
1067         * gcrypt.h (_GCRY_ERR_SOURCE_DEFAULT): Removed cruft.
1068         (gcry_prime_check_func_t): Renamed arg for clarity.
1069
1070 2003-09-02  Moritz Schulte  <mo@g10code.com>
1071
1072         * gcrypt.h (GCRY_PRIME_FLAG_SPECIAL_FACTOR): New symbol.
1073
1074 2003-09-01  Moritz Schulte  <mo@g10code.com>
1075
1076         * gcrypt.h (gcry_random_level_t): New type.
1077         (gcry_prime_check_func_t): Likewise.
1078         (GCRY_PRIME_FLAG_SECRET): New symbol.
1079         (gcry_prime_generate, gcry_prime_check): Declare functions.
1080
1081 2003-08-28  Werner Koch  <wk@gnupg.org>
1082
1083         * Makefile.am (libgcrypt_pth_la_LDFLAGS): Removed PTH_CFLAGS cruft.
1084
1085 2003-08-27  Moritz Schulte  <mo@g10code.com>
1086
1087         * global.c (gcry_control): Remove call to ath_deinit.
1088
1089         * Makefile.am (libgcrypt_real_la_DEPENDENCIES): Fixed.
1090         (libgcrypt_real_la_LIBADD): Fixed.
1091         Removed unecessary variables.
1092
1093         * libgcrypt-config.in: Adjusted script for new thread handling.
1094
1095         * Makefile.am: New version, based on GPGMEs Makefile.am.
1096
1097         * ath.c, ath-compat.c, ath.h, ath-pth.c, ath-pth-compat.c,
1098         ath-pthread.c, ath-pthread-compat.c: New files, merged from GPGME.
1099         * ath.c, ath.h, ath-pthread.c, ath-pth.c: Removed files.
1100
1101 2003-08-08  Moritz Schulte  <moritz@g10code.com>
1102
1103         * global.c (gcry_realloc): Remove FIXME about `clearing out
1104         realloced memory', since _gcry_secmem_realloc takes care of
1105         overwriting old memory.
1106
1107 2003-08-07  Werner Koch  <wk@gnupg.org>
1108
1109         * module.c (_gcry_module_release): Don't act if module is NULL.
1110
1111 2003-07-30  Moritz Schulte  <moritz@g10code.com>
1112
1113         * gcrypt.h (enum gcry_ac_id): Added: GCRY_AC_ELG_E.
1114         Reverted change: use gcry_md_flags enumeration list instead of
1115         defines.
1116
1117 2003-07-29  Werner Koch  <wk@gnupg.org>
1118
1119         * global.c (gcry_control): Add GCRYCTL_SET_RANDOM_SEED_FILE and
1120         GCRYCTL_UPDATE_RANDOM_SEED_FILE.
1121         * gcrypt.h: Ditto.  Renamed index to idx, so avoid warning
1122         related to the old index function.
1123
1124 2003-07-28  Moritz Schulte  <moritz@g10code.com>
1125
1126         * global.c (gcry_err_code_from_errno, gcry_err_code_to_errno)
1127         (gcry_err_make_from_errno, gcry_error_from_errno): New functions.
1128
1129         * gcrypt.h: Declared: gcry_err_code_from_errno,
1130         gcry_err_code_to_errno, gcry_err_make_from_errno,
1131         gcry_error_from_errno.
1132
1133         * Makefile.am (include_HEADERS): Added: gcrypt-module.h.
1134
1135         * gcrypt.h: Include <gcrypt-module.h>.
1136
1137         * gcrypt-module.h: New file.
1138
1139 2003-07-27  Werner Koch  <wk@gnupg.org>
1140
1141         * gcrypt.h (gcry_mpi_scan, gcry_mpi_print): API change.
1142         (gcry_mpi_dump): New.
1143
1144 2003-07-21  Moritz Schulte  <moritz@g10code.com>
1145
1146         * gcrypt.h: Declared: gcry_ac_key_data_get.
1147         (gcry_pk_spec): Renamed member `sexp_names' into `aliases'.
1148
1149 2003-07-20  Moritz Schulte  <moritz@g10code.com>
1150
1151         * gcrypt.h (gcry_md_oid_spec_t): New type.
1152         (gcry_md_spec): New member: oids.
1153
1154 2003-07-19  Moritz Schulte  <moritz@g10code.com>
1155
1156         * gcrypt.h (gcry_cipher_oid_spec_t): New type.
1157         (gcry_cipher_spec): New member: oids;
1158
1159 2003-07-18  Werner Koch  <wk@gnupg.org>
1160
1161         * gcrypt.h (gcry_mpi_set_opaque): Add a warning comment.
1162
1163 2003-07-15  Moritz Schulte  <moritz@g10code.com>
1164
1165         * secmem.c (compress_pool): Remove function, since unused blocks
1166         are automatically concatenad.
1167
1168         * gcrypt.h: Bumped version number up to 1.1.42-cvs.
1169
1170 2003-07-14  Moritz Schulte  <moritz@g10code.com>
1171
1172         * gcrypt.h (gcry_cipher_spec): New member: aliases.
1173
1174         * Makefile.am (noinst_PROGRAMS, testapi_SOURCES, testapai_LDADD,
1175         benchmark_SOURCES, benchmark_LDADD): Removed.
1176
1177         * benchmark.c, testapi.c: Removed files.
1178
1179         * mpi.h: Removed disabled typedef.
1180         * g10lib.h: Likewise.
1181
1182         * benchmark.c, g10lib.h, gcrypt.h, global.c, module.c, sexp.c:
1183         Used gcry_err* wrappers for libgpg-error symbols.
1184
1185 2003-07-12  Moritz Schulte  <moritz@g10code.com>
1186
1187         * global.c: Likewise.
1188
1189         * gcrypt.h: New type: gcry_error_t, gcry_err_code_t and
1190         gcry_err_source_t.
1191         (gcry_err_make, gcry_error, gcry_err_code, gcry_err_source): New
1192         functions.
1193
1194         * global.c (gcry_strerror): New function.
1195         (gcry_strsource): New function.
1196
1197         * gcrypt.h: New symbol: GCRY_CIPHER_TWOFISH128.
1198
1199 2003-07-09  Moritz Schulte  <moritz@g10code.com>
1200
1201         * gcrypt.h (enum gcry_md_flags): Removed, used define instead,
1202         since that is more common than an enumeration list when it comes
1203         to flags that can be bitwise ORed.
1204         
1205 2003-07-08  Moritz Schulte  <moritz@g10code.com>
1206
1207         * global.c: Use new types for handlers.
1208
1209         * gcrypt.h: Declare: gcry_ac_data_copy.
1210
1211 2003-07-07  Moritz Schulte  <moritz@g10code.com>
1212
1213         * sexp.c (gcry_sexp_build_array): Use dummy argument pointer.
1214         Thanks to Simon Josefsson <jas@extunde.com>.
1215
1216         * gcrypt.h: Declare: gcry_cipher_list, gcry_pk_list, gcry_md_list.
1217         
1218 2003-07-05  Moritz Schulte  <moritz@g10code.com>
1219
1220         * gcrypt.h: Declare: gcry_cipher_register, gcry_cipher_unregister,
1221         gcry_md_register, gcry_md_unregister, gcry_pk_register,
1222         gcry_pk_unregister.
1223         (gcry_cipher_spec): Removed member: algorithm.
1224         (gcry_pk_spec): Likewise.
1225         (gcry_md_spec): Likewise.
1226         Adjusted declarations: gcry_cipher_register, gcry_pk_register,
1227         gcry_md_register.
1228
1229         * module.c: Replaced all occurences of `id' with `mod_id', since
1230         `id' is a keyword in obj-c.
1231
1232         * gcrypt.h (gcry_cipher_spec): Renamed member `id' to `algorithm'.
1233         (gcry_pk_spec): Likewise.
1234         (gcry_md_spec): Likewise.
1235
1236         * cipher.h: Removed types: gcry_pubkey_generate_t,
1237         gcry_pubkey_check_secret_key_t, gcry_pubkey_encrypt_t,
1238         gcry_pubkey_decrypt_t, gcry_pubkey_sign_t, gcry_pubkey_verify_t,
1239         gcry_pubkey_get_nbits_t, gcry_pk_spec_t, gcry_digest_init_t,
1240         gcry_digest_write_t, gcry_digest_final_t, gcry_digest_read_t,
1241         gcry_digest_spec_t, gcry_cipher_setkey_t, gcry_cipher_encrypt_t,
1242         gcry_cipher_decrypt_t, gcry_cipher_stencrypt_t,
1243         gcry_cipher_stdecrypt_t, gcry_cipher_spec_t.
1244
1245         * gcrypt.h: New types: gcry_pk_generate_t,
1246         gcry_pk_check_secret_key_t, gcry_pk_encrypt_t, gcry_pk_decrypt_t,
1247         gcry_pk_sign_t, gcry_pk_verify_t, gcry_pk_get_nbits_t,
1248         gcry_pk_spec_t, gcry_md_init_t, gcry_md_write_t, gcry_md_final_t,
1249         gcry_md_read_t, gcry_md_spec_t, gcry_cipher_setkey_t,
1250         gcry_cipher_encrypt_t, gcry_cipher_decrypt_t,
1251         gcry_cipher_stencrypt_t, gcry_cipher_stdecrypt_t,
1252         gcry_cipher_spec_t, gcry_module_t.
1253
1254 2003-07-04  Moritz Schulte  <moritz@g10code.com>
1255
1256         * module.c (_gcry_module_list): New function.
1257
1258 2003-07-02  Moritz Schulte  <moritz@g10code.com>
1259
1260         * module.c (_gcry_module_lookup): Fixed typo.
1261
1262         * gcrypt.h: Added all definitions and declarations necessary for
1263         the new ac interface.
1264
1265 2003-06-30  Moritz Schulte  <moritz@g10code.com>
1266
1267         * g10lib.h: Added declarations: _gcry_pk_module_lookup,
1268         _gcry_pk_module_release.
1269
1270 2003-06-18  Werner Koch  <wk@gnupg.org>
1271
1272         * benchmark.c (cipher_bench): Adjusted for new API of get_blklen
1273         and get_keylen.
1274
1275         * gcrypt.h (gcry_cipher_get_algo_blklen)
1276         (gcry_cipher_get_algo_keylen): Replaced macro by funcion.
1277
1278 2003-06-18  Moritz Schulte  <moritz@g10code.com>
1279
1280         * cipher.h: Renamed types GcryDigestSpec, GcryCipherSpec and
1281         GcryPubkeySpec into: gcry_digest_spec_t, gcry_cipher_spec_t and
1282         gcry_pubkey_spec_t.
1283         (gcry_pubkey_spec): Defined member `id' as unsigned.
1284         (gcry_digest_spec): Likewise.
1285         (gcry_cipher_spec): Likewise.
1286
1287         * module.c (_gcry_module_id_new): New function.
1288         (_gcry_module_add): Generate a new ID via _gcry_module_id_new in
1289         case `id' is zero.
1290
1291         * g10lib.h, module.c: Replace old type GcryModule with newer one:
1292         gcry_module_t.
1293
1294         * module.c (_gcry_module_add): Added argument `id', use it.
1295
1296         * g10lib.h: Added declaration: _gcry_module_lookup_id.
1297         (_gcry_module_add): Added argument `id'.
1298
1299         * module.c (_gcry_module_lookup_id): New function.
1300
1301         * g10lib.h (struct gcry_module): New member: id.
1302
1303         * gcrypt.h: New type: gcry_handler_progress_t,
1304         gcry_handler_alloc_t, gcry_haandler_secure_check_t,
1305         gcry_handler_realloc_t, gcry_handler_free_t,
1306         gcry_handler_no_mem_t, gcry_handler_error_t, gcry_handler_log_t.
1307         Use new types.
1308
1309         * cipher.h: Include <gcrypt.h>.
1310         New types: gcry_pk_generate_t, gcry_pk_check_secret_key_t,
1311         gcry_pk_encrypt_t, gcry_pk_decrypt_t, gcry_pk_sign_t,
1312         gcry_pk_verify_t, gcry_pk_get_nbits_t, gcry_md_init_t,
1313         gcry_md_write_t, gcry_md_final_t, gcry_md_read_t,
1314         gcry_cipher_setkey_t, gcry_cipher_encrypt_t,
1315         gcry_cipher_decrypt_t, gcry_cipher_stencrypt_t,
1316         gcry_cipher_stdecrypt_t.
1317         Use new types.
1318
1319 2003-06-17  Moritz Schulte  <moritz@g10code.com>
1320
1321         * Makefile.am (AM_CFLAGS): Added: @GPG_ERROR_CFLAGS@.
1322
1323 2003-06-16  Moritz Schulte  <moritz@g10code.com>
1324
1325         * g10lib.h: Replace last occurences of old type names with newer
1326         names (i.e. replace MPI with gcry_mpi_t).
1327         * mpi.h: Likewise.
1328         * sexp.c: Likewise.
1329
1330 2003-06-15  Moritz Schulte  <moritz@g10code.com>
1331
1332         * testapi.c (test_genkey): Use gpg_strerror instead of
1333         gcry_strerror.
1334
1335         * global.c (gcry_control): Fixed typo.
1336
1337         * misc.c (_gcry_fatal_error): Use gpg_strerror instead of
1338         gcry_strerror.
1339
1340         * types.h (STRLIST): Removed type since it is not used.
1341
1342 2003-06-11  Moritz Schulte  <moritz@g10code.com>
1343
1344         * global.c (global_init): Call: _gcry_cipher_init, _gcry_md_init,
1345         _gcry_pk_init.
1346
1347         * g10lib.h: Declare: _gcry_cipher_init, _gcry_md_init,
1348         _gcry_pk_init.
1349         
1350         * global.c (gcry_strerror): Remove compatibility code.
1351
1352         * Makefile.am: Remove support libgpg-error special handling.
1353         (AM_CPPFLAGS): Add @GPG_ERROR_CFLAGS@
1354
1355         * gcrypt.h: Likewise.
1356
1357 2003-06-13  Werner Koch  <wk@gnupg.org>
1358
1359         * gcrypt.h (gcry_md_get_algo): Reverted to old API.  This is a
1360         convenience function anyway and error checking is not approriate.
1361         (gcry_md_is_enabled): New.
1362         (gcry_md_is_secure): Replaced macro by function and reverted to old
1363         API.
1364
1365 2003-06-11  Werner Koch  <wk@gnupg.org>
1366
1367         * gcrypt.h (GCRYERR): Define _GCRY_ERR_SOURCE_DEFAULT instead of
1368         GPG_ERR_SOURCE_DEFAULT, so that libgpg-error still works despite
1369         the use of the old gcrypt error codes.
1370         (gcry_md_copy): Swapped arguments.
1371         
1372 2003-06-09  Moritz Schulte  <moritz@g10code.com>
1373
1374         * Makefile.am: Support for libgpg-error.
1375
1376 2003-06-08  Moritz Schulte  <moritz@g10code.com>
1377
1378         * sexp.c (gcry_sexp_create): Expect sane error values from
1379         gcry_sexp_canon_len instead of the `historical' values.
1380
1381 2003-06-07  Moritz Schulte  <moritz@g10code.com>
1382
1383         * ath.c, ath.c, ath-pth.c, ath-pthread.c, benchmark.c, cipher.h,
1384         g10lib.h, gcrypt.h, global.c, misc.c, missing-string.c, module.c,
1385         mpi.h, secmem.c, secmem.h, sexp.c, stdmem.c, stdmem.h, testapi.c,
1386         types.h: Edited all preprocessor instructions to remove whitespace
1387         before the '#'.  This is not required by C89, but there are some
1388         compilers out there that don't like it.  Replaced any occurence of
1389         the now deprecated type names with the new ones.
1390         
1391         * gcrypt.h: Re-organized checking for gcc features; New macro:
1392         _GCRY_GCC_ATTR_DEPRECATED.
1393         Include copy of libgpg-error's gpg-error.h in order to make it
1394         easy to build libgcrypt without needing libgpg-error.h.
1395
1396         (GCRY_MPI, GcryMPI, GCRY_SEXP, GcrySexp, GCRY_CIPHER_HD,
1397         GcryCipherHd, GCRY_MD_HD, GcryMDHd): Declared deprecated.
1398         (gcry_mpi_t, gcry_sexp_t, gcry_cipher_hd_t, gcry_md_hd_t): New
1399         types.
1400
1401 2003-06-04  Moritz Schulte  <moritz@g10code.com>
1402
1403         * sexp.c (sexp_sscan): New argument: arg_list, adjusted all
1404         callers.
1405         (ARG_NEXT): New macro.
1406         (sexp_sscan): Use ARG_NEXT for receiving format string arguments.
1407         (gcry_sexp_build_array): New function.
1408
1409 2003-06-02  Moritz Schulte  <moritz@g10code.com>
1410
1411         * gcrypt.h: Added some comments describing the gcry_sexp_*
1412         functions.
1413         Include <gpg-error.h> instead of <gpg/error.h>.
1414
1415 2003-06-01  Moritz Schulte  <moritz@g10code.com>
1416
1417         * sexp.c (OLDPARSECODE): Removed macro...
1418         (gcry_sexp_canon_len): ... and do not use it.
1419
1420         * gcrypt.h (gcry_errno): Removed declaration.
1421
1422         * g10lib.h (string_to_pubkey_algo, pubkey_algo_to_string,
1423         pubkey_nbits): Removed declarations for non-existing functions.
1424
1425 2003-05-31  Moritz Schulte  <moritz@g10code.com>
1426
1427         * cipher.h (is_RSA, is_ELGAMAL): Removed macros.
1428
1429         * g10lib.h (set_lasterr): Removed macro.
1430         (_gcry_set_lasterr): Removed declaration.
1431
1432         * gcrypt.h: Changed declarations for: gcry_pk_algo_info,
1433         gcry_md_open, gcry_md_copy, gcry_md_algo_info, gcry_md_info,
1434         gcry_md_get_algo, gcry_random_add_bytes.
1435         
1436         (gcry_md_is_secure): Adjust macro for new API.
1437
1438 2003-05-29  Moritz Schulte  <moritz@g10code.com>
1439
1440         * gcrypt.h: Changed declarations for: gcry_cipher_open,
1441         gcry_cipher_info, gcry_cipher_algo_info.
1442         (gcry_cipher_get_algo_keylen): Adjuster for new
1443         gcry_cipher_algo_info interface.
1444         (gcry_cipher_get_algo_blklen): Likewise.
1445
1446         * global.c (gcry_errno): Removed function.
1447         (gcry_strerror): Do not use gcry_errno.
1448         (_gcry_set_lasterr): Removed function.
1449         (last_ec): Removed variable.
1450
1451 2003-05-27  Moritz Schulte  <moritz@g10code.com>
1452
1453         * gcrypt.h (enum gcry_cipher_algos): Make Serpent IDs do not
1454         conflict with OpenPGP.  Reported by Timo Schulz.
1455
1456         * global.c (gcry_control): Fixed name of enum list.
1457
1458 2003-05-25  Moritz Schulte  <moritz@g10code.com>
1459
1460         * cipher.h (gcry_cipher_spec): Adjust return type of `setkey' for
1461         libgpg-error.
1462         (gcry_pubkey_spec): Adjust return type of `generate',
1463         `check_secret_key', `encrypt', `decrypt', `sign' and `verify' for
1464         libgpg-error.
1465
1466         * sexp.c (gcry_sexp_canon_len): Adjusted for libgpg-error.
1467         (gcry_sexp_create): Likewise.
1468         (gcry_sexp_new): Likewise.
1469         (sexp_sscan): Likewise.
1470         (gcry_sexp_build): Likewise.
1471         (gcry_sexp_sscan): Likewise.
1472
1473         * module.c (_gcry_module_add): Likewise.
1474
1475         * global.c (last_ec): Change type to gpg_error_t.
1476         (gcry_control): Adjust for libgpg-error.
1477         (gcry_errno): Likewise.
1478         (gcry_strerror): Likewise.
1479         (_gcry_set_lasterr): Likewise.
1480         (gcry_xmalloc): Likewise.
1481         (gcry_xrealloc): Likewise.
1482
1483 2003-05-22  Moritz Schulte  <moritz@g10code.com>
1484
1485         * types.h: Merged code from GnuPG regarding U64_C.
1486
1487         * missing-string.c (strsep): Removed function.
1488
1489         * g10lib.h: Removed declarations: strsep, strlwr.
1490
1491         * secmem.c (secmem_lock): New variable.
1492         (SECMEM_LOCK, SECMEM_UNLOCK): New macros.
1493         (_gcry_secmem_set_flags): Use SECMEM_LOCK and SECMEM_UNLOCK.
1494         (_gcry_secmem_get_flags): Likewise.
1495         (_gcry_secmem_init): Likewie.
1496         (_gcry_secmem_malloc): Likewise.
1497         (_gcry_secmem_free): Likewise.
1498         (_gcry_secmem_malloc): Renamed to ...
1499         (_gcry_secmem_malloc_internal): ... this.
1500         (_gcry_secmem_malloc): New function, use SECMEM_LOCK,
1501         SECMEM_UNLOCK, call _gcry_secmem_malloc_internal.
1502         (_gcry_secmem_free): Renamed to ...
1503         (_gcry_secmem_free_internal): ... this.
1504         (_gcry_secmem_free): New function, use SECMEM_LOCK, SECMEM_UNLOCK,
1505         call _gcry_secmem_free_internal.
1506         (_gcry_secmem_realloc): Use SECMEM_LOCK, SECMEM_UNLOCK, call
1507         _gcry_secmem_malloc_internal and _gcry_secmem_free_internal.
1508         (_gcry_private_is_secure): Use SECMEM_LOCK, SECMEM_UNLOCK.
1509         (_gcry_secmem_dump_stats): Likewise.
1510         (_gcry_secmem_malloc_internal): Removed unused variable:
1511         compressed.
1512         Include "ath.h".
1513
1514 2003-05-21  Moritz Schulte  <moritz@g10code.com>
1515
1516         * gcrypt.h (GCRY_CIPHER_SERPENT128, GCRY_CIPHER_SERPENT192,
1517         GCRY_CIPHER_SERPENT256): New symbols.
1518
1519 2003-05-19  Moritz Schulte  <moritz@g10code.com>
1520
1521         * gcrypt.h: Reversed changes from 2003-03-03 since they would have
1522         been an unnecessary ABI break.
1523
1524 2003-05-13  Moritz Schulte  <moritz@g10code.com>
1525
1526         * secmem.c (stats_update): New function.
1527         (BLOCK_HEAD_SIZE): New symbol.
1528         (MB_FLAG_ACTIVE): New symbol.
1529         (ADDR_TO_BLOCK, BLOCK_VALID): New macros.
1530         (mb_get_next): New function.
1531         (mb_get_prev): New function.
1532         (mb_merge): New function.
1533         (mb_get_new): New function.
1534         (unused_blocks): Removed variable.
1535         (init_pool): Initialize new memory pool.
1536         (_gcry_secmem_malloc): Use new heap management code.
1537         (_gcry_secmem_free): Likewise.
1538         (_gcry_secmem_realloc): Likewise.
1539         Renamed type MEMBLOCK to memblock_t.
1540
1541 2003-04-27  Moritz Schulte  <moritz@g10code.com>
1542
1543         * cipher.h (gcry_pubkey_spec): New member: sexp_names.
1544
1545 2003-04-23  Moritz Schulte  <moritz@g10code.com>
1546
1547         * cipher.h (gcry_pubkey_spec): Removed members: npkey, nskey,
1548         nenc, nsig.
1549         (gcry_pubkey_spec): Added members: elements_pkey, elements_skey,
1550         elements_enc, elements_sig, elements_grip.
1551
1552 2003-04-17  Moritz Schulte  <moritz@g10code.com>
1553
1554         * g10lib.h (GcryModule): New typedef.
1555
1556         * gcrypt.h (gcry_cipher_register, gcry_cipher_unregister,
1557         gcry_digest_register, gcry_digest_unregister,
1558         gcry_pubkey_register, gcry_pubkey_unregister): Function
1559         declarations removed - for now.
1560         
1561         * gcrypt.h (GcryModule): Declaration removed.
1562         * gcrypt.h (GcryPubkeySpec, GcryDigestSpec, GcryCipherSpec):
1563         Types Moved... 
1564         * cipher.h: ... here.
1565
1566 2003-04-17  Moritz Schulte  <moritz@g10code.com>
1567
1568         * cipher.h: Declare digest_spec_sha512 and digest_spec_384.
1569
1570 2003-04-16  Moritz Schulte  <moritz@g10code.com>
1571
1572         * module.c (_gcry_module_use): New function.
1573         * g10lib.h (_gcry_module_use): Declare function.
1574
1575         * libgcrypt-config.in: Support for --algorithms switch, which
1576         prints the algorithms included in the built libgcrypt.
1577
1578         * global.c (gcry_set_progress_handler): Register progress
1579         functions depending on the enabled algorithms.
1580
1581 2003-04-07  Moritz Schulte  <moritz@g10code.com>
1582
1583         * Makefile.am (libgcrypt_la_SOURCES): Added module.c
1584
1585         * module.c: New file.
1586         (_gcry_module_add): New function.
1587         (_gcry_module_drop): New function.
1588         (_gcry_module_lookup): New function.
1589         (_gcry_module_release): New function.
1590
1591         * g10lib.h (GcryModule): New types.
1592         (FLAG_MODULE_DISABLED): New symbol.
1593         Added declarations for _gcry_module_add, _gcry_module_release and
1594         _gcry_module_lookup.
1595
1596         * gcrypt.h: New types: GcryPubkeySpec, GcryDigestSpec,
1597         GcryCipherSpec.
1598         Added declarations for: gcry_cipher_register,
1599         gcry_cipher_unregister, gcry_digest_register,
1600         gcry_digest_unregister, gcry_pubkey_register and
1601         gcry_pubkey_unregister.
1602
1603         * cipher.h: Removed symbols: CIPHER_ALGO_NONE, CIPHER_ALGO_IDEA,
1604         CIPHER_ALGO_3DES, CIPHER_ALGO_CAST5, CIPHER_ALGO_BLOWFISH,
1605         CIPHER_ALGO_SAFER_SK128, CIPHER_ALGO_DES_SK, CIPHER_ALGO_TWOFISH,
1606         CIPHER_ALGO_TWOFISH_OLD, CIPHER_ALGO_DUMMY, PUBKEY_USAGE_SIG,
1607         PUBKEY_USAGE_ENC, DIGEST_ALGO_MD5, DIGEST_ALGO_SHA1,
1608         DIGEST_ALGO_RMD160, DIGEST_ALGO_TIGER, PUBKEY_ALGO_RSA,
1609         PUBKEY_ALGO_RSA_E, PUBKEY_ALGO_RSA_S, PUBKEY_ALGO_DSA,
1610         PUBKEY_ALGO_ELGAMAL, PUBKEY_ALGO_ELGAMAL_E.
1611
1612 2003-04-02  Moritz Schulte  <moritz@g10code.com>
1613
1614         * benchmark.c (md_bench): Fix error message.
1615
1616 2003-03-31  Moritz Schulte  <moritz@g10code.com>
1617
1618         * benchmark.c (cipher_bench): Added CTR mode.
1619
1620 2003-03-30  Simon Josefsson  <jas@extundo.com>
1621
1622         * gcrypt.h (enum gcry_control_cmds): Add GCRY_SET_CTR.
1623         (enum gcry_cipher_modes): Add GCRY_CIPHER_MODE_CTR.
1624         (gcry_cipher_setctr): New macro to set counter.
1625
1626 2003-03-19  Moritz Schulte  <moritz@g10code.com>
1627
1628         * cipher.h (PUBKEY_FLAG_NO_BLINDING): New symbol.
1629
1630 2003-03-22  Simon Josefsson  <jas@extundo.com>
1631
1632         * gcrypt.h: Add GCRYCTL_SET_CBC_MAC and GCRY_CIPHER_CBC_MAC.
1633
1634 2003-03-19  Werner Koch  <wk@gnupg.org>
1635
1636         * g10lib.h: Adjusted primegen.c prototypes.
1637
1638 2003-03-12  Werner Koch  <wk@gnupg.org>
1639
1640         * sexp.c (sexp_sscan): Initialize NM.  Thanks to Ian Peters for
1641         valgrinding this.
1642
1643 2003-03-06  Moritz Schulte  <mo@g10code.com>
1644
1645         * secmem.h (GCRY_SECMEM_FLAG_NO_WARNING,
1646         GCRY_SECMEM_FLAG_SUSPEND_WARNING): New symbols.
1647
1648         * global.c (gcry_control): Use
1649         GCRY_SECMEM_FLAG_{NO,SUSPEND}_WARNING, instead of hard-coded
1650         values.
1651         * secmem.c (_gcry_secmem_set_flags): Likewise.
1652         * secmem.c (_gcry_secmem_get_flags): Likewise.
1653         
1654 2003-03-03  Moritz Schulte  <moritz@g10code.com>
1655
1656         * misc.c: Removed old FIXME, since there is already a function to
1657         set the value of `verbosity_level'.
1658
1659         * gcrypt.h: Removed enumeration list: gcry_ctl_cmds.
1660         New enumeration lists: gcry_global_control_cmds,
1661         gcry_control_cmds, gcry_info_cmds, gcry_algo_info_cmds.
1662
1663 2003-03-02  Moritz Schulte  <moritz@g10code.com>
1664
1665         * gcrypt.h (gcry_cipher_reset): New macro for resetting a handle.
1666
1667 2003-02-28  Moritz Schulte  <moritz@g10code.com>
1668
1669         * secmem.c (DEFAULT_PAGESIZE): New symbol.
1670         (init_pool): Use DEFAULT_PAGESIZE.
1671
1672 2003-02-23  Moritz Schulte  <moritz@g10code.com>
1673
1674         * secmem.h: Fix typo in declaration of _gcry_secmem_term.
1675
1676         * sexp.c: Move macro definitions of `digitp', `octdigit', `alphap'
1677         and `hexdigit' ...
1678         * g10lib.h: ... here.
1679
1680         * misc.c (_gcry_burn_stack): New function (former name:
1681         burn_stack).
1682
1683         * g10lib.h (burn_stack): Declare _gcry_burn_stack().
1684
1685 2003-01-24  Werner Koch  <wk@gnupg.org>
1686
1687         * global.c (gcry_set_progress_handler): Register a random progress
1688         handler.
1689
1690 2003-01-23  Werner Koch  <wk@gnupg.org>
1691
1692         * gcrypt.h (GCRY_ENABLE_QUICK_RANDOM): New. 
1693         * global.c (gcry_control): Make use of it.
1694
1695 2003-01-21  Werner Koch  <wk@gnupg.org>
1696
1697         * gcrypt.h (gcry_random_add_bytes): Add QUALITY argument.
1698
1699 2003-01-21  Timo Schulz  <twoaday@freakmail.de>
1700
1701         * gcrypt.h (gcry_random_add_bytes): New.
1702         
1703 2003-01-20  Simon Josefsson  <jas@extundo.com>
1704
1705         * gcrypt.h (gcry_md_algos): Add GCRY_MD_CRC32,
1706         GCRY_MD_CRC32_RFC1510, GCRY_MD_CRC24_RFC2440.
1707
1708 2003-01-16  Werner Koch  <wk@gnupg.org>
1709
1710         * gcrypt.h (gcry_md_write): Changed type of 2nd argument to void*.
1711         (gcry_md_hash_buffer): Changed type of both buffers to void*.
1712         (gcry_md_setkey): Changed type of 2nd argument to void*.
1713         (gcry_md_get_asnoid): New.
1714
1715 2003-01-15  Werner Koch  <wk@gnupg.org>
1716
1717         * sexp.c (gcry_sexp_length): Fixed.  This was seriously broken.
1718
1719 2003-01-14  Werner Koch  <wk@gnupg.org>
1720
1721         * gcrypt.h (GCRYERR_INV_FLAG), global.c (gcry_strerror): New.
1722
1723 2003-01-02  Werner Koch  <wk@gnupg.org>
1724
1725         * libgcrypt.vers: Temporary export _gcry_generate_elg_prime for
1726         use by GNUTLS. 
1727
1728 2002-12-21  Werner Koch  <wk@gnupg.org>
1729
1730         * gcrypt.h: Make use of gcc's pure and malloc attributes 
1731         (gcry_md_putc): Use a helper variable to avoid multiple
1732         evaluation of H. 
1733         * g10lib.h, stdmem.h, secmem.h: Use gcc attributes pure and malloc.
1734
1735         * stdmem.c (use_m_guard): Don't default to yes.
1736
1737 2002-12-19  Werner Koch  <wk@gnupg.org>
1738
1739         * global.c (global_init): The meat was never run due to a faulty
1740         check. Thanks to Nikos for pointing this out.
1741         
1742         * global.c (gcry_control): Return 1 and not -1 for the
1743         initialization tests.
1744
1745         * libgcrypt.vers: New.
1746         * Makefile.am: Use this instead of the build symbol file.
1747
1748         * global.c (gcry_control) <initialization>: Call the random module
1749         initializer to make sure that the pool lock flag has been
1750         initialized.
1751
1752 2002-12-09  Werner Koch  <wk@gnupg.org>
1753
1754         * global.c (gcry_calloc,gcry_calloc_secure): Check for overflow.
1755         Noted by Florian Weimer. 
1756
1757 2002-11-10  Simon Josefsson  <jas@extundo.com>
1758
1759         * gcrypt.h (gcry_ctl_cmds): New GCRYCTL_SET_CBC_CTS control flag.
1760         (gcry_cipher_flags): New GCRY_CIPHER_CBC_CTS gcry_cipher_open() flag.
1761         (gcry_cipher_cts): New macro for toggling CTS.
1762
1763 2002-11-10  Werner Koch  <wk@gnupg.org>
1764
1765         * gcrypt.h (GCRY_MD_MD4): New.  We use a non OpenPGP value here. 
1766
1767 2002-09-20  Werner Koch  <wk@gnupg.org>
1768
1769         * ath.c: Include sys.time.h if sys/select.h does not exist.
1770         (ath_select, ath_waitpid): Shortcut for Windows.
1771         * ath.h: Include some Windows headers.  By Timo.
1772
1773 2002-09-18  Werner Koch  <wk@gnupg.org>
1774
1775         * ath.h: Prefix ath_deinit.
1776
1777 2002-09-17  Werner Koch  <wk@gnupg.org>
1778
1779         * benchmark.c: New.
1780         (mpi_bench, do_powm): Add a a simple test for RSA.
1781
1782         * global.c (global_init): New.  Use it instead of the setting
1783         any_init_done.  Initialize the ATH system.
1784         (gcry_check_version): Hook global_init in.  This is the suggested
1785         way to initialize the library.
1786         (_gcry_no_internal_locking): Removed.  We simply call a ath_deinit
1787         and leave it to ATH to disbale the locking.
1788
1789         * ath.c, ath.h, ath-pth.c, ath-pthread.c: New. Taken from GPGME.
1790         * mutex.h: Removed.
1791         * Makefile.am (ath_components): New.
1792
1793 2002-09-16  Werner Koch  <wk@gnupg.org>
1794
1795         * secmem.c (_gcry_secmem_dump_stats): Replaced fprintf by log_*.
1796
1797 2002-08-23  Werner Koch  <wk@gnupg.org>
1798
1799         * missing-string.c: Removed unneeded strlwr.
1800
1801         * libgcrypt.m4: Made much more simple.
1802         * libgcrypt-config.in: Made --prefix work for --libs.
1803
1804 2002-08-14  Werner Koch  <wk@gnupg.org>
1805
1806         * gcrypt.h: Add GCRY_CIPGER_DES.  Included string.h for size_t.
1807         Suggested by Simon Josefsson.
1808
1809 2002-07-25  Werner Koch  <wk@gnupg.org>
1810
1811         * cipher.h: Added prototypes for progress functions.
1812         * global.c: Include cipher.h for those prototypes.
1813
1814         * stdmem.c (_gcry_private_realloc): Replaced void* by char * for
1815         pointer arithmetic reasons.  Noted by Stephan Austermuehle.
1816
1817 2002-06-24  Werner Koch  <wk@gnupg.org>
1818
1819         * missing-string.c: Include ctype.h.
1820
1821         * gcrypt.h (gcry_mpi_invm, gcry_mpi_div, gcry_mpi_mod)
1822         (gcry_mpi_swap): New.
1823
1824 2002-06-18  Werner Koch  <wk@gnupg.org>
1825
1826         * gcrypt.h: Added a bunch of brief function descriptions.
1827
1828 2002-05-21  Werner Koch  <wk@gnupg.org>
1829
1830         * misc.c (_gcry_log_printf): Don't initialize a va_list.  Noted by
1831         Jeff Johnson.
1832
1833         * global.c (gcry_set_progress_handler): New.
1834
1835         * gcrypt.h: Replaced the typedef for byte.
1836
1837 2002-05-16  Werner Koch  <wk@gnupg.org>
1838
1839         * missing-string.c: New.
1840
1841         * gcrypt.h: Add new error codes GCRYERR_SEXP_ and typedefs
1842         GcryMPI, GcrySexp, GcryCipherHd, GcryMDHd as aliases for the old
1843         ones using an underscore.
1844
1845         * global.c (gcry_strerror): Add strings fro the new error codes.
1846         * sexp.c (gcry_sexp_canon_len): Use a macro to convert from new to
1847         old error codes.
1848         (gcry_sexp_create,gcry_sexp_new): New.
1849
1850 2002-05-15  Werner Koch  <wk@gnupg.org>
1851
1852         * mutex.h (DEFINE_LOCAL_MUTEX): Macro to define a mutex and
1853         initialize it so that we can detect an unitialized mutex and don't
1854         read from stdin.
1855
1856 2002-05-14  Werner Koch  <wk@gnupg.org>
1857
1858         Changed license of all files to the LGPL.
1859
1860 2002-05-07  Werner Koch  <wk@gnupg.org>
1861
1862         * global.c (gcry_control): Add commands
1863         GCRYCTL_ANY_INITIALIZATION_P and GCRYCTL_INITIALIZATION_FINISHED_P
1864         so that other libraries are able to check for required
1865         initializations.
1866
1867 2002-05-02  Werner Koch  <wk@gnupg.org>
1868
1869         * gcrypt.h (GCRYCTL_DISABLE_INTERNAL_LOCKING): New.
1870         * global.c (gcry_control): Implement it.
1871         (_gcry_no_internal_locking): New.
1872         * mutex.h: Prefixed all fucntions with _gcry_.  Bypass all
1873         functions when desired.
1874
1875         * gcrypt.h (GCRYCTL_DISABLE_SECMEM): New.
1876         * global.c (gcry_control,gcry_malloc_secure,gcry_is_secure):
1877         Implement it here.
1878         * secmem.c (_gcry_private_is_secure): Return false if the pool is
1879         not initialized.
1880
1881         * gcrypt.h (GCRYCTL_INITIALIZATION_FINISHED): New.
1882
1883         * gcrypt.h (gcry_cipher_algos): Replaced RINDAEL by AES and change
1884         the macros to expand from rijdael to aes.
1885
1886         * stdmem.c (_gcry_private_malloc): Return NULL for 0 byte allocation.
1887         (_gcry_private_malloc_secure): Ditto.
1888
1889         * g10lib.h:  Copied the JNLIB_GCC macros from ../jnlib/mischelp.h
1890         and removed the inclusion of that file.
1891
1892 2002-04-15  Werner Koch  <wk@gnupg.org>
1893
1894         * global.c (gcry_strdup): New.
1895
1896 2002-03-18  Werner Koch  <wk@gnupg.org>
1897
1898         * mutex.h: New file with a portable thread mutex implementation
1899         written by Marcus Brinkmann.  Taken from GPGME.
1900
1901 2002-02-18  Werner Koch  <wk@gnupg.org>
1902
1903         * sexp.c (gcry_sexp_sscan): Don't initialize the dummy
1904         variable.  Suggested by Jordi Mallach.
1905
1906 2002-01-31  Werner Koch  <wk@gnupg.org>
1907
1908         * sexp.c (suitable_encoding,convert_to_hex,convert_to_string)
1909         (convert_to_token): New.
1910         (gcry_sexp_sprint): Better formatting of advanced encoding, does
1911         now insert LFs and escapes all unprintable characters.
1912         (unquote_string): New.
1913         (sexp_sscan): Implemented the missing conversion of quoted strings.
1914
1915 2002-01-26  Werner Koch  <wk@gnupg.org>
1916
1917         * libgcrypt-config.in: Add copyright notice.
1918
1919 2002-01-11  Werner Koch  <wk@gnupg.org>
1920
1921         * sexp.c (gcry_sexp_canon_len): Fixed last change.
1922
1923 2002-01-01  Timo Schulz <ts@winpt.org>
1924
1925         * stdmem.c (_gcry_private_realloc): If pointer is NULL now realloc
1926         behaves like malloc.
1927
1928 2001-12-20  Werner Koch  <wk@gnupg.org>
1929
1930         * sexp.c (gcry_sexp_canon_len): Describe the error codes and
1931         return an error if this is not a S-Exp; i.e. it does not start
1932         with an open parenthesis.
1933
1934 2001-12-18  Werner Koch  <wk@gnupg.org>
1935
1936         * sexp.c (gcry_sexp_canon_len): Fixed the test on NULL buffer.
1937
1938         * Makefile.am (DISTCLEANFILES): Include libgcrypt.sym
1939
1940         * sexp.c: Removed the commented test code because we now have a
1941         test in ../tests/
1942
1943 2001-12-17  Werner Koch  <wk@gnupg.org>
1944
1945         * sexp.c (gcry_sexp_canon_len): New.
1946
1947 2001-12-11  Werner Koch  <wk@gnupg.org>
1948
1949         * gcrypt.h: Fixed AES128 macro, add enum for OFB mode.
1950
1951 2001-12-05  Werner Koch  <wk@gnupg.org>
1952
1953         * misc.c (_gcry_log_printf): New.
1954         * sexp.c (dump_string,gcry_sexp_dump): Use logging functions
1955         instead of stderr.
1956
1957 2001-11-16  Werner Koch  <wk@gnupg.org>
1958
1959         * gcrypt.h: New constant GCRYCTL_IS_ALGO_ENABLED.
1960
1961 2001-10-02  Werner Koch  <wk@gnupg.org>
1962
1963         * gcrypt.h: Removed a couple of trailing commas.
1964
1965 2001-08-28  Werner Koch  <wk@gnupg.org>
1966
1967         * sexp.c (sexp_sscan): Add an argument to enable the
1968         arg_ptr. Changed all callers.  Suggested by Tom Holroyd.
1969
1970 2001-08-03  Werner Koch  <wk@gnupg.org>
1971
1972         * global.c (gcry_strerror): Updated list of error codes.
1973
1974 2001-07-23  Werner Koch  <wk@gnupg.org>
1975
1976         * gcrypt.h: Replaced the last ulong.  Noted by Rami Lehti.
1977
1978 2001-05-31  Werner Koch  <wk@gnupg.org>
1979
1980         * gcrypt.h, mpi.h: Made some mpi functions public.
1981
1982         * wrapper.c: Removed.
1983         * global.c: Renamed all g10_ prefixed functions which had wrappers 
1984         to gcry_xxx. So we now use the exported memory functions inernally.
1985
1986         Renamed all g10_ prefixed functions to _gcry_ prefixed ones.
1987         
1988         * g10lib.h (_GCRYPT_IN_LIBGCRYPT): Replace defintion by a test on it.
1989
1990 2001-05-28  Werner Koch  <wk@gnupg.org>
1991
1992         * libgcrypt.m4: Check GCRYPT_VERSION macro and not LIBGCRYPT_VERSION.
1993
1994         * mpi.h: Removed mpi_fromstr prototype.
1995
1996 2001-01-11  Werner Koch  <wk@gnupg.org>
1997
1998         * Makefile.am (libgcrypt_la_SOURCES): Add mpi.h
1999
2000 2000-12-19  Werner Koch  <wk@gnupg.org>
2001
2002         * types.h: Moved from ../include to here.
2003
2004         Major change:
2005         Removed all GnuPG stuff and renamed this piece of software
2006         to gcrypt. 
2007
2008 2000-11-14  Werner Koch  <wk@gnupg.org>
2009
2010         * mpi.h: Moved to ../mpi.
2011
2012         * Makefile.am (OMIT_DEPENDENCIES): Hack to work around dependency
2013         problems.
2014
2015 2000-10-11  Werner Koch  <wk@gnupg.org>
2016
2017         * mpi.h: Changed the way mpi_limb_t is defined.
2018
2019 2000-10-10  Werner Koch  <wk@gnupg.org>
2020
2021         * Makefile.am: Take version-info from configure.
2022
2023 2000-10-09  Werner Koch  <wk@gnupg.org>
2024
2025         * gcrypt.h: New cipher mode, new algo Arcfour and new error code
2026         GCRYERR_INV_CIPHER_MODE.
2027         * global.c (gcry_strerror): New errorcode.
2028
2029 Wed Oct  4 13:16:18 CEST 2000  Werner Koch  <wk@openit.de>
2030
2031         * gcrypt.h (gcry_md_setkey): Replaced macro by function prototype.
2032
2033 Mon Sep 18 16:35:45 CEST 2000  Werner Koch  <wk@openit.de>
2034
2035         * gcrypt.h (GCRYCTL_GET_ALGO_USAGE): New.
2036
2037         * secmem.c (secmem_realloc): check for failed secmem_malloc.  By
2038         Matt Kraai.
2039
2040 Mon Jul 31 10:04:47 CEST 2000  Werner Koch  <wk@openit.de>
2041
2042   * sexp.c: Removed the datalen fields from list tags.
2043   (gcry_sexp_car_data,gcry_sexp_cdr_data,gcry_sexp_car_mpi,
2044    gcry_sexp_cdr_mpi): Removed.
2045   (gcry_sexp_nth,gcry_sexp_nth_data,gcry_sexp_nth_mpi): New.
2046
2047 Fri Jul 28 18:19:11 CEST 2000  Werner Koch  <wk@openit.de>
2048
2049   * sexp.c (sexp_sscan): Fixed reallocation to secure memory.
2050   (new_empty_list): Removed
2051   (gcry_sexp_length): New.
2052   (gcry_sexp_enum): Removed.
2053   (normalize): New. Reworked the whole thing to use NULL for an empty list.
2054   (make_space): New instead of the macro.
2055
2056 Tue Jul 25 17:44:15 CEST 2000  Werner Koch  <wk@openit.de>
2057
2058   * sexp.c: Major rewrite.
2059   (gcry_sexp_sscan): Reordered arguments.  Moved functionality to ..
2060   (sexp_sscan): .. this.
2061   (gcry_sexp_build): New.
2062   (gcry_sexp_new_name_mpi, gcry_sexp_new_name_data, gcry_sexp_new_data,
2063    gcry_sexp_new_mpi): Removed.
2064
2065 Fri Jul 14 19:38:23 CEST 2000  Werner Koch  <wk@>
2066
2067   * gcrypt.h (gcry_md_start_debug, gcry_md_stop_debug): New.
2068   (gcry_ctl_cmds): New control values
2069
2070   * sexp.c (gcry_sexp_sscan): Add hex format parsing.
2071
2072   * secmem.c (lock_pool): Check for ENOSYS return my mlock() on old SCOs.
2073   (pool_is_mmapped): Made volatile.
2074   (lock_pool): No more warning for QNX. By Sam Roberts.
2075   (lock_pool,secmem_init): Additional check for dropped privs.
2076
2077 2000-03-21 09:18:48  Werner Koch  (wk@habibti.gnupg.de)
2078
2079         * gcrypt.h (gcry_md_setkey): New.
2080         (GCRY_MD_FLAG_HMAC): New.
2081
2082 Mon Jan 31 16:37:34 CET 2000  Werner Koch  <wk@gnupg.de>
2083
2084         * Makefile.am: Add g10lib.h
2085
2086 Thu Jan 27 18:00:44 CET 2000  Werner Koch  <wk@gnupg.de>
2087
2088         * sexp.c (gcry_sexp_sscan): Allow NULL for erroff.
2089
2090 Mon Jan 24 22:24:38 CET 2000  Werner Koch  <wk@gnupg.de>
2091
2092         * sexp.c (gcry_sexp_alist): New.
2093
2094 Mon Jan 24 13:04:28 CET 2000  Werner Koch  <wk@gnupg.de>
2095
2096         * secmem.c: Moved from ../util to here.
2097         * secmem.h: New.
2098         * stdmem.c: New. Based on the old ../util/memory.c.
2099         * stdmem.h: New.
2100
2101 Wed Dec  8 21:58:32 CET 1999  Werner Koch  <wk@gnupg.de>
2102
2103         * gcrypt.m4: New.
2104         * gcrypt-config: New.
2105
2106         * mpi.h (mpi_get_nbit_info): Removed
2107         (mpi_set_nbit_info): Removed.
2108         (struct gcry_mpi): Removed the nbits field.
2109
2110         * misc.c (g10_log_verbosity): New.
2111
2112         * global.c (g10_xstrdup): New.
2113
2114         * mpiapi.c: Removed.
2115
2116         * mpi.h: Moved from ../include to here.  Removed some obsolete
2117         prototypes and the iobuf.h header.
2118         * cipher.h: Moved from ../include to here. Removed the mpi.h header.
2119         * g10lib.h: Moved from ../include to here.
2120
2121 Fri Nov 19 17:15:20 CET 1999  Werner Koch  <wk@gnupg.de>
2122
2123         * sexp.c (dump_string): New.  Taken from gnupg/util/miscutil.c.
2124         (do_dump_list): s/print_string/dump_string/.
2125
2126         * testapi.c: New.
2127
2128         * mpiapi.c (gcry_mpi_randomize): Use new random API.
2129
2130 Sat Nov 13 17:44:23 CET 1999  Werner Koch  <wk@gnupg.de>
2131
2132         * gloabl.c (gcry_control): Add cases for dumping random
2133         and secmem stats.
2134
2135 Tue Oct 26 14:10:21 CEST 1999  Werner Koch  <wk@gnupg.de>
2136
2137         * pkapi.c: Removed.
2138
2139         * symapi.c: Removed.
2140
2141         * g10lib.h:  Moved to ../include.
2142
2143         * mdapi.c: Removed.
2144
2145 Wed Jul  7 13:08:40 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
2146
2147         * sexp.c: New.
2148
2149 Tue Dec  8 13:15:16 CET 1998  Werner Koch  <wk@isil.d.shuttle.de>
2150
2151         * gcrypt.h: New
2152         * mpiapi.c: New
2153
2154         
2155  Copyright (C) 1998,1999,2000,2001,2002,2003
2156                2004, 2005, 2008, 2009 Free Software Foundation, Inc.
2157
2158  This file is free software; as a special exception the author gives
2159  unlimited permission to copy and/or distribute it, with or without
2160  modifications, as long as this notice is preserved.
2161
2162  This file is distributed in the hope that it will be useful, but
2163  WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
2164  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.