Allow for numerical debug levels.
[gnupg.git] / NEWS
1 Noteworthy changes in version 2.0.14
2 -------------------------------------------------
3
4  * The default for --inlucde-cert is now to include all certificates
5    in the chain except for the root certificate.
6
7  * Numerical values may now be used as an alternative to the
8    debug-level keywords.
9
10
11 Noteworthy changes in version 2.0.13 (2009-09-04)
12 -------------------------------------------------
13
14  * GPG now generates 2048 bit RSA keys by default.  The default hash
15    algorithm preferences has changed to prefer SHA-256 over SHA-1.
16    2048 bit DSA keys are now generated to use a 256 bit hash algorithm
17
18  * The envvars XMODIFIERS, GTK_IM_MODULE and QT_IM_MODULE are now
19    passed to the Pinentry to make SCIM work.
20
21  * The GPGSM command --gen-key features a --batch mode and implements
22    all features of gpgsm-gencert.sh in standard mode.
23
24  * New option --re-import for GPGSM's IMPORT server command.
25
26  * Enhanced writing of existing keys to OpenPGP v2 cards.
27
28  * Add hack to the internal CCID driver to allow the use of some
29    Omnikey based card readers with 2048 bit keys.
30
31  * GPG now repeatly asks the user to insert the requested OpenPGP
32    card.  This can be disabled with --limit-card-insert-tries=1.
33
34  * Minor bug fixes.
35
36
37 Noteworthy changes in version 2.0.12 (2009-06-17)
38 -------------------------------------------------
39
40  * GPGSM now always lists ephemeral certificates if specified by
41    fingerprint or keygrip.
42
43  * New command "KEYINFO" for GPG_AGENT.  GPGSM now also returns
44    information about smartcards.
45
46  * Made sure not to leak file descriptors if running gpg-agent with a
47    command.  Restore the signal mask to solve a problem in Mono.
48
49  * Changed order of the confirmation questions for root certificates
50    and store negative answers in trustlist.txt.
51
52  * Better synchronization of concurrent smartcard sessions.
53
54  * Support 2048 bit OpenPGP cards.
55
56  * Support Telesec Netkey 3 cards.
57
58  * The gpg-protect-tool now uses gpg-agent via libassuan.  Under
59    Windows the Pinentry will now be put into the foreground.
60
61  * Changed code to avoid a possible Mac OS X system freeze.
62
63
64 Noteworthy changes in version 2.0.11 (2009-03-03)
65 -------------------------------------------------
66
67  * Fixed a problem in SCDAEMON which caused unexpected card resets.
68
69  * SCDAEMON is now aware of the Geldkarte.
70
71  * The SCDAEMON option --allow-admin is now used by default.
72
73  * GPGCONF now restarts SCdaemon if necessary.
74
75  * The default cipher algorithm in GPGSM is now again 3DES.  This is
76    due to interoperability problems with Outlook 2003 which still
77    can't cope with AES.
78
79
80 Noteworthy changes in version 2.0.10 (2009-01-12)
81 -------------------------------------------------
82
83  * [gpg] New keyserver helper gpg2keys_kdns as generic DNS CERT
84    lookup.  Run with --help for a short description.  Requires the
85    ADNS library.
86
87  * [gpg] New mechanisms "local" and "nodefault" for --auto-key-locate.
88    Fixed a few problems with this option.
89
90  * [gpg] New command --locate-keys.
91
92  * [gpg] New options --with-sig-list and --with-sig-check.
93
94  * [gpg] The option "-sat" is no longer an alias for --clearsign.
95
96  * [gpg] The option --fixed-list-mode is now implicitly used and obsolete.
97
98  * [gpg] New control statement %ask-passphrase for the unattended key
99    generation.
100
101  * [gpg] The algorithm to compute the SIG_ID status has been changed.
102
103  * [gpgsm] Now uses AES by default.
104
105  * [gpgsm] Made --output option work with --export-secret-key-p12.
106
107  * [gpg-agent] Terminate process if the own listening socket is not
108    anymore served by ourself.
109
110  * [scdaemon] Made it more robust on W32.
111
112  * [gpg-connect-agent] Accept commands given as command line arguments.
113
114  * [w32] Initialized the socket subsystem for all keyserver helpers.
115
116  * [w32] The sysconf directory has been moved from a subdirectory of
117    the installation directory to %CSIDL_COMMON_APPDATA%/GNU/etc/gnupg.
118
119  * [w32] The gnupg2.nls directory is not anymore used.  The standard
120    locale directory is now used.  
121
122  * [w32] Fixed a race condition between gpg and gpgsm in the use of
123    temporary file names.
124
125  * The gpg-preset-passphrase mechanism works again.  An arbitrary
126    string may now be used for a custom cache ID.
127
128  * Admin PINs are cached again (bug in 2.0.9).
129
130  * Support for version 2 OpenPGP cards.
131
132  * Libgcrypt 1.4 is now required.
133
134
135 Noteworthy changes in version 2.0.9 (2008-03-26)
136 ------------------------------------------------
137
138  * Gpgsm always tries to locate missing certificates from a running
139    Dirmngr's cache.
140
141  * Tweaks for Windows.
142
143  * The Admin PIN for OpenPGP cards may now be entered with the pinpad.
144
145  * Improved certificate chain construction.
146
147  * Extended the PKITS framework.
148
149  * Fixed a bug in the ambigious name detection.
150
151  * Fixed possible memory corruption while importing OpenPGP keys (bug
152    introduced with 2.0.8). [CVE-2008-1530]
153
154  * Minor bug fixes.
155
156
157 Noteworthy changes in version 2.0.8 (2007-12-20)
158 ------------------------------------------------
159
160  * Enhanced gpg-connect-agent with a small scripting language.
161
162  * New option --list-config for gpgconf.
163
164  * Fixed a crash in gpgconf.
165
166  * Gpg-agent now supports the passphrase quality bar of the latest
167    Pinentry.
168
169  * The envvars XAUTHORITY and PINENTRY_USER_DATA are now passed to the
170    Pinentry.
171
172  * Fixed the auto creation of the key stub for smartcards.  
173
174  * Fixed a rare bug in decryption using the OpenPGP card.
175
176  * Creating DSA2 keys is now possible.
177
178  * New option --extra-digest-algo for gpgsm to allow verification of
179    broken signatures.
180
181  * Allow encryption with legacy Elgamal sign+encrypt keys with option
182    --rfc2440.
183
184  * Windows is now a supported platform.
185
186  * Made sure that under Windows the file permissions of the socket are
187    taken into account.  This required a change of our socket emulation
188    code and changed the IPC protocol under Windows.
189
190
191 Noteworthy changes in version 2.0.7 (2007-09-10)
192 ------------------------------------------------
193
194  * Fixed encryption problem if duplicate certificates are in the
195    keybox.
196
197  * Made it work on Windows Vista.  Note that the entire Windows port
198    is still considered Beta.
199
200  * Add new options min-passphrase-nonalpha, check-passphrase-pattern,
201    enforce-passphrase-constraints and max-passphrase-days to
202    gpg-agent.
203
204  * Add command --check-components to gpgconf.  Gpgconf now uses the
205    installed versions of the programs and does not anymore search via
206    PATH for them.
207
208
209 Noteworthy changes in version 2.0.6 (2007-08-16)
210 ------------------------------------------------
211
212  * GPGSM does now grok --default-key.
213
214  * GPGCONF is now aware of --default-key and --encrypt-to. 
215
216  * GPGSM does again correctly print the serial number as well the the
217    various keyids.  This was broken since 2.0.4.
218
219  * New option --validation-model and support for the chain-model.
220
221  * Improved Windows support.
222
223  
224 Noteworthy changes in version 2.0.5 (2007-07-05)
225 ------------------------------------------------
226
227  * Switched license to GPLv3.
228
229  * Basic support for Windows.  Run "./autogen.sh --build-w32" to build
230    it.  As usual the mingw cross compiling toolchain is required.
231
232  * Fixed bug when using the --p12-charset without --armor.
233
234  * The command --gen-key may now be used instead of the
235    gpgsm-gencert.sh script.
236
237  * Changed key generation to reveal less information about the
238    machine.  Bug fixes for gpg2's card key generation.
239
240
241 Noteworthy changes in version 2.0.4 (2007-05-09)
242 ------------------------------------------------
243
244  * The server mode key listing commands are now also working for
245    systems without the funopen/fopencookie API.
246
247  * PKCS#12 import now tries several encodings in case the passphrase
248    was not utf-8 encoded.  New option --p12-charset for gpgsm.
249
250  * Improved the libgcrypt logging support in all modules.
251
252
253 Noteworthy changes in version 2.0.3 (2007-03-08)
254 ------------------------------------------------
255
256  * By default, do not allow processing multiple plaintexts in a single
257    stream.  Many programs that called GnuPG were assuming that GnuPG
258    did not permit this, and were thus not using the plaintext boundary
259    status tags that GnuPG provides.  This change makes GnuPG reject
260    such messages by default which makes those programs safe again.
261    --allow-multiple-messages returns to the old behavior. [CVE-2007-1263].
262
263  * New --verify-option show-primary-uid-only. 
264
265  * gpgconf may now reads a global configuration file to select which
266    options are changeable by a frontend.  The new applygnupgdefaults
267    tool may be used by an admin to set default options for all users.
268
269  * The PIN pad of the Cherry XX44 keyboard is now supported.  The
270    DINSIG and the NKS applications are now also aware of PIN pads.
271
272
273 Noteworthy changes in version 2.0.2 (2007-01-31)
274 ------------------------------------------------
275
276  * Fixed a serious and exploitable bug in processing encrypted
277    packages. [CVE-2006-6235].
278
279  * Added --passphrase-repeat to set the number of times GPG will
280    prompt for a new passphrase to be repeated.  This is useful to help
281    memorize a new passphrase.  The default is 1 repetition.
282
283  * Using a PIN pad does now also work for the signing key.
284
285  * A warning is displayed by gpg-agent if a new passphrase is too
286    short.  New option --min-passphrase-len defaults to 8.
287
288  * The status code BEGIN_SIGNING now shows the used hash algorithms.
289
290
291 Noteworthy changes in version 2.0.1 (2006-11-28)
292 ------------------------------------------------
293
294  * Experimental support for the PIN pads of the SPR 532 and the Kaan
295    Advanced card readers.  Add "disable-keypad" scdaemon.conf if you
296    don't want it.  Does currently only work for the OpenPGP card and
297    its authentication and decrypt keys.
298
299  * Fixed build problems on some some platforms and crashes on amd64.
300
301  * Fixed a buffer overflow in gpg2. [bug#728,CVE-2006-6169]
302
303
304 Noteworthy changes in version 2.0.0 (2006-11-11)
305 ------------------------------------------------
306
307  * First stable version of a GnuPG integrating OpenPGP and S/MIME.
308
309
310 Noteworthy changes in version 1.9.95 (2006-11-06)
311 -------------------------------------------------
312
313  * Minor bug fixes.
314
315
316 Noteworthy changes in version 1.9.94 (2006-10-24)
317 -------------------------------------------------
318
319  * Keys for gpgsm may now be specified using a keygrip.  A keygrip is
320    indicated by a prefixing it with an ampersand.
321
322  * gpgconf now supports switching the CMS cipher algo (e.g. to AES).
323
324  * New command --gpgconf-test for all major tools. This may be used to
325    check whether the configuration file is sane.
326
327
328 Noteworthy changes in version 1.9.93 (2006-10-18)
329 -------------------------------------------------
330
331  * In --with-validation mode gpgsm will now also ask whether a root
332    certificate should be trusted.
333
334  * Link to Pth only if really necessary.
335
336  * Fixed a pubring corruption bug in gpg2 occurring when importing
337    signatures or keys with insane lengths.
338
339  * Fixed v3 keyID calculation bug in gpg2.
340
341  * More tweaks for certificates without extensions.
342
343
344 Noteworthy changes in version 1.9.92 (2006-10-11)
345 -------------------------------------------------
346
347  * Bug fixes.
348
349
350 Noteworthy changes in version 1.9.91 (2006-10-04)
351 -------------------------------------------------
352
353  * New "relax" flag for trustlist.txt to allow root CA certificates
354    without BasicContraints.
355
356  * [gpg2] Removed the -k PGP 2 compatibility hack.  -k is now an
357    alias for --list-keys.
358
359  * [gpg2] Print a warning if "-sat" is used instead of "--clearsign".
360
361
362 Noteworthy changes in version 1.9.90 (2006-09-25)
363 -------------------------------------------------
364
365  * Made readline work for gpg.
366
367  * Cleanups und minor bug fixes.
368
369  * Included translations from gnupg 1.4.5.
370
371
372 Noteworthy changes in version 1.9.23 (2006-09-18)
373 -------------------------------------------------
374
375  * Regular man pages for most tools are now build directly from the
376    Texinfo source.
377
378  * The gpg code from 1.4.5 has been fully merged into this release.
379    The configure option --enable-gpg is still required to build this
380    gpg part.  For production use of OpenPGP the gpg version 1.4.5 is
381    still recommended.  Note, that gpg will be installed under the name
382    gpg2 to allow coexisting with an 1.4.x gpg.
383
384  * API change in gpg-agent's pkdecrypt command.  Thus an older gpgsm
385    may not be used with the current gpg-agent.
386
387  * The scdaemon will now call a script on reader status changes.
388
389  * gpgsm now allows file descriptor passing for "INPUT", "OUTPUT" and
390    "MESSAGE".
391
392  * The gpgsm server may now output a key listing to the output file
393    handle. This needs to be enabled using "OPTION list-to-output=1".
394
395  * The --output option of gpgsm has now an effect on list-keys.
396
397  * New gpgsm commands --dump-chain and list-chain.
398
399  * gpg-connect-agent has new options to utilize descriptor passing.
400
401  * A global trustlist may now be used.  See doc/examples/trustlist.txt.
402
403  * When creating a new pubring.kbx keybox common certificates are
404    imported.
405
406
407 Noteworthy changes in version 1.9.22 (2006-07-27)
408 -------------------------------------------------
409
410  * Enhanced pkcs#12 support to allow import from simple keyBags.
411
412  * Exporting to pkcs#12 now create bag attributes so that Mozilla is
413    able to import the files.
414
415  * Fixed uploading of certain keys to the smart card.
416
417
418 Noteworthy changes in version 1.9.21 (2006-06-20)
419 -------------------------------------------------
420
421  * New command APDU for scdaemon to allow using it for general card
422    access.  Might be used through gpg-connect-agent by using the SCD
423    prefix command.
424
425  * Support for the CardMan 4040 PCMCIA reader (Linux 2.6.15 required).
426
427  * Scdaemon does not anymore reset cards at the end of a connection. 
428
429  * Kludge to allow use of Bundesnetzagentur issued X.509 certificates.
430
431  * Added --hash=xxx option to scdaemon's PKSIGN command.
432
433  * Pkcs#12 files are now created with a MAC.  This is for better
434    interoperability.
435
436  * Collected bug fixes and minor other changes.
437
438
439 Noteworthy changes in version 1.9.20 (2005-12-20)
440 -------------------------------------------------
441
442  * Importing pkcs#12 files created be recent versions of Mozilla works
443    again.
444
445  * Basic support for qualified signatures.
446
447  * New debug tool gpgparsemail. 
448
449
450 Noteworthy changes in version 1.9.19 (2005-09-12)
451 -------------------------------------------------
452
453  * The Belgian eID card is now supported for signatures and ssh.
454    Other pkcs#15 cards should work as well.
455
456  * Fixed bug in --export-secret-key-p12 so that certificates are again
457    included.
458
459
460 Noteworthy changes in version 1.9.18 (2005-08-01)
461 -------------------------------------------------
462
463  * [gpgsm] Now allows for more than one email address as well as URIs
464    and dnsNames in certificate request generation.  A keygrip may be
465    given to create a request from an existing key.
466
467  * A couple of minor bug fixes.
468
469
470 Noteworthy changes in version 1.9.17 (2005-06-20)
471 -------------------------------------------------
472
473  * gpg-connect-agent has now features to handle Assuan INQUIRE
474    commands.
475
476  * Internal changes for OpenPGP cards. New Assuan command WRITEKEY.
477
478  * GNU Pth is now a hard requirement.
479
480  * [scdaemon] Support for OpenSC has been removed.  Instead a new and
481    straightforward pkcs#15 modules has been written.  As of now it
482    does allows only signing using TCOS cards but we are going to
483    enhance it to match all the old capabilities.
484
485  * [gpg-agent] New option --write-env-file and Assuan command
486    UPDATESTARTUPTTY.
487
488  * [gpg-agent] New option --default-cache-ttl-ssh to set the TTL for
489    SSH passphrase caching independent from the other passphrases.
490
491
492 Noteworthy changes in version 1.9.16 (2005-04-21)
493 -------------------------------------------------
494
495  * gpg-agent does now support the ssh-agent protocol and thus allows
496    to use the pinentry as well as the OpenPGP smartcard with ssh.
497
498  * New tool gpg-connect-agent as a general client for the gpg-agent.
499
500  * New tool symcryptrun as a wrapper for certain encryption tools.
501
502  * The gpg tool is not anymore build by default because those gpg
503    versions available in the gnupg 1.4 series are far more matured.
504
505
506 Noteworthy changes in version 1.9.15 (2005-01-13)
507 -------------------------------------------------
508
509  * Fixed passphrase caching bug.
510
511  * Better support for CCID readers; the reader from Cherry RS 6700 USB
512    does now work.
513
514
515 Noteworthy changes in version 1.9.14 (2004-12-22)
516 -------------------------------------------------
517
518  * [gpg-agent] New option --use-standard-socket to allow the use of a
519    fixed socket.  gpgsm falls back to this socket if GPG_AGENT_INFO
520    has not been set.
521
522  * Ported to MS Windows with some functional limitations.
523
524  * New tool gpg-preset-passphrase.
525
526
527 Noteworthy changes in version 1.9.13 (2004-12-03)
528 -------------------------------------------------
529
530  * [gpgsm] New option --prefer-system-dirmngr.
531
532  * Minor cleanups and debugging aids.
533
534
535 Noteworthy changes in version 1.9.12 (2004-10-22)
536 -------------------------------------------------
537
538  * [scdaemon] Partly rewrote the PC/SC code.
539
540  * Removed the sc-investigate tool.  It is now in a separate package
541    available at ftp://ftp.g10code.com/g10code/gscutils/ .
542
543  * [gpg-agent] Fixed logging problem.
544
545
546 Noteworthy changes in version 1.9.11 (2004-10-01)
547 -------------------------------------------------
548
549  * When using --import along with --with-validation, the imported
550    certificates are validated and only imported if they are fully
551    valid.
552
553  * [gpg-agent] New option --max-cache-ttl.
554
555  * [gpg-agent] When used without --daemon or --server, gpg-agent now
556    check whether a agent is already running and usable.
557
558  * Fixed some i18n problems.
559
560
561 Noteworthy changes in version 1.9.10 (2004-07-22)
562 -------------------------------------------------
563
564  * Fixed a serious bug in the checking of trusted root certificates.
565
566  * New configure option --enable-agent-pnly allows to build and
567    install just the agent.
568
569  * Fixed a problem with the log file handling.
570
571
572 Noteworthy changes in version 1.9.9 (2004-06-08)
573 ------------------------------------------------
574
575  * [gpg-agent] The new option --allow-mark-trusted is now required to
576    allow gpg-agent to add a key to the trustlist.txt after user
577    confirmation.
578
579  * Creating PKCS#10 requests does now honor the key usage.
580
581
582 Noteworthy changes in version 1.9.8 (2004-04-29)
583 ------------------------------------------------
584
585  * [scdaemon] Overhauled the internal CCID driver.
586
587  * [scdaemon] Status files named ~/.gnupg/reader_<n>.status are now
588    written when using the internal CCID driver.
589
590  * [gpgsm] New commands --dump-{,secret,external}-keys to show a very
591    detailed view of the certificates.
592
593  * The keybox gets now compressed after 3 hours and ephemeral
594    stored certificates are deleted after about a day.
595
596  * [gpg] Usability fixes for --card-edit.  Note, that this has already
597    been ported back to gnupg-1.3
598
599
600 Noteworthy changes in version 1.9.7 (2004-04-06)
601 ------------------------------------------------
602
603  * Instrumented the modules for gpgconf.
604
605  * Added support for DINSIG card applications.
606
607  * Include the smimeCapabilities attribute with signed messages.
608
609  * Now uses the gettext domain "gnupg2" to avoid conflicts with gnupg
610    versions < 1.9.
611
612
613 Noteworthy changes in version 1.9.6 (2004-03-06)
614 ------------------------------------------------
615
616  * Code cleanups and bug fixes.
617
618
619 Noteworthy changes in version 1.9.5 (2004-02-21)
620 ------------------------------------------------
621
622  * gpg-protect-tool gets now installed into libexec as it ought to be.
623    Cleaned up the build system to better comply with the coding
624    standards.
625
626  * [gpgsm] The --import command is now able to autodetect pkcs#12
627    files and import secret and private keys from this file format.
628    A new command --export-secret-key-p12 is provided to allow
629    exporting of secret keys in PKCS\#12 format.
630
631  * [gpgsm] The pinentry will now present a description of the key for
632    whom the passphrase is requested.
633
634  * [gpgsm] New option --with-validation to check the validity of key
635    while listing it.
636
637  * New option --debug-level={none,basic,advanced,expert,guru} to map
638    the debug flags to sensitive levels on a per program base.
639
640
641 Noteworthy changes in version 1.9.4 (2004-01-30)
642 ------------------------------------------------
643
644  * Added support for the Telesec NKS 2.0 card application.
645
646  * Added simple tool addgnupghome to create .gnupg directories from
647    /etc/skel/.gnupg.
648
649  * Various minor bug fixes and cleanups; mainly gpgsm and gpg-agent
650    related.
651
652
653 Noteworthy changes in version 1.9.3 (2003-12-23)
654 ------------------------------------------------
655
656  * New gpgsm options --{enable,disable}-ocsp to validate keys using
657    OCSP. This option requires a not yet released DirMngr version.
658    Default is disabled.
659
660  * The --log-file option may now be used to print logs to a socket.
661    Prefix the socket name with "socket://" to enable this.  This does
662    not work on all systems and falls back to stderr if there is a
663    problem with the socket.
664
665  * The options --encrypt-to and --no-encrypt-to now work the same in
666    gpgsm as in gpg.  Note, they are also used in server mode.
667
668  * Duplicated recipients are now silently removed in gpgsm.
669
670
671 Noteworthy changes in version 1.9.2 (2003-11-17)
672 ------------------------------------------------
673
674  * On card key generation is no longer done using the --gen-key
675    command but from the menu provided by the new --card-edit command.
676
677  * PINs are now properly cached and there are only 2 PINs visible.
678    The 3rd PIN (CHV2) is internally syncronized with the regular PIN.
679
680  * All kind of other internal stuff.
681
682
683 Noteworthy changes in version 1.9.1 (2003-09-06)
684 ------------------------------------------------
685
686  * Support for OpenSC is back. scdaemon supports a --disable-opensc to
687    disable OpenSC use at runtime, so that PC/SC or ct-API can still be
688    used directly.
689
690  * Rudimentary support for the SCR335 smartcard reader using an
691    internal driver.  Requires current libusb from CVS.
692
693  * Bug fixes.
694
695
696 Noteworthy changes in version 1.9.0 (2003-08-05)
697 ------------------------------------------------
698
699       ====== PLEASE SEE README-alpha =======
700
701  * gpg has been renamed to gpg2 and gpgv to gpgv2.  This is a
702    temporary change to allow co-existing with stable gpg versions.
703
704  * ~/.gnupg/gpg.conf-1.9.0 is fist tried as config file before the
705    usual gpg.conf.
706
707  * Removed the -k, -kv and -kvv commands.  -k is now an alias to
708    --list-keys.  New command -K as alias for --list-secret-keys.
709
710  * Removed --run-as-shm-coprocess feature.
711
712  * gpg does now also use libgcrypt, libgpg-error is required.
713
714  * New gpgsm commands --call-dirmngr and --call-protect-tool.
715
716  * Changing a passphrase is now possible using "gpgsm --passwd"
717
718  * The content-type attribute is now recognized and created.
719
720  * The agent does now reread certain options on receiving a HUP.
721
722  * The pinentry is now forked for each request so that clients with
723    different environments are supported.  When running in daemon mode
724    and --keep-display is not used the DISPLAY variable is ignored.
725
726  * Merged stuff from the newpg branch and started this new
727    development branch.
728
729
730  Copyright 2002, 2003, 2004, 2005, 2006, 2007,
731            2008, 2009  Free Software Foundation, Inc.
732
733  This file is free software; as a special exception the author gives
734  unlimited permission to copy and/or distribute it, with or without
735  modifications, as long as this notice is preserved.
736
737  This file is distributed in the hope that it will be useful, but
738  WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
739  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.