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