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