Implement mct server mode for fips driver and use it in the CAVS tests to
[libgcrypt.git] / tests / ChangeLog
1 2008-11-07  Werner Koch  <wk@g10code.com>
2
3         * fipsdrv.c (run_cipher_mct_loop, get_current_iv): New.
4         (read_textline, read_hexline, skip_to_empty_line): New.
5         (main): New option --mct-server.
6         * cavs_driver.pl: Update from upstream and adjust to new fipsdrv.
7
8 2008-11-05  Werner Koch  <wk@g10code.com>
9
10         * fipsdrv.c (run_encrypt_decrypt): Disable weak key detection.
11
12 2008-10-31  Werner Koch  <wk@g10code.com>
13
14         * fipsdrv.c (run_rsa_sign): Buffer needs to be larger for SHA512.
15
16 2008-10-27  Werner Koch  <wk@g10code.com>
17
18         * fipsdrv.c (run_encrypt_decrypt): Make IV_BUFFER optional.
19         (main): Ditto.
20         * cavs_driver.pl: Remove the --no-fips flags.
21         (libgcrypt_encdec($$$$$)): Make IV optional.
22         (libgcrypt_state_cipher($$$$$)): Ditto.
23
24 2008-10-24  Werner Koch  <wk@g10code.com>
25
26         * benchmark.c (md_bench): Do not test MD5 in fips mode.
27         * basic.c (check_digests, check_hmac): Ditto.
28
29 2008-10-06  Werner Koch  <wk@g10code.com>
30
31         * cavs_driver.pl: New version from upstream.
32         (libgcrypt_rsa_verify($$$$)): Pass pkcs1.
33         (libgcrypt_rsa_sign($$$)): Pass pkcs1 and hash algo.
34
35         * fipsdrv.c (run_rsa_sign): Hash data in pkcs1 mode.
36         (run_rsa_verify): Ditto.
37         (read_key_file): Rename to read_private_key_file.  Factor public
38         key code out to..
39         (read_public_key_file): .. new.
40
41 2008-10-02  Werner Koch  <wk@g10code.com>
42
43         * fipsdrv.c (print_buffer): Add base64 printing code.
44         (base64_decode, read_key_file, parse_tag, read_sig_file): New.
45         (run_rsa_gen, run_rsa_sign): New.
46         (main): Add modes rsa-gen, rsa-sign and rsa-verify.
47
48         
49 2008-09-29  Werner Koch  <wk@g10code.com>
50
51         * fipsdrv.c: Merge code from fipsrngdrv.c
52         * fipsrngdrv.c: Remove.
53
54 2008-09-26  Werner Koch  <wk@g10code.com>
55
56         * Makefile.am: Distribute cavs_driver.pl.
57         * cavs_tests.sh: New. 
58         * fipsdrv.c: New.
59
60 2008-09-18  Werner Koch  <wk@g10code.com>
61
62         * benchmark.c (main): Do not disable secure memory in FIPS mode.
63
64 2008-09-18  Werner Koch  <wk@g10code.com>
65
66         * basic.c (main): Do not disable secure memory in FIPS mode.
67
68 2008-09-16  Werner Koch  <wk@g10code.com>
69
70         * fipsrngdrv.c (main): Bail out on write error.  Implement verbose
71         option.
72         (main): Use flag to disable dup block checks.
73
74 2008-09-15  Werner Koch  <wk@g10code.com>
75
76         * fipsrngdrv.c: New.
77
78 2008-09-09  Werner Koch  <wk@g10code.com>
79
80         * basic.c (main): New option --selftest.
81
82 2008-08-29  Werner Koch  <wk@g10code.com>
83
84         * keygrip.c: Update to also check ECDSA.
85
86 2008-08-28  Werner Koch  <wk@g10code.com>
87
88         * rsa-16k.key: New sample key.
89
90 2008-08-27  Werner Koch  <wk@g10code.com>
91
92         * pkbench.c (read_file): New.
93         (process_key_pair_file): Replace mmap by read_file.
94         (main): Add a --fips option.
95         * Makefile.am (EXTRA_DIST): Remove.
96         (EXTRA_PROGRAMS): Add pkbench.
97
98         * basic.c (main): Extended FIPS self-test test.
99
100 2008-08-26  Werner Koch  <wk@g10code.com>
101
102         * basic.c (get_keys_new): Use transient-key flag. 
103         * benchmark.c (main): First check options then do the libgcrypt
104         initialization.
105         (rsa_bench): Use transient-key flag if not in fips mode.
106
107 2008-08-20  Werner Koch  <wk@g10code.com>
108
109         * t-mpi-bit.c (test_lshift): New.
110         (mpi2bitstr_nlz, lshiftbitstring): New.
111         (main): Run test.
112
113 2008-08-18  Werner Koch  <wk@g10code.com>
114
115         * basic.c (main): Add option --fips.
116
117 2008-08-15  Werner Koch  <wk@g10code.com>
118
119         * register.c (main): Check for fips mode.
120         (check_run): Take care of fips mode.
121
122         * basic.c (check_cbc_mac_cipher, check_ciphers, check_digests)
123         (check_hmac, check_pubkey): Do not test unavalaible algorithms in
124         fips mode.
125         (main): Check for fips mode.
126
127 2008-04-22  Werner Koch  <wk@g10code.com>
128
129         * basic.c (check_one_cipher): Also check in-place encryption.
130
131 2008-03-17  Werner Koch  <wk@g10code.com>
132
133         * benchmark.c (main): Add option --cipher-repetition.
134         (cipher_bench): Use it.
135
136 2008-03-12  Werner Koch  <wk@g10code.com>
137
138         * benchmark.c (rsa_bench): Add arg NO_BLINDING.
139         (main): Add option --no-blinding.
140
141 2007-12-05  Werner Koch  <wk@g10code.com>
142
143         * pubkey.c (sample_private_key_1_1,sample_private_key_1_2): New.
144         (get_keys_sample): Add arg SECRET_VARIANT.
145         (check_run): Check all variants.  Also check gcry_pk_testkey.
146         (check_keys_crypt): Add DECRYPT_FAIL_CODE.
147         (check_keys): Ditto.
148
149 2007-11-30  Werner Koch  <wk@g10code.com>
150
151         * benchmark.c (main): Add optione --verbose and reworked the
152         option parsing.
153         (random_bench): Dump random stats.
154
155 2007-10-31  Werner Koch  <wk@g10code.com>
156
157         * benchmark.c (start_timer, stop_timer, elapsed_time) [W32]: Fixed.
158
159 2007-06-20  Werner Koch  <wk@g10code.com>
160
161         * benchmark.c (rsa_bench): New.
162         (main): New command "rsa".
163
164 2007-05-03  Werner Koch  <wk@g10code.com>
165
166         * Makefile.am (EXTRA_DIST): Do not build pkbench.c
167
168 2007-05-02  David Shaw  <dshaw@jabberwocky.com>
169
170         * basic.c (check_ciphers): Add Camellia.
171
172 2007-04-30  David Shaw  <dshaw@jabberwocky.com>
173
174         * basic.c (check_ciphers): #if out ciphers we don't have.  Add
175         test for GCRY_CIPHER_RFC2268_40.
176
177 2007-04-30  Werner Koch  <wk@g10code.com>
178
179         * version.c: New.
180         * Makefile.am (TESTS): Add version.
181
182 2007-04-30  Marcus Brinkmann  <marcus@g10code.de>
183
184         * benchmark.c (ecc_bench): Release KEY_SPEC.
185
186 2007-04-28  Marcus Brinkmann  <marcus@g10code.de>
187
188         * ac-data.c (check_run): Don't give redundant GCRY_AC_FLAG_DEALLOC
189         in addition to GCRY_AC_FLAG_COPY.  Don't release LABEL1 or MPI0,
190         as those are donated to libgcrypt, but do release MPI0 and MPI2.
191
192 2007-04-12  Marcus Brinkmann  <marcus@g10code.de>
193
194         * ac-schemes.c (scheme_spec): Revert last change.
195         
196         * ac-schemes.c (scheme_spec): Remove const qualifier from member M.
197         (es_check): Remove const qualifier from C and M2.
198
199 2007-03-28  Werner Koch  <wk@g10code.com>
200
201         * pkbench.c (generate_key): Support named curves.
202
203         * benchmark.c (dsa_bench): New args ITERATIONS and PRINT_HEADER.
204         (main): Call dsa and ecc benchs.
205         (show_sexp): New.
206
207         * Makefile.am (TESTS): Move pkbench to EXTRA_PROGRAMS.
208
209 2007-03-22  Werner Koch  <wk@g10code.com>
210
211         * benchmark.c (die): New.
212         (ecc_bench): New.
213
214         * pkbench.c (main): Reworked to provide proper option handling.
215
216 2007-03-13  Werner Koch  <wk@g10code.com>
217
218         * mpitests.c: Reformatted to GNU standards.
219         (main): Add options --verbose and --debug for future use.
220
221 2007-03-13  Werner Dittmann <Werner.Dittmann@t-online.de>  (wk)
222
223         * mpitests.c: New.
224
225 2007-02-23  Werner Koch  <wk@g10code.com>
226
227         * Makefile.am (TEST): Run benchmark as last. 
228
229         * ac-data.c (check_sexp_conversion): Print label only in verbose
230         mode.
231
232         * pubkey.c (main): Run test just 2 times instead of 10.
233         (get_elg_key_new): New.
234         (check_run): Also run tests with Elgamal keys.
235         (check_keys): New arg NBITS_DATA.
236         (get_elg_key_new): Use only 400 for the 512 bit Elgamal test.
237
238         * random.c: New.
239
240 2007-02-22  Werner Koch  <wk@g10code.com>
241
242         * basic.c (check_pubkey_sign): Also try signing using an OID.
243
244         * Makefile.am (TESTS) [W32]: Removed pkbench for now.
245         * pkbench.c (benchmark): Fixed for W32.
246
247 2007-02-21  Werner Koch  <wk@g10code.com>
248
249         * hmac.c (check_one_mac): Make pointer args const.
250         * basic.c (check_one_md): Ditto.
251         (check_one_hmac): Ditto.
252
253         * keygen.c (progress_cb): Filter out line feeds.
254         * basic.c (progress_handler): Ditto.
255
256 2006-12-18  Werner Koch  <wk@g10code.com>
257
258         * Makefile.am (AM_CFLAGS, AM_CPPFLAGS): Splitted and merged with
259         Moritz' changes.
260         (INCLUDES): Removed.
261
262         * keygen.c (progress_handler): New.
263         (main): Use it in verbose mode.
264
265 2006-11-05  Moritz Schulte  <moritz@g10code.com>
266
267         * Makefile.am (AM_CFLAGS): Added -I$(top_builddir)/src so that the
268         new gcrypt.h is used, not the one installed in the system.
269
270 2006-10-17  Werner Koch  <wk@g10code.com>
271
272         * keygen.c (check_rsa_keys): Also create an 1536 bit DSA key.
273
274 2006-08-03  Werner Koch  <wk@g10code.com>
275
276         * t-mpi-bit.c: New.
277
278 2006-07-06  Werner Koch  <wk@g10code.com>
279
280         * benchmark.c (main): New option --use-random-daemon.  New command
281         strongrandom.
282         (random_bench): New arg VERY_STRONG.
283
284 2006-03-14  Werner Koch  <wk@g10code.com>
285
286         * benchmark.c (main): Allow for seed file argument to random bench.
287
288         * basic.c (main): Use progress handler only in verbose mode.
289         (main): Speed up test key generation.
290         * ac-data.c (check_sexp_conversion, check_run): Take care of VERBOSE.
291         * ac.c (main): Ditto.
292         * pubkey.c (main): Ditto.
293         * pkbench.c (main): Ditto.
294         * keygen.c (main): Ditto.
295         (check_rsa_keys): Print key only in verbose mode.
296
297 2006-03-10  Brad Hards  <bradh@frogmouth.net>  (wk, patch 2006-02-18)
298
299         * basic.c (check_one_hmac, check_hmac): New.
300
301 2006-03-07  Werner Koch  <wk@g10code.com>
302
303         * benchmark.c (cipher_bench): Add OFB mode.
304
305 2006-01-18  Brad Hards  <bradh@frogmouth.net> (wk 2006-03-07)
306
307         * basic.c: Added test cases for OFB and CFB modes. Fixed some
308         compiler warnings for signedness. 
309
310 2005-11-12  Moritz Schulte  <moritz@g10code.com>
311
312         * ac-data.c: Added way more test cases.
313
314 2005-09-15  Moritz Schulte  <moritz@g10code.com>
315
316         * Makefile.am (TESTS): Added keygrip.
317         * keygrip.c: New.
318
319 2005-09-19  Werner Koch  <wk@g10code.com>
320
321         * benchmark.c (dsa_bench): New.
322
323 2005-08-19  Werner Koch  <wk@g10code.com>
324
325         * hmac.c (main): Added all FIPS tests.
326
327 2005-08-18  Werner Koch  <wk@g10code.com>
328
329         * hmac.c: New.
330
331 2005-04-22  Moritz Schulte  <moritz@g10code.com>
332
333         * tsexp.c: Include <config.h> in case HAVE_CONFIG_H is defined;
334         thanks to Albert Chin.
335         * testapi.c: Likewise.
336         * register.c: Likewise.
337         * pubkey.c: Likewise.
338         * prime.c: Likewise.
339         * pkbench.c: Likewise.
340         * keygen.c: Likewise.
341         * benchmark.c: Likewise.
342         * basic.c: Likewise.
343         * ac-schemes.c: Likewise.
344         * ac-data.c: Likewise.
345         * ac.c: Likewise.
346
347 2005-04-16  Moritz Schulte  <moritz@g10code.com>
348
349         * ac-data.c (check_run): Include new test.
350
351 2005-04-11  Moritz Schulte  <moritz@g10code.com>
352
353         * basic.c (check_digests): Add tests for Whirlpool.
354
355 2005-03-30  Moritz Schulte  <moritz@g10code.com>
356
357         * ac-schemes.c: New file.
358         * ac-data.c: New file.
359         * Makefile.am (TESTS): Added ac-schemes and ac-data.
360
361 2004-09-15  Moritz Schulte  <moritz@g10code.com>
362
363         * pkbench.c: Include <time.h>.
364
365 2004-08-24  Moritz Schulte  <moritz@g10code.com>
366
367         * pkbench.c (context_init): Improve generation of test data.
368
369 2004-08-23  Moritz Schulte  <moritz@g10code.com>
370
371         * Makefile.am (TESTS): Added: pkbench.
372         * pkbench.c: New file.
373
374 2004-02-25  Werner Koch  <wk@gnupg.org>
375
376         * Makefile.am (TEST): Add benchmark.
377
378         * benchmark.c (md_bench, cipher_bench): Allow NULL arg to to run
379         tests for all algorithms.
380         (main): Run all tests by default.
381
382 2004-02-03  Werner Koch  <wk@gnupg.org>
383
384         * tsexp.c (basic): New pass to check secure memory switching.
385
386 2004-01-12  Moritz Schulte  <mo@g10code.com>
387
388         * ac.c (check_one): Adjust to new ac API.
389
390 2003-11-22  Werner Koch  <wk@gnupg.org>
391
392         * pubkey.c (check_keys_crypt): Fixed my last patch.
393
394 2003-11-11  Werner Koch  <wk@gnupg.org>
395
396         * tsexp.c (basic): Add pass structure and a test for the %b
397         format. 
398
399 2003-11-04  Werner Koch  <wk@gnupg.org>
400
401         * Makefile.am (noinst_PROGRAMS): Use this so that test programs
402         get always build.
403
404         * keygen.c (check_nonce): New.
405         (main): Add a basic check for the nocen function.
406
407 2003-10-31  Werner Koch  <wk@gnupg.org>
408
409         * basic.c (check_aes128_cbc_cts_cipher): Make it a prototype
410
411         * ac.c (check_run): Comment unused variable.
412
413 2003-10-10  Werner Koch  <wk@gnupg.org>
414
415         * prime.c (check_primes): Generate a generator and avoid printing
416         unless in verbose mode.
417
418 2003-10-07  Werner Koch  <wk@gnupg.org>
419
420         * tsexp.c (check_sscan): New.
421
422 2003-09-04  Werner Koch  <wk@gnupg.org>
423
424         * pubkey.c (check_keys_crypt): Fix for compatibility mode.
425
426 2003-09-02  Moritz Schulte  <mo@g10code.com>
427
428         * Makefile.am (TESTS): Added: prime.
429
430         * prime.c: New file.
431
432 2003-08-27  Moritz Schulte  <mo@g10code.com>
433
434         * basic.c (check_ciphers): Added: Serpent.
435         Write braces around flags.
436
437 2003-08-04  Moritz Schulte  <moritz@g10code.com>
438
439         * benchmark.c (do_powm): Adjust for new gcry_mpi_scan interface.
440
441 2003-07-23  Moritz Schulte  <moritz@g10code.com>
442
443         * ac.c (key_copy): New function...
444         (check_one): ... use it.
445
446 2003-07-22  Moritz Schulte  <moritz@g10code.com>
447
448         * basic.c (check_ciphers): Use gcry_cipher_map_name.
449
450 2003-07-18  Moritz Schulte  <moritz@g10code.com>
451
452         * ac.c (check_run): Renamed to ...
453         (check_one): ... this, changed calling interface.
454         (check_run): New function.
455
456         * register.c: Adjust gcry_cipher_spec_t structure.
457
458 2003-07-14  Moritz Schulte  <moritz@g10code.com>
459
460         * register.c: Adjust cipher specification structure.
461
462         * benchmark.c: New file.
463         * testapi.c: New file.
464
465         * Makefile.am (EXTRA_PROGRAMS): Set to: benchmark testapi.
466         (check_PROGRAMS): Set to: $(TESTS).
467
468 2003-07-12  Moritz Schulte  <moritz@g10code.com>
469
470         * ac.c, basic.c, keygen.c, register.c, sexp.c, tsexp.c: Used
471         gcry_err* wrappers for libgpg symbols.
472
473         * basic.c (check_ciphers): Added: GCRY_CIPHER_TWOFISH128.
474
475 2003-07-08  Moritz Schulte  <moritz@g10code.com>
476
477         * Makefile.am (LIBS): Remove: -lpthread.
478
479         * basic.c (check_one_cipher): Fix variable initialization.  Thanks
480         to Simon Joseffson <jas@extundo.com>.
481
482 2003-07-07  Moritz Schulte  <moritz@g10code.com>
483
484         * Makefile.am (TESTS): Added: register.
485
486 2003-07-05  Moritz Schulte  <moritz@g10code.com>
487
488         * register.c (check_run): Adjusted for new gcry_cipher_register API.
489
490 2003-07-02  Moritz Schulte  <moritz@g10code.com>
491
492         * Makefile.am (TESTS): Added: ac.
493         * ac.c: New file.
494
495 2003-06-18  Werner Koch  <wk@gnupg.org>
496
497         * basic.c (check_cbc_mac_cipher): Adjusted for new API of get_blklen
498         and get_keylen.
499         (check_ctr_cipher): Ditto.
500         (check_one_cipher): Ditto.
501         (check_one_md): Adjusted for new API of gcry_md_copy.
502
503 2003-06-18  Moritz Schulte  <moritz@g10code.com>
504
505         * register.c: Replace old type GcryModule with newer one:
506         gcry_module_t.
507         Adjusted for new API.
508
509         * Makefile.am (AM_CFLAGS): Added: @GPG_ERROR_CFLAGS@.
510
511 2003-06-15  Moritz Schulte  <moritz@g10code.com>
512
513         * basic.c (get_keys_new): New function.
514         (do_check_one_pubkey): New function ...
515         (check_one_pubkey): ... use it.
516         (progress_handler): New function.
517         (main): Use gcry_set_progress_handler.
518
519 2003-06-14  Moritz Schulte  <moritz@g10code.com>
520
521         * basic.c: Replaced calls to gcry_strerror with calls to
522         gpg_strerror.
523         (check_one_md): Adjust for new gcry_md_copy API.
524
525         * tsexp.c: Likewise.
526         * keygen.c: Likewise.
527
528 2003-06-12  Moritz Schulte  <moritz@g10code.com>
529
530         * basic.c: Changed here and there, reorganized pubkey checks,
531         added DSA and ELG keys.
532
533 2003-06-09  Moritz Schulte  <moritz@g10code.com>
534
535         * basic.c, keygen.c, pubkey.c, register.c, tsexp.c: Changed to use
536         new API.
537         
538 2003-06-01  Moritz Schulte  <moritz@g10code.com>
539
540         * tsexp.c (canon_len): Adjust for new gcry_sexp_canon_len API.
541
542 2003-05-26  Moritz Schulte  <moritz@g10code.com>
543
544         * basic.c (verify_one_signature): Adjust for libgpg-error.
545         (check_pubkey_sign): Likewise.
546         (check_pubkey): Likewise.
547         * basic.c (check_pubkey_sign): Likewise.
548         * tsexp.c (canon_len): Likewise.
549         (back_and_forth_one): Likewise.
550
551 2003-04-27  Moritz Schulte  <moritz@g10code.com>
552
553         * pubkey.c: Changed the sample private key to contain the
554         identifier `openpgp-rsa' instead of `rsa'.
555
556         * basic.c (check_digests): Enabled/fixed some tests for TIGER.
557
558 2003-04-17  Moritz Schulte  <moritz@g10code.com>
559
560         * Makefile.am (TESTS): Removed `register' for now.
561
562 2003-04-17  Moritz Schulte  <moritz@g10code.com>
563
564         * basic.c (check_digests): Include checks for SHA512 and SHA384.
565
566 2003-04-16  Moritz Schulte  <moritz@g10code.com>
567
568         * basic.c (check_one_md): Also test md_copy.
569
570 2003-04-07  Moritz Schulte  <moritz@g10code.com>
571
572         * Makefile.am (TESTS): Added register.
573
574         * register.c: New file.
575
576 2003-03-30  Simon Josefsson  <jas@extundo.com>
577
578         * basic.c (check_one_cipher): New.  Test CTR.
579         (main): Call it.
580         (check_ciphers): Check CTR mode.
581
582 2003-03-26  Moritz Schulte  <moritz@g10code.com>
583
584         * Makefile.am (TESTS): Added pubkey.
585
586         * pubkey.c: New file.
587
588 2003-03-22  Simon Josefsson  <jas@extundo.com>
589
590         * basic.c (check_cbc_mac_cipher): New.
591         (main): Use it.
592
593 2003-03-19  Werner Koch  <wk@gnupg.org>
594
595         * keygen.c (check_rsa_keys): Don't expect an exponent when asking
596         for e=0.
597         (check_generated_rsa_key): Just print exponent if EXPECTED_E is 0.
598
599 2003-03-02  Moritz Schulte  <moritz@g10code.com>
600
601         * basic.c (check_one_cipher): Use gcry_cipher_reset() instead of
602         gcry_cipher_close(), gcry_cipher_open and gcry_cipher_setkey().
603
604 2003-01-23  Werner Koch  <wk@gnupg.org>
605
606         * keygen.c: New. 
607
608 2003-01-20  Simon Josefsson  <jas@extundo.com>
609
610         * basic.c (check_digests): Add CRC.
611         (check_one_md): Print computed and expected values on error.
612
613 2003-01-20  Werner Koch  <wk@gnupg.org>
614
615         * basic.c (check_one_md): Kludge to check a one million "a".
616         (check_digests): Add checks for SHA-256.
617
618 2003-01-20  Werner Koch  <wk@gnupg.org>
619
620         * basic.c (check_pubkey): Check the keygrip for the sample key.
621
622 2003-01-15  Werner Koch  <wk@gnupg.org>
623
624         * basic.c (verify_one_signature,check_pubkey_sign)
625         (check_pubkey): New.
626         (main): Check public key functions. Add a --debug option.
627
628 2002-11-23  Werner Koch  <wk@gnupg.org>
629
630         * basic.c (check_digests): Add another test for MD4.  By Simon
631         Josefsson.
632
633 2002-11-10  Simon Josefsson  <jas@extundo.com>
634
635         * basic.c (check_aes128_cbc_cts_cipher): New function.
636         (check_one_cipher): Add flags parameter.
637         (check_ciphers): Support flags parameter.
638         (main): Check CTS.
639
640 2002-11-10  Werner Koch  <wk@gnupg.org>
641
642         * basic.c (check_one_md): New.  By Simon Josefsson.
643         (check_digests): New tests for MD4.  By Simon.
644
645 2002-08-26  Werner Koch  <wk@gnupg.org>
646
647         * basic.c (check_ciphers): Check simple DES.
648
649 2002-05-16  Werner Koch  <wk@gnupg.org>
650
651         * tsexp.c (back_and_forth): Very minimal test of the new functions.
652
653 2002-05-14  Werner Koch  <wk@gnupg.org>
654
655         Changed license of all files to the LGPL.
656
657 2002-05-02  Werner Koch  <wk@gnupg.org>
658
659         * basic.c: Add option --verbose.
660
661 2002-01-11  Werner Koch  <wk@gnupg.org>
662
663         * tsexp.c (canon_len): Fixed tests.
664
665 2001-12-18  Werner Koch  <wk@gnupg.org>
666
667         * tsexp.c: New.
668
669         
670  Copyright 2001, 2002, 2003, 2008 Free Software Foundation, Inc.
671
672  This file is free software; as a special exception the author gives
673  unlimited permission to copy and/or distribute it, with or without
674  modifications, as long as this notice is preserved.
675
676  This file is distributed in the hope that it will be useful, but
677  WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
678  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.