Imported Upstream version 1.17.0
[platform/upstream/gpgme.git] / NEWS
1 Noteworthy changes in version 1.17.0 (2022-02-07)
2 -------------------------------------------------
3
4  * New context flag "key-origin".  [#5733]
5
6  * New context flag "import-filter".  [#5739]
7
8  * New export mode to export secret subkeys.  [#5757]
9
10  * Detect errors during the export of secret keys.  [#5766]
11
12  * New function gpgme_op_receive_keys to import keys from a keyserver
13    without first running a key listing.  [#5808]
14
15  * Detect bad passphrase error in certificate import.  [T5713]
16
17  * Allow setting --key-origin when importing keys.  [T5733]
18
19  * Support components "keyboxd", "gpg-agent", "scdaemon", "dirmngr",
20    "pinentry", and "socketdir" in gpgme_get_dirinfo.  [T5727,T5613]
21
22  * Under Unix use poll(2) instead of select(2), when available.
23    [T2385]
24
25  * Do not use --flat_namespace when linking for macOS.  [T5610]
26
27  * Fix results returned by gpgme_data_* functions.  [T5481]
28
29  * Support closefrom also for glibc.  [rM4b64774b6d]
30
31  * cpp,qt: Add support for export of secret keys and secret subkeys.
32    [#5757]
33
34  * cpp,qt: Support for adding existing subkeys to other keys.  [#5770]
35
36  * qt: Extend ChangeExpiryJob to change expiration of primary key
37    and of subkeys at the same time. [#4717]
38
39  * qt: Expect UTF-8 on stderr on Windows.  [rM8fe1546282]
40
41  * qt: Allow retrieving the default value of a config entry.  [T5515]
42
43  * Interface changes relative to the 1.16.0 release:
44  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
45  gpgme_op_receive_keys                      NEW.
46  gpgme_op_receive_keys_start                NEW.
47  qt: Protocol::secretSubkeyExportJob        NEW.
48  cpp: Context::exportSecretSubkeys          NEW.
49  cpp: Context::startSecretSubkeyExport      NEW.
50  qt: Protocol::secretKeyExportJob      CHANGED: Param 'charset' is ignored.
51  cpp: Context::exportKeys                   NEW.
52  cpp: Context::startKeyExport               NEW.
53  cpp: Context::exportSecretKeys             NEW.
54  cpp: Context::startSecretKeyExport         NEW.
55  cpp: GpgAddExistingSubkeyEditInteractor    NEW.
56  GPGME_EXPORT_MODE_SECRET_SUBKEY            NEW.
57  gpgme_set_ctx_flag                    EXTENDED: New flag 'key-origin'.
58  gpgme_set_ctx_flag                    EXTENDED: New flag 'import-filter'.
59  qt: ChangeExpiryJob::Option                NEW.
60  qt: ChangeExpiryJob::Options               NEW.
61  qt: ChangeExpiryJob::setOptions            NEW.
62  qt: ChangeExpiryJob::options               NEW.
63  qt: AddExistingSubkeyJob                   NEW.
64  qt: Protocol::addExistingSubkeyJob         NEW.
65
66  [c=C37/A26/R0 cpp=C20/A14/R0 qt=C14/A7/R0]
67
68  Release-info: https://dev.gnupg.org/T5819
69
70
71 Noteworthy changes in version 1.16.0 (2021-06-24)
72 -------------------------------------------------
73
74  * New context flag "cert-expire".  [#5505]
75
76  * New data flags "io-buffer-size" and "sensitive".  [#5478]
77
78  * Increase I/O buffer size from 512 to 4k under Windows.
79
80  * cpp,qt: Add support for trust signatures. [#5421]
81
82  * qt: Add support for flags in LDAP server options. [#5217]
83
84  * qt: Fix too high memory consumption due to QProcess.  [#5475]
85
86  * qt: Do not set empty base DN as query of keyserver URL.  [#5465]
87
88  * qt: Extend SignKeyJob to create signatures with expiration date.
89    [5506]
90
91  * python: New optional parameter filter_signatures for decrypt.
92    [#5292]
93
94  * Interface changes relative to the 1.15.1 release:
95  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
96  gpgme_set_ctx_flag                    EXTENDED: New flag 'cert-expire'.
97  cpp: SignKeyJob::setTrustSignature         NEW.
98  cpp: TrustSignatureTrust                   NEW.
99  cpp: GpgSignKeyEditInteractor::setTrustSignatureTrust NEW.
100  cpp: GpgSignKeyEditInteractor::setTrustSignatureDepth NEW.
101  cpp: GpgSignKeyEditInteractor::setTrustSignatureScope NEW.
102  cpp: UserID::Signature::isTrustSignature   NEW.
103  cpp: UserID::Signature::trustValue         NEW.
104  cpp: UserID::Signature::trustDepth         NEW.
105  cpp: UserID::Signature::trustScope         NEW.
106  gpgme_key_sig_t                       EXTENDED: New field 'trust_depth'.
107  gpgme_key_sig_t                       EXTENDED: New field 'trust_value'.
108  gpgme_key_sig_t                       EXTENDED: New field 'trust_scope'.
109  GPGME_KEYSIGN_FORCE                   NEW.
110  qt: CryptoConfig::entry               CHANGED: Added overload; deprecated old
111
112  [c=C36/A25/R0 cpp=C19/A13/R0 qt=C13/A6/R0]
113
114  Release-info: https://dev.gnupg.org/T5499
115
116
117 Noteworthy changes in version 1.15.1 (2021-01-08)
118 -------------------------------------------------
119
120  * Fix another bug in the secret key export.  [#5046]
121
122  * Make listing of signatures work if only secret keys are listed.  [#3580]
123
124  * Fix build problem on FreeBSD.  [a6220adf30]
125
126  * qt: Avoid empty "rem@gnupg.org" signature notations.  [#5142]
127
128  * python: Fix key_export functions.  [#5149]
129
130
131  [c=C35/A24/R1 cpp=C18/A12/R1 qt=C12/A5/R1]
132
133  Release-info: https://dev.gnupg.org/T5225
134
135
136 Noteworthy changes in version 1.15.0 (2020-11-12)
137 -------------------------------------------------
138
139  * New function gpgme_op_setexpire to make changing the expiration
140    easier (requires GnuPG 2.1.22). [#4999]
141
142  * New function gpgme_op_revsig to revoke key signatures (requires
143    GnuPG 2.2.24). [#5094]
144
145  * Support exporting secret keys. [#5046]
146
147  * cpp: Support for set expire operations in the C++ bindings. [#5003]
148
149  * cpp: Support for revoking key signatures in the C++ bindings. [#5094]
150
151  * qt: Extended ChangeExpiryJob to support changing the expiry of
152    subkeys. [#4717]
153
154  * qt: Extended QuickJob to support revoking of key signatures. [#5094]
155
156  * qt: Added QDebug stream operator for GpgME::Error.
157
158  * Require a somewhat newer version of libgpg-error (1.36).
159
160  * Interface changes relative to the 1.14.0 release:
161  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
162  gpgme_op_setexpire_start                   NEW.
163  gpgme_op_setexpire                         NEW.
164  gpgme_op_revsig_start                      NEW.
165  gpgme_op_revsig                            NEW.
166  GPGME_REVSIG_LFSEP                         NEW.
167  cpp: Context::setExpire                    NEW.
168  cpp: Context::startSetExpire               NEW.
169  cpp: EngineInfo::Version::operator<=       NEW.
170  cpp: EngineInfo::Version::operator>=       NEW.
171  cpp: EngineInfo::Version::operator!=       NEW.
172  cpp: StatusConsumer                        NEW.
173  cpp: StatusConsumerAssuanTransaction       NEW.
174  cpp: Context::cancelPendingOperationImmediately NEW.
175  cpp: Context::revokeSignature              NEW.
176  cpp: Context::startRevokeSignature         NEW.
177  cpp: UserID::Signature::operator<          NEW.
178  qt: operator<<(QDebug debug, const GpgME::Error &err) NEW.
179  qt: QuickJob::startRevokeSignature         NEW.
180  qt: QuickJob::result                   CHANGED: Made params 'auditLogAsHtml'
181                                                 and 'auditLogError' optional.
182
183  [c=C35/A24/R0 cpp=C18/A12/R0 qt=C12/A5/R0]
184
185  Release-info: https://dev.gnupg.org/T5131
186
187
188 Noteworthy changes in version 1.14.0 (2020-07-16)
189 -------------------------------------------------
190
191  * New keylist mode to force the engine to return the keygrip. [#4820]
192
193  * New export mode to export as OpenSSH public key.  [#4310]
194
195  * New context flag "extended-edit" to enable expert key edit. [#4734]
196
197  * Deprecate the anyway non working trustlist functions.  [#4834]
198
199  * cpp: Add convenience API to obtain remarks. [#4734]
200
201  * cpp: The sign key edit-interactor now supports multiple signatures
202    from the same key. [#4734]
203
204  * qt: Extended signkeyjob to handle remarks and multiple signatures.
205    [#4734]
206
207  * qt: Added job API for gpg-card.
208
209  * qt: The logging category has been changed to gpg.qgpgme to be more
210        consistent with other qt logging categories.
211
212  * Interface changes relative to the 1.13.1 release:
213  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
214  GPGME_KEYLIST_MODE_WITH_KEYGRIP              NEW.
215  GPGME_EXPORT_MODE_SSH                        NEW.
216  gpgme_user_id_t                         EXTENDED: New field 'uidhash'.
217  cpp: UserID::remark                          NEW.
218  cpp: UserID::remarks                         NEW.
219  cpp: GpgSignKeyEditInteractor::setDupeOk     NEW.
220  cpp: Context::exportPublicKeys          EXTENDED: New param 'flags'.
221  cpp: Context::startPublicKeyExport      EXTENDED: New param 'flags'.
222  cpp: Context::ExportMode                     NEW.
223  qt: SignKeyJob::setDupeOk                    NEW.
224  qt: SignKeyJob::setRemark                    NEW.
225  qt: GpgCardJob                               NEW.
226  qt: ExportJob::setExportFlags                NEW.
227
228  [c=C34/A23/R0 cpp=C17/A11/R0 qt=C11/A4/R0]
229
230  Release-info: https://dev.gnupg.org/T4996
231
232
233 Noteworthy changes in version 1.13.1 (2019-06-13)
234 -------------------------------------------------
235
236  * cpp: gpgme_set_global_flag is now wrapped.  [#4471]
237
238  * w32: Improved handling of unicode install paths.  [#4453]
239
240  * w32: The gpgme_io_spawn error message is now only shown once. [#4453]
241
242  * Fixed a crash introduced in 1.13.0 when working with S/MIME. [#4556]
243
244  * w32: Fixed format string errors introduced in 1.13.0 that could
245    cause crashes.  [#4440]
246
247  * w32: Fixed an error in the new diagnostic gpgsm support introduced
248    in 1.13.0 that caused crashes in low fd scenarios.  [#4439]
249
250  * python: Fixed a DecryptionError Exception.  [#4478]
251
252  * python: No longer raises BadSignatures from decrypt(verify=True).
253    [#4276]
254
255  * Interface changes relative to the 1.13.0 release:
256  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
257  cpp: setGlobalFlag                         NEW.
258
259  [c=C33/A22/R1 cpp=C16/A10/R0 qt=C10/A3/R4]
260
261  Release-info: https://dev.gnupg.org/T4551
262
263
264 Noteworthy changes in version 1.13.0 (2019-03-26)
265 -------------------------------------------------
266
267  * Support GPGME_AUDITLOG_DIAG for gpgsm.  [#4426]
268
269  * New context flag "trust-model".
270
271  * Removed support for WindowsCE and Windows ME.
272
273  * Aligned the gpgrt-config code with our other libaries.
274
275  * Auto-check for all installed Python versions.  [#3354]
276
277  * Fixed generating card key in the C++ bindings.  [#4428]
278
279  * Fixed a segv due to bad parameters in genkey.  [#4192]
280
281  * Fixed crash if the plaintext is ignored in a CMS verify.
282
283  * Fixed memleak on Windows.  [T4238]
284
285  * Tweaked the Windows I/O code.
286
287  * Fixed random crashes on Windows due to closing an arbitrary
288    handle.  [#4237]
289
290  * Fixed a segv on Windows.  [#4369]
291
292  * Fixed test suite problems related to dtags.  [#4298]
293
294  * Fixed bunch of python bugs.  [#4242,commit 9de1c96ac3cf]
295
296  * Several fixes to the Common Lisp bindings.
297
298  * Fixed minor bugs in gpgme-json.  [#4331,#4341,#4342,#4343
299
300  * Require trace level 8 to dump all I/O data.
301
302  * The compiler must now support variadic macros.
303
304  * Interface changes relative to the 1.12.0 release:
305  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
306  gpgme_set_ctx_flag               EXTENDED: New flag 'trust-model'.
307  cpp: Context::create                       NEW.
308  cpp: Key::isBad                            NEW.
309  cpp: Subkey::isBad                         NEW.
310  cpp: UserID::isBad                         NEW.
311  cpp: UserID::Signature::isBad              NEW.
312  cpp: GenCardKeyInteractor::setAlgo         NEW.
313
314  [c=C33/A22/R0 cpp=C15/A9/R0 qt=C10/A3/R3]
315
316  Release-info: https://dev.gnupg.org/T4376
317
318
319 Noteworthy changes in version 1.12.0 (2018-10-08)
320 -------------------------------------------------
321
322  * Enhanced the JSON based interface tool gpgme-json to support Native
323    Messaging as well as new Javascript code to support the browser
324    site.  See lang/js/README for details.
325
326  * Major overhaul of the Python language bindings documentation.
327
328  * Even for old versions of gpg a missing MDC will now lead to a
329    decryption failure.
330
331  * Added context flag "auto-key-locate" to control the
332    behavior of GPGME_KEYLIST_MODE_LOCATE.
333
334  * New data function to create a data object from an estream.
335
336  * Add more interfaces to the C++ bindings.
337
338  * Improved error codes on decryption failure.
339
340  * Lots of minor fixes.
341
342  * Interface changes relative to the 1.11.1 release:
343  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
344  gpgme_data_new_from_estream                NEW.
345  gpgme_decrypt_result_t           EXTENDED: New field legacy_cipher_nomdc.
346  gpgme_set_ctx_flag               EXTENDED: New flag 'ignore-mdc-error'.
347  GPGME_AUDITLOG_DEFAULT                     NEW.
348  GPGME_AUDITLOG_DIAG                        NEW.
349  gpgme_set_ctx_flag               EXTENDED: New flag 'auto-key-locate'.
350  cpp: DecryptionResult::sessionKey          NEW.
351  cpp: DecryptionResult::symkeyAlgo          NEW.
352  cpp: DecryptionResult::isLegacyCipherNoMDC New.
353  cpp: Data::rewind                          NEW.
354  cpp: Context::setFlag                      NEW.
355  cpp: Context::getFlag                      NEW.
356  cpp: Context::createKeyEx                  NEW.
357
358  [c=C32/A21/R0 cpp=C14/A8/R0 qt=C10/A3/R2]
359
360  Release-info: https://dev.gnupg.org/T4109
361
362
363 Noteworthy changes in version 1.11.1 (2018-04-20)
364 -------------------------------------------------
365
366  * Fixed build problems in the 1.11.0 release.
367
368  * Added C++ interfaces which were planned for 1.11.0.
369
370  * Interface changes relative to the 1.10.0 release:
371  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
372  cpp: Key::origin                     NEW.
373  cpp: Key::lastUpdate                 NEW.
374  cpp: UserID::origin                  NEW.
375  cpp: UserID::lastUpdate              NEW.
376
377  [c=C31/A20/R1 cpp=C13/A7/R0 qt=C10/A3/R2]
378
379
380 Noteworthy changes in version 1.11.0 (2018-04-18)
381 -------------------------------------------------
382
383  * New encryption API to support direct key specification including
384    hidden recipients option and taking keys from a file.  This also
385    allows to enforce the use of a subkey.
386
387  * New encryption flag for the new API to enforce the use of plain
388    mail addresses (addr-spec).
389
390  * The import API can now tell whether v3 keys are skipped.  These old
391    and basically broken keys are not anymore supported by GnuPG 2.1.
392
393  * The decrypt and verify API will now return the MIME flag as
394    specified by RFC-4880bis.
395
396  * The offline mode now has an effect on gpg by disabling all network
397    access.  [#3831]
398
399  * A failed OpenPGP verification how returns the fingerprint of the
400    intended key if a recent gpg version was used for signature
401    creation.
402
403  * New tool gpgme-json as native messaging server for web browsers.
404    As of now public key encryption and decryption is supported.
405    Requires Libgpg-error 1.29.
406
407  * New context flag "request-origin" which has an effect when used
408    with GnuPG 2.2.6 or later.
409
410  * New context flag "no-symkey-cache" which has an effect when used
411    with GnuPG 2.2.7 or later.
412
413  * New convenience constant GPGME_KEYLIST_MODE_LOCATE.
414
415  * Improved the Python documentation.
416
417  * Fixed a potential regression with GnuPG 2.2.6 or later.
418
419  * Fixed a crash in the Python bindings on 32 bit platforms.  [#3892]
420
421  * Various minor fixes.
422
423  * Interface changes relative to the 1.10.0 release:
424  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
425  gpgme_op_encrypt_ext             NEW.
426  gpgme_op_encrypt_ext_start       NEW.
427  gpgme_op_encrypt_sign_ext        NEW.
428  gpgme_op_encrypt_sign_ext_start  NEW.
429  GPGME_ENCRYPT_WANT_ADDRESS       NEW.
430  GPGME_KEYLIST_MODE_LOCATE        NEW.
431  gpgme_import_result_t            EXTENDED: New field 'skipped_v3_keys'.
432  gpgme_decrypt_result_t           EXTENDED: New field 'symkey_algo'.
433  gpgme_decrypt_result_t           EXTENDED: New field 'is_mime'.
434  gpgme_verify_result_t            EXTENDED: New field 'is_mime'.
435  cpp: Key::locate                 NEW.
436  cpp: Data::toString              NEW.
437  cpp: ImportResult::numV3KeysSkipped  NEW.
438
439  [c=C31/A20/R0 cpp=C12/A6/R0 qt=C10/A3/R1]
440
441
442 Noteworthy changes in version 1.10.0 (2017-12-12)
443 -------------------------------------------------
444
445  * Now returns more specific error codes for decryption to distinguish
446    between bad passphrase, user canceled, and no secret key.
447
448  * Now returns key origin information if available.
449
450  * Added context flag "auto-key-retrieve" to selectively enable the
451    corresponding gpg option.
452
453  * Added flag is_de_vs to decryption and verify results.
454
455  * py: Use SEEK_SET as default for data.seek.
456
457  * cpp: Various new APIs.
458
459  * Reduced spawn overhead on Linux again.  Added new configure option
460    --disable-linux-getdents to disable this feature for very old
461    Linux versions.
462
463  * Improved the Python bindings build system.
464
465  * Made the test suite less fragile.
466
467  * Interface changes relative to the 1.9.0 release:
468  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
469  gpgme_decrypt_result_t      EXTENDED: New field 'is_de_vs'.
470  gpgme_signature_t           EXTENDED: New field 'is_de_vs'.
471  gpgme_keyorg_t              NEW.
472  gpgme_op_delete_ext         NEW.
473  gpgme_op_delete_ext_start   NEW.
474  GPGME_DELETE_ALLOW_SECRET   NEW.
475  GPGME_DELETE_FORCE          NEW.
476  gpgme_op_conf_dir           NEW.
477  gpgme_set_ctx_flag          EXTENDED: New flag 'auto-key-retrieve'.
478  cpp: DecryptionResult::isDeVs         NEW.
479  cpp: Signature::isDeVs                NEW.
480  cpp: EngineInfo::Version::operator>   NEW.
481  cpp: Context::createKey               NEW.
482  cpp: Context::startCreateKey          NEW.
483  cpp: Context::createSubkey            NEW.
484  cpp: Context::startCreateSubkey       NEW.
485  qt: QuickJob                          NEW.
486  py: DecryptResult           EXTENDED: New boolean field 'is_de_vs'.
487  py: Signature               EXTENDED: New boolean field 'is_de_vs'.
488  py: GpgError                EXTENDED: Partial results in 'results'.
489
490  [c=C30/A19/R0 cpp=C11/A5/R0 qt=C10/A3/R0]
491
492
493 Noteworthy changes in version 1.9.0 (2017-03-28)
494 ------------------------------------------------
495
496  * Clarified meaning of the 'expire' parameter of gpgme_op_createkey
497    and gpgme_op_createsubkey.  New flag to force a key without an
498    expiration date.
499
500  * New function gpgme_op_keylist_from_data_start to list keys from
501    data objects without importing them.
502
503  * New function gpgme_op_set_uid_flag to flag a key as primary.
504
505  * New function gpgme_op_decrypt_ext to run decryption with special
506    flags.  This can for example be used to unwrap keys (remove only
507    the encryption layer).
508
509  * New encryption flags to wrap a key (adding an encryption layer to
510    an OpenPGP message) or to create anonymously encrypted messages.
511
512  * Support for adduid and revuid operations in the C++ bindings.
513
514  * Support for smartcard key generation in the C++ bindings.
515
516  * Several new functions for the Python binding.
517
518  * Many smaller bug fixes.
519
520  * Interface changes relative to the 1.8.0 release:
521  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
522  gpgme_op_createkey          CHANGED: Meaning of 'expire' parameter.
523  gpgme_op_createsubkey       CHANGED: Meaning of 'expire' parameter.
524  GPGME_CREATE_NOEXPIRE       NEW.
525  gpgme_key_t                 EXTENDED: New field 'origin'.
526  gpgme_key_t                 EXTENDED: New field 'last_update'.
527  gpgme_subkey_t              EXTENDED: New field 'is_de_vs'.
528  gpgme_user_id_t             EXTENDED: New field 'origin'.
529  gpgme_user_id_t             EXTENDED: New field 'last_update'.
530  gpgme_op_keylist_from_data_start NEW.
531  gpgme_op_set_uid_flag_start      NEW.
532  gpgme_op_set_uid_flag            NEW.
533  gpgme_op_decrypt_ext_start       NEW.
534  gpgme_op_decrypt_ext             NEW.
535  GPGME_ENCRYPT_THROW_KEYIDS       NEW.
536  GPGME_ENCRYPT_WRAP               NEW.
537  GPGME_DECRYPT_VERIFY             NEW.
538  GPGME_DECRYPT_UNWRAP             NEW.
539  gpgme_data_rewind                UN-DEPRECATE.
540  cpp: Context::revUid(const Key&, const char*)      NEW.
541  cpp: Context::startRevUid(const Key&, const char*) NEW.
542  cpp: Context::addUid(const Key&, const char*)      NEW.
543  cpp: Context::startAddUid(const Key&, const char*) NEW.
544  cpp: Key::UserID::revoke()                         NEW.
545  cpp: Key::addUid()                                 NEW.
546  cpp: Key::isDeVs                                   NEW.
547  cpp: GpgGenCardKeyInteractor                       NEW.
548  cpp: Subkey::keyGrip                               NEW.
549  cpp: Subkey::isDeVs                                NEW.
550  cpp: Data::toKeys                                  NEW.
551  cpp: Context::setDecryptFlags                      NEW.
552  cpp: Context::decrypt                         EXTENDED: Flags added.
553  cpp: Context::startDecrypt                    EXTENDED: Flags added.
554  cpp: Context::decryptAndVerify                EXTENDED: Flags added.
555  cpp: Context::startCombinedDecryptionAndVerification EXTENDED: Flags.
556  cpp: Context::encryptFlags                    EXTENDED: New flags.
557  qt: CryptoConfig::stringValueList()                NEW.
558  py: Context.__init__        EXTENDED: New keyword arg home_dir.
559  py: Context.home_dir        NEW.
560  py: Context.keylist         EXTENDED: New keyword arg mode.
561  py: Context.keylist         EXTENDED: New keyword arg source.
562  py: Context.create_key      NEW.
563  py: Context.create_subkey   NEW.
564  py: Context.key_add_uid     NEW.
565  py: Context.key_revoke_uid  NEW.
566  py: Context.key_sign        NEW.
567  py: Context.key_tofu_policy NEW.
568  py: core.pubkey_algo_string NEW.
569  py: core.addrspec_from_uid  NEW.
570
571  [c=C29/A18/R0 cpp=C10/A4/R0 qt=C9/A2/R0]
572
573
574 Noteworthy changes in version 1.8.0 (2016-11-16)
575 ------------------------------------------------
576
577  * The module of the Python bindings has been renamed to 'gpg'.
578
579  * New interface to query current software versions.
580
581  * New feature to use gpg's --{show,override}session-key options.
582
583  * New interface to set the sender of a mail.
584
585  * qt: Added Distinguished Name parser from libkleo
586
587  * The --homedir option is now used with recent gpgconf versions.
588
589  * On 64 bit Windows systems gpgconf is now properly located.
590
591  * The internal locking functions have been replaced by libgpg-error
592    locking functions.
593
594  * Interface changes relative to the 1.7.1 release:
595  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
596  gpgme_set_sender                NEW.
597  gpgme_get_sender                NEW.
598  gpgme_op_query_swdb             NEW.
599  gpgme_op_query_swdb_result      NEW.
600  gpgme_query_swdb_result_t       NEW.
601  gpgme_get_ctx_flag              NEW.
602  gpgme_decrypt_result_t          EXTENDED: New field session_key.
603  qt: DN                          NEW.
604  qt: DN::Attribute               NEW.
605  qt: Job::context(Job*)          NEW.
606  cpp: EngineInfo::Version::Version(const char*) NEW.
607  cpp: EngineInfo::Version::Version()            NEW.
608  cpp: SwdbResult                                NEW.
609  cpp: Context::setSender(const char*)           NEW.
610  cpp: Context::getSender()                      NEW.
611
612  [c=C28/A17/R0 cpp=C9/A3/R0 qt=C8/A1/R0]
613
614
615 Noteworthy changes in version 1.7.1 (2016-10-18)
616 ------------------------------------------------
617
618  * Fixed problems with the new language bindings.
619
620  * New helper function gpgme_addrspec_from_uid.
621
622  * Use option --exit-on-status-write-error with newer gpg versions.
623
624  * qt: Missed API from the Qt Binding inclusion has
625    been added again.
626
627  * qt: abstractimportjob.h is now installed to that
628    ImportJobs can be used again.
629
630  * qt: Fixed spelling error in API (startReceive).
631
632  * Interface changes relative to the 1.7.0 release:
633  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
634  gpgme_addrspec_from_uid         NEW.
635  qt: WksPublishJob::startRecieve RENAMED to ::startReceive.
636  qt: MultiDeleteJob              NEW.
637  qt: AbstractImportJob           NEW.
638  qt: SpecialJob                  NEW.
639  cpp: Signature::key(bool, bool)              NEW.
640  cpp: UserID::addrSpecFromString(const char*) NEW.
641  cpp: UserID::addrSpec()                      NEW.
642
643  [c=C27/A16/R0 cpp=C8/A2/R0 qt=C7/A0/R0]
644
645
646 Noteworthy changes in version 1.7.0 (2016-09-21)
647 ------------------------------------------------
648
649  * New language bindings for Python 2 and 3.
650
651  * New language Bindings for C++ and the Qt-Framework API.
652
653  * New functions gpgme_op_createkey and gpgme_op_createsubkey to make
654    key creation easier (requires GnuPG 2.1).
655
656  * New functions gpgme_op_adduid and gpgme_op_revuid to make user id
657    management easier (requires GnuPG 2.1).
658
659  * New function gpgme_op_keysign to make key signing easier (requires
660    GnuPG 2.1).
661
662  * New function gpgme_op_interact to replace the now deprecated
663    functions gpgme_op_edit and gpgme_op_card_edit.
664
665  * New function gpgme_pubkey_algo_string to convert a public key
666    algorithm into a GnuPG 2.1 style string.
667
668  * Support for GnuPG 2.1's TOFU trust model.
669
670  * Notation flags are now correctly set on verify.
671
672  * New global flag "require-gnupg" to set a minimal gnupg version.
673
674  * More supported items in gpgme_get_dirinfo.
675
676  * New function gpgme_data_set_flag and flag "size-hint".
677
678  * New function gpgme_set_ctx_flag and flags "full-status" and
679    "raw-description".
680
681  * Improved gpgme_data_identify to distinguish more file types.
682
683  * New flag GPGME_ENCRYPT_SYMMETRIC for gpgme_op_encrypt to allow
684    mixed public key and symmetric encryption.
685
686  * New field KEYGRIP in gpgme_subkey_t.  New fields FPR in gpgme_key_t.
687
688  * New flag GPGME_DATA_ENCODING_MIME to declare that the encrypted or
689    signed data is a valid MIME part.  This is to support future GnuPG
690    versions.
691
692  * Interface changes relative to the 1.6.0 release:
693  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
694  gpgme_pubkey_algo_string       NEW.
695  GPGME_PK_EDDSA                 NEW.
696  gpgme_set_ctx_flag             NEW.
697  gpgme_data_set_flag            NEW.
698  gpgme_op_createkey             NEW.
699  gpgme_op_createkey_start       NEW.
700  gpgme_op_createsubkey          NEW.
701  gpgme_op_createsubkey_start    NEW.
702  gpgme_op_adduid_start          NEW.
703  gpgme_op_adduid                NEW.
704  gpgme_op_revuid_start          NEW.
705  gpgme_op_revuid                NEW.
706  gpgme_op_keysign_start         NEW.
707  gpgme_op_keysign               NEW.
708  gpgme_op_tofu_policy_start     NEW.
709  gpgme_op_tofu_policy           NEW.
710  gpgme_op_interact_start        NEW.
711  gpgme_op_interact              NEW.
712  gpgme_interact_cb_t            NEW.
713  gpgme_op_edit_start            DEPRECATED.
714  gpgme_op_edit                  DEPRECATED.
715  gpgme_op_card_edit_start       DEPRECATED.
716  gpgme_op_card_edit             DEPRECATED.
717  gpgme_edit_cb_t                DEPRECATED.
718  gpgme_status_code_t            DEPRECATED.
719  gpgme_genkey_result_t          EXTENDED: New fields pubkey and seckey.
720  gpgme_signature_t              EXTENDED: New field key.
721  gpgme_key_t                    EXTENDED: New field fpr.
722  gpgme_subkey_t                 EXTENDED: New field keygrip.
723  gpgme_user_id_t                EXTENDED: New field tofu.
724  gpgme_tofu_policy_t            NEW.
725  gpgme_tofu_info_t              NEW.
726  GPGME_STATUS_KEY_CONSIDERED    NEW.
727  GPGME_STATUS_TOFU_USER         NEW.
728  GPGME_STATUS_TOFU_STATS        NEW.
729  GPGME_STATUS_TOFU_STATS_LONG   NEW.
730  GPGME_STATUS_NOTATION_FLAGS    NEW.
731  GPGME_KEYLIST_MODE_WITH_TOFU   NEW.
732  GPGME_DATA_TYPE_PGP_ENCRYPTED  NEW.
733  GPGME_DATA_TYPE_PGP_SIGNATURE  NEW.
734  GPGME_DATA_ENCODING_MIME       NEW.
735  GPGME_ENCRYPT_SYMMETRIC        NEW.
736  GPGME_CREATE_SIGN              NEW.
737  GPGME_CREATE_ENCR              NEW.
738  GPGME_CREATE_CERT              NEW.
739  GPGME_CREATE_AUTH              NEW.
740  GPGME_CREATE_NOPASSWD          NEW.
741  GPGME_CREATE_SELFSIGNED        NEW.
742  GPGME_CREATE_NOSTORE           NEW.
743  GPGME_CREATE_WANTPUB           NEW.
744  GPGME_CREATE_WANTSEC           NEW.
745  GPGME_CREATE_FORCE             NEW.
746  GPGME_KEYSIGN_LOCAL            NEW.
747  GPGME_KEYSIGN_LFSEP            NEW.
748  GPGME_INTERACT_CARD            NEW.
749
750  [c=C26/A15/R0 cpp=C6/A0/R1 qt=C6/A0/R1]
751
752
753 Noteworthy changes in version 1.6.0 (2015-08-26) [C25/A14/R0]
754 ------------------------------------------------
755
756  * Added gpgme_set_offline to do a key listinging w/o requiring CRL.
757
758  * Added gpgme_set_status_cb to allow a user to see some status
759    messages.
760
761  * Added an export mode for secret keys.
762
763  * More precise error codes are returned if GnuPG >= 2.1.8 is used.
764
765  * The passphrase handler for the loopback mode has been improved and may
766    also be used with genkey.
767
768  * [w32] The standard GnuPG 2.1 install directory is now searched for
769    gpgconf.exe before a registry specified directory and the Gpg4win
770    install directory.
771
772  * [w32] gpgme-w32spawn.exe will now only be searched in the gpgme DLL
773    directory.
774
775  * Interface changes relative to the 1.5.1 release:
776  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
777  gpgme_set_offline              NEW.
778  gpgme_get_offline              NEW.
779  gpgme_set_status_cb            NEW.
780  gpgme_get_status_cb            NEW.
781  GPGME_EXPORT_MODE_SECRET       NEW
782  GPGME_EXPORT_MODE_RAW          NEW.
783  GPGME_EXPORT_MODE_PKCS12       NEW.
784
785
786 Noteworthy changes in version 1.5.5 (2015-06-08) [C24/A13/R4]
787 ------------------------------------------------
788
789  * Fixed crash in key listings for user ids with a backslash.
790
791  * Fixed regression for GPGSM use with GnuPG < 2.1.
792
793  * Properly set signature summary for revoked OpenPGP keys.
794
795
796 Noteworthy changes in version 1.5.4 (2015-04-13) [C24/A13/R3]
797 ------------------------------------------------
798
799  * Fixed a possible crash in the debug code.
800
801  * Fixed building for Windows with newer versions of Mingw.
802
803
804 Noteworthy changes in version 1.5.3 (2014-12-11) [C24/A13/R2]
805 -------------------------------------------------------------
806
807  * The export key functions do now return an error if used with the
808    latest GnuPG version.
809
810
811 Noteworthy changes in version 1.5.2 (2014-11-21) [C24/A13/R1]
812 -------------------------------------------------------------
813
814  * gpgme-tool is now installed.
815
816  * Fix external listing for modern keyservers.
817
818  * Minor other fixes.
819
820
821 Noteworthy changes in version 1.5.1 (2014-07-30) [C24/A13/R0]
822 -------------------------------------------------------------
823
824  * Fixed possible overflow in gpgsm and uiserver engines.
825    [CVE-2014-3564]
826
827  * Added support for GnuPG 2.1's --with-secret option.
828
829  * Interface changes relative to the 1.5.0 release:
830  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
831  GPGME_KEYLIST_MODE_WITH_SECRET NEW.
832
833
834 Noteworthy changes in version 1.5.0 (2014-05-21) [C23/A12/R0]
835 -------------------------------------------------------------
836
837  * On Unices the engine file names are not not anymore hardwired but
838    located via the envvar PATH.  All options to set the name of the
839    engines for the configure run are removed.
840
841  * If GPGME finds the gpgconf binary it defaults to using gpg2 or
842    whatever gpgconf tells as name for the OpenPGP engine.  If gpgconf
843    is not found, GPGME looks for an engine named "gpg".
844
845  * New feature to use the gpgme I/O subsystem to run arbitrary
846    commands.
847
848  * New flag to use encryption without the default compression step.
849
850  * New function to access "gpg-conf --list-dirs"
851
852  * New configure option --enable-fixed-path for use by Android.
853
854  * Support ECC algorithms.
855
856  * Interface changes relative to the 1.4.3 release:
857  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
858  gpgme_get_dirinfo              NEW.
859  gpgme_op_spawn_start           NEW.
860  gpgme_op_spawn                 NEW.
861  GPGME_PROTOCOL_SPAWN           NEW.
862  GPGME_SPAWN_DETACHED           NEW.
863  GPGME_SPAWN_ALLOW_SET_FG       NEW.
864  GPGME_ENCRYPT_NO_COMPRESS      NEW.
865  GPGME_PK_ECC                   NEW.
866  GPGME_MD_SHA224                NEW.
867  gpgme_subkey_t                 EXTENDED: New field curve.
868  GPGME_STATUS_PLAINTEXT_LENGTH  NEW.
869  GPGME_STATUS_MOUNTPOINT        NEW.
870  GPGME_STATUS_PINENTRY_LAUNCHED NEW.
871  GPGME_STATUS_ATTRIBUTE         NEW.
872  GPGME_STATUS_BEGIN_SIGNING     NEW.
873  GPGME_STATUS_KEY_NOT_CREATED   NEW.
874
875
876 Noteworthy changes in version 1.4.3 (2013-08-12) [C22/A11/R0]
877 -------------------------------------------------------------
878
879  * The default engine names are now taken from the output of gpgconf.
880    If gpgconf is not found the use of gpg 1 is assumed.
881
882  * Under Windows the default engines names are first searched in the
883    installation directory of the gpgme DLL.
884
885  * New function gpgme_data_identify to detect the type of a message.
886
887  * Interface changes relative to the 1.4.2 release:
888  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
889  gpgme_signers_count            NEW.
890  gpgme_data_type_t              NEW.
891  gpgme_data_identify            NEW.
892
893
894 Noteworthy changes in version 1.4.2 (2013-05-28) [C21/A10/R0]
895 -------------------------------------------------------------
896
897  * Allow symmetric encryption with gpgme_op_encrypt_sign.
898
899  * Fixed mismatching off_t definitions on Windows.
900
901  * Interface changes relative to the 1.4.1 release:
902  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
903  gpgme_off_t                    NEW.
904  gpgme_size_t                   NEW.
905  GPGME_PROTOCOL_OPENPGP         NEW alias.
906
907
908 Noteworthy changes in version 1.4.1 (2013-05-01) [C20/A9/R1]
909 ------------------------------------------------------------
910
911  * Fixed reading of gpg.conf files with excessive use of the group
912    option.
913
914  * Fixed building with the i686-w64-mingw32 toolchain.
915
916  * Disabled FD passing by default for Apple.
917
918
919 Noteworthy changes in version 1.4.0 (2013-02-26) [C20/A9/R0]
920 ------------------------------------------------------------
921
922  * New function gpgme_set_global_flag to help debugging on Android.
923
924  * New function gpgme_io_writen as a convenience wrapper around
925    gpgme_io_write.
926
927  * New functions to support the pinentry mode feature of GnuPG 2.1.
928
929  * New macro GPGME_VERSION_NUMBER to allow supporting different API
930    versions without the need for a configure test.
931
932  * Several improvements for gpgme-tool.
933
934  * Better logging of the common "invalid engine" error code.
935
936  * Support for FD passing is now enabled by default.  The configure
937    option --disable-fd-passing may be used to disable this.
938
939  * Interface changes relative to the 1.3.1 release:
940  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
941  GPGME_VERSION_NUMBER           NEW.
942  gpgme_io_writen                NEW.
943  gpgme_set_global_flag          NEW.
944  gpgme_set_pinentry_mode        NEW.
945  gpgme_get_pinentry_mode        NEW.
946  gpgme_pinentry_mode_t          NEW.
947  GPGME_PINENTRY_MODE_DEFAULT    NEW.
948  GPGME_PINENTRY_MODE_ASK        NEW.
949  GPGME_PINENTRY_MODE_CANCEL     NEW.
950  GPGME_PINENTRY_MODE_ERROR      NEW.
951  GPGME_PINENTRY_MODE_LOOPBACK   NEW.
952
953
954 Noteworthy changes in version 1.3.2 (2012-05-02)
955 ------------------------------------------------
956
957  * Remove support for libgpgme-pth.  As far as we know, this was never used,
958    and GnuPG is going to use our own npth in the future.
959
960  * Fix signature summary information for a missing X.509 key.
961
962  * Fix parsing of dates >= year 2038.
963
964
965 Noteworthy changes in version 1.3.1 (2011-06-16)
966 ------------------------------------------------
967
968  * Ported to Windows CE.
969
970  * Detect GPG versions not supporting ---passwd.
971
972  * Interface changes relative to the 1.3.0 release:
973  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
974  GPGME_EXPORT_MODE_MINIMAL      NEW
975  GPGME_STATUS_SUCCESS           NEW
976  gpgme_err_code_from_syserror   NEW
977  gpgme_err_set_errno            NEW
978  gpgme_error_from_errno         CHANGED: Return gpgme_error_t (compatible type).
979  gpgme_error_from_syserror      NEW
980  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
981
982
983 Noteworthy changes in version 1.3.0 (2010-01-11)
984 ------------------------------------------------
985
986  * GPGME does not come with an internal libassuan version anymore.
987    The external libassuan 1.1.0 release or later is required.  For
988    application programmers on systems that can resolve inter-library
989    dependencies at runtime, this is a transparent change.
990
991  * New engine GPGME_PROTOCOL_G13 to support the new g13 tool.
992
993  * New engine GPGME_PROTOCOL_UISERVER to support UI Servers.
994
995  * New API to change the passphrase of a key.
996
997  * Interface changes relative to the 1.2.0 release:
998  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
999  GPGME_STATUS_INV_SGNR    NEW.
1000  GPGME_STATUS_NO_SGNR     NEW.
1001  GPGME_PROTOCOL_G13       NEW.
1002  gpgme_op_g13_mount       NEW.
1003  gpgme_g13_result_t       NEW.
1004  GPGME_PK_ECDSA           NEW.
1005  GPGME_PK_ECDH            NEW.
1006  gpgme_op_passwd_start    NEW.
1007  gpgme_op_passwd          NEW.
1008  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1009
1010
1011 Noteworthy changes in version 1.2.0 (2009-06-18)
1012 ------------------------------------------------
1013
1014  * New encryption flag GPGME_ENCRYPT_NO_ENCRYPT_TO to disable default
1015    recipients.
1016
1017  * gpgme_new will fail if gpgme_check_version was not called, or a
1018    selftest failed (for example, if -mms-bitfields was not used on
1019    MingW32 targets).
1020
1021  * New functions gpgme_io_read and gpgme_io_write for use with
1022    gpgme_passphrase_cb_t and gpgme_edit_cb_t functions.
1023
1024  * New functions gpgme_result_ref and gpgme_result_unref to detach
1025    result structures from a context.
1026
1027  * New functions gpgme_op_export_keys_start and gpgme_op_export_keys
1028    that allow to specify exported keys through gpgme_key_t objects
1029    instead of patterns.
1030
1031  * New mode of operation gpgme_export_mode_t that allows exporting
1032    external keys.
1033
1034  * Interface changes relative to the 1.1.7 release:
1035  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1036  GPGME_KEYLIST_MODE_EPHEMERAL   NEW.
1037  GPGME_PROTOCOL_ASSUAN          NEW.
1038  gpgme_assuan_data_cb_t         NEW.
1039  gpgme_assuan_inquire_cb_t      NEW.
1040  gpgme_assuan_status_cb_t       NEW.
1041  gpgme_op_assuan_transact_start NEW.
1042  gpgme_op_assuan_transact       NEW.
1043  gpgme_op_assuan_result         NEW.
1044  gpgme_op_import_keys           NEW.
1045  gpgme_op_import_keys_start     NEW.
1046  gpgme_subkey_t                 EXTENDED: New fields is_cardkey, card_number.
1047  GPGME_ENCRYPT_NO_ENCRYPT_TO    NEW.
1048  gpgme_check_version            CHANGED: Is now a macro.
1049  gpgme_new                      EXTENDED: More failure codes.
1050  gpgme_io_read                  NEW.
1051  gpgme_io_write                 NEW.
1052  gpgme_result_ref               NEW.
1053  gpgme_result_unref             NEW.
1054  gpgme_export_mode_t            NEW.
1055  gpgme_export_ext_start         EXTENDED: Arg RESERVED is now a MODE flag.
1056  gpgme_op_export                EXTENDED: Arg RESERVED is now a MODE flag.
1057  gpgme_op_export_ext_start      EXTENDED: Arg RESERVED is now a MODE flag.
1058  gpgme_op_export_ext            EXTENDED: Arg RESERVED is now a MODE flag.
1059  gpgme_op_export_keys_start     NEW.
1060  gpgme_op_export_keys           NEW.
1061  GPGME_DATA_ENCODING_URL        NEW.
1062  GPGME_DATA_ENCODING_URL0       NEW.
1063  GPGME_DATA_ENCODING_URLESC     NEW.
1064  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1065
1066
1067 Noteworthy changes in version 1.1.8 (2008-12-08)
1068 ------------------------------------------------
1069
1070  * SIGPIPE is now again ignored as described in the manual.  Fixes
1071    regression introduced with 1.1.6.
1072
1073
1074 Noteworthy changes in version 1.1.7 (2008-10-17)
1075 ------------------------------------------------
1076
1077  * Using GPGME_KEYLIST_MODE_LOCAL combined with
1078    GPGME_KEYLIST_MODE_EXTERN is now supported; it uses the
1079    --locate-keys feature of gpg (>= 2.0.10).
1080
1081  * The encoding of gpgme_data_t objects can affect the output encoding
1082    of export, sign and encrypt operations now (the same operations
1083    that are also affected by the ASCII mode switch).  We believe this
1084    change in the ABI is innocent enough not to break existing
1085    applications (it only affects the S/MIME backend on certain
1086    operations).
1087
1088  * The reference manual now includes the specification of "The GnuPG
1089    UI Server protocol".
1090
1091  * A new function gpgme_cancel_async can be used to asynchronously
1092    cancel any pending operation at any time, from any thread.
1093
1094  * Interface changes relative to the 1.1.6 release:
1095  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1096 gpgme_op_encrypt                CHANGED: Output encoding can affect result.
1097 gpgme_op_encrypt_start          CHANGED: Output encoding can affect result.
1098 gpgme_op_encrypt_sign           CHANGED: Output encoding can affect result.
1099 gpgme_op_encrypt_sign_start     CHANGED: Output encoding can affect result.
1100 gpgme_op_sign                   CHANGED: Output encoding can affect result.
1101 gpgme_op_sign_start             CHANGED: Output encoding can affect result.
1102 gpgme_op_export                 CHANGED: Output encoding can affect result.
1103 gpgme_op_export_start           CHANGED: Output encoding can affect result.
1104 gpgme_op_export_ext             CHANGED: Output encoding can affect result.
1105 gpgme_op_export_ext_start       CHANGED: Output encoding can affect result.
1106 gpgme_cancel_async              NEW
1107  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1108
1109
1110 Noteworthy changes in version 1.1.6 (2008-01-04)
1111 ------------------------------------------------
1112
1113  * Bug fixes for for W32.
1114
1115  * A new, experimental (and thus undocumented and potentially
1116    unstable) interface for accessing gpg-conf through GPGME has been
1117    added.
1118
1119  * Interface changes relative to the 1.1.1 release:
1120  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1121  gpgme_signature_t               EXTENDED: New field chain_model.
1122  gpgme_op_getauditlog_start      NEW.
1123  gpgme_op_getauditlog            NEW.
1124  GPGME_AUDITLOG_HTML             NEW.
1125  GPGME_AUDITLOG_WITH_HELP        NEW.
1126  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1127
1128
1129 Noteworthy changes in version 1.1.5 (2007-07-09)
1130 ------------------------------------------------
1131
1132  * Bug and portability fixes (mainly for W32).
1133
1134
1135 Noteworthy changes in version 1.1.4 (2007-03-05)
1136 ------------------------------------------------
1137
1138  * Detect and bail out on double plaintext messages.  This is required
1139    so that applications can properly detect the signed parts of a
1140    message.  Actual there is now a double protection as GnuPG 1.4.7
1141    will detect this case too.
1142
1143
1144 Noteworthy changes in version 1.1.3 (2007-01-29)
1145 ------------------------------------------------
1146
1147  * Fixed a memory leak in gpgme_data_release_and_get_mem.
1148
1149  * Fixed a bug in Windows command line quoting.
1150
1151
1152 Noteworthy changes in version 1.1.2 (2006-03-02)
1153 ------------------------------------------------
1154
1155  * Fixed a bug in the W32 glib backend.
1156
1157
1158 Noteworthy changes in version 1.1.1 (2006-02-23)
1159 ------------------------------------------------
1160
1161  * Fixed a bug in that the fingerprints of subkeys are not available.
1162
1163  * Clarified usage of the SECRET flag in key listings.  It is now
1164    reset for stub keys.
1165
1166  * Reading signature notations and policy URLs on key signatures is
1167    supported.  They can be found in the new field notations of the
1168    gpgme_key_sig_t structure.  This has to be enabled with the keylist
1169    mode flag GPGME_KEYLIST_MODE_SIG_NOTATIONS.
1170
1171  * A new gpgme_free() function solves the problem of using different
1172    allocators in a single program.  This function should now be used
1173    instead calling free() to release the buffer returned by
1174    gpgme_data_release_and_get_mem.  It is recommended that you always
1175    do this, but it is only necessary on certain platforms, so backwards
1176    compatibility is provided.  In other words: If free() worked for
1177    you before, it will keep working.
1178
1179  * New status codes GPGME_PKA_TRUST_GOOD and GPGME_PKA_TRUST_BAD.
1180    They are analyzed by the verify handlers and made available in the
1181    new PKA_TRUST and PKA_ADDRESS fields of the signature result structure.
1182
1183  * Interface changes relative to the 1.1.0 release:
1184 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1185 gpgme_key_sig_t                 EXTENDED: New field notations.
1186 GPGME_KEYLIST_MODE_SIG_NOTATIONS NEW
1187 gpgme_free                      NEW
1188 GPGME_STATUS_PKA_TRUST_BAD      NEW
1189 GPGME_STATUS_PKA_TRUST_GOOD     NEW
1190 gpgme_signature_t               EXTENDED: New field pka_trust.
1191 gpgme_signature_t               EXTENDED: New field pka_address.
1192 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1193
1194
1195 Noteworthy changes in version 1.1.0 (2005-10-01)
1196 ------------------------------------------------
1197
1198  * You can now configure the backend engine file name and home
1199    directory to be used, as default and per context.
1200
1201  * Information about the recipients of an encrypted text is now
1202    available at decryption time.
1203
1204  * New status GPGME_STATUS_PLAINTEXT.  This is analyzed by the decrypt
1205    and verify handlers, the information about the plaintext filename,
1206    if available is made available in the new field file_name of the
1207    respective result structure.
1208
1209  * The code for "automagically detecting the thread library" has been
1210    removed from libgpgme.  It is deprecated since version 0.4.3.
1211    Since then, you had to link against libgpgme-pthread for
1212    applications using pthread and libgpgme-pth for applications using
1213    GNU Pth.
1214
1215    The code was removed because it caused compilation problems on
1216    systems where the pthread.h header from GNU Pth is available in
1217    addition to the system header (FreeBSD 6 and later for example).
1218
1219  * "./autogen.sh --build-w32" does now build gpgme.dll.
1220
1221  * [W32] The environment variable GPGME_DEBUG now uses a semicolon as
1222    delimiter.  The standard install directory is used when locating
1223    gpg or gpgsm before finally falling back to the hardwired name.
1224
1225  * There is a new flag for keys and subkeys, is_qualified, which
1226    indicates if a key can be used for qualified signatures according
1227    to local government regulations.
1228
1229  * You can associate a filename with a data object using the new
1230    function gpgme_data_set_file_name().  This filename will be stored
1231    in the output when encrypting or signing the data and will be
1232    returned when decrypting or verifying the output data.
1233
1234  * You can now set notation data at signature creation with the new
1235    function gpgme_sig_notation_add().
1236
1237  * Interface changes relative to the 1.0.3 release:
1238 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1239 gpgme_set_engine_info           NEW
1240 gpgme_ctx_get_engine_info       NEW
1241 gpgme_ctx_set_engine_info       NEW
1242 gpgme_recipient_t               NEW
1243 gpgme_decrypt_result_t          EXTENDED: New field recipients.
1244 gpgme_verify_result_t           EXTENDED: New fields pubkey_algo, hash_algo.
1245 gpgme_decrypt_result_t          EXTENDED: New field plaintext_filename.
1246 gpgme_verify_result_t           EXTENDED: New field plaintext_filename.
1247 GPGME_STATUS_PLAINTEXT          NEW
1248 gpgme_key_t                     EXTENDED: New field is_qualified.
1249 gpgme_subkey_t                  EXTENDED: New field is_qualified.
1250 gpgme_data_get_file_name        NEW
1251 gpgme_data_set_file_name        NEW
1252 gpgme_sig_notation_flags_t      NEW
1253 GPGME_SIG_NOTATION_HUMAN_READABLE NEW
1254 GPGME_SIG_NOTATAION_CRITICAL    NEW
1255 gpgme_sig_notation_clear        NEW
1256 gpgme_sig_notation_add          NEW
1257 gpgme_sig_notation_get          NEW
1258 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1259
1260
1261 Noteworthy changes in version 1.0.3 (2005-06-20)
1262 ------------------------------------------------
1263
1264  * Previousy, GPGME would use a default "include certs" of 1.  This
1265    has been changed.  Now GPGME will use the crypto backend engines
1266    default unless you set the value with gpgme_set_include_certs()
1267    explicitly.  A new macro GPGME_INCLUDE_CERTS_DEFAULT can be used
1268    as a value to explicitly request the new default behaviour.
1269
1270    Because the default changes, this is a slight change of the API
1271    semantics.  We consider it to be a bug fix.
1272
1273  * A bug which made GPGME hang has been fixed.  If you have
1274    experienced hanging before, please try out this version and let me
1275    know if you still experience hanging problems.
1276
1277  * Interface changes relative to the 0.9.0 release:
1278 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1279 gpgme_set_include_certs         CHANGED DEFAULT
1280 GPGME_INCLUDE_CERTS_DEFAULT     NEW
1281 GPGME_STATUS_SIG_SUBPACKET      NEW
1282 GPGME_STATUS_NEED_PASSPHRASE_PIN NEW
1283 GPGME_STATUS_SC_OP_FAILURE      NEW
1284 GPGME_STATUS_SC_OP_SUCCESS      NEW
1285 GPGME_STATUS_CARDCTRL           NEW
1286 GPGME_STATUS_BACKUP_KEY_CREATED NEW
1287 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1288
1289
1290 Noteworthy changes in version 1.0.2 (2004-12-28)
1291 ------------------------------------------------
1292
1293  * Changed the license of the library to the GNU Lesser General Public
1294    License (LGPL), version 2.1 or later.
1295
1296
1297 Noteworthy changes in version 1.0.1 (2004-10-22)
1298 ------------------------------------------------
1299
1300  * Only bug fixes.
1301
1302
1303 Noteworthy changes in version 1.0.0 (2004-09-30)
1304 ------------------------------------------------
1305
1306  * Version 1.0.0!  We are proud to present you with a thoroughly
1307    tested and stable version of the GPGME library.  A big Thank You!
1308    to all the people who made this possible.
1309
1310    The development will be branched into a stable 1.x.y series and the
1311    head.
1312
1313  * The gpgme.m4 macro supports checking the API version.  Just prepend
1314    it to the required version string, separated by a colon.  For
1315    example, this release has the version "1:1.0.0".  The last release
1316    to which this version is (mostly) ABI compatible is "1:0.4.2",
1317    which is the default required version.
1318
1319
1320 Noteworthy changes in version 0.9.0 (2004-06-08)
1321 ------------------------------------------------
1322
1323  * The type gpgme_key_t has now a new field keylist_mode that contains
1324    the keylist mode that was active at the time the key was retrieved.
1325
1326  * The type gpgme_decrypt_result_t has a new field "wrong_key_usage"
1327    that contains a flag indicating that the key should not have been
1328    used for encryption.
1329
1330  * Verifying a signature of a revoked key gives the correct result now
1331    (GPG_ERR_CERT_REVOKED error code).
1332
1333  * Clarified that the error code GPG_ERR_NO_DATA from the decrypt &
1334    verify operations still allows you to look at the signature
1335    verification result.
1336
1337  * Clarified that patterns in keylisting operations have an upper
1338    limit, and thus are not suited to list many keys at once by their
1339    fingerprint.  Also improve the error message if the pattern is too
1340    long for the CMS protocol to handle.
1341
1342 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1343 gpgme_key_t                     EXTENDED: New field keylist_mode.
1344 gpgme_decrypt_result_t          EXTENDED: New field wrong_key_usage.
1345 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1346
1347
1348 Noteworthy changes in version 0.4.7 (2004-04-29)
1349 ------------------------------------------------
1350
1351  * Correctly initialize the fields expired, revoked, invalid, and
1352    disabled in the gpgme_key_t structures.
1353
1354  * A bug fix: The flag wrong_key_usage of gpgme_signature_t was
1355    accidentally of type int instead unsigned int.
1356
1357  * Interface changes relative to the 0.4.5 release:
1358 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1359 gpgme_signature_t               CHANGED: wrong_key_usage is unsigned int now.
1360 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1361
1362 Noteworthy changes in version 0.4.6 (2004-04-06)
1363 ------------------------------------------------
1364
1365  * Bug fixes
1366
1367
1368 Noteworthy changes in version 0.4.5 (2004-03-07)
1369 ------------------------------------------------
1370
1371  * GPGME is now compiled with LFS (large file support) by default.
1372    This means that _all_ programs using GPGME must be compiled with
1373    LFS support enabled by default.  You can do this easily with
1374    autoconf, by using the AC_SYS_LARGEFILE macro.  Or you can do this
1375    without autoconf by defining the preprocessor symbol
1376    _FILE_OFFSET_BITS to 64 (by passing the -D_FILE_OFFSET_BITS=64 to
1377    the C compiler command line, or by defining this preprocessor
1378    symbol before including any system header files).  For more
1379    details, read the section on LFS in the manual.
1380
1381    Up to now, it was undocumented that GPGME was not using LFS.
1382    But the public interfaces use off_t, and file descriptors are
1383    exchanged between the application and GPGME.  This was an oversight,
1384    and bound to cause troubles in the future.
1385
1386    Writing GPGME as a dual mode library that seamlessly supports LFS
1387    while keeping backwards compatibility is possible, but does not
1388    solve the problem: Many applications already expect GPGME to have
1389    LFS (they are compiled with off_t being a 64bit value).  This is true
1390    in particular for the popular Gtk+ and Qt programs.
1391
1392    So, although this is an ABI (but not an API) break, we will not
1393    change the library version to reflect that.  Because the interfaces
1394    affected are probably not used yet in any GPGME 0.4 based
1395    application, we don't expect any real failures from this change.
1396    In fact, applications already using LFS will have some subtle bugs
1397    fixed.
1398
1399    However, if you encounter an application using GPGME 0.4.x that
1400    does _not_ use LFS by default (off_t is a 32bit value), _and_
1401    uses at least one of the functions gpgme_data_seek,
1402    gpgme_data_new_from_filepart, or a gpgme_data_seek_cb_t with
1403    gpgme_data_new_from_cbs, then indeed this library will be ABI
1404    incompatible with the program.  As said above, we don't believe
1405    such a program exists.  If we are in error, then you have two
1406    options: As a quick hack, you can configure GPGME with the
1407    --disable-largefile option.  This will revert the change, and GPGME
1408    will not use LFS.  However, GPGME will be incompatible with
1409    programs that expect GPGME to use LFS.  All applications are
1410    required to use LFS when using GPGME, so this is only good as a
1411    temporary local work-around.
1412
1413    The other option is to change the versioning of the library and
1414    recompile all applications.  We have reserved a special version of
1415    the library for that, so you can do that without expecting a
1416    version clash in the future.  Furthermore, everyone who does this
1417    will agree on the version to use (this is important for
1418    distribution makers).  Read the comment in configure.ac (before
1419    LIBGPGME_LT_AGE) if you want to do this.  Please don't do this
1420    blindly: As stated above, we think it is unlikely this measure is
1421    needed.  Still, it is there if necessary.  If in doubt, contact us
1422    and we will give our advise for your specific situation.
1423
1424  * New key listing mode GPGME_KEYLIST_MODE_VALIDATE for validation of
1425    the listed keys.
1426
1427  * New interface gpgme_cancel() that can be used to cancel
1428    asynchronous operations.
1429
1430  * Interface changes relative to the 0.4.4 release:
1431 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1432 gpgme_data_seek_cb_t            CHANGED: off_t is now a largefile type.
1433 gpgme_data_seek                 CHANGED: off_t is now a largefile type.
1434 gpgme_data_new_from_filepart    CHANGED: off_t is now a largefile type.
1435 GPGME_KEYLIST_MODE_VALIDATE     NEW
1436 gpgme_cancel                    NEW
1437 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1438
1439 Noteworthy changes in version 0.4.4 (2004-01-12)
1440 ------------------------------------------------
1441
1442  * The member "class" in gpgme_key_sig_t and gpgme_new_signature_t has
1443    been renamed to "sig_class", to avoid clash with C++ compilers.  In
1444    the C API, the old name "class" has been preserved for backwards
1445    compatibility, but is deprecated.
1446
1447  * Interface changes relative to the 0.4.3 release:
1448 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1449 gpgme_key_sig_t                 CHANGED: class deprecated, use new sig_class.
1450 gpgme_new_signature_t           CHANGED: class deprecated, use new sig_class.
1451 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1452
1453 Noteworthy changes in version 0.4.3 (2003-10-06)
1454 ------------------------------------------------
1455
1456  * libgpgme should not be used for threaded programs anymore.  This
1457    never worked reliably in all cases, because you had to
1458    be careful about the linking order and libtool wouldn't do that for
1459    you automatically.  Instead, now you have to link against
1460    libgpgme-pthread for applications using pthread and libgpgme-pth for
1461    applications using GNU Pth.
1462
1463    The old code for automagically detecting the thread library is
1464    still part of libgpgme, but it is DEPRECATED.
1465
1466  * There are new automake macros AM_PATH_GPGME_PTH and
1467    AM_PATH_GPGME_PTHREAD, which support checking for thread-enabled
1468    versions of GPGME.  They define GPGME_PTH_CFLAGS, GPGME_PTH_LIBS,
1469    GPGME_PTHREAD_CFLAGS and GPGME_PTHREAD_LIBS respectively.  These
1470    variables of course also include the configuration for the thread
1471    package itself.  Alternatively, use libtool.
1472
1473  * gpgme_strerror_r as a thread safe variant of gpgme_strerror was
1474    added.
1475
1476  * gpgme-config doesn't support setting the prefix or exec prefix
1477    anymore.  I don't think it ever worked correctly, and it seems to
1478    be pointless.
1479
1480  * gpgme_get_key fails with GPG_ERR_AMBIGUOUS_NAME if the key ID
1481    provided was not unique, instead returning the first matching key.
1482
1483  * gpgme_key_t and gpgme_subkey_t have a new field, can_authenticate,
1484    that indicates if the key can be used for authentication.
1485
1486  * gpgme_signature_t's status field is now correctly set to an error
1487    with error code GPG_ERR_NO_PUBKEY if public key is not found.
1488
1489  * gpgme_new_signature_t's class field is now an unsigned int, rather
1490    than an unsigned long (the old class field is preserved for
1491    backwards compatibility).
1492
1493  * A new function gpgme_set_locale() is provided to allow configuring
1494    the locale for the crypto backend.  This is necessary for text
1495    terminals so that programs like the pinentry can be started with
1496    the right locale settings for the terminal the application is running
1497    on, in case the terminal has different settings than the system
1498    default (for example, if it is a remote terminal).  You are highly
1499    recommended to call the following functions directly after
1500    gpgme_check_version:
1501
1502    #include <locale.h>
1503
1504    setlocale (LC_ALL, "");
1505    gpgme_set_locale (NULL, LC_CTYPE, setlocale (LC_CTYPE, NULL));
1506    gpgme_set_locale (NULL, LC_MESSAGES, setlocale (LC_MESSAGES, NULL));
1507
1508    GPGME can not do this for you, as setlocale is not thread safe, and
1509    there is no alternative.
1510
1511  * The signal action for SIGPIPE is now set to SIG_IGN by
1512    gpgme_check_version, instead the first time a crypto engine is
1513    started (which is not well defined).
1514
1515  * In the output of gpgme_hash_algo_name, change RMD160 to RIPEMD160,
1516    TIGER to TIGER192, CRC32-RFC1510 to CRC32RFC1510, and CRC24-RFC2440
1517    to CRC24RFC2440.  For now, these strings can be used as the MIC
1518    parameter for PGP/MIME (if appropriately modified).
1519
1520  * Interface changes relative to the 0.4.2 release:
1521 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1522 gpgme_strerror_t                NEW
1523 gpgme_get_key                   CHANGED: Fails correctly if key ID not unique.
1524 gpgme_key_t                     EXTENDED: New field can_authenticate.
1525 gpgme_subkey_t                  EXTENDED: New field can_authenticate.
1526 gpgme_new_signature_t           CHANGED: New type for class field.
1527 gpgme_set_locale                NEW
1528 gpgme_hash_algo_name            CHANGED: Slight adjustment of algo names.
1529 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1530
1531 Noteworthy changes in version 0.4.2 (2003-07-30)
1532 ------------------------------------------------
1533
1534  * Allow gpg-error to be in non-standard place when linking the test suite.
1535
1536  * Configure will fail now if gpg-error can not be found.
1537
1538  * Fixed initialized memory backed data objects for writing, which
1539    caused the test program to crash (but only on Mac OS, surprisingly).
1540
1541  * Eliminate use of C99 constructs.
1542
1543  * Small improvements to the manual.
1544
1545
1546 Noteworthy changes in version 0.4.1 (2003-06-06)
1547 ------------------------------------------------
1548
1549  This is the release that 0.4.0 should have been.  There are many
1550  interface changes, please see below for the details.  The changes are
1551  sometimes the result of new functionality, but more often express a
1552  paradigm shift.  Others are an overdue cleanup to get GPGME in line
1553  with the GNU coding standards and to make the interface more
1554  self-consistent.  Here is an overview on the changes:
1555
1556  All types have been renamed to conform to the GNU coding standards,
1557  most of the time by keeping the whole name in lowercase and inserting
1558  underscores between words.
1559
1560  All operations consistently only accept input parameters in their
1561  invocation function, and return only an error code directly.  Further
1562  information about the result of the operation has to be retrieved
1563  afterwards by calling one of the result functions.  This unifies the
1564  synchronous and the asynchronous interface.
1565
1566  The error values have been completely replaced by a more
1567  sophisticated model that allows GPGME to transparently and accurately
1568  report all errors from the other GnuPG components, regardless of
1569  process boundaries.  This is achieved by using the library
1570  libgpg-errors, which is shared by all GnuPG components.  This library
1571  is now required for GPGME.
1572
1573  The results of all operations are now provided by pointers to C
1574  structs rather than by XML structs or in other ways.
1575
1576  Objects which used to be opaque (for example a key) are now pointers
1577  to accessible structs, so no accessor functions are necessary.
1578
1579  Backward compatibility is provided where it was possible without too
1580  much effort and did not collide with the overall sanitization effort.
1581  However, this is only for ease of transition.  NO DEPRECATED FUNCTION
1582  OR DATA TYPE IS CONSIDERED A PART OF THE API OR ABI AND WILL BE
1583  DROPPED IN THE FUTURE WITHOUT CHANGING THE SONAME OF THE LIBRARY.
1584  Recommendations how to replace deprecated or removed functionality
1585  can be found within the description of each change.
1586
1587  What follows are all changes to the interface and behaviour of GPGME
1588  in detail.
1589
1590  * If gpgme.h is included in sources compiled by GCC 3.1 or later,
1591    deprecated attributes will warn about use of obsolete functions and
1592    type definitions.  You can suppress these warnings by passing
1593    -Wno-deprecated-declarations to the gcc command.
1594
1595  * The following types have been renamed.  The old types are still
1596    available as aliases, but they are deprecated now:
1597    Old name:            New name:
1598    GpgmeCtx             gpgme_ctx_t
1599    GpgmeData            gpgme_data_t
1600    GpgmeError           gpgme_error_t
1601    GpgmeDataEncoding    gpgme_data_encoding_t
1602    GpgmeSigStat         gpgme_sig_stat_t
1603    GpgmeSigMode         gpgme_sig_mode_t
1604    GpgmeAttr            gpgme_attr_t
1605    GpgmeValidity        gpgme_validity_t
1606    GpgmeProtocol        gpgme_protocol_t
1607    GpgmeKey             gpgme_key_t
1608    GpgmePassphraseCb    gpgme_passphrase_cb_t
1609    GpgmeProgressCb      gpgme_progress_cb_t
1610    GpgmeIOCb            gpgme_io_cb_t
1611    GpgmeRegisterIOCb    gpgme_register_io_cb_t
1612    GpgmeRemoveIOCb      gpgme_remove_io_cb_t
1613    GpgmeEventIO         gpgme_event_io_t
1614    GpgmeEventIOCb       gpgme_event_io_cb_t
1615    GpgmeIOCbs           gpgme_io_cbs
1616    GpgmeDataReadCb      gpgme_data_read_cb_t
1617    GpgmeDataWriteCb     gpgme_data_write_cb_t
1618    GpgmeDataSeekCb      gpgme_data_seek_cb_t
1619    GpgmeDataReleaseCb   gpgme_data_release_cb_t
1620    GpgmeDataCbs         gpgme_data_cbs_t
1621    GpgmeTrustItem       gpgme_trust_item_t
1622    GpgmeStatusCode      gpgme_status_code_t
1623
1624  * gpgme_error_t is now identical to gpg_error_t, the error type
1625    provided by libgpg-error.  More about using libgpg-error with GPGME
1626    can be found in the manual.  All error symbols have been removed!
1627
1628  * All functions and types in libgpg-error have been wrapped in GPGME.
1629    The new types are gpgme_err_code_t and gpgme_err_source_t.  The new
1630    functions are gpgme_err_code, gpgme_err_source, gpgme_error,
1631    gpgme_err_make, gpgme_error_from_errno, gpgme_err_make_from_errno,
1632    gpgme_err_code_from_errno, gpgme_err_code_to_errno,
1633    gpgme_strsource.
1634
1635  * GPGME_ATTR_IS_SECRET is not anymore representable as a string.
1636
1637  * GnuPG 1.2.2 is required.  The progress callback is now also invoked
1638    for encrypt, sign, encrypt-sign, decrypt, verify, and
1639    decrypt-verify operations.  For verify operations on detached
1640    signatures, the progress callback is invoked for both the detached
1641    signature and the plaintext message, though.
1642
1643  * gpgme_passphrase_cb_t has been changed to not provide a complete
1644    description, but the UID hint, passphrase info and a flag
1645    indicating if this is a repeated attempt individually, so the user
1646    can compose his own description from this information.
1647
1648    The passphrase is not returned as a C string, but must be written
1649    to a file descriptor directly.  This allows for secure passphrase
1650    entries.
1651
1652    The return type has been changed to gpgme_error_t value.  This
1653    allowed to remove the gpgme_cancel function; just return
1654    the error code GPG_ERR_CANCELED in the passphrase callback directly.
1655
1656  * gpgme_edit_cb_t has been changed to take a file descriptor argument.
1657    The user is expected to write the response to the file descriptor,
1658    followed by a newline.
1659
1660  * The recipients interface has been removed.  Instead, you use
1661    NULL-terminated lists of keys for specifying the recipients of an
1662    encryption operation.  Use the new encryption flag
1663    GPGME_ENCRYPT_ALWAYS_TRUST if you want to override the validity of
1664    the keys (but note that in general this is not a good idea).
1665
1666    This change has been made to the prototypes of gpgme_op_encrypt,
1667    gpgme_op_encrypt_start, gpgme_op_encrypt_sign and
1668    gpgme_op_encrypt_sign_start.
1669
1670    The export interface has been changed to use pattern strings like
1671    the keylist interface.  Thus, new functions gpgme_op_export_ext and
1672    gpgme_op_export_ext_start have been added as well.  Now the
1673    prototypes of gpgme_op_export_start and gpgme_op_export finally
1674    make sense.
1675
1676  * gpgme_op_verify and gpgme_op_decrypt_verify don't return a status
1677    summary anymore.  Use gpgme_get_sig_status to retrieve the individual
1678    stati.
1679
1680  * gpgme_io_cb_t changed from a void function to a function returning
1681    a gpgme_error_t value.  However, it will always return 0, so you
1682    can safely ignore the return value.
1683
1684  * A new I/O callback event GPGME_EVENT_START has been added.  The new
1685    requirement is that you must wait until this event until you are
1686    allowed to call the I/O callback handlers previously registered for
1687    this context operation.  Calling I/O callback functions for this
1688    context operation before the start event happened is unsafe because
1689    it can lead to race conditions in a multi-threaded environment.
1690
1691  * The idle function feature has been removed.  It was not precisely
1692    defined in a multi-threaded environment and is obsoleted by the
1693    user I/O callback functions.  If you still need a simple way to
1694    call something while waiting on one or multiple asynchronous
1695    operations to complete, don't set the HANG flag in gpgme_wait (note
1696    that this will return to your program more often than the idle
1697    function did).
1698
1699  * gpgme_wait can return NULL even if hang is true, if an error
1700    occurs.  In that case *status contains the error code.
1701
1702  * gpgme_get_engine_info was radically changed.  Instead an XML
1703    string, an info structure of the new type gpgme_engine_info_t is
1704    returned.  This makes it easier and more robust to evaluate the
1705    information in an application.
1706
1707  * The new function gpgme_get_protocol_name can be used to convert a
1708    gpgme_protocol_t value into a string.
1709
1710  * The status of a context operation is not checked anymore.  Starting
1711    a new operation will silently cancel the previous one.  Calling a
1712    function that requires you to have started an operation before without
1713    doing so is undefined.
1714
1715  * The FPR argument to gpgme_op_genkey was removed.  Instead, use the
1716    gpgme_op_genkey_result function to retrieve a gpgme_genkey_result_t
1717    pointer to a structure which contains the fingerprint.  This also
1718    works with gpgme_op_genkey_start.  The structure also provides
1719    other information about the generated keys.
1720
1721    So, instead:
1722
1723    char *fpr;
1724    err = gpgme_op_genkey (ctx, NULL, NULL, &fpr);
1725    if (!err && fpr)
1726      printf ("%s\n", fpr);
1727
1728    you should now do:
1729
1730    gpgme_genkey_result_t result;
1731    err = gpgme_op_genkey (ctx, NULL, NULL);
1732    if (!err)
1733      {
1734        result = gpgme_op_genkey_result (ctx);
1735        if (result->fpr)
1736          printf ("%s\n", result->fpr);
1737      }
1738
1739  * The new gpgme_op_import_result function provides detailed
1740    information about the result of an import operation in
1741    gpgme_import_result_t and gpgme_import_status_t objects.
1742    Thus, the gpgme_op_import_ext variant is deprecated.
1743
1744  * The new gpgme_op_sign_result function provides detailed information
1745    about the result of a signing operation in gpgme_sign_result_t,
1746    gpgme_invalid_key_t and gpgme_new_signature_t objects.
1747
1748  * The new gpgme_op_encrypt_result function provides detailed
1749    information about the result of an encryption operation in
1750    a GpgmeEncryptResult object.
1751
1752  * The new gpgme_op_decrypt_result function provides detailed
1753    information about the result of a decryption operation in
1754    a GpgmeDecryptResult object.
1755
1756  * The new gpgme_op_verify_result function provides detailed
1757    information about the result of an verify operation in
1758    a GpgmeVerifyResult object.  Because of this, the GPGME_SIG_STAT_*
1759    values, gpgme_get_sig_status, gpgme_get_sig_ulong_attr,
1760    gpgme_get_sig_string_attr and gpgme_get_sig_key are now deprecated,
1761    and gpgme_get_notation is removed.
1762
1763  * GpgmeTrustItem objects have now directly accessible data, so the
1764    gpgme_trust_item_get_string_attr and gpgme_trust_item_get_ulong_attr
1765    accessor functions are deprecated.  Also, reference counting is
1766    available through gpgme_trust_item_ref and gpgme_trust_item_unref
1767    (the gpgme_trust_item_release alias for the latter is deprecated).
1768
1769  * Keys are not cached internally anymore, so the force_update argument
1770    to gpgme_get_key has been removed.
1771
1772  * GpgmeKey objects have now directly accessible data so the
1773    gpgme_key_get_string_attr, gpgme_key_get_ulong_attr,
1774    gpgme_key_sig_get_string_attr and gpgme_key_sig_get_ulong_attr
1775    functions are deprecated.  Also, gpgme_key_release is now
1776    deprecated.  The gpgme_key_get_as_xml function has been dropped.
1777
1778  * Because all interfaces using attributes are deprecated, the
1779    GpgmeAttr data type is also deprecated.
1780
1781  * The new gpgme_op_keylist_result function provides detailed
1782    information about the result of a key listing operation in
1783    a GpgmeKeyListResult object.
1784
1785  * Now that each function comes with its own result retrieval
1786    interface, the generic gpgme_get_op_info interface is not useful
1787    anymore and dropped.
1788
1789  * The type and mode of data objects is not available anymore.
1790
1791  * Interface changes relative to the 0.4.0 release:
1792 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1793 GpgmeCtx                        DEPRECATED: Use gpgme_ctx_t.
1794 GpgmeData                       DEPRECATED: Use gpgme_data_t.
1795 GpgmeError                      DEPRECATED: Use gpgme_error_t.
1796 GpgmeDataEncoding               DEPRECATED: Use gpgme_data_encoding_t.
1797 GpgmeSigStat                    DEPRECATED: Use gpgme_sig_stat_t.
1798 GpgmeSigMode                    DEPRECATED: Use gpgme_sig_mode_t.
1799 GpgmeAttr                       DEPRECATED: Use gpgme_attr_t.
1800 GpgmeValidity                   DEPRECATED: Use gpgme_validity_t.
1801 GpgmeProtocol                   DEPRECATED: Use gpgme_protocol_t.
1802 GpgmeKey                        DEPRECATED: Use gpgme_key_t.
1803 GpgmePassphraseCb               DEPRECATED: Use gpgme_passphrase_cb_t.
1804 GpgmeProgressCb                 DEPRECATED: Use gpgme_progress_cb_t.
1805 GpgmeIOCb                       DEPRECATED: Use gpgme_io_cb_t.
1806 GpgmeRegisterIOCb               DEPRECATED: Use gpgme_register_io_cb_t.
1807 GpgmeRemoveIOCb                 DEPRECATED: Use gpgme_remove_io_cb_t.
1808 GpgmeEventIO                    DEPRECATED: Use gpgme_event_io_t.
1809 GpgmeEventIOCb                  DEPRECATED: Use gpgme_event_io_cb_t.
1810 GpgmeIOCbs                      DEPRECATED: Use gpgme_io_cbs.
1811 GpgmeDataReadCb                 DEPRECATED: Use gpgme_data_read_cb_t.
1812 GpgmeDataWriteCb                DEPRECATED: Use gpgme_data_write_cb_t.
1813 GpgmeDataSeekCb                 DEPRECATED: Use gpgme_data_seek_cb_t.
1814 GpgmeDataReleaseCb              DEPRECATED: Use gpgme_data_release_cb_t.
1815 GpgmeDataCbs                    DEPRECATED: Use gpgme_data_cbs_t.
1816 GpgmeTrustItem                  DEPRECATED: Use gpgme_trust_item_t.
1817 GpgmeStatusCode                 DEPRECATED: Use gpgme_status_code_t.
1818 gpgme_ctx_t                     NEW
1819 gpgme_data_t                    NEW
1820 gpgme_recipients_t              NEW
1821 gpgme_error_t                   NEW
1822 gpgme_data_encoding_t           NEW
1823 gpgme_sig_stat_t                NEW
1824 gpgme_sig_mode_t                NEW
1825 gpgme_attr_t                    NEW
1826 gpgme_validity_t                NEW
1827 gpgme_protocol_t                NEW
1828 gpgme_key_t                     NEW
1829 gpgme_passphrase_cb_t           NEW
1830 gpgme_progress_cb_t             NEW
1831 gpgme_io_cb_t                   NEW
1832 gpgme_register_io_cb_t          NEW
1833 gpgme_remove_io_cb_t            NEW
1834 gpgme_event_io_t                NEW
1835 gpgme_event_io_cb_t             NEW
1836 gpgme_io_cbs                    NEW
1837 gpgme_data_read_cb_t            NEW
1838 gpgme_data_write_cb_t           NEW
1839 gpgme_data_seek_cb_t            NEW
1840 gpgme_data_release_cb_t         NEW
1841 gpgme_data_cbs_t                NEW
1842 gpgme_trust_item_t              NEW
1843 gpgme_status_code_t             NEW
1844 GPGME_{some error code}         REMOVED! Use GPG_ERR_* from libgpg-error.
1845 gpgme_err_code_t                NEW
1846 gpgme_err_source_t              NEW
1847 gpgme_err_code                  NEW
1848 gpgme_err_source                NEW
1849 gpgme_error                     NEW
1850 gpgme_err_make                  NEW
1851 gpgme_error_from_errno          NEW
1852 gpgme_err_make_from_errno       NEW
1853 gpgme_err_code_from_errno       NEW
1854 gpgme_err_code_to_errno         NEW
1855 gpgme_strsource                 NEW
1856 gpgme_io_cb_t                   CHANGED: Return type from void to GpgmeError.
1857 gpgme_event_io_t                CHANGED: New event type (all numbers changed).
1858 gpgme_passphrase_cb_t           CHANGED: Desc decomposed, write directly to FD.
1859 gpgme_edit_cb_t                 CHANGED: Write directly to FD.
1860 gpgme_key_get_string_attr       CHANGED: Don't handle GPGME_ATTR_IS_SECRET.
1861 gpgme_op_verify                 CHANGED: Drop R_STAT argument.
1862 gpgme_op_decrypt_verify         CHANGED: Drop R_STAT argument.
1863 gpgme_wait                      CHANGED: Can return NULL even if hang is true.
1864 GpgmeIdleFunc                   REMOVED
1865 gpgme_register_idle             REMOVED
1866 GpgmeRecipients                 REMOVED
1867 gpgme_recipients_new            REMOVED
1868 gpgme_recipients_release        REMOVED
1869 gpgme_recipients_add_name       REMOVED
1870 gpgme_recipients_add_name_with_validity REMOVED
1871 gpgme_recipients_count          REMOVED
1872 gpgme_recipients_enum_open      REMOVED
1873 gpgme_recipients_enum_read      REMOVED
1874 gpgme_recipients_enum_close     REMOVED
1875 gpgme_encrypt_flags_t           NEW
1876 GPGME_ENCRYPT_ALWAYS_TRUST      NEW
1877 gpgme_op_encrypt                CHANGED: Recipients passed as gpgme_key_t[].
1878 gpgme_op_encrypt_start          CHANGED: Recipients passed as gpgme_key_t[].
1879 gpgme_op_encrypt_sign           CHANGED: Recipients passed as gpgme_key_t[].
1880 gpgme_op_encrypt_sign_start     CHANGED: Recipients passed as gpgme_key_t[].
1881 gpgme_op_export_start           CHANGED: User IDs passed as patterns.
1882 gpgme_op_export                 CHANGED: User IDs passed as patterns.
1883 gpgme_op_export_ext_start       NEW
1884 gpgme_op_export_ext             NEW
1885 gpgme_keylist_mode_t            NEW
1886 gpgme_sigsum_t                  NEW
1887 gpgme_engine_info_t             NEW
1888 gpgme_get_engine_info           CHANGED: Return info structure instead XML.
1889 gpgme_get_protocol_name         NEW
1890 gpgme_cancel                    REMOVED: Return error in callback directly.
1891 gpgme_op_genkey                 CHANGED: FPR argument dropped.
1892 gpgme_op_genkey_result          NEW
1893 gpgme_genkey_result_t           NEW
1894 gpgme_op_import_ext             DEPRECATED: Use gpgme_op_import_result.
1895 gpgme_op_import_result          NEW
1896 gpgme_import_status_t           NEW
1897 gpgme_import_result_t           NEW
1898 gpgme_pubkey_algo_t             NEW
1899 gpgme_hash_algo_t               NEW
1900 gpgme_invalid_key_t             NEW
1901 gpgme_new_signature_t           NEW
1902 gpgme_sign_result_t             NEW
1903 gpgme_op_sign_result            NEW
1904 gpgme_pubkey_algo_name          NEW
1905 gpgme_hash_algo_name            NEW
1906 gpgme_encrypt_result_t          NEW
1907 gpgme_op_encrypt_result         NEW
1908 gpgme_decrypt_result_t          NEW
1909 gpgme_op_decrypt_result         NEW
1910 gpgme_verify_result_t           NEW
1911 gpgme_op_verify_result          NEW
1912 gpgme_get_notation              REMOVED: Access verify result directly instead.
1913 gpgme_get_sig_key               DEPRECATED: Use gpgme_get_key with fingerprint.
1914 gpgme_get_sig_ulong_attr        DEPRECATED: Use verify result directly.
1915 gpgme_get_sig_string_attr       DEPRECATED: Use verify result directly.
1916 GPGME_SIG_STAT_*                DEPRECATED: Use error value in sig status.
1917 gpgme_get_sig_status            DEPRECATED: Use verify result directly.
1918 gpgme_trust_item_t              CHANGED: Now has user accessible data members.
1919 gpgme_trust_item_ref            NEW
1920 gpgme_trust_item_unref          NEW
1921 gpgme_trust_item_release        DEPRECATED: Use gpgme_trust_item_unref.
1922 gpgme_trust_item_get_string_attr DEPRECATED
1923 gpgme_trust_item_get_ulong_attr DEPRECATED
1924 gpgme_get_key                   CHANGED: Removed force_update argument.
1925 gpgme_subkey_t                  NEW
1926 gpgme_key_sig_t                 NEW
1927 gpgme_user_id_t                 NEW
1928 gpgme_key_t                     CHANGED: Now has user accessible data members.
1929 gpgme_key_get_string_attr       DEPRECATED
1930 gpgme_key_get_ulong_attr        DEPRECATED
1931 gpgme_key_sig_get_string_attr   DEPRECATED
1932 gpgme_key_sig_get_ulong_attr    DEPRECATED
1933 gpgme_key_get_as_xml            REMOVED
1934 gpgme_key_list_result_t         NEW
1935 gpgme_op_keylist_result         NEW
1936 gpgme_get_op_info               REMOVED
1937 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1938
1939 Noteworthy changes in version 0.4.0 (2002-12-23)
1940 ------------------------------------------------
1941
1942  * Key generation returns the fingerprint of the generated key.
1943
1944  * New convenience function gpgme_get_key.
1945
1946  * Supports signatures of user IDs in keys via the new
1947    GPGME_KEYLIST_MODE_SIGS keylist mode and the
1948    gpgme_key_sig_get_string_attr and gpgme_key_sig_get_ulong_attr
1949    interfaces.  The XML info about a key also includes the signatures
1950    if available.
1951
1952  * New data object interface, which is more flexible and transparent.
1953
1954  * Interface changes relative to the 0.3.9 release:
1955 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1956 GpgmeDataReadCb                 NEW
1957 GpgmeDataWriteCb                NEW
1958 GpgmeDataSeekCb                 NEW
1959 GpgmeDataReleaseCb              NEW
1960 GpgmeDataCbs                    NEW
1961 gpgme_data_read                 CHANGED: Match read() closely.
1962 gpgme_data_write                CHANGED: Match write() closely.
1963 gpgme_data_seek                 NEW
1964 gpgme_data_new_from_fd          NEW
1965 gpgme_data_new_from_stream      NEW
1966 gpgme_data_new_from_cbs         NEW
1967 gpgme_data_rewind               DEPRECATED: Replaced by gpgme_data_seek().
1968 gpgme_data_new_from_read_cb     DEPRECATED: Replaced by gpgme_data_from_cbs().
1969 gpgme_data_get_type             REMOVED: No replacement.
1970 gpgme_op_verify                 CHANGED: Take different data objects for
1971                                 signed text and plain text.
1972 gpgme_op_verify_start           CHANGED: See gpgme_op_verify.
1973 gpgme_check_engine              REMOVED: Deprecated since 0.3.0.
1974 gpgme_op_genkey                 CHANGED: New parameter FPR.
1975 GPGME_KEYLIST_MODE_SIGS         NEW
1976 gpgme_key_sig_get_string_attr   NEW
1977 gpgme_key_sig_get_ulong_attr    NEW
1978 gpgme_get_key                   NEW
1979 GPGME_ATTR_SIG_CLASS            NEW
1980 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1981
1982 Noteworthy changes in version 0.3.16 (2003-11-19)
1983 -------------------------------------------------
1984
1985  * Compatibility fixes for GnuPG 1.9.x
1986
1987 Noteworthy changes in version 0.3.15 (2003-02-18)
1988 -------------------------------------------------
1989
1990  * The progress status is sent via the progress callbacks in
1991    gpgme_op_edit.
1992
1993  * Bug fix for signing operations with explicit signer settings for
1994    the CMS protocol.
1995
1996 Noteworthy changes in version 0.3.14 (2002-12-04)
1997 -------------------------------------------------
1998
1999  * GPGME-Plug is now in its own package "cryptplug".
2000
2001  * Workaround for a setlocale problem.  Fixed a segv related to not
2002    correctly as closed marked file descriptors.
2003
2004 Noteworthy changes in version 0.3.13 (2002-11-20)
2005 -------------------------------------------------
2006
2007  * Release due to changes in gpgmeplug.
2008
2009 Noteworthy changes in version 0.3.12 (2002-10-15)
2010 -------------------------------------------------
2011
2012  * Fixed some bux with key listings.
2013
2014  * The development has been branched to clean up some API issues.
2015    This 0.3 series will be kept for compatibility reasons; so do don't
2016    expect new features.
2017
2018 Noteworthy changes in version 0.3.11 (2002-09-20)
2019 -------------------------------------------------
2020
2021  * Bug fixes.
2022
2023 Noteworthy changes in version 0.3.10 (2002-09-02)
2024 -------------------------------------------------
2025
2026  * Setting the signing keys for the CMS protocol does now work.
2027
2028  * The signers setting is honoured by gpgme_op_edit.
2029
2030 Noteworthy changes in version 0.3.9 (2002-08-21)
2031 ------------------------------------------------
2032
2033  * A spec file for creating RPMs has been added.
2034
2035  * An experimental interface to GnuPG's --edit-key functionality is
2036    introduced, see gpgme_op_edit.
2037
2038  * The new gpgme_import_ext function provides a convenient access to
2039    the number of processed keys.
2040
2041  * Interface changes relative to the 0.3.8 release:
2042 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2043 GpgmeStatusCode                 NEW
2044 GpgmeEditCb                     NEW
2045 gpgme_op_edit_start             NEW
2046 gpgme_op_edit                   NEW
2047 gpgme_op_import_ext             NEW
2048 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2049
2050 Noteworthy changes in version 0.3.8 (2002-06-25)
2051 ------------------------------------------------
2052
2053  * It is possible to use an outside event loop for the I/O to the
2054    crypto engine by setting the I/O callbacks with gpgme_set_io_cbs.
2055
2056  * Interface changes relative to the 0.3.6 release:
2057 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2058 GpgmeIOCb                       NEW
2059 GpgmeRegisterIOCb               NEW
2060 GpgmeRemoveIOCb                 NEW
2061 GpgmeEventIO                    NEW
2062 GpgmeEventIOCb                  NEW
2063 struct GpgmeIOCbs               NEW
2064 gpgme_set_io_cbs                NEW
2065 gpgme_get_io_cbs                NEW
2066 GPGME_ATTR_ERRTOK               NEW
2067 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2068
2069 Noteworthy changes in version 0.3.7 (2002-06-04)
2070 ------------------------------------------------
2071
2072  * GPGME_ATTR_OTRUST is implemented now.
2073
2074  * A first step toward thread safeness has been achieved, see the
2075    documentation for details.  Supported thread libraries are pthread
2076    and Pth.
2077
2078 Noteworthy changes in version 0.3.6 (2002-05-03)
2079 ------------------------------------------------
2080
2081  * All error output of the gpgsm backend is send to the bit bucket.
2082
2083  * The signature verification functions are extended.  Instead of
2084    always returning GPGME_SIG_STATUS_GOOD, the functions new codes for
2085    expired signatures.  2 new functions may be used to retrieve more
2086    detailed information like the signature expiration time and a
2087    validity information of the key without an extra key looking.
2088
2089  * The current passphrase callback and progress meter callback can be
2090    retrieved with the new functions gpgme_get_passphrase_cb and
2091    gpgme_get_progress_cb respectively.
2092
2093  * Interface changes relative to the 0.3.5 release:
2094 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2095 gpgme_get_passphrase_cb         NEW
2096 gpgme_get_progress_cb           NEW
2097 GpgmeDataEncoding               NEW
2098 gpgme_data_set_encoding         NEW
2099 gpgme_data_get_encoding         NEW
2100 GPGME_SIG_STAT_GOOD_EXP         NEW
2101 GPGME_SIG_STAT_GOOD_EXPKEY      NEW
2102 gpgme_op_verify                 CHANGED: Returns more status codes.
2103 GPGME_ATTR_SIG_STATUS           NEW
2104 gpgme_get_sig_string_attr       NEW
2105 gpgme_get_sig_ulong_attr        NEW
2106 gpgme_get_protocol              NEW
2107 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2108
2109 Noteworthy changes in version 0.3.5 (2002-04-01)
2110 ------------------------------------------------
2111
2112  * gpgme_op_encrypt can be called with RECIPIENTS being 0.  In this
2113    case, symmetric encryption is performed.  Note that this requires a
2114    passphrase from the user.
2115
2116  * More information is returned for X.509 certificates.
2117
2118  * Interface changes relative to the 0.3.4 release:
2119 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2120 gpgme_op_encrypt                EXTENDED: Symmetric encryption possible
2121 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2122
2123 Noteworthy changes in version 0.3.4 (2002-03-04)
2124 ------------------------------------------------
2125
2126  * gpgme_op_encrypt does now fail with GPGME_Invalid_Recipients if
2127    some recipients have been invalid, whereas earlier versions
2128    succeeded in this case.  The plaintext is still encrypted for all valid
2129    recipients, so the application might take this error as a hint that
2130    the ciphertext is not usable for all requested recipients.
2131    Information about invalid recipients is available with gpgme_get_op_info.
2132
2133  * gpgme_op_verify now allows to pass an uninitialized data object as
2134    its plaintext argument to check for normal and cleartext
2135    signatures.  The plaintext is then returned in the data object.
2136
2137  * New interfaces gpgme_set_include_certs and gpgme_get_include_certs
2138    to set and get the number of certifications to include in S/MIME
2139    signed messages.
2140
2141  * New interfaces gpgme_op_encrypt_sign and gpgme_op_encrypt_sign_start
2142    to encrypt and sign a message in a combined operation.
2143
2144  * New interface gpgme_op_keylist_ext_start to search for multiple patterns.
2145
2146  * gpgme_key_get_ulong_attr supports the GPGME_ATTR_EXPIRE attribute.
2147
2148  * Interface changes relative to the 0.3.3 release:
2149 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2150 gpgme_op_encrypt                CHANGED: Can fail with GPGME_Invalid_Recipients
2151 gpgme_op_verify                 EXTENDED: Accepts uninitialized text argument
2152 gpgme_key_get_ulong_attr        EXTENDED: Supports GPGME_ATTR_EXPIRE
2153 gpgme_set_include_certs         NEW
2154 gpgme_get_include_certs         NEW
2155 gpgme_op_encrypt_sign           NEW
2156 gpgme_op_encrypt_sign_start     NEW
2157 gpgme_op_keylist_ext_start      NEW
2158 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2159
2160 Noteworthy changes in version 0.3.3 (2002-02-12)
2161 ------------------------------------------------
2162
2163  * Fix the Makefile in jnlib.
2164
2165  * Fix the test suite (hopefully).  It should clean up all its state
2166    with `make check' now.
2167
2168
2169 Noteworthy changes in version 0.3.2 (2002-02-10)
2170 ------------------------------------------------
2171
2172  * Remove erroneous dependency on libgcrypt in jnlib.
2173
2174
2175 Noteworthy changes in version 0.3.1 (2002-02-09)
2176 ------------------------------------------------
2177
2178  * There is a Texinfo manual documenting the API.
2179
2180  * The gpgme_set_keylist_mode function returns an error, and changed
2181    its meaning.  It is no longer usable to select between normal and
2182    fast mode (newer versions of GnuPG will always be fast), but
2183    selects between local keyring, remote keyserver, or both.
2184    For this, two new macros are defined, GPGME_KEYLIST_MODE_LOCAL
2185    and GPGME_KEYLIST_MODE_EXTERN.  To make it possible to modify the
2186    current setting, a function gpgme_get_keylist_mode was added to
2187    retrieve the current mode.
2188
2189  * gpgme_wait accepts a new argument STATUS to return the error status
2190    of the operation on the context.  Its definition is closer to
2191    waitpid() now than before.
2192
2193  * The LENGTH argument to gpgme_data_new_from_filepart changed its
2194    type from off_t to the unsigned size_t.
2195
2196  * The R_HD argument to the GpgmePassphraseCb type changed its type
2197    from void* to void**.
2198
2199  * New interface gpgme_op_trustlist_end() to match
2200    gpgme_op_keylist_end().
2201
2202  * The CryptPlug modules have been renamed to gpgme-openpgp and
2203    gpgme-smime, and they are installed in pkglibdir by `make install'.
2204
2205  * An idle function can be registered with gpgme_register_idle().
2206
2207  * The GpgSM backend supports key generation with gpgme_op_genkey().
2208
2209  * Interface changes relative to the 0.3.0 release:
2210 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2211 gpgme_data_new_from_filepart    CHANGED: Type of LENGTH is size_t.
2212 GpgmePassphraseCb               CHANGED: Type of R_HD is void **.
2213 gpgme_wait                      CHANGED: New argument STATUS.
2214 gpgme_set_keylist_mode          CHANGED: Type of return value is GpgmeError.
2215                                 The function has a new meaning!
2216 gpgme_get_keylist_mode          NEW
2217 GPGME_KEYLIST_MODE_LOCAL        NEW
2218 GPGME_KEYLIST_MODE_EXTERN       NEW
2219 gpgme_op_trustlist_next         NEW
2220 GpgmeIdleFunc                   NEW
2221 gpgme_register_idle             NEW
2222 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2223
2224 Noteworthy changes in version 0.3.0 (2001-12-19)
2225 ------------------------------------------------
2226
2227  * New interface gpgme_set_protocol() to set the protocol and thus the
2228    crypto engine to be used by the context.  Currently, the OpenPGP
2229    and the CMS protocols are supported.  They are specified by the new
2230    preprocessor symbols GPGME_PROTOCOL_OpenPGP and GPGME_PROTOCOL_CMS.
2231    A new context uses the OpenPGP engine by default.
2232
2233  * gpgme_get_engine_info() returns information for all crypto engines
2234    compiled into the library.  The XML format has changed.  To
2235    reliably get the version of a crypto engine, the <version> tag
2236    after the appropriate <protocol> tag has to be looked for.
2237
2238  * New interface gpgme_engine_check_version(), obsoleting
2239    gpgme_check_engine().  Check the version of all engines you are
2240    supporting in your software.
2241
2242  * GpgmeKey lists the user ids in the order as they are returned by
2243    GnuPG, first the primary key with index 0, then the sub-user ids.
2244
2245  * New operation gpgme_op_decrypt_verify() to decrypt and verify
2246    signatures simultaneously.
2247
2248  * The new interface gpgme_op_keylist_end() terminates a pending
2249    keylist operation.  A keylist operation is also terminated when
2250    gpgme_op_keylist_next() returns GPGME_EOF.
2251
2252  * GPGME can be compiled without GnuPG being installed (`--with-gpg=PATH'),
2253    cross-compiled, or even compiled without support for GnuPG
2254    (`--without-gpg').
2255
2256  * GPGME can be compiled with support for GpgSM (GnuPG for S/MIME,
2257    `--with-gpgsm=PATH').  It is enabled by default if the `gpgsm' is found
2258    in the path, but it can also be compiled without support for GpgSM
2259    (`--without-gpgsm').
2260
2261  * CryptPlug modules for GPGME are included and can be enabled at
2262    configure time (`--enable-gpgmeplug').  There is one module which
2263    uses the GnuPG engine (`gpgmeplug') and one module which uses the
2264    GpgSM engine (`gpgsmplug').
2265
2266  * Interface changes relative to the latest 0.2.x release:
2267 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2268 gpgme_key_get_as_xml            CHANGED: Sub-user ids reversed in order.
2269 gpgme_key_get_string_attr       CHANGED: User ids reversed in order.
2270 gpgme_key_get_ulong_attr        CHANGED: User ids reversed in order.
2271 gpgme_get_engine_info           CHANGED: New format, extended content.
2272 gpgme_engine_check_version      NEW
2273 gpgme_decrypt_verify_start      NEW
2274 gpgme_decrypt_verify            NEW
2275 gpgme_op_keylist_next           NEW
2276 gpgme_set_protocol              NEW
2277 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2278
2279
2280 Noteworthy changes in version 0.2.3 (2001-09-17)
2281 ------------------------------------------------
2282
2283  * New function gpgme_get_op_info which can be used to get the micalg
2284    parameter needed for MOSS.
2285
2286  * New functions gpgme_get_armor and gpgme_get_textmode.
2287
2288  * The usual bug fixes and some minor functionality improvements.
2289
2290  * Added a simple encryption component for MS-Windows; however the
2291    build procedure might have some problems.
2292
2293
2294 Noteworthy changes in version 0.2.2 (2001-06-12)
2295 ------------------------------------------------
2296
2297  * Implemented a key cache.
2298
2299  * Fixed a race condition under W32 and some other bug fixes.
2300
2301
2302 Noteworthy changes in version 0.2.1 (2001-04-02)
2303 ------------------------------------------------
2304
2305  * Changed debug output and GPGME_DEBUG variable (gpgme/debug.c)
2306
2307  * Handle GnuPG's new key capabilities output and support revocation
2308    et al. attributes
2309
2310  * Made the W32 support more robust.
2311
2312
2313  Copyright 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009,
2314            2010 g10 Code GmbH
2315
2316  This file is free software; as a special exception the author gives
2317  unlimited permission to copy and/or distribute it, with or without
2318  modifications, as long as this notice is preserved.
2319
2320  This file is distributed in the hope that it will be useful, but
2321  WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
2322  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.