* g10.c (main): Enhance the version-specific config file code to try for
[gnupg.git] / cipher / ChangeLog
1 2003-10-10  Werner Koch  <wk@gnupg.org>
2
3         * primegen.c (gen_prime): Bail out if we try to generate a prime
4         with less than 16 bits. Include i18n.h.
5
6 2003-10-06  Werner Koch  <wk@gnupg.org>
7
8         * primegen.c (gen_prime): Bail out if NBITS is zero.  This is
9         Debian bug #213989 reported by Max <rusmir@tula.net>.
10
11 2003-09-04  David Shaw  <dshaw@jabberwocky.com>
12
13         * md.c (string_to_digest_algo): Enable read-write SHA-256 support.
14
15         * algorithms.h, Makefile.am, md.c (load_digest_module,
16         string_to_digest_algo), tiger.c: Drop TIGER/192 support.
17
18 2003-08-28  David Shaw  <dshaw@jabberwocky.com>
19
20         * idea-stub.c, random.c; s/__MINGW32__/_WIN32/ to help building on
21         native Windows compilers.  Requested by Brian Gladman.  From
22         Werner on stable branch.
23
24 2003-08-21  David Shaw  <dshaw@jabberwocky.com>
25
26         * random.c (getfnc_gather_random): Don't check NAME_OF_DEV_RANDOM
27         twice.  Use NAME_OF_DEV_URANDOM.
28
29 2003-05-24  David Shaw  <dshaw@jabberwocky.com>
30
31         * bithelp.h, des.c, random.c, rndlinux.c, sha1.c, blowfish.c,
32         elgamal.c, rijndael.c, rndunix.c, sha256.c, cast5.c, idea-stub.c,
33         rmd160.c, rndw32.c, sha512.c, md5.c, rmd160test.c, rsa.c, tiger.c:
34         Edit all preprocessor instructions to remove whitespace before the
35         '#'.  This is not required by C89, but there are some compilers
36         out there that don't like it.
37
38 2003-05-15  David Shaw  <dshaw@jabberwocky.com>
39
40         * cipher.c (setup_cipher_table): #ifdef IDEA.
41
42         * random.c (fast_random_poll): Only use times() if we HAVE_TIMES.
43
44         * sha512.c, tiger.c: Use the U64_C() macro to specify 64-bit
45         constants.  U64_C is defined in include/types.h and uses the
46         correct suffix depending on the underlying type of u64.
47
48         * idea-stub.c (load_module): Catch an error if the idea module
49         file is unloadable for some reason (unreadable, bad permissions,
50         etc.)
51
52         * md.c (string_to_digest_algo): Give a warning about TIGER192 not
53         being part of OpenPGP.
54
55 2003-04-15  Werner Koch  <wk@gnupg.org>
56
57         * md.c (md_start_debug): Need to open the file in binary mode.
58
59 2003-02-21  David Shaw  <dshaw@jabberwocky.com>
60
61         * cipher.c (setup_cipher_table): #ifdef all optional ciphers.
62
63         * md.c (load_digest_module): #ifdef all optional digests.
64
65 2003-02-11  David Shaw  <dshaw@jabberwocky.com>
66
67         * Makefile.am, md.c (load_digest_module): Only build in SHA384/512
68         and TIGER if specifically enabled by the 64-bit type check in
69         configure.
70
71 2003-02-04  David Shaw  <dshaw@jabberwocky.com>
72
73         * sha256.c, sha512.c: New.
74
75         * Makefile.am, algorithms.h, md.c (load_digest_module,
76         string_to_digest_algo): Add read-only support for the new SHAs.
77
78 2002-11-06  David Shaw  <dshaw@jabberwocky.com>
79
80         * rndw32.c [__CYGWIN32__]: Don't include winioctl.h - it is not
81         required anymore. (From Werner)
82
83         * random.c (read_seed_file,update_random_seed_file): Use binary
84         mode for __CYGWIN__. (From Werner)
85
86         * blowfish.c (burn_stack), cast5.c (burn_stack), des.c
87         (burn_stack), md5.c (burn_stack), random.c (burn_stack, read_pool,
88         fast_random_poll), rijndael.c (burn_stack), rmd160.c (burn_stack),
89         rndegd.c (rndegd_gather_random), rndlinux.c
90         (rndlinux_gather_random), sha1.c (burn_stack), tiger.c
91         (burn_stack), twofish.c (burn_stack): Replace various calls to
92         memset() with the more secure wipememory().
93
94 2002-11-02  David Shaw  <dshaw@jabberwocky.com>
95
96         * cipher.c (string_to_cipher_algo), md.c (string_to_digest_algo):
97         Allow the Sxxx and Hxxx format for cipher and digest names.
98
99 2002-10-31  Stefan Bellon  <sbellon@sbellon.de>
100
101         * rndriscos.c (rndriscos_gather_random): Use riscos_load_module()
102         to load CryptRandom module.
103
104 2002-10-12  Werner Koch  <wk@gnupg.org>
105
106         * rndunix.c (my_popen): Make sure that stdin and stderr are
107         connected to a file.  This is to avoid NetBSD to complain about
108         set{u,g}id programs invoked with fd 0, 2 closed.  Reported by
109         Cristian Biere.
110         (start_gatherer): Likewise. Reordered code.
111
112 2002-10-02  David Shaw  <dshaw@jabberwocky.com>
113
114         * tiger.c (tiger_get_info): Select the OID to use for TIGER at
115         compile time.
116
117 2002-09-27  David Shaw  <dshaw@jabberwocky.com>
118
119         * Makefile.am, md.c (load_digest_module): TIGER is now always
120         enabled.
121
122 2002-09-26  Werner Koch  <wk@gnupg.org>
123
124         * tiger.c (tiger_get_info): Use a regular OID.  Note that this
125         breaks all TIGER generated signatures; if we want to do something
126         about it we have to do it in ../g10/sig-check.c .
127
128 2002-09-17  Werner Koch  <wk@gnupg.org>
129
130         * rndw32.c (SIZEOF_DISK_PERFORMANCE_STRUCT): Increased to 256.
131
132 2002-09-12  Stefan Bellon  <sbellon@sbellon.de>
133
134         * rand-internal.h (rndriscos_gather_random): Added prototype.
135
136 2002-08-30  Werner Koch  <wk@gnupg.org>
137
138         * random.c: Automagically detect the entropy gatherer when
139         this feature is configured.
140         * rndegd.c (rndegd_connect_socket): New.  Factored out from ..
141         (rndegd_gather_random): here and call it.
142         (do_read): Update the counter variables correctly.  This was not a
143         problem due to the way EGD works. Bug found by Christian Biere.
144
145 2002-08-20  Werner Koch  <wk@gnupg.org>
146
147         * primegen.c (generate_elg_prime): Return all factors for mode 1.
148         Bug reported by Bob Mathews.
149
150 2002-08-12  Werner Koch  <wk@gnupg.org>
151
152         * cipher.c: Include the DUMMY cipher only when the new ALLOW_DUMMY
153         is defined. It should only be defined for hard core debugging.
154
155 2002-08-08  David Shaw  <dshaw@jabberwocky.com>
156
157         * Makefile.am, md.c (load_digest_module): Allow switching TIGER on
158         and off via configure.
159
160 2002-08-07  David Shaw  <dshaw@jabberwocky.com>
161
162         * md.c (md_algo_present): New function to check if a given algo is
163         in use for a given MD_HANDLE.
164
165 2002-08-04  Werner Koch  <wk@gnupg.org>
166
167         * blowfish.h, cast5.h, des.h: Removed after moving all prototypes to
168         * algorithms.h: here. Changed all sources to use this one.
169         
170 2002-08-03  Stefan Bellon  <sbellon@sbellon.de>
171
172         * idea-stub.c (idea_get_info): RISC OS' Norcroft C needs a cast.
173         * random.c (getfnc_gather_random): Added RISC OS support.
174         * rndriscos.c: Removed dynload code and tidied up a bit.
175
176 2002-08-03  Werner Koch  <wk@gnupg.org>
177
178         * rndegd.c (do_read): Handle case when read returns 0 to avoid
179         gpg hanging when EGD died.  By Christian Biere.
180
181 2002-08-02  Werner Koch  <wk@gnupg.org>
182
183         The big extension removal.
184         
185         * Makefile.am: Removed all extension stuff.
186         * dynload.c: Removed everything except for
187         register_cipher_extension.
188         (dynload_enum_module_names): New.
189         * dynload.h: Removed.
190         * random.c (getfnc_gather_random,getfnc_fast_random_poll):
191         New. Replaced all dynload functions with these ones.
192         * rndunix.c (rndunix_gather_random): Renamed from
193         gather_random.  Made global.  Removed all dynload stuff.
194         * rndlinux.c (rndlinux_gather_random): Likewise.
195         * rndegd.c (rndegd_gather_random): Likewise.
196         * rndw32.c (rndw32_gather_random)
197         (rndw32_gather_random_fast): Likewise.  Also removed the unsued
198         entropy dll code.
199         * md.c (new_list_item): Changed return value to indicate whether
200         an algorithms was loaded.
201         (load_digest_module): Simplified by removing all the dynload code.
202         * algorithms.h: New.
203         * md5.c (md5_get_info): Made global.  Removed all dynload stuff.
204         * rmd160.c (rmd160_get_info): Likewise. 
205         * sha1.c (sha1_get_info): Likewise.
206         * tiger.c (tiger_get_info): Likewise. Return NULL if we can't use
207         this module.
208         * idea-stub.c: New.
209         * blowfish.h (idea_get_info): Add prototype.
210         * cipher.c (setup_cipher_table): Try to load IDEA.
211         (load_cipher_modules): Removed all dynload code.
212         * pubkey.c (load_pubkey_modules): Removed the dynloading code.
213
214 2002-07-25  David Shaw  <dshaw@jabberwocky.com>
215
216         * random.c: "warning" -> "WARNING"
217
218 2002-07-02  Werner Koch  <wk@gnupg.org>
219
220         * rndw32.c (slow_gatherer_windowsNT): Use a simple array for the
221         disk performance structure and increase it to the size required by
222         W2000.
223
224 2002-06-29  Werner Koch  <wk@gnupg.org>
225
226         * rndlinux.c: Removed HAVE_LINUX_RANDOM_H conditional because it
227         was never used and the configure test did set the wrong macro
228         anyway.
229
230 2002-05-07  Stefan Bellon  <sbellon@sbellon.de>
231
232         * md.c (md_start_debug): Use EXTSEP_S instead of ".".
233
234 2002-04-24  Werner Koch  <wk@gnupg.org>
235
236         * tiger.c (tiger_final): Removed superfluous token pasting operators.
237         * md5.c (md5_final): Ditto.
238
239 2002-04-22  Stefan Bellon  <sbellon@sbellon.de>
240
241         * rndriscos.c (func_table): Made func a function pointer.
242         (init_device): Improved loading of CryptRandom module.
243
244 2002-04-18  Werner Koch  <wk@gnupg.org>
245
246         * rndlinux.c, rndegd.c, rndunix.c (func_table): Made func a
247         function pointer.  Note that we still need to change the module
248         interface to cope with data vs function pointer problems.  Hmmm,
249         even dlsym has a problem with this.
250
251 2002-04-10  David Shaw  <dshaw@jabberwocky.com>
252
253         * cipher.c (setup_cipher_table, cipher_open, cipher_encrypt,
254         cipher_decrypt, dummy_setkey, dummy_encrypt_block,
255         dummy_decrypt_block): the dummy cipher should only be built on
256         development versions.
257
258 2002-04-06  Werner Koch  <wk@gnupg.org>
259
260         * rijndael.c (rijndael_get_info): We do only support a 128 bit
261         blocksize so it makes sense to change the algorithm strings to
262         AES.
263         * cipher.c (string_to_cipher_algo): Map "RIJNDAEL" to "AES".
264
265 2002-02-14  Werner Koch  <wk@gnupg.org>
266
267         * random.c (mix_pool): Removed the failsafe stuff again.  It makes
268         the code more complicate and may give the path to more bugs.
269
270 2002-02-10  Werner Koch  <wk@gnupg.org>
271
272         * random.c (mix_pool): Carry an extra failsafe_digest buffer
273         around to make the function more robust.
274
275 2002-02-08  Werner Koch  <wk@gnupg.org>
276
277         * random.c (add_randomness): Xor new data into the pool and not
278         just copy it.  This avoids any choosen input attacks which are not
279         serious in our setting because an outsider won't be able to mix
280         data in and even then we keep going with a PRNG.  Thanks to Stefan
281         Keller for pointing this out.
282
283 2002-01-02  Stefan Bellon  <sbellon@sbellon.de>
284
285         * rndriscos.c [__riscos__]: Updated include file name.
286
287 2001-12-21  Werner Koch  <wk@gnupg.org>
288
289         * Makefile.am (DISCLEANFILES): Add construct.c
290
291 2001-12-19  Werner Koch  <wk@gnupg.org>
292
293         * rndw32.c [CYGWIN32]: Include winioctl.h.  By Disastry.
294
295 2001-11-08  Werner Koch  <wk@gnupg.org>
296
297         * primegen.c (gen_prime): Set 2 high order bits for secret primes.
298         * rsa.c (generate): Loop until we find the exact modulus size.
299         Changed the exponent to 41.
300
301 2001-10-22  Werner Koch  <wk@gnupg.org>
302
303         * Makefile.am: Need to use $(EXEEXT) where approriate.
304
305 2001-09-09  Werner Koch  <wk@gnupg.org>
306
307         * rsa.c (rsa_get_info): s/usage/r_usage/ to avoid shadow warnings.
308
309 2001-08-24  Werner Koch  <wk@gnupg.org>
310
311         * md.c (md_write): Made buf arg const.
312
313 2001-08-22  Werner Koch  <wk@gnupg.org>
314
315         * random.c (fast_random_poll): Don't use gethrtime if it is broken.
316
317 2001-08-20  Werner Koch  <wk@gnupg.org>
318
319         Applied patches from Stefan Bellon <sbellon@sbellon.de> to support
320         RISC OS.  Nearly all of these patches are identified by the
321         __riscos__ macro.
322         * blowfish.c, twofish.c: Added pragmas for use with a Norcraft
323         compiler. 
324         * dynload.c, md5.c, rmd160.c, sha1.c: Minor patches for RISC OS.
325         * rndriscos.c: New.
326         * rnd-internal.h: Added prototype.
327         * random.c (fast_random_poll): Use '#if defined' instead of just
328         'defined'; needed for RISC OS.
329         * primegen.c (gen_prime): count? are now ints for consistence
330         with is_prime().
331
332 2001-08-08  Werner Koch  <wk@gnupg.org>
333
334         * rndw32.c (gather_random): Use toolhelp in addition to the NT
335         gatherer for Windows2000.  Suggested by Sami Tolvanen.
336
337         * random.c (read_pool): Fixed length check, this used to be one
338         byte to strict.  Made an assert out of it because the caller has
339         already made sure that only poolsize bytes are requested.
340         Reported by Marcus Brinkmann.
341
342 2001-07-18  Werner Koch  <wk@gnupg.org>
343
344         * rndlinux.c (gather_random): casted a size_t arg to int so that
345         the format string is correct.  Casting is okay here and avoids
346         translation changes. 
347
348 2001-06-12  Werner Koch  <wk@gnupg.org>
349
350         * cipher.c (string_to_cipher_algo): Use ascii_strcasecmp().
351         * md.c (string_to_digest_algo): Ditto.
352         * pubkey.c (string_to_pubkey_algo): Ditto.
353         * rndw32.c (slow_gatherer_windowsNT): Ditto.  Not really needed
354         here but anyway.
355
356 2001-04-29  Werner Koch  <wk@gnupg.org>
357
358         * random.c (fast_random_poll): Do not check the return code of
359         getrusage.
360
361 2001-04-17  Werner Koch  <wk@gnupg.org>
362
363         * rndunix.c: Add a signal.h header to avoid warnings on Solaris 7
364         and 8.
365
366 2001-04-16  Werner Koch  <wk@gnupg.org>
367
368         * dynload.c [__MINGW32__]: Applied patch from Timo Schulz to make
369         it work under W32.  This patches is based on the one from
370         Disastry@saiknes.lv
371
372 2001-04-06  Werner Koch  <wk@gnupg.org>
373
374         * rijndael.c, des.c, blowfish.c, twofish.c, cast5.c (burn_stack):
375         New.  Add wrappers for most functions to be able to call
376         burn_stack after the function invocation. This methods seems to be
377         the most portable way to zeroise the stack used. It does only work
378         on stack frame based machines but it is highly portable and has no
379         side effects.  Just setting the automatic variables at the end of
380         a function to zero does not work well because the compiler will
381         optimize them away - marking them as volatile would be bad for
382         performance.
383         * md5.c, sha1.c, rmd160.c, tiger.c (burn_stack): Likewise.
384         * random.c (burn_stack): New.
385         (mix_pool): Use it here to burn the stack of the mixblock function.
386         
387 2001-04-02  Werner Koch  <wk@gnupg.org>
388
389         * primegen.c (generate_elg_prime): I was not initialized for mode
390         != 1.  Freed q at 3 places.  Thanks to  Tommi Komulainen.
391
392 2001-03-28  Werner Koch  <wk@gnupg.org>
393
394         * md5.c (md5_final): Fixed calculation of hashed length.  Thanks
395         to disastry@saiknes.lv for pointing out that it was horrible wrong
396         for more than 512MB of input.
397         * sha1.c (sha1_final): Ditto.
398         * rmd160.c (rmd160_final): Ditto.
399         * tiger.c (tiger_final): Ditto.
400
401 2001-03-19  Werner Koch  <wk@gnupg.org>
402
403         * blowfish.c (encrypt,do_encrypt): Changed name to do_encrypt to
404         avoid name clahses with an encrypt function in stdlib.h of
405         Dynix/PIX.  Thanks to Gene Carter.
406         * elgamal.c (encrypt,do_encrypt): Ditto.
407
408 2001-03-12  Werner Koch  <wk@gnupg.org>
409
410         * twofish.c (gnupgext_enum_func): Add some static when comnpiled
411         as a module.
412
413         * tiger.c (tiger_get_info): Return "TIGER192" and not just
414         "TIGER".  By Edwin Woudt.
415
416 2001-03-08  Werner Koch  <wk@gnupg.org>
417
418         * random.c: Always include time.h - standard requirement.  Thanks
419         to James Troup.
420
421 2001-01-18  Werner Koch  <wk@gnupg.org>
422
423         * rndw32.c: Fixed typo and wrong ifdef for VER_PLATFORM* macro
424
425 2001-01-12  Werner Koch  <wk@gnupg.org>
426
427         * cipher.c (cipher_encrypt,cipher_encrypt): Use blocksize and
428         not 8 for CBC mode (However: we don't use CBS in OpenPGP).
429
430 2000-11-22  Werner Koch  <wk@gnupg.org>
431
432         * rndegd.c (gather_random): Fixed default socket to be '=entropy'.
433         Thanks to Tomasz Kozlowski.
434
435 2000-10-12  Werner Koch  <wk@gnupg.org>
436
437         * rijndael.c: New.
438         * cipher.c: Add Rijndael support.
439
440 Wed Oct  4 15:50:18 CEST 2000  Werner Koch  <wk@openit.de>
441
442         * sha1.c (transform): Use rol() macro.  Actually this is not needed
443         for a newer gcc but there are still aoter compilers.
444
445 Thu Sep 14 14:20:38 CEST 2000  Werner Koch  <wk@openit.de>
446
447         * random.c (fast_random_poll): Check ENOSYS for getrusage.
448         * rndunix.c:  Add 2 sources for QNX. By Sam Roberts.
449
450 Wed Sep 13 18:12:34 CEST 2000  Werner Koch  <wk@openit.de>
451
452         * rsa.c (secret): Speed up by using the CRT.  For a 2k keys this
453         is about 3 times faster.
454         (stronger_key_check): New but unused code to check the secret key.
455
456 Wed Sep  6 17:55:47 CEST 2000  Werner Koch  <wk@openit.de>
457
458         * rsa.c: Changed the comment about the patent.
459         * Makefile.am: Included rsa.[ch].
460         * pubkey.c: Enabled RSA support.
461         (pubkey_get_npkey): Removed RSA workaround.
462
463 Fri Aug 25 16:05:38 CEST 2000  Werner Koch  <wk@openit.de>
464
465         * rndlinux.c (open_device): Loose random device checking.
466         By Nils Ellmenreich.
467
468         * rndegd.c (gather_random): Name of socket is nom configurable.
469
470 Wed Jun 28 11:54:44 CEST 2000  Werner Koch  <wk@>
471
472   * rsa.c, rsa.h: New based on the old module version (only in CVS for now).
473   * pubkey.c (setup_pubkey_table): Added commented support for RSA.
474
475 Fri Jun  9 10:09:52 CEST 2000  Werner Koch  <wk@openit.de>
476
477   * rndunix.c (waitpid): New. For UTS 2.1.  All by Dave Dykstra.
478   (my_popen): Do the FD_CLOEXEC only if it is available
479   (start_gatherer): Cope with missing _SC_OPEN_MAX
480
481 Sun May 28 13:55:17 CEST 2000  Werner Koch  <wk@openit.de>
482
483   * random.c (read_seed_file): Binary open for DOSish system
484   (update_random_seed_file): Ditto.
485
486   * rndw32.c: Add some debuging code enabled by an environment variable.
487
488 Tue May 23 09:19:00 CEST 2000  Werner Koch  <wk@openit.de>
489
490         * rndw32.c: Started with alternative code to replace entropy.dll
491
492 Thu May 18 11:38:54 CEST 2000  Werner Koch  <wk@openit.de>
493
494         * primegen.c (register_primegen_progress): New.
495         * dsa.c (register_pk_dsa_progress): New.
496         * elgamal.c (register_pk_elg_progress): New.
497
498 Fri Apr 14 19:37:08 CEST 2000  Werner Koch  <wk@openit.de>
499
500         * twofish.c (twofish_get_info): Fixed warning about cast.
501
502 Tue Mar 28 14:26:58 CEST 2000  Werner Koch  <wk@openit.de>
503
504         * random.c [MINGW32]: Include process.h for getpid.
505
506 Thu Mar  2 15:37:46 CET 2000  Werner Koch  <wk@gnupg.de>
507
508         * random.c (fast_random_poll): Add clock_gettime() as fallback for
509         system which support this POSIX.4 fucntion. By Sam Roberts.
510
511         * rndunix.c: Add some more headers for QNX. By Sam Roberts.
512
513         * random.c (read_seed_file): Removed the S_ISLNK test becuase it
514         is already covered by !S_ISREG and is not defined in Unixware.
515         Reported by Dave Dykstra.
516
517         * sha1.c (sha1_get_info): Removed those stupid double lines. Dave
518         is really a good lint.
519
520 Wed Feb 23 10:07:57 CET 2000  Werner Koch  <wk@gnupg.de>
521
522         * twofish.c (twofish_get_info): Add some const to the casts.  By Martin
523         Kahlert.
524
525 Mon Feb 14 14:30:20 CET 2000  Werner Koch  <wk@gnupg.de>
526
527         (update_random_seed_file): Silently ignore update request when pool
528         is not filled.
529
530 Fri Feb 11 17:44:40 CET 2000  Werner Koch  <wk@gnupg.de>
531
532         * random.c (read_seed_file): New.
533         (set_random_seed_file): New.
534         (read_pool): Try to read the seeding file.
535         (update_random_seed_file): New.
536
537         (read_pool): Do an initial extra seeding when level 2 quality random
538         is requested the first time.  This requestes at least POOLSIZE/2 bytes
539         of entropy.  Compined with the seeding file this should make normal
540         random bytes cheaper and increase the quality of the random bytes
541         used for key generation.
542
543         * rndegd.c (gather_random): Shortcut level 0.
544         * rndunix.c (gather_random): Ditto.
545         * rndw32.c (gather_random): Ditto.
546
547 Fri Jan 14 18:32:01 CET 2000  Werner Koch  <wk@gnupg.de>
548
549         * rmd160.c (rmd160_get_info): Moved casting to the left side due to a
550         problem with UTS4.3.  Suggested by Dave Dykstra.
551         * sha1.c (sha1_get_info): Ditto.
552         * tiger.c (tiger_get_info): Ditto.
553         * md5.c (md5_get_info): Ditto
554         * des.c (des_get_info): Ditto.
555         * blowfish.c (blowfish_get_info): Ditto.
556         * cast5.c (cast5_get_info): Ditto.
557         * twofish.c (twofish_get_info): Ditto.
558
559 Thu Jan 13 19:31:58 CET 2000  Werner Koch  <wk@gnupg.de>
560
561         * elgamal.c (wiener_map): New.
562         (gen_k): Use a much smaller k.
563         (generate): Calculate the qbits using the wiener map and
564         choose an x at a size comparable to the one choosen in gen_k
565
566         * random.c (read_pool): Print a more friendly error message in
567         cases when too much random is requested in one call.
568
569         * Makefile.am (tiger): Replaced -O1 by -O. Suggested by Alec Habig.
570
571 Sat Dec  4 12:30:28 CET 1999  Werner Koch  <wk@gnupg.de>
572
573         * primegen.c (generate_elg_prime): All primes are now generated with
574         the lowest random quality level.  Becuase they are public anyway we
575         don't need stronger random and by this we do not drain the systems
576         entropy so much.
577
578 Thu Oct 28 16:08:20 CEST 1999  Werner Koch  <wk@gnupg.de>
579
580         * random.c (fast_random_poll): Check whether RUSAGE_SELF is defined;
581         this is not the case for some ESIX and Unixware, although they have
582         getrusage().
583
584         * elgamal.c (sign): Hugh found strange code here. Replaced by BUG().
585
586 Mon Oct 11 09:24:12 CEST 1999  Werner Koch  <wk@gnupg.de>
587
588         * rndw32.c (gather_random): Handle PCP_SEEDER_TOO_SMALL.
589
590 Sat Oct  9 20:34:41 CEST 1999  Werner Koch  <wk@gnupg.de>
591
592         * Makefile.am:  Tweaked module build and removed libtool
593
594 Fri Oct  8 20:32:01 CEST 1999  Werner Koch  <wk@gnupg.de>
595
596         * rndw32.c (load_and_init_winseed): Use the Registry to locate the DLL
597
598 Mon Oct  4 21:23:04 CEST 1999  Werner Koch  <wk@gnupg.de>
599
600         * md.c (md_reset): Clear finalized; thanks to Ulf Moeller for
601         fixing this bug.
602
603 Sat Sep 18 12:51:51 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
604
605         * Makefile.am: Never compile mingw32 as module
606
607 Wed Sep 15 14:39:59 CEST 1999  Michael Roth <mroth@nessie.de>
608
609         * des.c: Various speed improvements: One bit pre rotation
610           trick after initial permutation (Richard Outerbridge).
611           Finished test of SSLeay Tripple-DES patterns.
612
613 Wed Sep 15 16:22:17 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
614
615         * rndw32.c: New.
616
617 Mon Sep 13 10:51:29 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
618
619         * bithelp.h: New.
620         * rmd160.h, sha1.h, md5.h: Use the rol macro from bithelp.h
621
622 Tue Sep  7 16:23:36 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
623
624         * Makefile.am: Fixed seds for latest egcc. By Ollivier Robert.
625
626 Mon Sep  6 19:59:08 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
627
628         * des.c (selftest): Add some testpattern
629
630 Mon Aug 30 20:38:33 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
631
632         * cipher.c (do_cbc_encrypt): Fixed serious bug occuring when not using
633         in place encryption. Pointed out by Frank Stajano.
634
635 Mon Jul 26 09:34:46 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
636
637         * md5.c (md5_final): Fix for a SCO cpp bug.
638
639 Thu Jul 15 10:15:35 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
640
641         * elgamal.c (elg_check_secret_key,elg_encrypt
642         elg_decrypt,elg_sign,elg_verify): Sanity check on the args.
643         * dsa.c (dsa_check_secret_key,dsa_sign,dsa_verify): Ditto.
644
645         * pubkey.c (disable_pubkey_algo): New.
646         (check_pubkey_algo2): Look at disabled algo table.
647         * cipher.c (disable_cipher_algo): New.
648         (check_cipher_algo): Look at disabled algo table.
649
650 Wed Jul  7 13:08:40 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
651
652         * Makefile.am: Support for libtool.
653
654 Fri Jul  2 11:45:54 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
655
656         * dsa.c (gen_k): Changed algorithm to consume less random bytes
657         * elgamal.c (gen_k): Ditto.
658
659         * random.c (random_dump_stats): New.
660
661 Thu Jul  1 12:47:31 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
662
663         * primegen.c, elgamal.c, dsa.c (progess): New and replaced all
664         fputc with a call to this function.
665
666 Sat Jun 26 12:15:59 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
667
668         * rndegd.c (do_write): s/ssize_t/int/ due to SunOS 4.1 probs.
669
670         * cipher.c (do_cbc_encrypt, do_cbc_decrypt): New.
671
672         * dynload.c (HAVE_DL_SHL_LOAD): Map hpux API to dlopen (Dave Dykstra).
673         * Makefile.am (install-exec-hook): Removed.
674
675 Sun May 23 14:20:22 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
676
677         * cipher.c (setup_cipher_table): Enable Twofish
678
679         * random.c (fast_random_poll): Disable use of times() for mingw32.
680
681 Mon May 17 21:54:43 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
682
683         * dynload.c (register_internal_cipher_extension): Minor init fix.
684
685 Tue May  4 15:47:53 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
686
687         * primegen.c (gen_prime): Readded the Fermat test. Fixed the bug
688         that we didn't correct for step when passing the prime to the
689         Rabin-Miller test which led to bad performance (Stefan Keller).
690         (check_prime): Add a first Fermat test.
691
692 Sun Apr 18 10:11:28 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
693
694         * cipher.c (cipher_setiv): Add ivlen arg, changed all callers.
695
696         * random.c (randomize_buffer): alway use secure memory because
697         we can't use m_is_secure() on a statically allocated buffer.
698
699         * twofish.c: Replaced some macros by a loop to reduce text size.
700         * Makefile.am (twofish): No more need for sed editing.
701
702 Fri Apr  9 12:26:25 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
703
704         * cipher.c (cipher_open): Reversed the changes for AUTO_CFB.
705
706         * blowfish.c: Dropped the Blowfish 160 mode.
707         * cipher.c (cipher_open): Ditto.
708         (setup_cipher_table): Ditto.  And removed support of twofish128
709
710 Wed Apr  7 20:51:39 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
711
712         * random.c (get_random_bits): Can now handle requests > POOLSIZE
713
714         * cipher.c (cipher_open): Now uses standard CFB for automode if
715         the blocksize is gt 8 (according to rfc2440).
716
717         * twofish.c: Applied Matthew Skala's patches for 256 bit key.
718
719 Tue Apr  6 19:58:12 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
720
721         * random.c (get_random_bits): Can now handle requests > POOLSIZE
722
723         * cipher.c (cipher_open): Now uses standard CFB for automode if
724         the blocksize is gt 8 (according to rfc2440).
725
726 Sat Mar 20 11:44:21 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
727
728         * rndlinux.c (tty_printf) [IS_MODULE]: Removed.
729
730         * rndegd.c (gather_random): Some fixes.
731
732 Wed Mar 17 13:09:03 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
733
734         * rndegd.c (do_read): New.
735         (gather_random): Changed the implementation.
736
737 Mon Mar  8 20:47:17 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
738
739         * dynload.c (DLSYM_NEEDS_UNDERSCORE): Renamed.
740
741 Fri Feb 26 17:55:41 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
742
743         * md.c: Nearly a total rewrote.
744
745 Wed Feb 24 11:07:27 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
746
747         * cipher.c (context): Fixed alignment
748         * md.c: Ditto.
749
750         * rndegd.c: New
751
752 Mon Feb 22 20:04:00 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
753
754         * rndegd.c: New.
755
756 Wed Feb 10 17:15:39 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
757
758         * Makefile.am: Modules are now figured out by configure
759         * construct.c: New. Generated by configure. Changed all modules
760         to work with that.
761         * sha1.h: Removed.
762         * md5.h: Removed.
763
764         * twofish.c: Changed interface to allow Twofish/256
765
766         * rndunix.c (start_gatherer): Die on SIGPIPE.
767
768 Wed Jan 20 18:59:49 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
769
770         * rndunix.c (gather_random): Fix to avoid infinite loop.
771
772 Sun Jan 17 11:04:33 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
773
774         * des.c (is_weak_key): Replace system memcmp due to bugs
775         in SunOS's memcmp.
776         (des_get_info): Return error on failed selftest.
777         * twofish.c (twofish_setkey): Return error on failed selftest or
778         invalid keylength.
779         * cast5.c (cast_setkey): Ditto.
780         * blowfish.c (bf_setkey): Return error on failed selftest.
781
782 Tue Jan 12 11:17:18 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
783
784         * random.c (random_is_faked): New.
785
786         * tiger.c: Only compile if we have the u64 type
787
788 Sat Jan  9 16:02:23 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
789
790         * rndunix.c (gather_random): check for setuid.
791
792         * Makefile.am: Add a way to staically link random modules
793
794 Thu Jan  7 18:00:58 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
795
796         * md.c (md_stop_debug): Do a flush first.
797         (md_open): size of buffer now depends on the secure parameter
798
799 Sun Jan  3 15:28:44 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
800
801         * rndunix.c (start_gatherer): Fixed stupid ==/= bug
802
803 1998-12-31  Geoff Keating  <geoffk@ozemail.com.au>
804
805         * des.c (is_weak_key): Rewrite loop end condition.
806
807 Tue Dec 29 14:41:47 CET 1998  Werner Koch  <wk@isil.d.shuttle.de>
808
809         * random.c: add unistd.h for getpid().
810         (RAND_MAX): Fallback value for Sun.
811
812 Wed Dec 23 17:12:24 CET 1998  Werner Koch  <wk@isil.d.shuttle.de>
813
814         * md.c (md_copy): Reset debug.
815
816 Mon Dec 14 21:18:49 CET 1998  Werner Koch  <wk@isil.d.shuttle.de>
817
818         * random.c (read_random_source): Changed the interface to the
819         random gathering function.
820         (gather_faked): Use new interface.
821         * dynload.c (dynload_getfnc_fast_random_poll): Ditto.
822         (dynload_getfnc_gather_random): Ditto.
823         * rndlinux.c (gather_random): Ditto.
824         * rndunix.c (gather_random): Ditto.
825
826 Sat Dec 12 18:40:32 CET 1998  Werner Koch  <wk@isil.d.shuttle.de>
827
828         * dynload.c (SYMBOL_VERSION): New to cope with system which needs
829         underscores.
830
831         * rndunix.c: Rewrote large parts
832
833 Thu Dec 10 20:15:36 CET 1998  Werner Koch  <wk@isil.d.shuttle.de>
834
835         * dynload.c (load_extension): increased needed verbosity level.
836
837         * random.c (fast_random_poll): Fallback to a default fast random
838         poll function.
839         (read_random_source): Always use the faked entroy gatherer if no
840         gather module is available.
841         * rndlinux.c (fast_poll): Removed.
842         * rndunix.c (fast_poll): Removed.
843
844
845 Wed Nov 25 12:33:41 1998  Werner Koch  (wk@isil.d.shuttle.de)
846
847         * rand-*.c: Removed.
848         * rndlinux.c : New.
849         * rndunix.c : New.
850         * random.c : Restructured the interface to the gather modules.
851         (intialize): Call constructor functions
852         (read_radnom_source): Moved to here.
853         * dynload.c (dynload_getfnc_gather_random): New.
854         (dynload_getfnc_fast_random_poll): New.
855         (register_internal_cipher_extension): New.
856         (register_cipher_extension): Support of internal modules.
857
858 Sun Nov  8 17:44:36 1998  Werner Koch  (wk@isil.d.shuttle.de)
859
860         * rand-unix.c (read_random_source): Removed the assert.
861
862 Mon Oct 19 18:34:30 1998  me,,,  (wk@tobold)
863
864         * pubkey.c: Hack to allow us to give some info about RSA keys back.
865
866 Thu Oct 15 11:47:57 1998  Werner Koch  (wk@isil.d.shuttle.de)
867
868         * dynload.c: Support for DLD
869
870 Wed Oct 14 12:13:07 1998  Werner Koch  (wk@isil.d.shuttle.de)
871
872         * rand-unix.c: Now uses names from configure for /dev/random.
873
874 1998-10-10  SL Baur  <steve@altair.xemacs.org>
875
876         * Makefile.am: fix sed -O substitutions to catch -O6, etc.
877
878 Tue Oct  6 10:06:32 1998  Werner Koch  (wk@isil.d.shuttle.de)
879
880         * rand-unix.c (HAVE_GETTIMEOFDAY): Fixed (was ..GETTIMEOFTIME :-)
881         * rand-dummy.c (HAVE_GETTIMEOFDAY): Ditto.
882
883 Mon Sep 28 13:23:09 1998  Werner Koch  (wk@isil.d.shuttle.de)
884
885         * md.c (md_digest): New.
886         (md_reset): New.
887
888 Wed Sep 23 12:27:02 1998  Werner Koch  (wk@isil.d.shuttle.de)
889
890         * tiger.c (TIGER_CONTEXT): moved "buf", so that it is 64 bit aligned.
891
892 Mon Sep 21 06:22:53 1998  Werner Koch  (wk@(none))
893
894         * des.c: Some patches from Michael.
895
896 Thu Sep 17 19:00:06 1998  Werner Koch  (wk@(none))
897
898         * des.c : New file from Michael Roth <mroth@nessie.de>
899
900 Mon Sep 14 11:10:55 1998  Werner Koch  (wk@(none))
901
902         * blowfish.c (bf_setkey): Niklas Hernaeus patch to detect weak keys.
903
904 Mon Sep 14 09:19:25 1998  Werner Koch  (wk@(none))
905
906         * dynload.c (RTLD_NOW): Now defined to 1 if it is undefined.
907
908 Mon Sep  7 17:04:33 1998  Werner Koch  (wk@(none))
909
910         * Makefile.am: Fixes to allow a different build directory
911
912 Thu Aug  6 17:25:38 1998  Werner Koch,mobil,,,  (wk@tobold)
913
914         * random.c (get_random_byte): Removed and changed all callers
915         to use get_random_bits()
916
917 Mon Jul 27 10:30:22 1998  Werner Koch  (wk@(none))
918
919         * cipher.c : Support for other blocksizes
920         (cipher_get_blocksize): New.
921         * twofish.c: New.
922         * Makefile.am: Add twofish module.
923
924 Mon Jul 13 21:30:52 1998  Werner Koch  (wk@isil.d.shuttle.de)
925
926         * random.c (read_pool): Simple alloc if secure_alloc is not set.
927         (get_random_bits): Ditto.
928
929 Thu Jul  9 13:01:14 1998  Werner Koch  (wk@isil.d.shuttle.de)
930
931         * dynload.c (load_extension): Function now nbails out if
932         the program is run setuid.
933
934 Wed Jul  8 18:58:23 1998  Werner Koch  (wk@isil.d.shuttle.de)
935
936         * rmd160.c (rmd160_hash_buffer): New.
937
938 Thu Jul  2 10:50:30 1998  Werner Koch  (wk@isil.d.shuttle.de)
939
940         * cipher.c (cipher_open): algos >=100 use standard CFB
941
942 Thu Jun 25 11:18:25 1998  Werner Koch  (wk@isil.d.shuttle.de)
943
944         * Makefile.am: Support for extensions
945
946 Thu Jun 18 12:09:38 1998  Werner Koch  (wk@isil.d.shuttle.de)
947
948         * random.c (mix_pool): simpler handling for level 0
949
950 Mon Jun 15 14:40:48 1998  Werner Koch  (wk@isil.d.shuttle.de)
951
952         * tiger.c: Removed from dist, will reappear as dynload module
953
954 Sat Jun 13 14:16:57 1998  Werner Koch  (wk@isil.d.shuttle.de)
955
956         * pubkey.c: Major changes to allow extensions. Changed the inteface
957         of all public key ciphers and added the ability to load extensions
958         on demand.
959
960         * misc.c: Removed.
961
962 Wed Jun 10 07:52:08 1998  Werner Koch,mobil,,,  (wk@tobold)
963
964         * dynload.c: New.
965         * cipher.c: Major changes to allow extensions.
966
967 Mon Jun  8 22:43:00 1998  Werner Koch  (wk@isil.d.shuttle.de)
968
969         * cipher.c: Major internal chnages to support extensions.
970         * blowfish.c (blowfish_get_info): New and made all internal
971         functions static, changed heder.
972         * cast5.c (cast5_get_info): Likewise.
973
974 Mon Jun  8 12:27:52 1998  Werner Koch  (wk@isil.d.shuttle.de)
975
976         * tiger.c (transform): Fix for big endian
977
978         * cipher.c (do_cfb_decrypt): Big endian fix.
979
980 Fri May 22 07:30:39 1998  Werner Koch  (wk@isil.d.shuttle.de)
981
982         * md.c (md_get_oid): Add a new one for TIGER.
983
984 Thu May 21 13:24:52 1998  Werner Koch  (wk@isil.d.shuttle.de)
985
986         * cipher.c: Add support for a dummy cipher
987
988 Thu May 14 15:40:36 1998  Werner Koch  (wk@isil.d.shuttle.de)
989
990         * rmd160.c (transform): fixed sigbus - I should better
991         add Christian von Roques's new implemenation of rmd160_write.
992
993 Fri May  8 18:07:44 1998  Werner Koch  (wk@isil.d.shuttle.de)
994
995         * rand-internal.h, rand-unix.c, rand-w32.c, rand_dummy.c: New
996         * random.c: Moved system specific functions to rand-****.c
997
998 Fri May  8 14:01:17 1998  Werner Koch  (wk@isil.d.shuttle.de)
999
1000         * random.c (fast_random_poll): add call to gethrtime.
1001
1002 Tue May  5 21:28:55 1998  Werner Koch  (wk@isil.d.shuttle.de)
1003
1004         * elgamal.c (elg_generate): choosing x was not correct, could
1005         yield 6 bytes which are not from the random pool, tsss, tsss..
1006
1007 Tue May  5 14:09:06 1998  Werner Koch  (wk@isil.d.shuttle.de)
1008
1009         * primegen.c (generate_elg_prime): Add arg mode, changed all
1010         callers and implemented mode 1.
1011
1012 Mon Apr 27 14:41:58 1998  Werner Koch  (wk@isil.d.shuttle.de)
1013
1014         * cipher.c (cipher_get_keylen): New.
1015
1016 Sun Apr 26 14:44:52 1998  Werner Koch  (wk@isil.d.shuttle.de)
1017
1018         * tiger.c, tiger.h: New.
1019
1020 Wed Apr  8 14:57:11 1998  Werner Koch  (wk@isil.d.shuttle.de)
1021
1022         * misc.c (check_pubkey_algo2): New.
1023
1024 Tue Apr  7 18:46:49 1998  Werner Koch  (wk@isil.d.shuttle.de)
1025
1026         * cipher.c: New
1027         * misc.c (check_cipher_algo): Moved to cipher.c
1028         * cast5.c: Moved many functions to cipher.c
1029         * blowfish.c: Likewise.
1030
1031 Sat Apr  4 19:52:08 1998  Werner Koch  (wk@isil.d.shuttle.de)
1032
1033         * cast5.c: Implemented and tested.
1034
1035 Wed Apr  1 16:38:27 1998  Werner Koch  (wk@isil.d.shuttle.de)
1036
1037         * elgamal.c (elg_generate): Faster generation of x in some cases.
1038
1039 Thu Mar 19 13:54:48 1998  Werner Koch  (wk@isil.d.shuttle.de)
1040
1041         * blowfish.c (blowfish_decode_cfb): changed XOR operation
1042         (blowfish_encode_cfb): Ditto.
1043
1044 Thu Mar 12 14:04:05 1998  Werner Koch  (wk@isil.d.shuttle.de)
1045
1046         * sha1.c (transform): Rewrote
1047
1048         * blowfish.c (encrypt): Unrolled for rounds == 16
1049         (decrypt): Ditto.
1050
1051 Tue Mar 10 16:32:08 1998  Werner Koch  (wk@isil.d.shuttle.de)
1052
1053         * rmd160.c (transform): Unrolled the loop.
1054
1055 Tue Mar 10 13:05:14 1998  Werner Koch  (wk@isil.d.shuttle.de)
1056
1057         * random.c (read_pool): Add pool_balance stuff.
1058         (get_random_bits): New.
1059
1060         * elgamal.c (elg_generate): Now uses get_random_bits to generate x.
1061
1062
1063 Tue Mar 10 11:33:51 1998  Werner Koch  (wk@isil.d.shuttle.de)
1064
1065         * md.c (md_digest_length): New.
1066
1067 Tue Mar 10 11:27:41 1998  Werner Koch  (wk@isil.d.shuttle.de)
1068
1069         * dsa.c (dsa_verify): Works.
1070
1071 Mon Mar  9 12:59:08 1998  Werner Koch  (wk@isil.d.shuttle.de)
1072
1073         * dsa.c, dsa.h: Removed some unused code.
1074
1075 Wed Mar  4 10:39:22 1998  Werner Koch  (wk@isil.d.shuttle.de)
1076
1077         * md.c (md_open): Add call to fast_random_poll.
1078         blowfish.c (blowfish_setkey): Ditto.
1079
1080 Tue Mar  3 13:32:54 1998  Werner Koch  (wk@isil.d.shuttle.de)
1081
1082         * rmd160.c (rmd160_mixblock): New.
1083         * random.c: Restructured to start with a new RNG implementation.
1084         * random.h: New.
1085
1086 Mon Mar  2 19:21:46 1998  Werner Koch  (wk@isil.d.shuttle.de)
1087
1088         * gost.c, gost.h: Removed because they did only conatin trash.
1089
1090 Sun Mar  1 16:42:29 1998  Werner Koch  (wk@isil.d.shuttle.de)
1091
1092         * random.c (fill_buffer): removed error message if n == -1.
1093
1094 Fri Feb 27 16:39:34 1998  Werner Koch  (wk@isil.d.shuttle.de)
1095
1096         * md.c (md_enable): No init if called twice.
1097
1098 Thu Feb 26 07:57:02 1998  Werner Koch  (wk@isil.d.shuttle.de)
1099
1100         * primegen.c (generate_elg_prime): Changed the progress printing.
1101         (gen_prime): Ditto.
1102
1103 Tue Feb 24 12:28:42 1998  Werner Koch  (wk@isil.d.shuttle.de)
1104
1105         * md5.c, md.5 : Replaced by a modified version of md5.c from
1106         GNU textutils 1.22.
1107
1108 Wed Feb 18 14:08:30 1998  Werner Koch  (wk@isil.d.shuttle.de)
1109
1110         * md.c, md.h : New debugging support
1111
1112 Mon Feb 16 10:08:47 1998  Werner Koch  (wk@isil.d.shuttle.de)
1113
1114         * misc.c (cipher_algo_to_string): New
1115         (pubkey_algo_to_string): New.
1116         (digest_algo_to_string): New.
1117
1118
1119
1120  Copyright 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
1121
1122  This file is free software; as a special exception the author gives
1123  unlimited permission to copy and/or distribute it, with or without
1124  modifications, as long as this notice is preserved.
1125
1126  This file is distributed in the hope that it will be useful, but
1127  WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
1128  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
1129
1130