16e1550cfe1fbb5076c04624fbf3cd9ebbf9096b
[gpgme.git] / NEWS
1 Noteworthy changes in version 1.8.1 (unreleased)
2 ------------------------------------------------
3
4  * cpp: Support for adduid and revuid operations.
5
6  * cpp: Support for smartcard key generation.
7
8  * Interface changes relative to the 1.8.0 release:
9  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
10  gpgme_op_createkey          CHANGED: Meaning of 'expire' parameter.
11  gpgme_op_createsubkey       CHANGED: Meaning of 'expire' parameter.
12  GPGME_CREATE_NOEXPIRE       NEW.
13  gpgme_subkey_t              EXTENDED: New field is_de_vs.
14  gpgme_op_keylist_from_data_start NEW.
15  GPGME_ENCRYPT_THROW_KEYIDS       NEW.
16  gpgme_data_rewind                UN-DEPRECATE
17  cpp: Context::revUid(const Key&, const char*)      NEW.
18  cpp: Context::startRevUid(const Key&, const char*) NEW.
19  cpp: Context::addUid(const Key&, const char*)      NEW.
20  cpp: Context::startAddUid(const Key&, const char*) NEW.
21  cpp: Key::UserID::revoke()                         NEW.
22  cpp: Key::addUid()                                 NEW.
23  cpp: Key::isDeVs                                   NEW.
24  cpp: GpgGenCardKeyInteractor                       NEW.
25  cpp: Subkey::keyGrip                               NEW.
26  cpp: Subkey::isDeVs                                NEW.
27  qt: CryptoConfig::stringValueList()                NEW.
28  py: Context.__init__        EXTENDED: New keyword arg home_dir.
29  py: Context.home_dir        NEW.
30  py: Context.keylist         EXTENDED: New keyword arg mode.
31  py: Context.keylist         EXTENDED: New keyword arg source.
32  py: Context.create_key      NEW.
33  py: Context.create_subkey   NEW.
34  py: Context.key_add_uid     NEW.
35  py: Context.key_revoke_uid  NEW.
36  py: Context.key_sign        NEW.
37  py: Context.key_tofu_policy NEW.
38  py: core.pubkey_algo_string NEW.
39  py: core.addrspec_from_uid  NEW.
40
41
42 Noteworthy changes in version 1.8.0 (2016-11-16)
43 ------------------------------------------------
44
45  * The module of the Python bindings has been renamed to 'gpg'.
46
47  * New interface to query current software versions.
48
49  * New feature to use gpg's --{show,override}session-key options.
50
51  * New interface to set the sender of a mail.
52
53  * qt: Added Distinguished Name parser from libkleo
54
55  * The --homedir option is now used with recent gpgconf versions.
56
57  * On 64 bit Windows systems gpgconf is now properly located.
58
59  * The internal locking functions have been replaced by libgpg-error
60    locking functions.
61
62  * Interface changes relative to the 1.7.1 release:
63  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
64  gpgme_set_sender                NEW.
65  gpgme_get_sender                NEW.
66  gpgme_op_query_swdb             NEW.
67  gpgme_op_query_swdb_result      NEW.
68  gpgme_query_swdb_result_t       NEW.
69  gpgme_get_ctx_flag              NEW.
70  gpgme_decrypt_result_t          EXTENDED: New field session_key.
71  qt: DN                          NEW.
72  qt: DN::Attribute               NEW.
73  qt: Job::context(Job*)          NEW.
74  cpp: EngineInfo::Version::Version(const char*) NEW.
75  cpp: EngineInfo::Version::Version()            NEW.
76  cpp: SwdbResult                                NEW.
77  cpp: Context::setSender(const char*)           NEW.
78  cpp: Context::getSender()                      NEW.
79
80  [c=C28/A17/R0 cpp=C9/A3/R0 qt=C8/A1/R0]
81
82
83 Noteworthy changes in version 1.7.1 (2016-10-18)
84 ------------------------------------------------
85
86  * Fixed problems with the new language bindings.
87
88  * New helper function gpgme_addrspec_from_uid.
89
90  * Use option --exit-on-status-write-error with newer gpg versions.
91
92  * qt: Missed API from the Qt Binding inclusion has
93    been added again.
94
95  * qt: abstractimportjob.h is now installed to that
96    ImportJobs can be used again.
97
98  * qt: Fixed spelling error in API (startReceive).
99
100  * Interface changes relative to the 1.7.0 release:
101  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
102  gpgme_addrspec_from_uid         NEW.
103  qt: WksPublishJob::startRecieve RENAMED to ::startReceive.
104  qt: MultiDeleteJob              NEW.
105  qt: AbstractImportJob           NEW.
106  qt: SpecialJob                  NEW.
107  cpp: Signature::key(bool, bool)              NEW.
108  cpp: UserID::addrSpecFromString(const char*) NEW.
109  cpp: UserID::addrSpec()                      NEW.
110
111  [c=C27/A16/R0 cpp=C8/A2/R0 qt=C7/A0/R0]
112
113
114 Noteworthy changes in version 1.7.0 (2016-09-21)
115 ------------------------------------------------
116
117  * New language bindings for Python 2 and 3.
118
119  * New language Bindings for C++ and the Qt-Framework API.
120
121  * New functions gpgme_op_createkey and gpgme_op_createsubkey to make
122    key creation easier (requires GnuPG 2.1).
123
124  * New functions gpgme_op_adduid and gpgme_op_revuid to make user id
125    management easier (requires GnuPG 2.1).
126
127  * New function gpgme_op_keysign to make key signing easier (requires
128    GnuPG 2.1).
129
130  * New function gpgme_op_interact to replace the now deprecated
131    functions gpgme_op_edit and gpgme_op_card_edit.
132
133  * New function gpgme_pubkey_algo_string to convert a public key
134    algorithm into a GnuPG 2.1 style string.
135
136  * Support for GnuPG 2.1's TOFU trust model.
137
138  * Notation flags are now correctly set on verify.
139
140  * New global flag "require-gnupg" to set a minimal gnupg version.
141
142  * More supported items in gpgme_get_dirinfo.
143
144  * New function gpgme_data_set_flag and flag "size-hint".
145
146  * New function gpgme_set_ctx_flag and flags "full-status" and
147    "raw-description".
148
149  * Improved gpgme_data_identify to distinguish more file types.
150
151  * New flag GPGME_ENCRYPT_SYMMETRIC for gpgme_op_encrypt to allow
152    mixed public key and symmetric encryption.
153
154  * New field KEYGRIP in gpgme_subkey_t.  New fields FPR in gpgme_key_t.
155
156  * New flag GPGME_DATA_ENCODING_MIME to declare that the encrypted or
157    signed data is a valid MIME part.  This is to support future GnuPG
158    versions.
159
160  * Interface changes relative to the 1.6.0 release:
161  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
162  gpgme_pubkey_algo_string       NEW.
163  GPGME_PK_EDDSA                 NEW.
164  gpgme_set_ctx_flag             NEW.
165  gpgme_data_set_flag            NEW.
166  gpgme_op_createkey             NEW.
167  gpgme_op_createkey_start       NEW.
168  gpgme_op_createsubkey          NEW.
169  gpgme_op_createsubkey_start    NEW.
170  gpgme_op_adduid_start          NEW.
171  gpgme_op_adduid                NEW.
172  gpgme_op_revuid_start          NEW.
173  gpgme_op_revuid                NEW.
174  gpgme_op_keysign_start         NEW.
175  gpgme_op_keysign               NEW.
176  gpgme_op_tofu_policy_start     NEW.
177  gpgme_op_tofu_policy           NEW.
178  gpgme_op_interact_start        NEW.
179  gpgme_op_interact              NEW.
180  gpgme_interact_cb_t            NEW.
181  gpgme_op_edit_start            DEPRECATED.
182  gpgme_op_edit                  DEPRECATED.
183  gpgme_op_card_edit_start       DEPRECATED.
184  gpgme_op_card_edit             DEPRECATED.
185  gpgme_edit_cb_t                DEPRECATED.
186  gpgme_status_code_t            DEPRECATED.
187  gpgme_genkey_result_t          EXTENDED: New fields pubkey and seckey.
188  gpgme_signature_t              EXTENDED: New field key.
189  gpgme_key_t                    EXTENDED: New field fpr.
190  gpgme_subkey_t                 EXTENDED: New field keygrip.
191  gpgme_user_id_t                EXTENDED: New field tofu.
192  gpgme_tofu_policy_t            NEW.
193  gpgme_tofu_info_t              NEW.
194  GPGME_STATUS_KEY_CONSIDERED    NEW.
195  GPGME_STATUS_TOFU_USER         NEW.
196  GPGME_STATUS_TOFU_STATS        NEW.
197  GPGME_STATUS_TOFU_STATS_LONG   NEW.
198  GPGME_STATUS_NOTATION_FLAGS    NEW.
199  GPGME_KEYLIST_MODE_WITH_TOFU   NEW.
200  GPGME_DATA_TYPE_PGP_ENCRYPTED  NEW.
201  GPGME_DATA_TYPE_PGP_SIGNATURE  NEW.
202  GPGME_DATA_ENCODING_MIME       NEW.
203  GPGME_ENCRYPT_SYMMETRIC        NEW.
204  GPGME_CREATE_SIGN              NEW.
205  GPGME_CREATE_ENCR              NEW.
206  GPGME_CREATE_CERT              NEW.
207  GPGME_CREATE_AUTH              NEW.
208  GPGME_CREATE_NOPASSWD          NEW.
209  GPGME_CREATE_SELFSIGNED        NEW.
210  GPGME_CREATE_NOSTORE           NEW.
211  GPGME_CREATE_WANTPUB           NEW.
212  GPGME_CREATE_WANTSEC           NEW.
213  GPGME_CREATE_FORCE             NEW.
214  GPGME_KEYSIGN_LOCAL            NEW.
215  GPGME_KEYSIGN_LFSEP            NEW.
216  GPGME_INTERACT_CARD            NEW.
217
218  [c=C26/A15/R0 cpp=C6/A0/R1 qt=C6/A0/R1]
219
220
221 Noteworthy changes in version 1.6.0 (2015-08-26) [C25/A14/R0]
222 ------------------------------------------------
223
224  * Added gpgme_set_offline to do a key listinging w/o requiring CRL.
225
226  * Added gpgme_set_status_cb to allow a user to see some status
227    messages.
228
229  * Added an export mode for secret keys.
230
231  * More precise error codes are returned if GnuPG >= 2.1.8 is used.
232
233  * The passphrase handler for the loopback mode has been improved and may
234    also be used with genkey.
235
236  * [w32] The standard GnuPG 2.1 install directory is now seached for
237    gpgconf.exe before a registry specified directory and the Gpg4win
238    install directory.
239
240  * [w32] gpgme-w32spawn.exe will now only be searched in the gpgme DLL
241    directory.
242
243  * Interface changes relative to the 1.5.1 release:
244  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
245  gpgme_set_offline              NEW.
246  gpgme_get_offline              NEW.
247  gpgme_set_status_cb            NEW.
248  gpgme_get_status_cb            NEW.
249  GPGME_EXPORT_MODE_SECRET       NEW
250  GPGME_EXPORT_MODE_RAW          NEW.
251  GPGME_EXPORT_MODE_PKCS12       NEW.
252
253
254 Noteworthy changes in version 1.5.5 (2015-06-08) [C24/A13/R4]
255 ------------------------------------------------
256
257  * Fixed crash in key listings for user ids with a backslash.
258
259  * Fixed regression for GPGSM use with GnuPG < 2.1.
260
261  * Properly set signature summary for revoked OpenPGP keys.
262
263
264 Noteworthy changes in version 1.5.4 (2015-04-13) [C24/A13/R3]
265 ------------------------------------------------
266
267  * Fixed a possible crash in the debug code.
268
269  * Fixed building for Windows with newer versions of Mingw.
270
271
272 Noteworthy changes in version 1.5.3 (2014-12-11) [C24/A13/R2]
273 -------------------------------------------------------------
274
275  * The export key functions do now return an error if used with the
276    latest GnuPG version.
277
278
279 Noteworthy changes in version 1.5.2 (2014-11-21) [C24/A13/R1]
280 -------------------------------------------------------------
281
282  * gpgme-tool is now installed.
283
284  * Fix external listing for modern keyservers.
285
286  * Minor other fixes.
287
288
289 Noteworthy changes in version 1.5.1 (2014-07-30) [C24/A13/R0]
290 -------------------------------------------------------------
291
292  * Fixed possible overflow in gpgsm and uiserver engines.
293    [CVE-2014-3564]
294
295  * Added support for GnuPG 2.1's --with-secret option.
296
297  * Interface changes relative to the 1.5.0 release:
298  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
299  GPGME_KEYLIST_MODE_WITH_SECRET NEW.
300
301
302 Noteworthy changes in version 1.5.0 (2014-05-21) [C23/A12/R0]
303 -------------------------------------------------------------
304
305  * On Unices the engine file names are not not anymore hardwired but
306    located via the envvar PATH.  All options to set the name of the
307    engines for the configure run are removed.
308
309  * If GPGME finds the gpgconf binary it defaults to using gpg2 or
310    whatever gpgconf tells as name for the OpenPGP engine.  If gpgconf
311    is not found, GPGME looks for an engine named "gpg".
312
313  * New feature to use the gpgme I/O subsystem to run arbitrary
314    commands.
315
316  * New flag to use encryption without the default compression step.
317
318  * New function to access "gpg-conf --list-dirs"
319
320  * New configure option --enable-fixed-path for use by Android.
321
322  * Support ECC algorithms.
323
324  * Interface changes relative to the 1.4.3 release:
325  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
326  gpgme_get_dirinfo              NEW.
327  gpgme_op_spawn_start           NEW.
328  gpgme_op_spawn                 NEW.
329  GPGME_PROTOCOL_SPAWN           NEW.
330  GPGME_SPAWN_DETACHED           NEW.
331  GPGME_SPAWN_ALLOW_SET_FG       NEW.
332  GPGME_ENCRYPT_NO_COMPRESS      NEW.
333  GPGME_PK_ECC                   NEW.
334  GPGME_MD_SHA224                NEW.
335  gpgme_subkey_t                 EXTENDED: New field curve.
336  GPGME_STATUS_PLAINTEXT_LENGTH  NEW.
337  GPGME_STATUS_MOUNTPOINT        NEW.
338  GPGME_STATUS_PINENTRY_LAUNCHED NEW.
339  GPGME_STATUS_ATTRIBUTE         NEW.
340  GPGME_STATUS_BEGIN_SIGNING     NEW.
341  GPGME_STATUS_KEY_NOT_CREATED   NEW.
342
343
344 Noteworthy changes in version 1.4.3 (2013-08-12) [C22/A11/R0]
345 -------------------------------------------------------------
346
347  * The default engine names are now taken from the output of gpgconf.
348    If gpgconf is not found the use of gpg 1 is assumed.
349
350  * Under Windows the default engines names are first searched in the
351    installation directory of the gpgme DLL.
352
353  * New function gpgme_data_identify to detect the type of a message.
354
355  * Interface changes relative to the 1.4.2 release:
356  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
357  gpgme_signers_count            NEW.
358  gpgme_data_type_t              NEW.
359  gpgme_data_identify            NEW.
360
361
362 Noteworthy changes in version 1.4.2 (2013-05-28) [C21/A10/R0]
363 -------------------------------------------------------------
364
365  * Allow symmetric encryption with gpgme_op_encrypt_sign.
366
367  * Fixed mismatching off_t definitions on Windows.
368
369  * Interface changes relative to the 1.4.1 release:
370  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
371  gpgme_off_t                    NEW.
372  gpgme_size_t                   NEW.
373  GPGME_PROTOCOL_OPENPGP         NEW alias.
374
375
376 Noteworthy changes in version 1.4.1 (2013-05-01) [C20/A9/R1]
377 ------------------------------------------------------------
378
379  * Fixed reading of gpg.conf files with excessive use of the group
380    option.
381
382  * Fixed building with the i686-w64-mingw32 toolchain.
383
384  * Disabled FD passing by default for Apple.
385
386
387 Noteworthy changes in version 1.4.0 (2013-02-26) [C20/A9/R0]
388 ------------------------------------------------------------
389
390  * New function gpgme_set_global_flag to help debugging on Android.
391
392  * New function gpgme_io_writen as a convenience wrapper around
393    gpgme_io_write.
394
395  * New functions to support the pinentry mode feature of GnuPG 2.1.
396
397  * New macro GPGME_VERSION_NUMBER to allow supporting different API
398    versions without the need for a configure test.
399
400  * Several improvements for gpgme-tool.
401
402  * Better logging of the common "invalid engine" error code.
403
404  * Support for FD passing is now enabled by default.  The configure
405    option --disable-fd-passing may be used to disable this.
406
407  * Interface changes relative to the 1.3.1 release:
408  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
409  GPGME_VERSION_NUMBER           NEW.
410  gpgme_io_writen                NEW.
411  gpgme_set_global_flag          NEW.
412  gpgme_set_pinentry_mode        NEW.
413  gpgme_get_pinentry_mode        NEW.
414  gpgme_pinentry_mode_t          NEW.
415  GPGME_PINENTRY_MODE_DEFAULT    NEW.
416  GPGME_PINENTRY_MODE_ASK        NEW.
417  GPGME_PINENTRY_MODE_CANCEL     NEW.
418  GPGME_PINENTRY_MODE_ERROR      NEW.
419  GPGME_PINENTRY_MODE_LOOPBACK   NEW.
420
421
422 Noteworthy changes in version 1.3.2 (2012-05-02)
423 ------------------------------------------------
424
425  * Remove support for libgpgme-pth.  As far as we know, this was never used,
426    and GnuPG is going to use our own npth in the future.
427
428  * Fix signature summary information for a missing X.509 key.
429
430  * Fix parsing of dates >= year 2038.
431
432
433 Noteworthy changes in version 1.3.1 (2011-06-16)
434 ------------------------------------------------
435
436  * Ported to Windows CE.
437
438  * Detect GPG versions not supporting ---passwd.
439
440  * Interface changes relative to the 1.3.0 release:
441  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
442  GPGME_EXPORT_MODE_MINIMAL      NEW
443  GPGME_STATUS_SUCCESS           NEW
444  gpgme_err_code_from_syserror   NEW
445  gpgme_err_set_errno            NEW
446  gpgme_error_from_errno         CHANGED: Return gpgme_error_t (compatible type).
447  gpgme_error_from_syserror      NEW
448  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
449
450
451 Noteworthy changes in version 1.3.0 (2010-01-11)
452 ------------------------------------------------
453
454  * GPGME does not come with an internal libassuan version anymore.
455    The external libassuan 1.1.0 release or later is required.  For
456    application programmers on systems that can resolve inter-library
457    dependencies at runtime, this is a transparent change.
458
459  * New engine GPGME_PROTOCOL_G13 to support the new g13 tool.
460
461  * New engine GPGME_PROTOCOL_UISERVER to support UI Servers.
462
463  * New API to change the passphrase of a key.
464
465  * Interface changes relative to the 1.2.0 release:
466  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
467  GPGME_STATUS_INV_SGNR    NEW.
468  GPGME_STATUS_NO_SGNR     NEW.
469  GPGME_PROTOCOL_G13       NEW.
470  gpgme_op_g13_mount       NEW.
471  gpgme_g13_result_t       NEW.
472  GPGME_PK_ECDSA           NEW.
473  GPGME_PK_ECDH            NEW.
474  gpgme_op_passwd_start    NEW.
475  gpgme_op_passwd          NEW.
476  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
477
478
479 Noteworthy changes in version 1.2.0 (2009-06-18)
480 ------------------------------------------------
481
482  * New encryption flag GPGME_ENCRYPT_NO_ENCRYPT_TO to disable default
483    recipients.
484
485  * gpgme_new will fail if gpgme_check_version was not called, or a
486    selftest failed (for example, if -mms-bitfields was not used on
487    MingW32 targets).
488
489  * New functions gpgme_io_read and gpgme_io_write for use with
490    gpgme_passphrase_cb_t and gpgme_edit_cb_t functions.
491
492  * New functions gpgme_result_ref and gpgme_result_unref to detach
493    result structures from a context.
494
495  * New functions gpgme_op_export_keys_start and gpgme_op_export_keys
496    that allow to specify exported keys through gpgme_key_t objects
497    instead of patterns.
498
499  * New mode of operation gpgme_export_mode_t that allows exporting
500    external keys.
501
502  * Interface changes relative to the 1.1.7 release:
503  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
504  GPGME_KEYLIST_MODE_EPHEMERAL   NEW.
505  GPGME_PROTOCOL_ASSUAN          NEW.
506  gpgme_assuan_data_cb_t         NEW.
507  gpgme_assuan_inquire_cb_t      NEW.
508  gpgme_assuan_status_cb_t       NEW.
509  gpgme_op_assuan_transact_start NEW.
510  gpgme_op_assuan_transact       NEW.
511  gpgme_op_assuan_result         NEW.
512  gpgme_op_import_keys           NEW.
513  gpgme_op_import_keys_start     NEW.
514  gpgme_subkey_t                 EXTENDED: New fields is_cardkey, card_number.
515  GPGME_ENCRYPT_NO_ENCRYPT_TO    NEW.
516  gpgme_check_version            CHANGED: Is now a macro.
517  gpgme_new                      EXTENDED: More failure codes.
518  gpgme_io_read                  NEW.
519  gpgme_io_write                 NEW.
520  gpgme_result_ref               NEW.
521  gpgme_result_unref             NEW.
522  gpgme_export_mode_t            NEW.
523  gpgme_export_ext_start         EXTENDED: Arg RESERVED is now a MODE flag.
524  gpgme_op_export                EXTENDED: Arg RESERVED is now a MODE flag.
525  gpgme_op_export_ext_start      EXTENDED: Arg RESERVED is now a MODE flag.
526  gpgme_op_export_ext            EXTENDED: Arg RESERVED is now a MODE flag.
527  gpgme_op_export_keys_start     NEW.
528  gpgme_op_export_keys           NEW.
529  GPGME_DATA_ENCODING_URL        NEW.
530  GPGME_DATA_ENCODING_URL0       NEW.
531  GPGME_DATA_ENCODING_URLESC     NEW.
532  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
533
534
535 Noteworthy changes in version 1.1.8 (2008-12-08)
536 ------------------------------------------------
537
538  * SIGPIPE is now again ignored as described in the manual.  Fixes
539    regresion introduced with 1.1.6.
540
541
542 Noteworthy changes in version 1.1.7 (2008-10-17)
543 ------------------------------------------------
544
545  * Using GPGME_KEYLIST_MODE_LOCAL combined with
546    GPGME_KEYLIST_MODE_EXTERN is now supported; it uses the
547    --locate-keys feature of gpg (>= 2.0.10).
548
549  * The encoding of gpgme_data_t objects can affect the output encoding
550    of export, sign and encrypt operations now (the same operations
551    that are also affected by the ASCII mode switch).  We believe this
552    change in the ABI is innocent enough not to break existing
553    applications (it only affects the S/MIME backend on certain
554    operations).
555
556  * The reference manual now includes the specification of "The GnuPG
557    UI Server protocol".
558
559  * A new function gpgme_cancel_async can be used to asynchronously
560    cancel any pending operation at any time, from any thread.
561
562  * Interface changes relative to the 1.1.6 release:
563  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
564 gpgme_op_encrypt                CHANGED: Output encoding can affect result.
565 gpgme_op_encrypt_start          CHANGED: Output encoding can affect result.
566 gpgme_op_encrypt_sign           CHANGED: Output encoding can affect result.
567 gpgme_op_encrypt_sign_start     CHANGED: Output encoding can affect result.
568 gpgme_op_sign                   CHANGED: Output encoding can affect result.
569 gpgme_op_sign_start             CHANGED: Output encoding can affect result.
570 gpgme_op_export                 CHANGED: Output encoding can affect result.
571 gpgme_op_export_start           CHANGED: Output encoding can affect result.
572 gpgme_op_export_ext             CHANGED: Output encoding can affect result.
573 gpgme_op_export_ext_start       CHANGED: Output encoding can affect result.
574 gpgme_cancel_async              NEW
575  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
576
577
578 Noteworthy changes in version 1.1.6 (2008-01-04)
579 ------------------------------------------------
580
581  * Bug fixes for for W32.
582
583  * A new, experimental (and thus undocumented and potentially
584    unstable) interface for accessing gpg-conf through GPGME has been
585    added.
586
587  * Interface changes relative to the 1.1.1 release:
588  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
589  gpgme_signature_t               EXTENDED: New field chain_model.
590  gpgme_op_getauditlog_start      NEW.
591  gpgme_op_getauditlog            NEW.
592  GPGME_AUDITLOG_HTML             NEW.
593  GPGME_AUDITLOG_WITH_HELP        NEW.
594  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
595
596
597 Noteworthy changes in version 1.1.5 (2007-07-09)
598 ------------------------------------------------
599
600  * Bug and portability fixes (mainly for W32).
601
602
603 Noteworthy changes in version 1.1.4 (2007-03-05)
604 ------------------------------------------------
605
606  * Detect and bail out on double plaintext messages.  This is required
607    so that applications can properly detect the signed parts of a
608    message.  Actual there is now a double protection as GnuPG 1.4.7
609    will detect this case too.
610
611
612 Noteworthy changes in version 1.1.3 (2007-01-29)
613 ------------------------------------------------
614
615  * Fixed a memory leak in gpgme_data_release_and_get_mem.
616
617  * Fixed a bug in Windows command line quoting.
618
619
620 Noteworthy changes in version 1.1.2 (2006-03-02)
621 ------------------------------------------------
622
623  * Fixed a bug in the W32 glib backend.
624
625
626 Noteworthy changes in version 1.1.1 (2006-02-23)
627 ------------------------------------------------
628
629  * Fixed a bug in that the fingerprints of subkeys are not available.
630
631  * Clarified usage of the SECRET flag in key listings.  It is now
632    reset for stub keys.
633
634  * Reading signature notations and policy URLs on key signatures is
635    supported.  They can be found in the new field notations of the
636    gpgme_key_sig_t structure.  This has to be enabled with the keylist
637    mode flag GPGME_KEYLIST_MODE_SIG_NOTATIONS.
638
639  * A new gpgme_free() function solves the problem of using different
640    allocators in a single program.  This function should now be used
641    instead calling free() to release the buffer returned by
642    gpgme_data_release_and_get_mem.  It is recommended that you always
643    do this, but it is only necessary on certain platforms, so backwards
644    compatibility is provided.  In other words: If free() worked for
645    you before, it will keep working.
646
647  * New status codes GPGME_PKA_TRUST_GOOD and GPGME_PKA_TRUST_BAD.
648    They are analyzed by the verify handlers and made available in the
649    new PKA_TRUST and PKA_ADDRESS fields of the signature result structure.
650
651  * Interface changes relative to the 1.1.0 release:
652 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
653 gpgme_key_sig_t                 EXTENDED: New field notations.
654 GPGME_KEYLIST_MODE_SIG_NOTATIONS NEW
655 gpgme_free                      NEW
656 GPGME_STATUS_PKA_TRUST_BAD      NEW
657 GPGME_STATUS_PKA_TRUST_GOOD     NEW
658 gpgme_signature_t               EXTENDED: New field pka_trust.
659 gpgme_signature_t               EXTENDED: New field pka_address.
660 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
661
662
663 Noteworthy changes in version 1.1.0 (2005-10-01)
664 ------------------------------------------------
665
666  * You can now configure the backend engine file name and home
667    directory to be used, as default and per context.
668
669  * Information about the recipients of an encrypted text is now
670    available at decryption time.
671
672  * New status GPGME_STATUS_PLAINTEXT.  This is analyzed by the decrypt
673    and verify handlers, the information about the plaintext filename,
674    if available is made available in the new field file_name of the
675    respective result structure.
676
677  * The code for "automagically detecting the thread library" has been
678    removed from libgpgme.  It is deprecated since version 0.4.3.
679    Since then, you had to link against libgpgme-pthread for
680    applications using pthread and libgpgme-pth for applications using
681    GNU Pth.
682
683    The code was removed because it caused compilation problems on
684    systems where the pthread.h header from GNU Pth is available in
685    addition to the system header (FreeBSD 6 and later for example).
686
687  * "./autogen.sh --build-w32" does now build gpgme.dll.
688
689  * [W32] The environment variable GPGME_DEBUG now uses a semicolon as
690    delimiter.  The standard install directory is used when locating
691    gpg or gpgsm before finally falling back to the hardwired name.
692
693  * There is a new flag for keys and subkeys, is_qualified, which
694    indicates if a key can be used for qualified signatures according
695    to local government regulations.
696
697  * You can associate a filename with a data object using the new
698    function gpgme_data_set_file_name().  This filename will be stored
699    in the output when encrypting or signing the data and will be
700    returned when decrypting or verifying the output data.
701
702  * You can now set notation data at signature creation with the new
703    function gpgme_sig_notation_add().
704
705  * Interface changes relative to the 1.0.3 release:
706 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
707 gpgme_set_engine_info           NEW
708 gpgme_ctx_get_engine_info       NEW
709 gpgme_ctx_set_engine_info       NEW
710 gpgme_recipient_t               NEW
711 gpgme_decrypt_result_t          EXTENDED: New field recipients.
712 gpgme_verify_result_t           EXTENDED: New fields pubkey_algo, hash_algo.
713 gpgme_decrypt_result_t          EXTENDED: New field plaintext_filename.
714 gpgme_verify_result_t           EXTENDED: New field plaintext_filename.
715 GPGME_STATUS_PLAINTEXT          NEW
716 gpgme_key_t                     EXTENDED: New field is_qualified.
717 gpgme_subkey_t                  EXTENDED: New field is_qualified.
718 gpgme_data_get_file_name        NEW
719 gpgme_data_set_file_name        NEW
720 gpgme_sig_notation_flags_t      NEW
721 GPGME_SIG_NOTATION_HUMAN_READABLE NEW
722 GPGME_SIG_NOTATAION_CRITICAL    NEW
723 gpgme_sig_notation_clear        NEW
724 gpgme_sig_notation_add          NEW
725 gpgme_sig_notation_get          NEW
726 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
727
728
729 Noteworthy changes in version 1.0.3 (2005-06-20)
730 ------------------------------------------------
731
732  * Previousy, GPGME would use a default "include certs" of 1.  This
733    has been changed.  Now GPGME will use the crypto backend engines
734    default unless you set the value with gpgme_set_include_certs()
735    explicitely.  A new macro GPGME_INCLUDE_CERTS_DEFAULT can be used
736    as a value to explicitely request the new default behaviour.
737
738    Because the default changes, this is a slight change of the API
739    semantics.  We consider it to be a bug fix.
740
741  * A bug which made GPGME hang has been fixed.  If you have
742    experienced hanging before, please try out this version and let me
743    know if you still experience hanging problems.
744
745  * Interface changes relative to the 0.9.0 release:
746 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
747 gpgme_set_include_certs         CHANGED DEFAULT
748 GPGME_INCLUDE_CERTS_DEFAULT     NEW
749 GPGME_STATUS_SIG_SUBPACKET      NEW
750 GPGME_STATUS_NEED_PASSPHRASE_PIN NEW
751 GPGME_STATUS_SC_OP_FAILURE      NEW
752 GPGME_STATUS_SC_OP_SUCCESS      NEW
753 GPGME_STATUS_CARDCTRL           NEW
754 GPGME_STATUS_BACKUP_KEY_CREATED NEW
755 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
756
757
758 Noteworthy changes in version 1.0.2 (2004-12-28)
759 ------------------------------------------------
760
761  * Changed the license of the library to the GNU Lesser General Public
762    License (LGPL), version 2.1 or later.
763
764
765 Noteworthy changes in version 1.0.1 (2004-10-22)
766 ------------------------------------------------
767
768  * Only bug fixes.
769
770
771 Noteworthy changes in version 1.0.0 (2004-09-30)
772 ------------------------------------------------
773
774  * Version 1.0.0!  We are proud to present you with a thoroughly
775    tested and stable version of the GPGME library.  A big Thank You!
776    to all the people who made this possible.
777
778    The development will be branched into a stable 1.x.y series and the
779    head.
780
781  * The gpgme.m4 macro supports checking the API version.  Just prepend
782    it to the required version string, separated by a colon.  For
783    example, this release has the version "1:1.0.0".  The last release
784    to which this version is (mostly) ABI compatible is "1:0.4.2",
785    which is the default required version.
786
787
788 Noteworthy changes in version 0.9.0 (2004-06-08)
789 ------------------------------------------------
790
791  * The type gpgme_key_t has now a new field keylist_mode that contains
792    the keylist mode that was active at the time the key was retrieved.
793
794  * The type gpgme_decrypt_result_t has a new field "wrong_key_usage"
795    that contains a flag indicating that the key should not have been
796    used for encryption.
797
798  * Verifying a signature of a revoked key gives the correct result now
799    (GPG_ERR_CERT_REVOKED error code).
800
801  * Clarified that the error code GPG_ERR_NO_DATA from the decrypt &
802    verify operations still allows you to look at the signature
803    verification result.
804
805  * Clarified that patterns in keylisting operations have an upper
806    limit, and thus are not suited to list many keys at once by their
807    fingerprint.  Also improve the error message if the pattern is too
808    long for the CMS protocol to handle.
809
810 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
811 gpgme_key_t                     EXTENDED: New field keylist_mode.
812 gpgme_decrypt_result_t          EXTENDED: New field wrong_key_usage.
813 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
814
815
816 Noteworthy changes in version 0.4.7 (2004-04-29)
817 ------------------------------------------------
818
819  * Correctly initialize the fields expired, revoked, invalid, and
820    disabled in the gpgme_key_t structures.
821
822  * A bug fix: The flag wrong_key_usage of gpgme_signature_t was
823    accidently of type int instead unsigned int.
824
825  * Interface changes relative to the 0.4.5 release:
826 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
827 gpgme_signature_t               CHANGED: wrong_key_usage is unsigned int now.
828 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
829
830 Noteworthy changes in version 0.4.6 (2004-04-06)
831 ------------------------------------------------
832
833  * Bug fixes
834
835
836 Noteworthy changes in version 0.4.5 (2004-03-07)
837 ------------------------------------------------
838
839  * GPGME is now compiled with LFS (large file support) by default.
840    This means that _all_ programs using GPGME must be compiled with
841    LFS support enabled by default.  You can do this easily with
842    autoconf, by using the AC_SYS_LARGEFILE macro.  Or you can do this
843    without autoconf by defining the preprocessor symbol
844    _FILE_OFFSET_BITS to 64 (by passing the -D_FILE_OFFSET_BITS=64 to
845    the C compiler command line, or by defining this preprocessor
846    symbol before including any system header files).  For more
847    details, read the section on LFS in the manual.
848
849    Up to now, it was undocumented that GPGME was not using LFS.
850    But the public interfaces use off_t, and file descriptors are
851    exchanged between the application and GPGME.  This was an oversight,
852    and bound to cause troubles in the future.
853
854    Writing GPGME as a dual mode library that seamlessly supports LFS
855    while keeping backwards compatibility is possible, but does not
856    solve the problem: Many applications already expect GPGME to have
857    LFS (they are compiled with off_t being a 64bit value).  This is true
858    in particular for the popular Gtk+ and Qt programs.
859
860    So, although this is an ABI (but not an API) break, we will not
861    change the library version to reflect that.  Because the interfaces
862    affected are probably not used yet in any GPGME 0.4 based
863    application, we don't expect any real failures from this change.
864    In fact, applications already using LFS will have some subtle bugs
865    fixed.
866
867    However, if you encounter an application using GPGME 0.4.x that
868    does _not_ use LFS by default (off_t is a 32bit value), _and_
869    uses at least one of the functions gpgme_data_seek,
870    gpgme_data_new_from_filepart, or a gpgme_data_seek_cb_t with
871    gpgme_data_new_from_cbs, then indeed this library will be ABI
872    incompatible with the program.  As said above, we don't believe
873    such a program exists.  If we are in error, then you have two
874    options: As a quick hack, you can configure GPGME with the
875    --disable-largefile option.  This will revert the change, and GPGME
876    will not use LFS.  However, GPGME will be incompatible with
877    programs that expect GPGME to use LFS.  All applications are
878    required to use LFS when using GPGME, so this is only good as a
879    temporary local work-around.
880
881    The other option is to change the versioning of the library and
882    recompile all applications.  We have reserved a special version of
883    the library for that, so you can do that without expecting a
884    version clash in the future.  Furthermore, everyone who does this
885    will agree on the version to use (this is important for
886    distribution makers).  Read the comment in configure.ac (before
887    LIBGPGME_LT_AGE) if you want to do this.  Please don't do this
888    blindly: As stated above, we think it is unlikely this measure is
889    needed.  Still, it is there if necessary.  If in doubt, contact us
890    and we will give our advise for your specific situation.
891
892  * New key listing mode GPGME_KEYLIST_MODE_VALIDATE for validation of
893    the listed keys.
894
895  * New interface gpgme_cancel() that can be used to cancel
896    asynchronous operations.
897
898  * Interface changes relative to the 0.4.4 release:
899 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
900 gpgme_data_seek_cb_t            CHANGED: off_t is now a largefile type.
901 gpgme_data_seek                 CHANGED: off_t is now a largefile type.
902 gpgme_data_new_from_filepart    CHANGED: off_t is now a largefile type.
903 GPGME_KEYLIST_MODE_VALIDATE     NEW
904 gpgme_cancel                    NEW
905 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
906
907 Noteworthy changes in version 0.4.4 (2004-01-12)
908 ------------------------------------------------
909
910  * The member "class" in gpgme_key_sig_t and gpgme_new_signature_t has
911    been renamed to "sig_class", to avoid clash with C++ compilers.  In
912    the C API, the old name "class" has been preserved for backwards
913    compatibility, but is deprecated.
914
915  * Interface changes relative to the 0.4.3 release:
916 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
917 gpgme_key_sig_t                 CHANGED: class deprecated, use new sig_class.
918 gpgme_new_signature_t           CHANGED: class deprecated, use new sig_class.
919 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
920
921 Noteworthy changes in version 0.4.3 (2003-10-06)
922 ------------------------------------------------
923
924  * libgpgme should not be used for threaded programs anymore.  This
925    never worked reliably in all cases, because you had to
926    be careful about the linking order and libtool wouldn't do that for
927    you automatically.  Instead, now you have to link against
928    libgpgme-pthread for applications using pthread and libgpgme-pth for
929    applications using GNU Pth.
930
931    The old code for automagically detecting the thread library is
932    still part of libgpgme, but it is DEPRECATED.
933
934  * There are new automake macros AM_PATH_GPGME_PTH and
935    AM_PATH_GPGME_PTHREAD, which support checking for thread-enabled
936    versions of GPGME.  They define GPGME_PTH_CFLAGS, GPGME_PTH_LIBS,
937    GPGME_PTHREAD_CFLAGS and GPGME_PTHREAD_LIBS respectively.  These
938    variables of course also include the configuration for the thread
939    package itself.  Alternatively, use libtool.
940
941  * gpgme_strerror_r as a thread safe variant of gpgme_strerror was
942    added.
943
944  * gpgme-config doesn't support setting the prefix or exec prefix
945    anymore.  I don't think it ever worked correctly, and it seems to
946    be pointless.
947
948  * gpgme_get_key fails with GPG_ERR_AMBIGUOUS_NAME if the key ID
949    provided was not unique, instead returning the first matching key.
950
951  * gpgme_key_t and gpgme_subkey_t have a new field, can_authenticate,
952    that indicates if the key can be used for authentication.
953
954  * gpgme_signature_t's status field is now correctly set to an error
955    with error code GPG_ERR_NO_PUBKEY if public key is not found.
956
957  * gpgme_new_signature_t's class field is now an unsigned int, rather
958    than an unsigned long (the old class field is preserved for
959    backwards compatibility).
960
961  * A new function gpgme_set_locale() is provided to allow configuring
962    the locale for the crypto backend.  This is necessary for text
963    terminals so that programs like the pinentry can be started with
964    the right locale settings for the terminal the application is running
965    on, in case the terminal has different settings than the system
966    default (for example, if it is a remote terminal).  You are highly
967    recommended to call the following functions directly after
968    gpgme_check_version:
969
970    #include <locale.h>
971
972    setlocale (LC_ALL, "");
973    gpgme_set_locale (NULL, LC_CTYPE, setlocale (LC_CTYPE, NULL));
974    gpgme_set_locale (NULL, LC_MESSAGES, setlocale (LC_MESSAGES, NULL));
975
976    GPGME can not do this for you, as setlocale is not thread safe, and
977    there is no alternative.
978
979  * The signal action for SIGPIPE is now set to SIG_IGN by
980    gpgme_check_version, instead the first time a crypto engine is
981    started (which is not well defined).
982
983  * In the output of gpgme_hash_algo_name, change RMD160 to RIPEMD160,
984    TIGER to TIGER192, CRC32-RFC1510 to CRC32RFC1510, and CRC24-RFC2440
985    to CRC24RFC2440.  For now, these strings can be used as the MIC
986    parameter for PGP/MIME (if appropriately modified).
987
988  * Interface changes relative to the 0.4.2 release:
989 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
990 gpgme_strerror_t                NEW
991 gpgme_get_key                   CHANGED: Fails correctly if key ID not unique.
992 gpgme_key_t                     EXTENDED: New field can_authenticate.
993 gpgme_subkey_t                  EXTENDED: New field can_authenticate.
994 gpgme_new_signature_t           CHANGED: New type for class field.
995 gpgme_set_locale                NEW
996 gpgme_hash_algo_name            CHANGED: Slight adjustment of algo names.
997 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
998
999 Noteworthy changes in version 0.4.2 (2003-07-30)
1000 ------------------------------------------------
1001
1002  * Allow gpg-error to be in non-standard place when linking the test suite.
1003
1004  * Configure will fail now if gpg-error can not be found.
1005
1006  * Fixed initialized memory backed data objects for writing, which
1007    caused the test program to crash (but only on Mac OS, surprisingly).
1008
1009  * Eliminate use of C99 constructs.
1010
1011  * Small improvements to the manual.
1012
1013
1014 Noteworthy changes in version 0.4.1 (2003-06-06)
1015 ------------------------------------------------
1016
1017  This is the release that 0.4.0 should have been.  There are many
1018  interface changes, please see below for the details.  The changes are
1019  sometimes the result of new functionality, but more often express a
1020  paradigm shift.  Others are an overdue cleanup to get GPGME in line
1021  with the GNU coding standards and to make the interface more
1022  self-consistent.  Here is an overview on the changes:
1023
1024  All types have been renamed to conform to the GNU coding standards,
1025  most of the time by keeping the whole name in lowercase and inserting
1026  underscores between words.
1027
1028  All operations consistently only accept input parameters in their
1029  invocation function, and return only an error code directly.  Further
1030  information about the result of the operation has to be retrieved
1031  afterwards by calling one of the result functions.  This unifies the
1032  synchronous and the asynchronous interface.
1033
1034  The error values have been completely replaced by a more
1035  sophisticated model that allows GPGME to transparently and accurately
1036  report all errors from the other GnuPG components, irregardless of
1037  process boundaries.  This is achieved by using the library
1038  libgpg-errors, which is shared by all GnuPG components.  This library
1039  is now required for GPGME.
1040
1041  The results of all operations are now provided by pointers to C
1042  structs rather than by XML structs or in other ways.
1043
1044  Objects which used to be opaque (for example a key) are now pointers
1045  to accessible structs, so no accessor functions are necessary.
1046
1047  Backward compatibility is provided where it was possible without too
1048  much effort and did not collide with the overall sanitization effort.
1049  However, this is only for ease of transition.  NO DEPRECATED FUNCTION
1050  OR DATA TYPE IS CONSIDERED A PART OF THE API OR ABI AND WILL BE
1051  DROPPED IN THE FUTURE WITHOUT CHANGING THE SONAME OF THE LIBRARY.
1052  Recommendations how to replace deprecated or removed functionality
1053  can be found within the description of each change.
1054
1055  What follows are all changes to the interface and behaviour of GPGME
1056  in detail.
1057
1058  * If gpgme.h is included in sources compiled by GCC 3.1 or later,
1059    deprecated attributes will warn about use of obsolete functions and
1060    type definitions.  You can suppress these warnings by passing
1061    -Wno-deprecated-declarations to the gcc command.
1062
1063  * The following types have been renamed.  The old types are still
1064    available as aliases, but they are deprecated now:
1065    Old name:            New name:
1066    GpgmeCtx             gpgme_ctx_t
1067    GpgmeData            gpgme_data_t
1068    GpgmeError           gpgme_error_t
1069    GpgmeDataEncoding    gpgme_data_encoding_t
1070    GpgmeSigStat         gpgme_sig_stat_t
1071    GpgmeSigMode         gpgme_sig_mode_t
1072    GpgmeAttr            gpgme_attr_t
1073    GpgmeValidity        gpgme_validity_t
1074    GpgmeProtocol        gpgme_protocol_t
1075    GpgmeKey             gpgme_key_t
1076    GpgmePassphraseCb    gpgme_passphrase_cb_t
1077    GpgmeProgressCb      gpgme_progress_cb_t
1078    GpgmeIOCb            gpgme_io_cb_t
1079    GpgmeRegisterIOCb    gpgme_register_io_cb_t
1080    GpgmeRemoveIOCb      gpgme_remove_io_cb_t
1081    GpgmeEventIO         gpgme_event_io_t
1082    GpgmeEventIOCb       gpgme_event_io_cb_t
1083    GpgmeIOCbs           gpgme_io_cbs
1084    GpgmeDataReadCb      gpgme_data_read_cb_t
1085    GpgmeDataWriteCb     gpgme_data_write_cb_t
1086    GpgmeDataSeekCb      gpgme_data_seek_cb_t
1087    GpgmeDataReleaseCb   gpgme_data_release_cb_t
1088    GpgmeDataCbs         gpgme_data_cbs_t
1089    GpgmeTrustItem       gpgme_trust_item_t
1090    GpgmeStatusCode      gpgme_status_code_t
1091
1092  * gpgme_error_t is now identical to gpg_error_t, the error type
1093    provided by libgpg-error.  More about using libgpg-error with GPGME
1094    can be found in the manual.  All error symbols have been removed!
1095
1096  * All functions and types in libgpg-error have been wrapped in GPGME.
1097    The new types are gpgme_err_code_t and gpgme_err_source_t.  The new
1098    functions are gpgme_err_code, gpgme_err_source, gpgme_error,
1099    gpgme_err_make, gpgme_error_from_errno, gpgme_err_make_from_errno,
1100    gpgme_err_code_from_errno, gpgme_err_code_to_errno,
1101    gpgme_strsource.
1102
1103  * GPGME_ATTR_IS_SECRET is not anymore representable as a string.
1104
1105  * GnuPG 1.2.2 is required.  The progress callback is now also invoked
1106    for encrypt, sign, encrypt-sign, decrypt, verify, and
1107    decrypt-verify operations.  For verify operations on detached
1108    signatures, the progress callback is invoked for both the detached
1109    signature and the plaintext message, though.
1110
1111  * gpgme_passphrase_cb_t has been changed to not provide a complete
1112    description, but the UID hint, passphrase info and a flag
1113    indicating if this is a repeated attempt individually, so the user
1114    can compose his own description from this information.
1115
1116    The passphrase is not returned as a C string, but must be written
1117    to a file descriptor directly.  This allows for secure passphrase
1118    entries.
1119
1120    The return type has been changed to gpgme_error_t value.  This
1121    allowed to remove the gpgme_cancel function; just return
1122    the error code GPG_ERR_CANCELED in the passphrase callback directly.
1123
1124  * gpgme_edit_cb_t has been changed to take a file descriptor argument.
1125    The user is expected to write the response to the file descriptor,
1126    followed by a newline.
1127
1128  * The recipients interface has been removed.  Instead, you use
1129    NULL-terminated lists of keys for specifying the recipients of an
1130    encryption operation.  Use the new encryption flag
1131    GPGME_ENCRYPT_ALWAYS_TRUST if you want to override the validity of
1132    the keys (but note that in general this is not a good idea).
1133
1134    This change has been made to the prototypes of gpgme_op_encrypt,
1135    gpgme_op_encrypt_start, gpgme_op_encrypt_sign and
1136    gpgme_op_encrypt_sign_start.
1137
1138    The export interface has been changed to use pattern strings like
1139    the keylist interface.  Thus, new functions gpgme_op_export_ext and
1140    gpgme_op_export_ext_start have been added as well.  Now the
1141    prototypes of gpgme_op_export_start and gpgme_op_export finally
1142    make sense.
1143
1144  * gpgme_op_verify and gpgme_op_decrypt_verify don't return a status
1145    summary anymore.  Use gpgme_get_sig_status to retrieve the individual
1146    stati.
1147
1148  * gpgme_io_cb_t changed from a void function to a function returning
1149    a gpgme_error_t value.  However, it will always return 0, so you
1150    can safely ignore the return value.
1151
1152  * A new I/O callback event GPGME_EVENT_START has been added.  The new
1153    requirement is that you must wait until this event until you are
1154    allowed to call the I/O callback handlers previously registered for
1155    this context operation.  Calling I/O callback functions for this
1156    context operation before the start event happened is unsafe because
1157    it can lead to race conditions in a multi-threaded environment.
1158
1159  * The idle function feature has been removed.  It was not precisely
1160    defined in a multi-threaded environment and is obsoleted by the
1161    user I/O callback functions.  If you still need a simple way to
1162    call something while waiting on one or multiple asynchronous
1163    operations to complete, don't set the HANG flag in gpgme_wait (note
1164    that this will return to your program more often than the idle
1165    function did).
1166
1167  * gpgme_wait can return NULL even if hang is true, if an error
1168    occurs.  In that case *status contains the error code.
1169
1170  * gpgme_get_engine_info was radically changed.  Instead an XML
1171    string, an info structure of the new type gpgme_engine_info_t is
1172    returned.  This makes it easier and more robust to evaluate the
1173    information in an application.
1174
1175  * The new function gpgme_get_protocol_name can be used to convert a
1176    gpgme_protocol_t value into a string.
1177
1178  * The status of a context operation is not checked anymore.  Starting
1179    a new operation will silently cancel the previous one.  Calling a
1180    function that requires you to have started an operation before without
1181    doing so is undefined.
1182
1183  * The FPR argument to gpgme_op_genkey was removed.  Instead, use the
1184    gpgme_op_genkey_result function to retrieve a gpgme_genkey_result_t
1185    pointer to a structure which contains the fingerprint.  This also
1186    works with gpgme_op_genkey_start.  The structure also provides
1187    other information about the generated keys.
1188
1189    So, instead:
1190
1191    char *fpr;
1192    err = gpgme_op_genkey (ctx, NULL, NULL, &fpr);
1193    if (!err && fpr)
1194      printf ("%s\n", fpr);
1195
1196    you should now do:
1197
1198    gpgme_genkey_result_t result;
1199    err = gpgme_op_genkey (ctx, NULL, NULL);
1200    if (!err)
1201      {
1202        result = gpgme_op_genkey_result (ctx);
1203        if (result->fpr)
1204          printf ("%s\n", result->fpr);
1205      }
1206
1207  * The new gpgme_op_import_result function provides detailed
1208    information about the result of an import operation in
1209    gpgme_import_result_t and gpgme_import_status_t objects.
1210    Thus, the gpgme_op_import_ext variant is deprecated.
1211
1212  * The new gpgme_op_sign_result function provides detailed information
1213    about the result of a signing operation in gpgme_sign_result_t,
1214    gpgme_invalid_key_t and gpgme_new_signature_t objects.
1215
1216  * The new gpgme_op_encrypt_result function provides detailed
1217    information about the result of an encryption operation in
1218    a GpgmeEncryptResult object.
1219
1220  * The new gpgme_op_decrypt_result function provides detailed
1221    information about the result of a decryption operation in
1222    a GpgmeDecryptResult object.
1223
1224  * The new gpgme_op_verify_result function provides detailed
1225    information about the result of an verify operation in
1226    a GpgmeVerifyResult object.  Because of this, the GPGME_SIG_STAT_*
1227    values, gpgme_get_sig_status, gpgme_get_sig_ulong_attr,
1228    gpgme_get_sig_string_attr and gpgme_get_sig_key are now deprecated,
1229    and gpgme_get_notation is removed.
1230
1231  * GpgmeTrustItem objects have now directly accessible data, so the
1232    gpgme_trust_item_get_string_attr and gpgme_trust_item_get_ulong_attr
1233    accessor functions are deprecated.  Also, reference counting is
1234    available through gpgme_trust_item_ref and gpgme_trust_item_unref
1235    (the gpgme_trust_item_release alias for the latter is deprecated).
1236
1237  * Keys are not cached internally anymore, so the force_update argument
1238    to gpgme_get_key has been removed.
1239
1240  * GpgmeKey objects have now directly accessible data so the
1241    gpgme_key_get_string_attr, gpgme_key_get_ulong_attr,
1242    gpgme_key_sig_get_string_attr and gpgme_key_sig_get_ulong_attr
1243    functions are deprecated.  Also, gpgme_key_release is now
1244    deprecated.  The gpgme_key_get_as_xml function has been dropped.
1245
1246  * Because all interfaces using attributes are deprecated, the
1247    GpgmeAttr data type is also deprecated.
1248
1249  * The new gpgme_op_keylist_result function provides detailed
1250    information about the result of a key listing operation in
1251    a GpgmeKeyListResult object.
1252
1253  * Now that each function comes with its own result retrieval
1254    interface, the generic gpgme_get_op_info interface is not useful
1255    anymore and dropped.
1256
1257  * The type and mode of data objects is not available anymore.
1258
1259  * Interface changes relative to the 0.4.0 release:
1260 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1261 GpgmeCtx                        DEPRECATED: Use gpgme_ctx_t.
1262 GpgmeData                       DEPRECATED: Use gpgme_data_t.
1263 GpgmeError                      DEPRECATED: Use gpgme_error_t.
1264 GpgmeDataEncoding               DEPRECATED: Use gpgme_data_encoding_t.
1265 GpgmeSigStat                    DEPRECATED: Use gpgme_sig_stat_t.
1266 GpgmeSigMode                    DEPRECATED: Use gpgme_sig_mode_t.
1267 GpgmeAttr                       DEPRECATED: Use gpgme_attr_t.
1268 GpgmeValidity                   DEPRECATED: Use gpgme_validity_t.
1269 GpgmeProtocol                   DEPRECATED: Use gpgme_protocol_t.
1270 GpgmeKey                        DEPRECATED: Use gpgme_key_t.
1271 GpgmePassphraseCb               DEPRECATED: Use gpgme_passphrase_cb_t.
1272 GpgmeProgressCb                 DEPRECATED: Use gpgme_progress_cb_t.
1273 GpgmeIOCb                       DEPRECATED: Use gpgme_io_cb_t.
1274 GpgmeRegisterIOCb               DEPRECATED: Use gpgme_register_io_cb_t.
1275 GpgmeRemoveIOCb                 DEPRECATED: Use gpgme_remove_io_cb_t.
1276 GpgmeEventIO                    DEPRECATED: Use gpgme_event_io_t.
1277 GpgmeEventIOCb                  DEPRECATED: Use gpgme_event_io_cb_t.
1278 GpgmeIOCbs                      DEPRECATED: Use gpgme_io_cbs.
1279 GpgmeDataReadCb                 DEPRECATED: Use gpgme_data_read_cb_t.
1280 GpgmeDataWriteCb                DEPRECATED: Use gpgme_data_write_cb_t.
1281 GpgmeDataSeekCb                 DEPRECATED: Use gpgme_data_seek_cb_t.
1282 GpgmeDataReleaseCb              DEPRECATED: Use gpgme_data_release_cb_t.
1283 GpgmeDataCbs                    DEPRECATED: Use gpgme_data_cbs_t.
1284 GpgmeTrustItem                  DEPRECATED: Use gpgme_trust_item_t.
1285 GpgmeStatusCode                 DEPRECATED: Use gpgme_status_code_t.
1286 gpgme_ctx_t                     NEW
1287 gpgme_data_t                    NEW
1288 gpgme_recipients_t              NEW
1289 gpgme_error_t                   NEW
1290 gpgme_data_encoding_t           NEW
1291 gpgme_sig_stat_t                NEW
1292 gpgme_sig_mode_t                NEW
1293 gpgme_attr_t                    NEW
1294 gpgme_validity_t                NEW
1295 gpgme_protocol_t                NEW
1296 gpgme_key_t                     NEW
1297 gpgme_passphrase_cb_t           NEW
1298 gpgme_progress_cb_t             NEW
1299 gpgme_io_cb_t                   NEW
1300 gpgme_register_io_cb_t          NEW
1301 gpgme_remove_io_cb_t            NEW
1302 gpgme_event_io_t                NEW
1303 gpgme_event_io_cb_t             NEW
1304 gpgme_io_cbs                    NEW
1305 gpgme_data_read_cb_t            NEW
1306 gpgme_data_write_cb_t           NEW
1307 gpgme_data_seek_cb_t            NEW
1308 gpgme_data_release_cb_t         NEW
1309 gpgme_data_cbs_t                NEW
1310 gpgme_trust_item_t              NEW
1311 gpgme_status_code_t             NEW
1312 GPGME_{some error code}         REMOVED! Use GPG_ERR_* from libgpg-error.
1313 gpgme_err_code_t                NEW
1314 gpgme_err_source_t              NEW
1315 gpgme_err_code                  NEW
1316 gpgme_err_source                NEW
1317 gpgme_error                     NEW
1318 gpgme_err_make                  NEW
1319 gpgme_error_from_errno          NEW
1320 gpgme_err_make_from_errno       NEW
1321 gpgme_err_code_from_errno       NEW
1322 gpgme_err_code_to_errno         NEW
1323 gpgme_strsource                 NEW
1324 gpgme_io_cb_t                   CHANGED: Return type from void to GpgmeError.
1325 gpgme_event_io_t                CHANGED: New event type (all numbers changed).
1326 gpgme_passphrase_cb_t           CHANGED: Desc decomposed, write directly to FD.
1327 gpgme_edit_cb_t                 CHANGED: Write directly to FD.
1328 gpgme_key_get_string_attr       CHANGED: Don't handle GPGME_ATTR_IS_SECRET.
1329 gpgme_op_verify                 CHANGED: Drop R_STAT argument.
1330 gpgme_op_decrypt_verify         CHANGED: Drop R_STAT argument.
1331 gpgme_wait                      CHANGED: Can return NULL even if hang is true.
1332 GpgmeIdleFunc                   REMOVED
1333 gpgme_register_idle             REMOVED
1334 GpgmeRecipients                 REMOVED
1335 gpgme_recipients_new            REMOVED
1336 gpgme_recipients_release        REMOVED
1337 gpgme_recipients_add_name       REMOVED
1338 gpgme_recipients_add_name_with_validity REMOVED
1339 gpgme_recipients_count          REMOVED
1340 gpgme_recipients_enum_open      REMOVED
1341 gpgme_recipients_enum_read      REMOVED
1342 gpgme_recipients_enum_close     REMOVED
1343 gpgme_encrypt_flags_t           NEW
1344 GPGME_ENCRYPT_ALWAYS_TRUST      NEW
1345 gpgme_op_encrypt                CHANGED: Recipients passed as gpgme_key_t[].
1346 gpgme_op_encrypt_start          CHANGED: Recipients passed as gpgme_key_t[].
1347 gpgme_op_encrypt_sign           CHANGED: Recipients passed as gpgme_key_t[].
1348 gpgme_op_encrypt_sign_start     CHANGED: Recipients passed as gpgme_key_t[].
1349 gpgme_op_export_start           CHANGED: User IDs passed as patterns.
1350 gpgme_op_export                 CHANGED: User IDs passed as patterns.
1351 gpgme_op_export_ext_start       NEW
1352 gpgme_op_export_ext             NEW
1353 gpgme_keylist_mode_t            NEW
1354 gpgme_sigsum_t                  NEW
1355 gpgme_engine_info_t             NEW
1356 gpgme_get_engine_info           CHANGED: Return info structure instead XML.
1357 gpgme_get_protocol_name         NEW
1358 gpgme_cancel                    REMOVED: Return error in callback directly.
1359 gpgme_op_genkey                 CHANGED: FPR argument dropped.
1360 gpgme_op_genkey_result          NEW
1361 gpgme_genkey_result_t           NEW
1362 gpgme_op_import_ext             DEPRECATED: Use gpgme_op_import_result.
1363 gpgme_op_import_result          NEW
1364 gpgme_import_status_t           NEW
1365 gpgme_import_result_t           NEW
1366 gpgme_pubkey_algo_t             NEW
1367 gpgme_hash_algo_t               NEW
1368 gpgme_invalid_key_t             NEW
1369 gpgme_new_signature_t           NEW
1370 gpgme_sign_result_t             NEW
1371 gpgme_op_sign_result            NEW
1372 gpgme_pubkey_algo_name          NEW
1373 gpgme_hash_algo_name            NEW
1374 gpgme_encrypt_result_t          NEW
1375 gpgme_op_encrypt_result         NEW
1376 gpgme_decrypt_result_t          NEW
1377 gpgme_op_decrypt_result         NEW
1378 gpgme_verify_result_t           NEW
1379 gpgme_op_verify_result          NEW
1380 gpgme_get_notation              REMOVED: Access verify result directly instead.
1381 gpgme_get_sig_key               DEPRECATED: Use gpgme_get_key with fingerprint.
1382 gpgme_get_sig_ulong_attr        DEPRECATED: Use verify result directly.
1383 gpgme_get_sig_string_attr       DEPRECATED: Use verify result directly.
1384 GPGME_SIG_STAT_*                DEPRECATED: Use error value in sig status.
1385 gpgme_get_sig_status            DEPRECATED: Use verify result directly.
1386 gpgme_trust_item_t              CHANGED: Now has user accessible data members.
1387 gpgme_trust_item_ref            NEW
1388 gpgme_trust_item_unref          NEW
1389 gpgme_trust_item_release        DEPRECATED: Use gpgme_trust_item_unref.
1390 gpgme_trust_item_get_string_attr DEPRECATED
1391 gpgme_trust_item_get_ulong_attr DEPRECATED
1392 gpgme_get_key                   CHANGED: Removed force_update argument.
1393 gpgme_subkey_t                  NEW
1394 gpgme_key_sig_t                 NEW
1395 gpgme_user_id_t                 NEW
1396 gpgme_key_t                     CHANGED: Now has user accessible data members.
1397 gpgme_key_get_string_attr       DEPRECATED
1398 gpgme_key_get_ulong_attr        DEPRECATED
1399 gpgme_key_sig_get_string_attr   DEPRECATED
1400 gpgme_key_sig_get_ulong_attr    DEPRECATED
1401 gpgme_key_get_as_xml            REMOVED
1402 gpgme_key_list_result_t         NEW
1403 gpgme_op_keylist_result         NEW
1404 gpgme_get_op_info               REMOVED
1405 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1406
1407 Noteworthy changes in version 0.4.0 (2002-12-23)
1408 ------------------------------------------------
1409
1410  * Key generation returns the fingerprint of the generated key.
1411
1412  * New convenience function gpgme_get_key.
1413
1414  * Supports signatures of user IDs in keys via the new
1415    GPGME_KEYLIST_MODE_SIGS keylist mode and the
1416    gpgme_key_sig_get_string_attr and gpgme_key_sig_get_ulong_attr
1417    interfaces.  The XML info about a key also includes the signatures
1418    if available.
1419
1420  * New data object interface, which is more flexible and transparent.
1421
1422  * Interface changes relative to the 0.3.9 release:
1423 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1424 GpgmeDataReadCb                 NEW
1425 GpgmeDataWriteCb                NEW
1426 GpgmeDataSeekCb                 NEW
1427 GpgmeDataReleaseCb              NEW
1428 GpgmeDataCbs                    NEW
1429 gpgme_data_read                 CHANGED: Match read() closely.
1430 gpgme_data_write                CHANGED: Match write() closely.
1431 gpgme_data_seek                 NEW
1432 gpgme_data_new_from_fd          NEW
1433 gpgme_data_new_from_stream      NEW
1434 gpgme_data_new_from_cbs         NEW
1435 gpgme_data_rewind               DEPRECATED: Replaced by gpgme_data_seek().
1436 gpgme_data_new_from_read_cb     DEPRECATED: Replaced by gpgme_data_from_cbs().
1437 gpgme_data_get_type             REMOVED: No replacement.
1438 gpgme_op_verify                 CHANGED: Take different data objects for
1439                                 signed text and plain text.
1440 gpgme_op_verify_start           CHANGED: See gpgme_op_verify.
1441 gpgme_check_engine              REMOVED: Deprecated since 0.3.0.
1442 gpgme_op_genkey                 CHANGED: New parameter FPR.
1443 GPGME_KEYLIST_MODE_SIGS         NEW
1444 gpgme_key_sig_get_string_attr   NEW
1445 gpgme_key_sig_get_ulong_attr    NEW
1446 gpgme_get_key                   NEW
1447 GPGME_ATTR_SIG_CLASS            NEW
1448 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1449
1450 Noteworthy changes in version 0.3.16 (2003-11-19)
1451 -------------------------------------------------
1452
1453  * Compatibility fixes for GnuPG 1.9.x
1454
1455 Noteworthy changes in version 0.3.15 (2003-02-18)
1456 -------------------------------------------------
1457
1458  * The progress status is sent via the progress callbacks in
1459    gpgme_op_edit.
1460
1461  * Bug fix for signing operations with explicit signer settings for
1462    the CMS protocol.
1463
1464 Noteworthy changes in version 0.3.14 (2002-12-04)
1465 -------------------------------------------------
1466
1467  * GPGME-Plug is now in its own package "cryptplug".
1468
1469  * Workaround for a setlocale problem.  Fixed a segv related to not
1470    correctly as closed marked file descriptors.
1471
1472 Noteworthy changes in version 0.3.13 (2002-11-20)
1473 -------------------------------------------------
1474
1475  * Release due to changes in gpgmeplug.
1476
1477 Noteworthy changes in version 0.3.12 (2002-10-15)
1478 -------------------------------------------------
1479
1480  * Fixed some bux with key listings.
1481
1482  * The development has been branched to clean up some API issues.
1483    This 0.3 series will be kept for compatibility reasons; so do don't
1484    expect new features.
1485
1486 Noteworthy changes in version 0.3.11 (2002-09-20)
1487 -------------------------------------------------
1488
1489  * Bug fixes.
1490
1491 Noteworthy changes in version 0.3.10 (2002-09-02)
1492 -------------------------------------------------
1493
1494  * Setting the signing keys for the CMS protocol does now work.
1495
1496  * The signers setting is honoured by gpgme_op_edit.
1497
1498 Noteworthy changes in version 0.3.9 (2002-08-21)
1499 ------------------------------------------------
1500
1501  * A spec file for creating RPMs has been added.
1502
1503  * An experimental interface to GnuPG's --edit-key functionality is
1504    introduced, see gpgme_op_edit.
1505
1506  * The new gpgme_import_ext function provides a convenient access to
1507    the number of processed keys.
1508
1509  * Interface changes relative to the 0.3.8 release:
1510 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1511 GpgmeStatusCode                 NEW
1512 GpgmeEditCb                     NEW
1513 gpgme_op_edit_start             NEW
1514 gpgme_op_edit                   NEW
1515 gpgme_op_import_ext             NEW
1516 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1517
1518 Noteworthy changes in version 0.3.8 (2002-06-25)
1519 ------------------------------------------------
1520
1521  * It is possible to use an outside event loop for the I/O to the
1522    crypto engine by setting the I/O callbacks with gpgme_set_io_cbs.
1523
1524  * Interface changes relative to the 0.3.6 release:
1525 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1526 GpgmeIOCb                       NEW
1527 GpgmeRegisterIOCb               NEW
1528 GpgmeRemoveIOCb                 NEW
1529 GpgmeEventIO                    NEW
1530 GpgmeEventIOCb                  NEW
1531 struct GpgmeIOCbs               NEW
1532 gpgme_set_io_cbs                NEW
1533 gpgme_get_io_cbs                NEW
1534 GPGME_ATTR_ERRTOK               NEW
1535 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1536
1537 Noteworthy changes in version 0.3.7 (2002-06-04)
1538 ------------------------------------------------
1539
1540  * GPGME_ATTR_OTRUST is implemented now.
1541
1542  * A first step toward thread safeness has been achieved, see the
1543    documentation for details.  Supported thread libraries are pthread
1544    and Pth.
1545
1546 Noteworthy changes in version 0.3.6 (2002-05-03)
1547 ------------------------------------------------
1548
1549  * All error output of the gpgsm backend is send to the bit bucket.
1550
1551  * The signature verification functions are extended.  Instead of
1552    always returning GPGME_SIG_STATUS_GOOD, the functions new codes for
1553    expired signatures.  2 new functions may be used to retrieve more
1554    detailed information like the signature expiration time and a
1555    validity information of the key without an extra key looking.
1556
1557  * The current passphrase callback and progress meter callback can be
1558    retrieved with the new functions gpgme_get_passphrase_cb and
1559    gpgme_get_progress_cb respectively.
1560
1561  * Interface changes relative to the 0.3.5 release:
1562 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1563 gpgme_get_passphrase_cb         NEW
1564 gpgme_get_progress_cb           NEW
1565 GpgmeDataEncoding               NEW
1566 gpgme_data_set_encoding         NEW
1567 gpgme_data_get_encoding         NEW
1568 GPGME_SIG_STAT_GOOD_EXP         NEW
1569 GPGME_SIG_STAT_GOOD_EXPKEY      NEW
1570 gpgme_op_verify                 CHANGED: Returns more status codes.
1571 GPGME_ATTR_SIG_STATUS           NEW
1572 gpgme_get_sig_string_attr       NEW
1573 gpgme_get_sig_ulong_attr        NEW
1574 gpgme_get_protocol              NEW
1575 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1576
1577 Noteworthy changes in version 0.3.5 (2002-04-01)
1578 ------------------------------------------------
1579
1580  * gpgme_op_encrypt can be called with RECIPIENTS being 0.  In this
1581    case, symmetric encryption is performed.  Note that this requires a
1582    passphrase from the user.
1583
1584  * More information is returned for X.509 certificates.
1585
1586  * Interface changes relative to the 0.3.4 release:
1587 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1588 gpgme_op_encrypt                EXTENDED: Symmetric encryption possible
1589 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1590
1591 Noteworthy changes in version 0.3.4 (2002-03-04)
1592 ------------------------------------------------
1593
1594  * gpgme_op_encrypt does now fail with GPGME_Invalid_Recipients if
1595    some recipients have been invalid, whereas earlier versions
1596    succeeded in this case.  The plaintext is still encrypted for all valid
1597    recipients, so the application might take this error as a hint that
1598    the ciphertext is not usable for all requested recipients.
1599    Information about invalid recipients is available with gpgme_get_op_info.
1600
1601  * gpgme_op_verify now allows to pass an uninitialized data object as
1602    its plaintext argument to check for normal and cleartext
1603    signatures.  The plaintext is then returned in the data object.
1604
1605  * New interfaces gpgme_set_include_certs and gpgme_get_include_certs
1606    to set and get the number of certifications to include in S/MIME
1607    signed messages.
1608
1609  * New interfaces gpgme_op_encrypt_sign and gpgme_op_encrypt_sign_start
1610    to encrypt and sign a message in a combined operation.
1611
1612  * New interface gpgme_op_keylist_ext_start to search for multiple patterns.
1613
1614  * gpgme_key_get_ulong_attr supports the GPGME_ATTR_EXPIRE attribute.
1615
1616  * Interface changes relative to the 0.3.3 release:
1617 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1618 gpgme_op_encrypt                CHANGED: Can fail with GPGME_Invalid_Recipients
1619 gpgme_op_verify                 EXTENDED: Accepts uninitialized text argument
1620 gpgme_key_get_ulong_attr        EXTENDED: Supports GPGME_ATTR_EXPIRE
1621 gpgme_set_include_certs         NEW
1622 gpgme_get_include_certs         NEW
1623 gpgme_op_encrypt_sign           NEW
1624 gpgme_op_encrypt_sign_start     NEW
1625 gpgme_op_keylist_ext_start      NEW
1626 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1627
1628 Noteworthy changes in version 0.3.3 (2002-02-12)
1629 ------------------------------------------------
1630
1631  * Fix the Makefile in jnlib.
1632
1633  * Fix the test suite (hopefully).  It should clean up all its state
1634    with `make check' now.
1635
1636
1637 Noteworthy changes in version 0.3.2 (2002-02-10)
1638 ------------------------------------------------
1639
1640  * Remove erroneous dependency on libgcrypt in jnlib.
1641
1642
1643 Noteworthy changes in version 0.3.1 (2002-02-09)
1644 ------------------------------------------------
1645
1646  * There is a Texinfo manual documenting the API.
1647
1648  * The gpgme_set_keylist_mode function returns an error, and changed
1649    its meaning.  It is no longer usable to select between normal and
1650    fast mode (newer versions of GnuPG will always be fast), but
1651    selects between local keyring, remote keyserver, or both.
1652    For this, two new macros are defined, GPGME_KEYLIST_MODE_LOCAL
1653    and GPGME_KEYLIST_MODE_EXTERN.  To make it possible to modify the
1654    current setting, a fucntion gpgme_get_keylist_mode was added to
1655    retrieve the current mode.
1656
1657  * gpgme_wait accepts a new argument STATUS to return the error status
1658    of the operation on the context.  Its definition is closer to
1659    waitpid() now than before.
1660
1661  * The LENGTH argument to gpgme_data_new_from_filepart changed its
1662    type from off_t to the unsigned size_t.
1663
1664  * The R_HD argument to the GpgmePassphraseCb type changed its type
1665    from void* to void**.
1666
1667  * New interface gpgme_op_trustlist_end() to match
1668    gpgme_op_keylist_end().
1669
1670  * The CryptPlug modules have been renamed to gpgme-openpgp and
1671    gpgme-smime, and they are installed in pkglibdir by `make install'.
1672
1673  * An idle function can be registered with gpgme_register_idle().
1674
1675  * The GpgSM backend supports key generation with gpgme_op_genkey().
1676
1677  * Interface changes relative to the 0.3.0 release:
1678 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1679 gpgme_data_new_from_filepart    CHANGED: Type of LENGTH is size_t.
1680 GpgmePassphraseCb               CHANGED: Type of R_HD is void **.
1681 gpgme_wait                      CHANGED: New argument STATUS.
1682 gpgme_set_keylist_mode          CHANGED: Type of return value is GpgmeError.
1683                                 The function has a new meaning!
1684 gpgme_get_keylist_mode          NEW
1685 GPGME_KEYLIST_MODE_LOCAL        NEW
1686 GPGME_KEYLIST_MODE_EXTERN       NEW
1687 gpgme_op_trustlist_next         NEW
1688 GpgmeIdleFunc                   NEW
1689 gpgme_register_idle             NEW
1690 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1691
1692 Noteworthy changes in version 0.3.0 (2001-12-19)
1693 ------------------------------------------------
1694
1695  * New interface gpgme_set_protocol() to set the protocol and thus the
1696    crypto engine to be used by the context.  Currently, the OpenPGP
1697    and the CMS protocols are supported.  They are specified by the new
1698    preprocessor symbols GPGME_PROTOCOL_OpenPGP and GPGME_PROTOCOL_CMS.
1699    A new context uses the OpenPGP engine by default.
1700
1701  * gpgme_get_engine_info() returns information for all crypto engines
1702    compiled into the library.  The XML format has changed.  To
1703    reliably get the version of a crypto engine, the <version> tag
1704    after the appropriate <protocol> tag has to be looked for.
1705
1706  * New interface gpgme_engine_check_version(), obsoleting
1707    gpgme_check_engine().  Check the version of all engines you are
1708    supporting in your software.
1709
1710  * GpgmeKey lists the user ids in the order as they are returned by
1711    GnuPG, first the primary key with index 0, then the sub-user ids.
1712
1713  * New operation gpgme_op_decrypt_verify() to decrypt and verify
1714    signatures simultaneously.
1715
1716  * The new interface gpgme_op_keylist_end() terminates a pending
1717    keylist operation.  A keylist operation is also terminated when
1718    gpgme_op_keylist_next() returns GPGME_EOF.
1719
1720  * GPGME can be compiled without GnuPG being installed (`--with-gpg=PATH'),
1721    cross-compiled, or even compiled without support for GnuPG
1722    (`--without-gpg').
1723
1724  * GPGME can be compiled with support for GpgSM (GnuPG for S/MIME,
1725    `--with-gpgsm=PATH').  It is enabled by default if the `gpgsm' is found
1726    in the path, but it can also be compiled without support for GpgSM
1727    (`--without-gpgsm').
1728
1729  * CryptPlug modules for GPGME are included and can be enabled at
1730    configure time (`--enable-gpgmeplug').  There is one module which
1731    uses the GnuPG engine (`gpgmeplug') and one module which uses the
1732    GpgSM engine (`gpgsmplug').
1733
1734  * Interface changes relative to the latest 0.2.x release:
1735 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1736 gpgme_key_get_as_xml            CHANGED: Sub-user ids reversed in order.
1737 gpgme_key_get_string_attr       CHANGED: User ids reversed in order.
1738 gpgme_key_get_ulong_attr        CHANGED: User ids reversed in order.
1739 gpgme_get_engine_info           CHANGED: New format, extended content.
1740 gpgme_engine_check_version      NEW
1741 gpgme_decrypt_verify_start      NEW
1742 gpgme_decrypt_verify            NEW
1743 gpgme_op_keylist_next           NEW
1744 gpgme_set_protocol              NEW
1745 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1746
1747
1748 Noteworthy changes in version 0.2.3 (2001-09-17)
1749 ------------------------------------------------
1750
1751  * New function gpgme_get_op_info which can be used to get the micalg
1752    parameter needed for MOSS.
1753
1754  * New functions gpgme_get_armor and gpgme_get_textmode.
1755
1756  * The usual bug fixes and some minor functionality improvements.
1757
1758  * Added a simple encryption component for MS-Windows; however the
1759    build procedure might have some problems.
1760
1761
1762 Noteworthy changes in version 0.2.2 (2001-06-12)
1763 ------------------------------------------------
1764
1765  * Implemented a key cache.
1766
1767  * Fixed a race condition under W32 and some other bug fixes.
1768
1769
1770 Noteworthy changes in version 0.2.1 (2001-04-02)
1771 ------------------------------------------------
1772
1773  * Changed debug output and GPGME_DEBUG variable (gpgme/debug.c)
1774
1775  * Handle GnuPG's new key capabilities output and support revocation
1776    et al. attributes
1777
1778  * Made the W32 support more robust.
1779
1780
1781  Copyright 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009,
1782            2010 g10 Code GmbH
1783
1784  This file is free software; as a special exception the author gives
1785  unlimited permission to copy and/or distribute it, with or without
1786  modifications, as long as this notice is preserved.
1787
1788  This file is distributed in the hope that it will be useful, but
1789  WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
1790  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.