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