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