1Noteworthy 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
20Noteworthy 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
72Noteworthy 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
117Noteworthy 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
148Noteworthy 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
203Noteworthy 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
247Noteworthy 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
264Noteworthy 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
326Noteworthy 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
377Noteworthy 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
458Noteworthy 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
499Noteworthy 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
530Noteworthy 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
637Noteworthy 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
670Noteworthy 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
680Noteworthy 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
688Noteworthy 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
695Noteworthy 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
705Noteworthy 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
718Noteworthy 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
760Noteworthy 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
778Noteworthy 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
792Noteworthy 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
803Noteworthy 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
838Noteworthy 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
849Noteworthy 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
867Noteworthy 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
895Noteworthy 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
951Noteworthy 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
958Noteworthy 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 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
980gpgme_op_encrypt		CHANGED: Output encoding can affect result.
981gpgme_op_encrypt_start		CHANGED: Output encoding can affect result.
982gpgme_op_encrypt_sign		CHANGED: Output encoding can affect result.
983gpgme_op_encrypt_sign_start	CHANGED: Output encoding can affect result.
984gpgme_op_sign			CHANGED: Output encoding can affect result.
985gpgme_op_sign_start		CHANGED: Output encoding can affect result.
986gpgme_op_export			CHANGED: Output encoding can affect result.
987gpgme_op_export_start		CHANGED: Output encoding can affect result.
988gpgme_op_export_ext		CHANGED: Output encoding can affect result.
989gpgme_op_export_ext_start	CHANGED: Output encoding can affect result.
990gpgme_cancel_async		NEW
991 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
992
993
994Noteworthy 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
1013Noteworthy changes in version 1.1.5 (2007-07-09)
1014------------------------------------------------
1015
1016 * Bug and portability fixes (mainly for W32).
1017
1018
1019Noteworthy 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
1028Noteworthy 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
1036Noteworthy changes in version 1.1.2 (2006-03-02)
1037------------------------------------------------
1038
1039 * Fixed a bug in the W32 glib backend.
1040
1041
1042Noteworthy 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~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1069gpgme_key_sig_t			EXTENDED: New field notations.
1070GPGME_KEYLIST_MODE_SIG_NOTATIONS NEW
1071gpgme_free			NEW
1072GPGME_STATUS_PKA_TRUST_BAD      NEW
1073GPGME_STATUS_PKA_TRUST_GOOD     NEW
1074gpgme_signature_t               EXTENDED: New field pka_trust.
1075gpgme_signature_t               EXTENDED: New field pka_address.
1076~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1077
1078
1079Noteworthy 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~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1123gpgme_set_engine_info		NEW
1124gpgme_ctx_get_engine_info	NEW
1125gpgme_ctx_set_engine_info	NEW
1126gpgme_recipient_t		NEW
1127gpgme_decrypt_result_t		EXTENDED: New field recipients.
1128gpgme_verify_result_t		EXTENDED: New fields pubkey_algo, hash_algo.
1129gpgme_decrypt_result_t		EXTENDED: New field plaintext_filename.
1130gpgme_verify_result_t		EXTENDED: New field plaintext_filename.
1131GPGME_STATUS_PLAINTEXT		NEW
1132gpgme_key_t			EXTENDED: New field is_qualified.
1133gpgme_subkey_t			EXTENDED: New field is_qualified.
1134gpgme_data_get_file_name	NEW
1135gpgme_data_set_file_name	NEW
1136gpgme_sig_notation_flags_t	NEW
1137GPGME_SIG_NOTATION_HUMAN_READABLE NEW
1138GPGME_SIG_NOTATAION_CRITICAL	NEW
1139gpgme_sig_notation_clear	NEW
1140gpgme_sig_notation_add		NEW
1141gpgme_sig_notation_get		NEW
1142~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1143
1144
1145Noteworthy 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~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1163gpgme_set_include_certs		CHANGED DEFAULT
1164GPGME_INCLUDE_CERTS_DEFAULT	NEW
1165GPGME_STATUS_SIG_SUBPACKET	NEW
1166GPGME_STATUS_NEED_PASSPHRASE_PIN NEW
1167GPGME_STATUS_SC_OP_FAILURE	NEW
1168GPGME_STATUS_SC_OP_SUCCESS	NEW
1169GPGME_STATUS_CARDCTRL		NEW
1170GPGME_STATUS_BACKUP_KEY_CREATED	NEW
1171~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1172
1173
1174Noteworthy 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
1181Noteworthy changes in version 1.0.1 (2004-10-22)
1182------------------------------------------------
1183
1184 * Only bug fixes.
1185
1186
1187Noteworthy 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
1204Noteworthy 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~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1227gpgme_key_t			EXTENDED: New field keylist_mode.
1228gpgme_decrypt_result_t		EXTENDED: New field wrong_key_usage.
1229~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1230
1231
1232Noteworthy 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~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1243gpgme_signature_t		CHANGED: wrong_key_usage is unsigned int now.
1244~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1245
1246Noteworthy changes in version 0.4.6 (2004-04-06)
1247------------------------------------------------
1248
1249 * Bug fixes
1250
1251
1252Noteworthy 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~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1316gpgme_data_seek_cb_t		CHANGED: off_t is now a largefile type.
1317gpgme_data_seek			CHANGED: off_t is now a largefile type.
1318gpgme_data_new_from_filepart	CHANGED: off_t is now a largefile type.
1319GPGME_KEYLIST_MODE_VALIDATE     NEW
1320gpgme_cancel			NEW
1321~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1322
1323Noteworthy 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~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1333gpgme_key_sig_t			CHANGED: class deprecated, use new sig_class.
1334gpgme_new_signature_t		CHANGED: class deprecated, use new sig_class.
1335~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1336
1337Noteworthy 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~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1406gpgme_strerror_t		NEW
1407gpgme_get_key			CHANGED: Fails correctly if key ID not unique.
1408gpgme_key_t			EXTENDED: New field can_authenticate.
1409gpgme_subkey_t			EXTENDED: New field can_authenticate.
1410gpgme_new_signature_t		CHANGED: New type for class field.
1411gpgme_set_locale		NEW
1412gpgme_hash_algo_name		CHANGED: Slight adjustment of algo names.
1413~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1414
1415Noteworthy 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
1430Noteworthy 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~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1677GpgmeCtx			DEPRECATED: Use gpgme_ctx_t.
1678GpgmeData			DEPRECATED: Use gpgme_data_t.
1679GpgmeError			DEPRECATED: Use gpgme_error_t.
1680GpgmeDataEncoding		DEPRECATED: Use gpgme_data_encoding_t.
1681GpgmeSigStat			DEPRECATED: Use gpgme_sig_stat_t.
1682GpgmeSigMode			DEPRECATED: Use gpgme_sig_mode_t.
1683GpgmeAttr			DEPRECATED: Use gpgme_attr_t.
1684GpgmeValidity			DEPRECATED: Use gpgme_validity_t.
1685GpgmeProtocol			DEPRECATED: Use gpgme_protocol_t.
1686GpgmeKey			DEPRECATED: Use gpgme_key_t.
1687GpgmePassphraseCb		DEPRECATED: Use gpgme_passphrase_cb_t.
1688GpgmeProgressCb			DEPRECATED: Use gpgme_progress_cb_t.
1689GpgmeIOCb			DEPRECATED: Use gpgme_io_cb_t.
1690GpgmeRegisterIOCb		DEPRECATED: Use gpgme_register_io_cb_t.
1691GpgmeRemoveIOCb			DEPRECATED: Use gpgme_remove_io_cb_t.
1692GpgmeEventIO			DEPRECATED: Use gpgme_event_io_t.
1693GpgmeEventIOCb			DEPRECATED: Use gpgme_event_io_cb_t.
1694GpgmeIOCbs			DEPRECATED: Use gpgme_io_cbs.
1695GpgmeDataReadCb			DEPRECATED: Use gpgme_data_read_cb_t.
1696GpgmeDataWriteCb		DEPRECATED: Use gpgme_data_write_cb_t.
1697GpgmeDataSeekCb			DEPRECATED: Use gpgme_data_seek_cb_t.
1698GpgmeDataReleaseCb		DEPRECATED: Use gpgme_data_release_cb_t.
1699GpgmeDataCbs			DEPRECATED: Use gpgme_data_cbs_t.
1700GpgmeTrustItem			DEPRECATED: Use gpgme_trust_item_t.
1701GpgmeStatusCode			DEPRECATED: Use gpgme_status_code_t.
1702gpgme_ctx_t			NEW
1703gpgme_data_t			NEW
1704gpgme_recipients_t		NEW
1705gpgme_error_t			NEW
1706gpgme_data_encoding_t		NEW
1707gpgme_sig_stat_t		NEW
1708gpgme_sig_mode_t		NEW
1709gpgme_attr_t			NEW
1710gpgme_validity_t		NEW
1711gpgme_protocol_t		NEW
1712gpgme_key_t			NEW
1713gpgme_passphrase_cb_t		NEW
1714gpgme_progress_cb_t		NEW
1715gpgme_io_cb_t			NEW
1716gpgme_register_io_cb_t		NEW
1717gpgme_remove_io_cb_t		NEW
1718gpgme_event_io_t		NEW
1719gpgme_event_io_cb_t		NEW
1720gpgme_io_cbs			NEW
1721gpgme_data_read_cb_t		NEW
1722gpgme_data_write_cb_t		NEW
1723gpgme_data_seek_cb_t		NEW
1724gpgme_data_release_cb_t		NEW
1725gpgme_data_cbs_t		NEW
1726gpgme_trust_item_t		NEW
1727gpgme_status_code_t		NEW
1728GPGME_{some error code}		REMOVED! Use GPG_ERR_* from libgpg-error.
1729gpgme_err_code_t		NEW
1730gpgme_err_source_t		NEW
1731gpgme_err_code			NEW
1732gpgme_err_source		NEW
1733gpgme_error			NEW
1734gpgme_err_make			NEW
1735gpgme_error_from_errno		NEW
1736gpgme_err_make_from_errno	NEW
1737gpgme_err_code_from_errno	NEW
1738gpgme_err_code_to_errno		NEW
1739gpgme_strsource			NEW
1740gpgme_io_cb_t			CHANGED: Return type from void to GpgmeError.
1741gpgme_event_io_t		CHANGED: New event type (all numbers changed).
1742gpgme_passphrase_cb_t		CHANGED: Desc decomposed, write directly to FD.
1743gpgme_edit_cb_t			CHANGED: Write directly to FD.
1744gpgme_key_get_string_attr	CHANGED: Don't handle GPGME_ATTR_IS_SECRET.
1745gpgme_op_verify			CHANGED: Drop R_STAT argument.
1746gpgme_op_decrypt_verify		CHANGED: Drop R_STAT argument.
1747gpgme_wait			CHANGED: Can return NULL even if hang is true.
1748GpgmeIdleFunc                   REMOVED
1749gpgme_register_idle             REMOVED
1750GpgmeRecipients			REMOVED
1751gpgme_recipients_new		REMOVED
1752gpgme_recipients_release	REMOVED
1753gpgme_recipients_add_name	REMOVED
1754gpgme_recipients_add_name_with_validity	REMOVED
1755gpgme_recipients_count		REMOVED
1756gpgme_recipients_enum_open	REMOVED
1757gpgme_recipients_enum_read	REMOVED
1758gpgme_recipients_enum_close	REMOVED
1759gpgme_encrypt_flags_t		NEW
1760GPGME_ENCRYPT_ALWAYS_TRUST	NEW
1761gpgme_op_encrypt		CHANGED: Recipients passed as gpgme_key_t[].
1762gpgme_op_encrypt_start		CHANGED: Recipients passed as gpgme_key_t[].
1763gpgme_op_encrypt_sign		CHANGED: Recipients passed as gpgme_key_t[].
1764gpgme_op_encrypt_sign_start	CHANGED: Recipients passed as gpgme_key_t[].
1765gpgme_op_export_start		CHANGED: User IDs passed as patterns.
1766gpgme_op_export			CHANGED: User IDs passed as patterns.
1767gpgme_op_export_ext_start	NEW
1768gpgme_op_export_ext		NEW
1769gpgme_keylist_mode_t		NEW
1770gpgme_sigsum_t			NEW
1771gpgme_engine_info_t		NEW
1772gpgme_get_engine_info		CHANGED: Return info structure instead XML.
1773gpgme_get_protocol_name		NEW
1774gpgme_cancel			REMOVED: Return error in callback directly.
1775gpgme_op_genkey			CHANGED: FPR argument dropped.
1776gpgme_op_genkey_result		NEW
1777gpgme_genkey_result_t		NEW
1778gpgme_op_import_ext		DEPRECATED: Use gpgme_op_import_result.
1779gpgme_op_import_result		NEW
1780gpgme_import_status_t		NEW
1781gpgme_import_result_t		NEW
1782gpgme_pubkey_algo_t		NEW
1783gpgme_hash_algo_t		NEW
1784gpgme_invalid_key_t		NEW
1785gpgme_new_signature_t		NEW
1786gpgme_sign_result_t		NEW
1787gpgme_op_sign_result		NEW
1788gpgme_pubkey_algo_name		NEW
1789gpgme_hash_algo_name		NEW
1790gpgme_encrypt_result_t		NEW
1791gpgme_op_encrypt_result		NEW
1792gpgme_decrypt_result_t		NEW
1793gpgme_op_decrypt_result		NEW
1794gpgme_verify_result_t		NEW
1795gpgme_op_verify_result		NEW
1796gpgme_get_notation		REMOVED: Access verify result directly instead.
1797gpgme_get_sig_key		DEPRECATED: Use gpgme_get_key with fingerprint.
1798gpgme_get_sig_ulong_attr	DEPRECATED: Use verify result directly.
1799gpgme_get_sig_string_attr	DEPRECATED: Use verify result directly.
1800GPGME_SIG_STAT_*		DEPRECATED: Use error value in sig status.
1801gpgme_get_sig_status		DEPRECATED: Use verify result directly.
1802gpgme_trust_item_t		CHANGED: Now has user accessible data members.
1803gpgme_trust_item_ref		NEW
1804gpgme_trust_item_unref		NEW
1805gpgme_trust_item_release	DEPRECATED: Use gpgme_trust_item_unref.
1806gpgme_trust_item_get_string_attr DEPRECATED
1807gpgme_trust_item_get_ulong_attr	DEPRECATED
1808gpgme_get_key			CHANGED: Removed force_update argument.
1809gpgme_subkey_t			NEW
1810gpgme_key_sig_t			NEW
1811gpgme_user_id_t			NEW
1812gpgme_key_t			CHANGED: Now has user accessible data members.
1813gpgme_key_get_string_attr	DEPRECATED
1814gpgme_key_get_ulong_attr	DEPRECATED
1815gpgme_key_sig_get_string_attr	DEPRECATED
1816gpgme_key_sig_get_ulong_attr	DEPRECATED
1817gpgme_key_get_as_xml		REMOVED
1818gpgme_key_list_result_t		NEW
1819gpgme_op_keylist_result		NEW
1820gpgme_get_op_info		REMOVED
1821~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1822
1823Noteworthy 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~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1840GpgmeDataReadCb			NEW
1841GpgmeDataWriteCb		NEW
1842GpgmeDataSeekCb			NEW
1843GpgmeDataReleaseCb		NEW
1844GpgmeDataCbs			NEW
1845gpgme_data_read			CHANGED: Match read() closely.
1846gpgme_data_write		CHANGED: Match write() closely.
1847gpgme_data_seek			NEW
1848gpgme_data_new_from_fd		NEW
1849gpgme_data_new_from_stream	NEW
1850gpgme_data_new_from_cbs		NEW
1851gpgme_data_rewind		DEPRECATED: Replaced by gpgme_data_seek().
1852gpgme_data_new_from_read_cb	DEPRECATED: Replaced by gpgme_data_from_cbs().
1853gpgme_data_get_type		REMOVED: No replacement.
1854gpgme_op_verify			CHANGED: Take different data objects for
1855				signed text and plain text.
1856gpgme_op_verify_start		CHANGED: See gpgme_op_verify.
1857gpgme_check_engine		REMOVED: Deprecated since 0.3.0.
1858gpgme_op_genkey			CHANGED: New parameter FPR.
1859GPGME_KEYLIST_MODE_SIGS		NEW
1860gpgme_key_sig_get_string_attr	NEW
1861gpgme_key_sig_get_ulong_attr	NEW
1862gpgme_get_key			NEW
1863GPGME_ATTR_SIG_CLASS		NEW
1864~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1865
1866Noteworthy changes in version 0.3.16 (2003-11-19)
1867-------------------------------------------------
1868
1869 * Compatibility fixes for GnuPG 1.9.x
1870
1871Noteworthy 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
1880Noteworthy 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
1888Noteworthy changes in version 0.3.13 (2002-11-20)
1889-------------------------------------------------
1890
1891 * Release due to changes in gpgmeplug.
1892
1893Noteworthy 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
1902Noteworthy changes in version 0.3.11 (2002-09-20)
1903-------------------------------------------------
1904
1905 * Bug fixes.
1906
1907Noteworthy 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
1914Noteworthy 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~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1927GpgmeStatusCode			NEW
1928GpgmeEditCb			NEW
1929gpgme_op_edit_start		NEW
1930gpgme_op_edit			NEW
1931gpgme_op_import_ext		NEW
1932~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1933
1934Noteworthy 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~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1942GpgmeIOCb			NEW
1943GpgmeRegisterIOCb		NEW
1944GpgmeRemoveIOCb			NEW
1945GpgmeEventIO			NEW
1946GpgmeEventIOCb			NEW
1947struct GpgmeIOCbs		NEW
1948gpgme_set_io_cbs		NEW
1949gpgme_get_io_cbs		NEW
1950GPGME_ATTR_ERRTOK		NEW
1951~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1952
1953Noteworthy 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
1962Noteworthy 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~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1979gpgme_get_passphrase_cb		NEW
1980gpgme_get_progress_cb		NEW
1981GpgmeDataEncoding               NEW
1982gpgme_data_set_encoding         NEW
1983gpgme_data_get_encoding         NEW
1984GPGME_SIG_STAT_GOOD_EXP         NEW
1985GPGME_SIG_STAT_GOOD_EXPKEY      NEW
1986gpgme_op_verify                 CHANGED: Returns more status codes.
1987GPGME_ATTR_SIG_STATUS           NEW
1988gpgme_get_sig_string_attr       NEW
1989gpgme_get_sig_ulong_attr        NEW
1990gpgme_get_protocol              NEW
1991~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1992
1993Noteworthy 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~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2004gpgme_op_encrypt		EXTENDED: Symmetric encryption possible
2005~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2006
2007Noteworthy 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~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2034gpgme_op_encrypt		CHANGED: Can fail with GPGME_Invalid_Recipients
2035gpgme_op_verify			EXTENDED: Accepts uninitialized text argument
2036gpgme_key_get_ulong_attr	EXTENDED: Supports GPGME_ATTR_EXPIRE
2037gpgme_set_include_certs		NEW
2038gpgme_get_include_certs		NEW
2039gpgme_op_encrypt_sign		NEW
2040gpgme_op_encrypt_sign_start	NEW
2041gpgme_op_keylist_ext_start	NEW
2042~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2043
2044Noteworthy 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
2053Noteworthy changes in version 0.3.2 (2002-02-10)
2054------------------------------------------------
2055
2056 * Remove erroneous dependency on libgcrypt in jnlib.
2057
2058
2059Noteworthy 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~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2095gpgme_data_new_from_filepart	CHANGED: Type of LENGTH is size_t.
2096GpgmePassphraseCb               CHANGED: Type of R_HD is void **.
2097gpgme_wait                      CHANGED: New argument STATUS.
2098gpgme_set_keylist_mode          CHANGED: Type of return value is GpgmeError.
2099                                The function has a new meaning!
2100gpgme_get_keylist_mode          NEW
2101GPGME_KEYLIST_MODE_LOCAL        NEW
2102GPGME_KEYLIST_MODE_EXTERN       NEW
2103gpgme_op_trustlist_next		NEW
2104GpgmeIdleFunc                   NEW
2105gpgme_register_idle             NEW
2106~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2107
2108Noteworthy 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~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2152gpgme_key_get_as_xml		CHANGED: Sub-user ids reversed in order.
2153gpgme_key_get_string_attr	CHANGED: User ids reversed in order.
2154gpgme_key_get_ulong_attr	CHANGED: User ids reversed in order.
2155gpgme_get_engine_info		CHANGED: New format, extended content.
2156gpgme_engine_check_version	NEW
2157gpgme_decrypt_verify_start	NEW
2158gpgme_decrypt_verify		NEW
2159gpgme_op_keylist_next		NEW
2160gpgme_set_protocol		NEW
2161~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2162
2163
2164Noteworthy 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
2178Noteworthy 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
2186Noteworthy 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.
2207