python: Improve error handling.
[gpgme.git] / NEWS
1 Noteworthy changes in version 1.7.0 (unreleased) [C25/A14/R_]
2 ------------------------------------------------
3
4  * New function to format a GnuPG style public key algorithm string.
5
6  * Notation flags are now correctly set on verify.
7
8  * Bindings for Python 2 and 3 are now included.
9
10  * New global flag "require-gnupg" to set a minimal gnupg version.
11
12  * Interface changes relative to the 1.6.0 release:
13  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
14  gpgme_pubkey_algo_string       NEW.
15  GPGME_PK_EDDSA                 NEW.
16  gpgme_set_ctx_flag             NEW.
17  gpgme_data_set_flag            NEW.
18  gpgme_op_createkey             NEW.
19  gpgme_op_createkey_start       NEW.
20  gpgme_op_createsubkey          NEW.
21  gpgme_op_createsubkey_start    NEW.
22  gpgme_op_adduid_start          NEW.
23  gpgme_op_adduid                NEW.
24  gpgme_op_revuid_start          NEW.
25  gpgme_op_revuid                NEW.
26  gpgme_genkey_result_t          EXTENDED: New fields pubkey and seckey.
27  gpgme_signature_t              EXTENDED: New field key.
28  gpgme_key_t                    EXTENDED: New field fpr.
29  gpgme_subkey_t                 EXTENDED: New field keygrip.
30  gpgme_user_id_t                EXTENDED: New field tofu.
31  gpgme_tofu_policy_t            NEW.
32  gpgme_tofu_info_t              NEW.
33  GPGME_STATUS_KEY_CONSIDERED    NEW.
34  GPGME_STATUS_TOFU_USER         NEW.
35  GPGME_STATUS_TOFU_STATS        NEW.
36  GPGME_STATUS_TOFU_STATS_LONG   NEW.
37  GPGME_STATUS_NOTATION_FLAGS    NEW.
38  GPGME_KEYLIST_MODE_WITH_TOFU   NEW.
39  GPGME_DATA_TYPE_PGP_ENCRYPTED  NEW.
40  GPGME_DATA_TYPE_PGP_SIGNATURE  NEW.
41  GPGME_DATA_ENCODING_MIME       NEW.
42  GPGME_ENCRYPT_SYMMETRIC        NEW.
43  GPGME_CREATE_SIGN              NEW.
44  GPGME_CREATE_ENCR              NEW.
45  GPGME_CREATE_CERT              NEW.
46  GPGME_CREATE_AUTH              NEW.
47  GPGME_CREATE_NOPASSWD          NEW.
48  GPGME_CREATE_SELFSIGNED        NEW.
49  GPGME_CREATE_NOSTORE           NEW.
50  GPGME_CREATE_WANTPUB           NEW.
51  GPGME_CREATE_WANTSEC           NEW.
52  GPGME_CREATE_FORCE             NEW.
53
54
55 Noteworthy changes in version 1.6.0 (2015-08-26) [C25/A14/R0]
56 ------------------------------------------------
57
58  * Added gpgme_set_offline to do a key listinging w/o requiring CRL.
59
60  * Added gpgme_set_status_cb to allow a user to see some status
61    messages.
62
63  * Added an export mode for secret keys.
64
65  * More precise error codes are returned if GnuPG >= 2.1.8 is used.
66
67  * The passphrase handler for the loopback mode has been improved and may
68    also be used with genkey.
69
70  * [w32] The standard GnuPG 2.1 install directory is now seached for
71    gpgconf.exe before a registry specified directory and the Gpg4win
72    install directory.
73
74  * [w32] gpgme-w32spawn.exe will now only be searched in the gpgme DLL
75    directory.
76
77  * Interface changes relative to the 1.5.1 release:
78  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
79  gpgme_set_offline              NEW.
80  gpgme_get_offline              NEW.
81  gpgme_set_status_cb            NEW.
82  gpgme_get_status_cb            NEW.
83  GPGME_EXPORT_MODE_SECRET       NEW
84  GPGME_EXPORT_MODE_RAW          NEW.
85  GPGME_EXPORT_MODE_PKCS12       NEW.
86
87
88 Noteworthy changes in version 1.5.5 (2015-06-08) [C24/A13/R4]
89 ------------------------------------------------
90
91  * Fixed crash in key listings for user ids with a backslash.
92
93  * Fixed regression for GPGSM use with GnuPG < 2.1.
94
95  * Properly set signature summary for revoked OpenPGP keys.
96
97
98 Noteworthy changes in version 1.5.4 (2015-04-13) [C24/A13/R3]
99 ------------------------------------------------
100
101  * Fixed a possible crash in the debug code.
102
103  * Fixed building for Windows with newer versions of Mingw.
104
105
106 Noteworthy changes in version 1.5.3 (2014-12-11) [C24/A13/R2]
107 -------------------------------------------------------------
108
109  * The export key functions do now return an error if used with the
110    latest GnuPG version.
111
112
113 Noteworthy changes in version 1.5.2 (2014-11-21) [C24/A13/R1]
114 -------------------------------------------------------------
115
116  * gpgme-tool is now installed.
117
118  * Fix external listing for modern keyservers.
119
120  * Minor other fixes.
121
122
123 Noteworthy changes in version 1.5.1 (2014-07-30) [C24/A13/R0]
124 -------------------------------------------------------------
125
126  * Fixed possible overflow in gpgsm and uiserver engines.
127    [CVE-2014-3564]
128
129  * Added support for GnuPG 2.1's --with-secret option.
130
131  * Interface changes relative to the 1.5.0 release:
132  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
133  GPGME_KEYLIST_MODE_WITH_SECRET NEW.
134
135
136 Noteworthy changes in version 1.5.0 (2014-05-21) [C23/A12/R0]
137 -------------------------------------------------------------
138
139  * On Unices the engine file names are not not anymore hardwired but
140    located via the envvar PATH.  All options to set the name of the
141    engines for the configure run are removed.
142
143  * If GPGME finds the gpgconf binary it defaults to using gpg2 or
144    whatever gpgconf tells as name for the OpenPGP engine.  If gpgconf
145    is not found, GPGME looks for an engine named "gpg".
146
147  * New feature to use the gpgme I/O subsystem to run arbitrary
148    commands.
149
150  * New flag to use encryption without the default compression step.
151
152  * New function to access "gpg-conf --list-dirs"
153
154  * New configure option --enable-fixed-path for use by Android.
155
156  * Support ECC algorithms.
157
158  * Interface changes relative to the 1.4.3 release:
159  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
160  gpgme_get_dirinfo              NEW.
161  gpgme_op_spawn_start           NEW.
162  gpgme_op_spawn                 NEW.
163  GPGME_PROTOCOL_SPAWN           NEW.
164  GPGME_SPAWN_DETACHED           NEW.
165  GPGME_SPAWN_ALLOW_SET_FG       NEW.
166  GPGME_ENCRYPT_NO_COMPRESS      NEW.
167  GPGME_PK_ECC                   NEW.
168  GPGME_MD_SHA224                NEW.
169  gpgme_subkey_t                 EXTENDED: New field curve.
170  GPGME_STATUS_PLAINTEXT_LENGTH  NEW.
171  GPGME_STATUS_MOUNTPOINT        NEW.
172  GPGME_STATUS_PINENTRY_LAUNCHED NEW.
173  GPGME_STATUS_ATTRIBUTE         NEW.
174  GPGME_STATUS_BEGIN_SIGNING     NEW.
175  GPGME_STATUS_KEY_NOT_CREATED   NEW.
176
177
178 Noteworthy changes in version 1.4.3 (2013-08-12) [C22/A11/R0]
179 -------------------------------------------------------------
180
181  * The default engine names are now taken from the output of gpgconf.
182    If gpgconf is not found the use of gpg 1 is assumed.
183
184  * Under Windows the default engines names are first searched in the
185    installation directory of the gpgme DLL.
186
187  * New function gpgme_data_identify to detect the type of a message.
188
189  * Interface changes relative to the 1.4.2 release:
190  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
191  gpgme_signers_count            NEW.
192  gpgme_data_type_t              NEW.
193  gpgme_data_identify            NEW.
194
195
196 Noteworthy changes in version 1.4.2 (2013-05-28) [C21/A10/R0]
197 -------------------------------------------------------------
198
199  * Allow symmetric encryption with gpgme_op_encrypt_sign.
200
201  * Fixed mismatching off_t definitions on Windows.
202
203  * Interface changes relative to the 1.4.1 release:
204  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
205  gpgme_off_t                    NEW.
206  gpgme_size_t                   NEW.
207  GPGME_PROTOCOL_OPENPGP         NEW alias.
208
209
210 Noteworthy changes in version 1.4.1 (2013-05-01) [C20/A9/R1]
211 ------------------------------------------------------------
212
213  * Fixed reading of gpg.conf files with excessive use of the group
214    option.
215
216  * Fixed building with the i686-w64-mingw32 toolchain.
217
218  * Disabled FD passing by default for Apple.
219
220
221 Noteworthy changes in version 1.4.0 (2013-02-26) [C20/A9/R0]
222 ------------------------------------------------------------
223
224  * New function gpgme_set_global_flag to help debugging on Android.
225
226  * New function gpgme_io_writen as a convenience wrapper around
227    gpgme_io_write.
228
229  * New functions to support the pinentry mode feature of GnuPG 2.1.
230
231  * New macro GPGME_VERSION_NUMBER to allow supporting different API
232    versions without the need for a configure test.
233
234  * Several improvements for gpgme-tool.
235
236  * Better logging of the common "invalid engine" error code.
237
238  * Support for FD passing is now enabled by default.  The configure
239    option --disable-fd-passing may be used to disable this.
240
241  * Interface changes relative to the 1.3.1 release:
242  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
243  GPGME_VERSION_NUMBER           NEW.
244  gpgme_io_writen                NEW.
245  gpgme_set_global_flag          NEW.
246  gpgme_set_pinentry_mode        NEW.
247  gpgme_get_pinentry_mode        NEW.
248  gpgme_pinentry_mode_t          NEW.
249  GPGME_PINENTRY_MODE_DEFAULT    NEW.
250  GPGME_PINENTRY_MODE_ASK        NEW.
251  GPGME_PINENTRY_MODE_CANCEL     NEW.
252  GPGME_PINENTRY_MODE_ERROR      NEW.
253  GPGME_PINENTRY_MODE_LOOPBACK   NEW.
254
255
256 Noteworthy changes in version 1.3.2 (2012-05-02)
257 ------------------------------------------------
258
259  * Remove support for libgpgme-pth.  As far as we know, this was never used,
260    and GnuPG is going to use our own npth in the future.
261
262  * Fix signature summary information for a missing X.509 key.
263
264  * Fix parsing of dates >= year 2038.
265
266
267 Noteworthy changes in version 1.3.1 (2011-06-16)
268 ------------------------------------------------
269
270  * Ported to Windows CE.
271
272  * Detect GPG versions not supporting ---passwd.
273
274  * Interface changes relative to the 1.3.0 release:
275  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
276  GPGME_EXPORT_MODE_MINIMAL      NEW
277  GPGME_STATUS_SUCCESS           NEW
278  gpgme_err_code_from_syserror   NEW
279  gpgme_err_set_errno            NEW
280  gpgme_error_from_errno         CHANGED: Return gpgme_error_t (compatible type).
281  gpgme_error_from_syserror      NEW
282  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
283
284
285 Noteworthy changes in version 1.3.0 (2010-01-11)
286 ------------------------------------------------
287
288  * GPGME does not come with an internal libassuan version anymore.
289    The external libassuan 1.1.0 release or later is required.  For
290    application programmers on systems that can resolve inter-library
291    dependencies at runtime, this is a transparent change.
292
293  * New engine GPGME_PROTOCOL_G13 to support the new g13 tool.
294
295  * New engine GPGME_PROTOCOL_UISERVER to support UI Servers.
296
297  * New API to change the passphrase of a key.
298
299  * Interface changes relative to the 1.2.0 release:
300  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
301  GPGME_STATUS_INV_SGNR    NEW.
302  GPGME_STATUS_NO_SGNR     NEW.
303  GPGME_PROTOCOL_G13       NEW.
304  gpgme_op_g13_mount       NEW.
305  gpgme_g13_result_t       NEW.
306  GPGME_PK_ECDSA           NEW.
307  GPGME_PK_ECDH            NEW.
308  gpgme_op_passwd_start    NEW.
309  gpgme_op_passwd          NEW.
310  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
311
312
313 Noteworthy changes in version 1.2.0 (2009-06-18)
314 ------------------------------------------------
315
316  * New encryption flag GPGME_ENCRYPT_NO_ENCRYPT_TO to disable default
317    recipients.
318
319  * gpgme_new will fail if gpgme_check_version was not called, or a
320    selftest failed (for example, if -mms-bitfields was not used on
321    MingW32 targets).
322
323  * New functions gpgme_io_read and gpgme_io_write for use with
324    gpgme_passphrase_cb_t and gpgme_edit_cb_t functions.
325
326  * New functions gpgme_result_ref and gpgme_result_unref to detach
327    result structures from a context.
328
329  * New functions gpgme_op_export_keys_start and gpgme_op_export_keys
330    that allow to specify exported keys through gpgme_key_t objects
331    instead of patterns.
332
333  * New mode of operation gpgme_export_mode_t that allows exporting
334    external keys.
335
336  * Interface changes relative to the 1.1.7 release:
337  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
338  GPGME_KEYLIST_MODE_EPHEMERAL   NEW.
339  GPGME_PROTOCOL_ASSUAN          NEW.
340  gpgme_assuan_data_cb_t         NEW.
341  gpgme_assuan_inquire_cb_t      NEW.
342  gpgme_assuan_status_cb_t       NEW.
343  gpgme_op_assuan_transact_start NEW.
344  gpgme_op_assuan_transact       NEW.
345  gpgme_op_assuan_result         NEW.
346  gpgme_op_import_keys           NEW.
347  gpgme_op_import_keys_start     NEW.
348  gpgme_subkey_t                 EXTENDED: New fields is_cardkey, card_number.
349  GPGME_ENCRYPT_NO_ENCRYPT_TO    NEW.
350  gpgme_check_version            CHANGED: Is now a macro.
351  gpgme_new                      EXTENDED: More failure codes.
352  gpgme_io_read                  NEW.
353  gpgme_io_write                 NEW.
354  gpgme_result_ref               NEW.
355  gpgme_result_unref             NEW.
356  gpgme_export_mode_t            NEW.
357  gpgme_export_ext_start         EXTENDED: Arg RESERVED is now a MODE flag.
358  gpgme_op_export                EXTENDED: Arg RESERVED is now a MODE flag.
359  gpgme_op_export_ext_start      EXTENDED: Arg RESERVED is now a MODE flag.
360  gpgme_op_export_ext            EXTENDED: Arg RESERVED is now a MODE flag.
361  gpgme_op_export_keys_start     NEW.
362  gpgme_op_export_keys           NEW.
363  GPGME_DATA_ENCODING_URL        NEW.
364  GPGME_DATA_ENCODING_URL0       NEW.
365  GPGME_DATA_ENCODING_URLESC     NEW.
366  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
367
368
369 Noteworthy changes in version 1.1.8 (2008-12-08)
370 ------------------------------------------------
371
372  * SIGPIPE is now again ignored as described in the manual.  Fixes
373    regresion introduced with 1.1.6.
374
375
376 Noteworthy changes in version 1.1.7 (2008-10-17)
377 ------------------------------------------------
378
379  * Using GPGME_KEYLIST_MODE_LOCAL combined with
380    GPGME_KEYLIST_MODE_EXTERN is now supported; it uses the
381    --locate-keys feature of gpg (>= 2.0.10).
382
383  * The encoding of gpgme_data_t objects can affect the output encoding
384    of export, sign and encrypt operations now (the same operations
385    that are also affected by the ASCII mode switch).  We believe this
386    change in the ABI is innocent enough not to break existing
387    applications (it only affects the S/MIME backend on certain
388    operations).
389
390  * The reference manual now includes the specification of "The GnuPG
391    UI Server protocol".
392
393  * A new function gpgme_cancel_async can be used to asynchronously
394    cancel any pending operation at any time, from any thread.
395
396  * Interface changes relative to the 1.1.6 release:
397  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
398 gpgme_op_encrypt                CHANGED: Output encoding can affect result.
399 gpgme_op_encrypt_start          CHANGED: Output encoding can affect result.
400 gpgme_op_encrypt_sign           CHANGED: Output encoding can affect result.
401 gpgme_op_encrypt_sign_start     CHANGED: Output encoding can affect result.
402 gpgme_op_sign                   CHANGED: Output encoding can affect result.
403 gpgme_op_sign_start             CHANGED: Output encoding can affect result.
404 gpgme_op_export                 CHANGED: Output encoding can affect result.
405 gpgme_op_export_start           CHANGED: Output encoding can affect result.
406 gpgme_op_export_ext             CHANGED: Output encoding can affect result.
407 gpgme_op_export_ext_start       CHANGED: Output encoding can affect result.
408 gpgme_cancel_async              NEW
409  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
410
411
412 Noteworthy changes in version 1.1.6 (2008-01-04)
413 ------------------------------------------------
414
415  * Bug fixes for for W32.
416
417  * A new, experimental (and thus undocumented and potentially
418    unstable) interface for accessing gpg-conf through GPGME has been
419    added.
420
421  * Interface changes relative to the 1.1.1 release:
422  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
423  gpgme_signature_t               EXTENDED: New field chain_model.
424  gpgme_op_getauditlog_start      NEW.
425  gpgme_op_getauditlog            NEW.
426  GPGME_AUDITLOG_HTML             NEW.
427  GPGME_AUDITLOG_WITH_HELP        NEW.
428  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
429
430
431 Noteworthy changes in version 1.1.5 (2007-07-09)
432 ------------------------------------------------
433
434  * Bug and portability fixes (mainly for W32).
435
436
437 Noteworthy changes in version 1.1.4 (2007-03-05)
438 ------------------------------------------------
439
440  * Detect and bail out on double plaintext messages.  This is required
441    so that applications can properly detect the signed parts of a
442    message.  Actual there is now a double protection as GnuPG 1.4.7
443    will detect this case too.
444
445
446 Noteworthy changes in version 1.1.3 (2007-01-29)
447 ------------------------------------------------
448
449  * Fixed a memory leak in gpgme_data_release_and_get_mem.
450
451  * Fixed a bug in Windows command line quoting.
452
453
454 Noteworthy changes in version 1.1.2 (2006-03-02)
455 ------------------------------------------------
456
457  * Fixed a bug in the W32 glib backend.
458
459
460 Noteworthy changes in version 1.1.1 (2006-02-23)
461 ------------------------------------------------
462
463  * Fixed a bug in that the fingerprints of subkeys are not available.
464
465  * Clarified usage of the SECRET flag in key listings.  It is now
466    reset for stub keys.
467
468  * Reading signature notations and policy URLs on key signatures is
469    supported.  They can be found in the new field notations of the
470    gpgme_key_sig_t structure.  This has to be enabled with the keylist
471    mode flag GPGME_KEYLIST_MODE_SIG_NOTATIONS.
472
473  * A new gpgme_free() function solves the problem of using different
474    allocators in a single program.  This function should now be used
475    instead calling free() to release the buffer returned by
476    gpgme_data_release_and_get_mem.  It is recommended that you always
477    do this, but it is only necessary on certain platforms, so backwards
478    compatibility is provided.  In other words: If free() worked for
479    you before, it will keep working.
480
481  * New status codes GPGME_PKA_TRUST_GOOD and GPGME_PKA_TRUST_BAD.
482    They are analyzed by the verify handlers and made available in the
483    new PKA_TRUST and PKA_ADDRESS fields of the signature result structure.
484
485  * Interface changes relative to the 1.1.0 release:
486 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
487 gpgme_key_sig_t                 EXTENDED: New field notations.
488 GPGME_KEYLIST_MODE_SIG_NOTATIONS NEW
489 gpgme_free                      NEW
490 GPGME_STATUS_PKA_TRUST_BAD      NEW
491 GPGME_STATUS_PKA_TRUST_GOOD     NEW
492 gpgme_signature_t               EXTENDED: New field pka_trust.
493 gpgme_signature_t               EXTENDED: New field pka_address.
494 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
495
496
497 Noteworthy changes in version 1.1.0 (2005-10-01)
498 ------------------------------------------------
499
500  * You can now configure the backend engine file name and home
501    directory to be used, as default and per context.
502
503  * Information about the recipients of an encrypted text is now
504    available at decryption time.
505
506  * New status GPGME_STATUS_PLAINTEXT.  This is analyzed by the decrypt
507    and verify handlers, the information about the plaintext filename,
508    if available is made available in the new field file_name of the
509    respective result structure.
510
511  * The code for "automagically detecting the thread library" has been
512    removed from libgpgme.  It is deprecated since version 0.4.3.
513    Since then, you had to link against libgpgme-pthread for
514    applications using pthread and libgpgme-pth for applications using
515    GNU Pth.
516
517    The code was removed because it caused compilation problems on
518    systems where the pthread.h header from GNU Pth is available in
519    addition to the system header (FreeBSD 6 and later for example).
520
521  * "./autogen.sh --build-w32" does now build gpgme.dll.
522
523  * [W32] The environment variable GPGME_DEBUG now uses a semicolon as
524    delimiter.  The standard install directory is used when locating
525    gpg or gpgsm before finally falling back to the hardwired name.
526
527  * There is a new flag for keys and subkeys, is_qualified, which
528    indicates if a key can be used for qualified signatures according
529    to local government regulations.
530
531  * You can associate a filename with a data object using the new
532    function gpgme_data_set_file_name().  This filename will be stored
533    in the output when encrypting or signing the data and will be
534    returned when decrypting or verifying the output data.
535
536  * You can now set notation data at signature creation with the new
537    function gpgme_sig_notation_add().
538
539  * Interface changes relative to the 1.0.3 release:
540 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
541 gpgme_set_engine_info           NEW
542 gpgme_ctx_get_engine_info       NEW
543 gpgme_ctx_set_engine_info       NEW
544 gpgme_recipient_t               NEW
545 gpgme_decrypt_result_t          EXTENDED: New field recipients.
546 gpgme_verify_result_t           EXTENDED: New fields pubkey_algo, hash_algo.
547 gpgme_decrypt_result_t          EXTENDED: New field plaintext_filename.
548 gpgme_verify_result_t           EXTENDED: New field plaintext_filename.
549 GPGME_STATUS_PLAINTEXT          NEW
550 gpgme_key_t                     EXTENDED: New field is_qualified.
551 gpgme_subkey_t                  EXTENDED: New field is_qualified.
552 gpgme_data_get_file_name        NEW
553 gpgme_data_set_file_name        NEW
554 gpgme_sig_notation_flags_t      NEW
555 GPGME_SIG_NOTATION_HUMAN_READABLE NEW
556 GPGME_SIG_NOTATAION_CRITICAL    NEW
557 gpgme_sig_notation_clear        NEW
558 gpgme_sig_notation_add          NEW
559 gpgme_sig_notation_get          NEW
560 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
561
562
563 Noteworthy changes in version 1.0.3 (2005-06-20)
564 ------------------------------------------------
565
566  * Previousy, GPGME would use a default "include certs" of 1.  This
567    has been changed.  Now GPGME will use the crypto backend engines
568    default unless you set the value with gpgme_set_include_certs()
569    explicitely.  A new macro GPGME_INCLUDE_CERTS_DEFAULT can be used
570    as a value to explicitely request the new default behaviour.
571
572    Because the default changes, this is a slight change of the API
573    semantics.  We consider it to be a bug fix.
574
575  * A bug which made GPGME hang has been fixed.  If you have
576    experienced hanging before, please try out this version and let me
577    know if you still experience hanging problems.
578
579  * Interface changes relative to the 0.9.0 release:
580 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
581 gpgme_set_include_certs         CHANGED DEFAULT
582 GPGME_INCLUDE_CERTS_DEFAULT     NEW
583 GPGME_STATUS_SIG_SUBPACKET      NEW
584 GPGME_STATUS_NEED_PASSPHRASE_PIN NEW
585 GPGME_STATUS_SC_OP_FAILURE      NEW
586 GPGME_STATUS_SC_OP_SUCCESS      NEW
587 GPGME_STATUS_CARDCTRL           NEW
588 GPGME_STATUS_BACKUP_KEY_CREATED NEW
589 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
590
591
592 Noteworthy changes in version 1.0.2 (2004-12-28)
593 ------------------------------------------------
594
595  * Changed the license of the library to the GNU Lesser General Public
596    License (LGPL), version 2.1 or later.
597
598
599 Noteworthy changes in version 1.0.1 (2004-10-22)
600 ------------------------------------------------
601
602  * Only bug fixes.
603
604
605 Noteworthy changes in version 1.0.0 (2004-09-30)
606 ------------------------------------------------
607
608  * Version 1.0.0!  We are proud to present you with a thoroughly
609    tested and stable version of the GPGME library.  A big Thank You!
610    to all the people who made this possible.
611
612    The development will be branched into a stable 1.x.y series and the
613    head.
614
615  * The gpgme.m4 macro supports checking the API version.  Just prepend
616    it to the required version string, separated by a colon.  For
617    example, this release has the version "1:1.0.0".  The last release
618    to which this version is (mostly) ABI compatible is "1:0.4.2",
619    which is the default required version.
620
621
622 Noteworthy changes in version 0.9.0 (2004-06-08)
623 ------------------------------------------------
624
625  * The type gpgme_key_t has now a new field keylist_mode that contains
626    the keylist mode that was active at the time the key was retrieved.
627
628  * The type gpgme_decrypt_result_t has a new field "wrong_key_usage"
629    that contains a flag indicating that the key should not have been
630    used for encryption.
631
632  * Verifying a signature of a revoked key gives the correct result now
633    (GPG_ERR_CERT_REVOKED error code).
634
635  * Clarified that the error code GPG_ERR_NO_DATA from the decrypt &
636    verify operations still allows you to look at the signature
637    verification result.
638
639  * Clarified that patterns in keylisting operations have an upper
640    limit, and thus are not suited to list many keys at once by their
641    fingerprint.  Also improve the error message if the pattern is too
642    long for the CMS protocol to handle.
643
644 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
645 gpgme_key_t                     EXTENDED: New field keylist_mode.
646 gpgme_decrypt_result_t          EXTENDED: New field wrong_key_usage.
647 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
648
649
650 Noteworthy changes in version 0.4.7 (2004-04-29)
651 ------------------------------------------------
652
653  * Correctly initialize the fields expired, revoked, invalid, and
654    disabled in the gpgme_key_t structures.
655
656  * A bug fix: The flag wrong_key_usage of gpgme_signature_t was
657    accidently of type int instead unsigned int.
658
659  * Interface changes relative to the 0.4.5 release:
660 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
661 gpgme_signature_t               CHANGED: wrong_key_usage is unsigned int now.
662 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
663
664 Noteworthy changes in version 0.4.6 (2004-04-06)
665 ------------------------------------------------
666
667  * Bug fixes
668
669
670 Noteworthy changes in version 0.4.5 (2004-03-07)
671 ------------------------------------------------
672
673  * GPGME is now compiled with LFS (large file support) by default.
674    This means that _all_ programs using GPGME must be compiled with
675    LFS support enabled by default.  You can do this easily with
676    autoconf, by using the AC_SYS_LARGEFILE macro.  Or you can do this
677    without autoconf by defining the preprocessor symbol
678    _FILE_OFFSET_BITS to 64 (by passing the -D_FILE_OFFSET_BITS=64 to
679    the C compiler command line, or by defining this preprocessor
680    symbol before including any system header files).  For more
681    details, read the section on LFS in the manual.
682
683    Up to now, it was undocumented that GPGME was not using LFS.
684    But the public interfaces use off_t, and file descriptors are
685    exchanged between the application and GPGME.  This was an oversight,
686    and bound to cause troubles in the future.
687
688    Writing GPGME as a dual mode library that seamlessly supports LFS
689    while keeping backwards compatibility is possible, but does not
690    solve the problem: Many applications already expect GPGME to have
691    LFS (they are compiled with off_t being a 64bit value).  This is true
692    in particular for the popular Gtk+ and Qt programs.
693
694    So, although this is an ABI (but not an API) break, we will not
695    change the library version to reflect that.  Because the interfaces
696    affected are probably not used yet in any GPGME 0.4 based
697    application, we don't expect any real failures from this change.
698    In fact, applications already using LFS will have some subtle bugs
699    fixed.
700
701    However, if you encounter an application using GPGME 0.4.x that
702    does _not_ use LFS by default (off_t is a 32bit value), _and_
703    uses at least one of the functions gpgme_data_seek,
704    gpgme_data_new_from_filepart, or a gpgme_data_seek_cb_t with
705    gpgme_data_new_from_cbs, then indeed this library will be ABI
706    incompatible with the program.  As said above, we don't believe
707    such a program exists.  If we are in error, then you have two
708    options: As a quick hack, you can configure GPGME with the
709    --disable-largefile option.  This will revert the change, and GPGME
710    will not use LFS.  However, GPGME will be incompatible with
711    programs that expect GPGME to use LFS.  All applications are
712    required to use LFS when using GPGME, so this is only good as a
713    temporary local work-around.
714
715    The other option is to change the versioning of the library and
716    recompile all applications.  We have reserved a special version of
717    the library for that, so you can do that without expecting a
718    version clash in the future.  Furthermore, everyone who does this
719    will agree on the version to use (this is important for
720    distribution makers).  Read the comment in configure.ac (before
721    LIBGPGME_LT_AGE) if you want to do this.  Please don't do this
722    blindly: As stated above, we think it is unlikely this measure is
723    needed.  Still, it is there if necessary.  If in doubt, contact us
724    and we will give our advise for your specific situation.
725
726  * New key listing mode GPGME_KEYLIST_MODE_VALIDATE for validation of
727    the listed keys.
728
729  * New interface gpgme_cancel() that can be used to cancel
730    asynchronous operations.
731
732  * Interface changes relative to the 0.4.4 release:
733 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
734 gpgme_data_seek_cb_t            CHANGED: off_t is now a largefile type.
735 gpgme_data_seek                 CHANGED: off_t is now a largefile type.
736 gpgme_data_new_from_filepart    CHANGED: off_t is now a largefile type.
737 GPGME_KEYLIST_MODE_VALIDATE     NEW
738 gpgme_cancel                    NEW
739 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
740
741 Noteworthy changes in version 0.4.4 (2004-01-12)
742 ------------------------------------------------
743
744  * The member "class" in gpgme_key_sig_t and gpgme_new_signature_t has
745    been renamed to "sig_class", to avoid clash with C++ compilers.  In
746    the C API, the old name "class" has been preserved for backwards
747    compatibility, but is deprecated.
748
749  * Interface changes relative to the 0.4.3 release:
750 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
751 gpgme_key_sig_t                 CHANGED: class deprecated, use new sig_class.
752 gpgme_new_signature_t           CHANGED: class deprecated, use new sig_class.
753 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
754
755 Noteworthy changes in version 0.4.3 (2003-10-06)
756 ------------------------------------------------
757
758  * libgpgme should not be used for threaded programs anymore.  This
759    never worked reliably in all cases, because you had to
760    be careful about the linking order and libtool wouldn't do that for
761    you automatically.  Instead, now you have to link against
762    libgpgme-pthread for applications using pthread and libgpgme-pth for
763    applications using GNU Pth.
764
765    The old code for automagically detecting the thread library is
766    still part of libgpgme, but it is DEPRECATED.
767
768  * There are new automake macros AM_PATH_GPGME_PTH and
769    AM_PATH_GPGME_PTHREAD, which support checking for thread-enabled
770    versions of GPGME.  They define GPGME_PTH_CFLAGS, GPGME_PTH_LIBS,
771    GPGME_PTHREAD_CFLAGS and GPGME_PTHREAD_LIBS respectively.  These
772    variables of course also include the configuration for the thread
773    package itself.  Alternatively, use libtool.
774
775  * gpgme_strerror_r as a thread safe variant of gpgme_strerror was
776    added.
777
778  * gpgme-config doesn't support setting the prefix or exec prefix
779    anymore.  I don't think it ever worked correctly, and it seems to
780    be pointless.
781
782  * gpgme_get_key fails with GPG_ERR_AMBIGUOUS_NAME if the key ID
783    provided was not unique, instead returning the first matching key.
784
785  * gpgme_key_t and gpgme_subkey_t have a new field, can_authenticate,
786    that indicates if the key can be used for authentication.
787
788  * gpgme_signature_t's status field is now correctly set to an error
789    with error code GPG_ERR_NO_PUBKEY if public key is not found.
790
791  * gpgme_new_signature_t's class field is now an unsigned int, rather
792    than an unsigned long (the old class field is preserved for
793    backwards compatibility).
794
795  * A new function gpgme_set_locale() is provided to allow configuring
796    the locale for the crypto backend.  This is necessary for text
797    terminals so that programs like the pinentry can be started with
798    the right locale settings for the terminal the application is running
799    on, in case the terminal has different settings than the system
800    default (for example, if it is a remote terminal).  You are highly
801    recommended to call the following functions directly after
802    gpgme_check_version:
803
804    #include <locale.h>
805
806    setlocale (LC_ALL, "");
807    gpgme_set_locale (NULL, LC_CTYPE, setlocale (LC_CTYPE, NULL));
808    gpgme_set_locale (NULL, LC_MESSAGES, setlocale (LC_MESSAGES, NULL));
809
810    GPGME can not do this for you, as setlocale is not thread safe, and
811    there is no alternative.
812
813  * The signal action for SIGPIPE is now set to SIG_IGN by
814    gpgme_check_version, instead the first time a crypto engine is
815    started (which is not well defined).
816
817  * In the output of gpgme_hash_algo_name, change RMD160 to RIPEMD160,
818    TIGER to TIGER192, CRC32-RFC1510 to CRC32RFC1510, and CRC24-RFC2440
819    to CRC24RFC2440.  For now, these strings can be used as the MIC
820    parameter for PGP/MIME (if appropriately modified).
821
822  * Interface changes relative to the 0.4.2 release:
823 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
824 gpgme_strerror_t                NEW
825 gpgme_get_key                   CHANGED: Fails correctly if key ID not unique.
826 gpgme_key_t                     EXTENDED: New field can_authenticate.
827 gpgme_subkey_t                  EXTENDED: New field can_authenticate.
828 gpgme_new_signature_t           CHANGED: New type for class field.
829 gpgme_set_locale                NEW
830 gpgme_hash_algo_name            CHANGED: Slight adjustment of algo names.
831 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
832
833 Noteworthy changes in version 0.4.2 (2003-07-30)
834 ------------------------------------------------
835
836  * Allow gpg-error to be in non-standard place when linking the test suite.
837
838  * Configure will fail now if gpg-error can not be found.
839
840  * Fixed initialized memory backed data objects for writing, which
841    caused the test program to crash (but only on Mac OS, surprisingly).
842
843  * Eliminate use of C99 constructs.
844
845  * Small improvements to the manual.
846
847
848 Noteworthy changes in version 0.4.1 (2003-06-06)
849 ------------------------------------------------
850
851  This is the release that 0.4.0 should have been.  There are many
852  interface changes, please see below for the details.  The changes are
853  sometimes the result of new functionality, but more often express a
854  paradigm shift.  Others are an overdue cleanup to get GPGME in line
855  with the GNU coding standards and to make the interface more
856  self-consistent.  Here is an overview on the changes:
857
858  All types have been renamed to conform to the GNU coding standards,
859  most of the time by keeping the whole name in lowercase and inserting
860  underscores between words.
861
862  All operations consistently only accept input parameters in their
863  invocation function, and return only an error code directly.  Further
864  information about the result of the operation has to be retrieved
865  afterwards by calling one of the result functions.  This unifies the
866  synchronous and the asynchronous interface.
867
868  The error values have been completely replaced by a more
869  sophisticated model that allows GPGME to transparently and accurately
870  report all errors from the other GnuPG components, irregardless of
871  process boundaries.  This is achieved by using the library
872  libgpg-errors, which is shared by all GnuPG components.  This library
873  is now required for GPGME.
874
875  The results of all operations are now provided by pointers to C
876  structs rather than by XML structs or in other ways.
877
878  Objects which used to be opaque (for example a key) are now pointers
879  to accessible structs, so no accessor functions are necessary.
880
881  Backward compatibility is provided where it was possible without too
882  much effort and did not collide with the overall sanitization effort.
883  However, this is only for ease of transition.  NO DEPRECATED FUNCTION
884  OR DATA TYPE IS CONSIDERED A PART OF THE API OR ABI AND WILL BE
885  DROPPED IN THE FUTURE WITHOUT CHANGING THE SONAME OF THE LIBRARY.
886  Recommendations how to replace deprecated or removed functionality
887  can be found within the description of each change.
888
889  What follows are all changes to the interface and behaviour of GPGME
890  in detail.
891
892  * If gpgme.h is included in sources compiled by GCC 3.1 or later,
893    deprecated attributes will warn about use of obsolete functions and
894    type definitions.  You can suppress these warnings by passing
895    -Wno-deprecated-declarations to the gcc command.
896
897  * The following types have been renamed.  The old types are still
898    available as aliases, but they are deprecated now:
899    Old name:            New name:
900    GpgmeCtx             gpgme_ctx_t
901    GpgmeData            gpgme_data_t
902    GpgmeError           gpgme_error_t
903    GpgmeDataEncoding    gpgme_data_encoding_t
904    GpgmeSigStat         gpgme_sig_stat_t
905    GpgmeSigMode         gpgme_sig_mode_t
906    GpgmeAttr            gpgme_attr_t
907    GpgmeValidity        gpgme_validity_t
908    GpgmeProtocol        gpgme_protocol_t
909    GpgmeKey             gpgme_key_t
910    GpgmePassphraseCb    gpgme_passphrase_cb_t
911    GpgmeProgressCb      gpgme_progress_cb_t
912    GpgmeIOCb            gpgme_io_cb_t
913    GpgmeRegisterIOCb    gpgme_register_io_cb_t
914    GpgmeRemoveIOCb      gpgme_remove_io_cb_t
915    GpgmeEventIO         gpgme_event_io_t
916    GpgmeEventIOCb       gpgme_event_io_cb_t
917    GpgmeIOCbs           gpgme_io_cbs
918    GpgmeDataReadCb      gpgme_data_read_cb_t
919    GpgmeDataWriteCb     gpgme_data_write_cb_t
920    GpgmeDataSeekCb      gpgme_data_seek_cb_t
921    GpgmeDataReleaseCb   gpgme_data_release_cb_t
922    GpgmeDataCbs         gpgme_data_cbs_t
923    GpgmeTrustItem       gpgme_trust_item_t
924    GpgmeStatusCode      gpgme_status_code_t
925
926  * gpgme_error_t is now identical to gpg_error_t, the error type
927    provided by libgpg-error.  More about using libgpg-error with GPGME
928    can be found in the manual.  All error symbols have been removed!
929
930  * All functions and types in libgpg-error have been wrapped in GPGME.
931    The new types are gpgme_err_code_t and gpgme_err_source_t.  The new
932    functions are gpgme_err_code, gpgme_err_source, gpgme_error,
933    gpgme_err_make, gpgme_error_from_errno, gpgme_err_make_from_errno,
934    gpgme_err_code_from_errno, gpgme_err_code_to_errno,
935    gpgme_strsource.
936
937  * GPGME_ATTR_IS_SECRET is not anymore representable as a string.
938
939  * GnuPG 1.2.2 is required.  The progress callback is now also invoked
940    for encrypt, sign, encrypt-sign, decrypt, verify, and
941    decrypt-verify operations.  For verify operations on detached
942    signatures, the progress callback is invoked for both the detached
943    signature and the plaintext message, though.
944
945  * gpgme_passphrase_cb_t has been changed to not provide a complete
946    description, but the UID hint, passphrase info and a flag
947    indicating if this is a repeated attempt individually, so the user
948    can compose his own description from this information.
949
950    The passphrase is not returned as a C string, but must be written
951    to a file descriptor directly.  This allows for secure passphrase
952    entries.
953
954    The return type has been changed to gpgme_error_t value.  This
955    allowed to remove the gpgme_cancel function; just return
956    the error code GPG_ERR_CANCELED in the passphrase callback directly.
957
958  * gpgme_edit_cb_t has been changed to take a file descriptor argument.
959    The user is expected to write the response to the file descriptor,
960    followed by a newline.
961
962  * The recipients interface has been removed.  Instead, you use
963    NULL-terminated lists of keys for specifying the recipients of an
964    encryption operation.  Use the new encryption flag
965    GPGME_ENCRYPT_ALWAYS_TRUST if you want to override the validity of
966    the keys (but note that in general this is not a good idea).
967
968    This change has been made to the prototypes of gpgme_op_encrypt,
969    gpgme_op_encrypt_start, gpgme_op_encrypt_sign and
970    gpgme_op_encrypt_sign_start.
971
972    The export interface has been changed to use pattern strings like
973    the keylist interface.  Thus, new functions gpgme_op_export_ext and
974    gpgme_op_export_ext_start have been added as well.  Now the
975    prototypes of gpgme_op_export_start and gpgme_op_export finally
976    make sense.
977
978  * gpgme_op_verify and gpgme_op_decrypt_verify don't return a status
979    summary anymore.  Use gpgme_get_sig_status to retrieve the individual
980    stati.
981
982  * gpgme_io_cb_t changed from a void function to a function returning
983    a gpgme_error_t value.  However, it will always return 0, so you
984    can safely ignore the return value.
985
986  * A new I/O callback event GPGME_EVENT_START has been added.  The new
987    requirement is that you must wait until this event until you are
988    allowed to call the I/O callback handlers previously registered for
989    this context operation.  Calling I/O callback functions for this
990    context operation before the start event happened is unsafe because
991    it can lead to race conditions in a multi-threaded environment.
992
993  * The idle function feature has been removed.  It was not precisely
994    defined in a multi-threaded environment and is obsoleted by the
995    user I/O callback functions.  If you still need a simple way to
996    call something while waiting on one or multiple asynchronous
997    operations to complete, don't set the HANG flag in gpgme_wait (note
998    that this will return to your program more often than the idle
999    function did).
1000
1001  * gpgme_wait can return NULL even if hang is true, if an error
1002    occurs.  In that case *status contains the error code.
1003
1004  * gpgme_get_engine_info was radically changed.  Instead an XML
1005    string, an info structure of the new type gpgme_engine_info_t is
1006    returned.  This makes it easier and more robust to evaluate the
1007    information in an application.
1008
1009  * The new function gpgme_get_protocol_name can be used to convert a
1010    gpgme_protocol_t value into a string.
1011
1012  * The status of a context operation is not checked anymore.  Starting
1013    a new operation will silently cancel the previous one.  Calling a
1014    function that requires you to have started an operation before without
1015    doing so is undefined.
1016
1017  * The FPR argument to gpgme_op_genkey was removed.  Instead, use the
1018    gpgme_op_genkey_result function to retrieve a gpgme_genkey_result_t
1019    pointer to a structure which contains the fingerprint.  This also
1020    works with gpgme_op_genkey_start.  The structure also provides
1021    other information about the generated keys.
1022
1023    So, instead:
1024
1025    char *fpr;
1026    err = gpgme_op_genkey (ctx, NULL, NULL, &fpr);
1027    if (!err && fpr)
1028      printf ("%s\n", fpr);
1029
1030    you should now do:
1031
1032    gpgme_genkey_result_t result;
1033    err = gpgme_op_genkey (ctx, NULL, NULL);
1034    if (!err)
1035      {
1036        result = gpgme_op_genkey_result (ctx);
1037        if (result->fpr)
1038          printf ("%s\n", result->fpr);
1039      }
1040
1041  * The new gpgme_op_import_result function provides detailed
1042    information about the result of an import operation in
1043    gpgme_import_result_t and gpgme_import_status_t objects.
1044    Thus, the gpgme_op_import_ext variant is deprecated.
1045
1046  * The new gpgme_op_sign_result function provides detailed information
1047    about the result of a signing operation in gpgme_sign_result_t,
1048    gpgme_invalid_key_t and gpgme_new_signature_t objects.
1049
1050  * The new gpgme_op_encrypt_result function provides detailed
1051    information about the result of an encryption operation in
1052    a GpgmeEncryptResult object.
1053
1054  * The new gpgme_op_decrypt_result function provides detailed
1055    information about the result of a decryption operation in
1056    a GpgmeDecryptResult object.
1057
1058  * The new gpgme_op_verify_result function provides detailed
1059    information about the result of an verify operation in
1060    a GpgmeVerifyResult object.  Because of this, the GPGME_SIG_STAT_*
1061    values, gpgme_get_sig_status, gpgme_get_sig_ulong_attr,
1062    gpgme_get_sig_string_attr and gpgme_get_sig_key are now deprecated,
1063    and gpgme_get_notation is removed.
1064
1065  * GpgmeTrustItem objects have now directly accessible data, so the
1066    gpgme_trust_item_get_string_attr and gpgme_trust_item_get_ulong_attr
1067    accessor functions are deprecated.  Also, reference counting is
1068    available through gpgme_trust_item_ref and gpgme_trust_item_unref
1069    (the gpgme_trust_item_release alias for the latter is deprecated).
1070
1071  * Keys are not cached internally anymore, so the force_update argument
1072    to gpgme_get_key has been removed.
1073
1074  * GpgmeKey objects have now directly accessible data so the
1075    gpgme_key_get_string_attr, gpgme_key_get_ulong_attr,
1076    gpgme_key_sig_get_string_attr and gpgme_key_sig_get_ulong_attr
1077    functions are deprecated.  Also, gpgme_key_release is now
1078    deprecated.  The gpgme_key_get_as_xml function has been dropped.
1079
1080  * Because all interfaces using attributes are deprecated, the
1081    GpgmeAttr data type is also deprecated.
1082
1083  * The new gpgme_op_keylist_result function provides detailed
1084    information about the result of a key listing operation in
1085    a GpgmeKeyListResult object.
1086
1087  * Now that each function comes with its own result retrieval
1088    interface, the generic gpgme_get_op_info interface is not useful
1089    anymore and dropped.
1090
1091  * The type and mode of data objects is not available anymore.
1092
1093  * Interface changes relative to the 0.4.0 release:
1094 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1095 GpgmeCtx                        DEPRECATED: Use gpgme_ctx_t.
1096 GpgmeData                       DEPRECATED: Use gpgme_data_t.
1097 GpgmeError                      DEPRECATED: Use gpgme_error_t.
1098 GpgmeDataEncoding               DEPRECATED: Use gpgme_data_encoding_t.
1099 GpgmeSigStat                    DEPRECATED: Use gpgme_sig_stat_t.
1100 GpgmeSigMode                    DEPRECATED: Use gpgme_sig_mode_t.
1101 GpgmeAttr                       DEPRECATED: Use gpgme_attr_t.
1102 GpgmeValidity                   DEPRECATED: Use gpgme_validity_t.
1103 GpgmeProtocol                   DEPRECATED: Use gpgme_protocol_t.
1104 GpgmeKey                        DEPRECATED: Use gpgme_key_t.
1105 GpgmePassphraseCb               DEPRECATED: Use gpgme_passphrase_cb_t.
1106 GpgmeProgressCb                 DEPRECATED: Use gpgme_progress_cb_t.
1107 GpgmeIOCb                       DEPRECATED: Use gpgme_io_cb_t.
1108 GpgmeRegisterIOCb               DEPRECATED: Use gpgme_register_io_cb_t.
1109 GpgmeRemoveIOCb                 DEPRECATED: Use gpgme_remove_io_cb_t.
1110 GpgmeEventIO                    DEPRECATED: Use gpgme_event_io_t.
1111 GpgmeEventIOCb                  DEPRECATED: Use gpgme_event_io_cb_t.
1112 GpgmeIOCbs                      DEPRECATED: Use gpgme_io_cbs.
1113 GpgmeDataReadCb                 DEPRECATED: Use gpgme_data_read_cb_t.
1114 GpgmeDataWriteCb                DEPRECATED: Use gpgme_data_write_cb_t.
1115 GpgmeDataSeekCb                 DEPRECATED: Use gpgme_data_seek_cb_t.
1116 GpgmeDataReleaseCb              DEPRECATED: Use gpgme_data_release_cb_t.
1117 GpgmeDataCbs                    DEPRECATED: Use gpgme_data_cbs_t.
1118 GpgmeTrustItem                  DEPRECATED: Use gpgme_trust_item_t.
1119 GpgmeStatusCode                 DEPRECATED: Use gpgme_status_code_t.
1120 gpgme_ctx_t                     NEW
1121 gpgme_data_t                    NEW
1122 gpgme_recipients_t              NEW
1123 gpgme_error_t                   NEW
1124 gpgme_data_encoding_t           NEW
1125 gpgme_sig_stat_t                NEW
1126 gpgme_sig_mode_t                NEW
1127 gpgme_attr_t                    NEW
1128 gpgme_validity_t                NEW
1129 gpgme_protocol_t                NEW
1130 gpgme_key_t                     NEW
1131 gpgme_passphrase_cb_t           NEW
1132 gpgme_progress_cb_t             NEW
1133 gpgme_io_cb_t                   NEW
1134 gpgme_register_io_cb_t          NEW
1135 gpgme_remove_io_cb_t            NEW
1136 gpgme_event_io_t                NEW
1137 gpgme_event_io_cb_t             NEW
1138 gpgme_io_cbs                    NEW
1139 gpgme_data_read_cb_t            NEW
1140 gpgme_data_write_cb_t           NEW
1141 gpgme_data_seek_cb_t            NEW
1142 gpgme_data_release_cb_t         NEW
1143 gpgme_data_cbs_t                NEW
1144 gpgme_trust_item_t              NEW
1145 gpgme_status_code_t             NEW
1146 GPGME_{some error code}         REMOVED! Use GPG_ERR_* from libgpg-error.
1147 gpgme_err_code_t                NEW
1148 gpgme_err_source_t              NEW
1149 gpgme_err_code                  NEW
1150 gpgme_err_source                NEW
1151 gpgme_error                     NEW
1152 gpgme_err_make                  NEW
1153 gpgme_error_from_errno          NEW
1154 gpgme_err_make_from_errno       NEW
1155 gpgme_err_code_from_errno       NEW
1156 gpgme_err_code_to_errno         NEW
1157 gpgme_strsource                 NEW
1158 gpgme_io_cb_t                   CHANGED: Return type from void to GpgmeError.
1159 gpgme_event_io_t                CHANGED: New event type (all numbers changed).
1160 gpgme_passphrase_cb_t           CHANGED: Desc decomposed, write directly to FD.
1161 gpgme_edit_cb_t                 CHANGED: Write directly to FD.
1162 gpgme_key_get_string_attr       CHANGED: Don't handle GPGME_ATTR_IS_SECRET.
1163 gpgme_op_verify                 CHANGED: Drop R_STAT argument.
1164 gpgme_op_decrypt_verify         CHANGED: Drop R_STAT argument.
1165 gpgme_wait                      CHANGED: Can return NULL even if hang is true.
1166 GpgmeIdleFunc                   REMOVED
1167 gpgme_register_idle             REMOVED
1168 GpgmeRecipients                 REMOVED
1169 gpgme_recipients_new            REMOVED
1170 gpgme_recipients_release        REMOVED
1171 gpgme_recipients_add_name       REMOVED
1172 gpgme_recipients_add_name_with_validity REMOVED
1173 gpgme_recipients_count          REMOVED
1174 gpgme_recipients_enum_open      REMOVED
1175 gpgme_recipients_enum_read      REMOVED
1176 gpgme_recipients_enum_close     REMOVED
1177 gpgme_encrypt_flags_t           NEW
1178 GPGME_ENCRYPT_ALWAYS_TRUST      NEW
1179 gpgme_op_encrypt                CHANGED: Recipients passed as gpgme_key_t[].
1180 gpgme_op_encrypt_start          CHANGED: Recipients passed as gpgme_key_t[].
1181 gpgme_op_encrypt_sign           CHANGED: Recipients passed as gpgme_key_t[].
1182 gpgme_op_encrypt_sign_start     CHANGED: Recipients passed as gpgme_key_t[].
1183 gpgme_op_export_start           CHANGED: User IDs passed as patterns.
1184 gpgme_op_export                 CHANGED: User IDs passed as patterns.
1185 gpgme_op_export_ext_start       NEW
1186 gpgme_op_export_ext             NEW
1187 gpgme_keylist_mode_t            NEW
1188 gpgme_sigsum_t                  NEW
1189 gpgme_engine_info_t             NEW
1190 gpgme_get_engine_info           CHANGED: Return info structure instead XML.
1191 gpgme_get_protocol_name         NEW
1192 gpgme_cancel                    REMOVED: Return error in callback directly.
1193 gpgme_op_genkey                 CHANGED: FPR argument dropped.
1194 gpgme_op_genkey_result          NEW
1195 gpgme_genkey_result_t           NEW
1196 gpgme_op_import_ext             DEPRECATED: Use gpgme_op_import_result.
1197 gpgme_op_import_result          NEW
1198 gpgme_import_status_t           NEW
1199 gpgme_import_result_t           NEW
1200 gpgme_pubkey_algo_t             NEW
1201 gpgme_hash_algo_t               NEW
1202 gpgme_invalid_key_t             NEW
1203 gpgme_new_signature_t           NEW
1204 gpgme_sign_result_t             NEW
1205 gpgme_op_sign_result            NEW
1206 gpgme_pubkey_algo_name          NEW
1207 gpgme_hash_algo_name            NEW
1208 gpgme_encrypt_result_t          NEW
1209 gpgme_op_encrypt_result         NEW
1210 gpgme_decrypt_result_t          NEW
1211 gpgme_op_decrypt_result         NEW
1212 gpgme_verify_result_t           NEW
1213 gpgme_op_verify_result          NEW
1214 gpgme_get_notation              REMOVED: Access verify result directly instead.
1215 gpgme_get_sig_key               DEPRECATED: Use gpgme_get_key with fingerprint.
1216 gpgme_get_sig_ulong_attr        DEPRECATED: Use verify result directly.
1217 gpgme_get_sig_string_attr       DEPRECATED: Use verify result directly.
1218 GPGME_SIG_STAT_*                DEPRECATED: Use error value in sig status.
1219 gpgme_get_sig_status            DEPRECATED: Use verify result directly.
1220 gpgme_trust_item_t              CHANGED: Now has user accessible data members.
1221 gpgme_trust_item_ref            NEW
1222 gpgme_trust_item_unref          NEW
1223 gpgme_trust_item_release        DEPRECATED: Use gpgme_trust_item_unref.
1224 gpgme_trust_item_get_string_attr DEPRECATED
1225 gpgme_trust_item_get_ulong_attr DEPRECATED
1226 gpgme_get_key                   CHANGED: Removed force_update argument.
1227 gpgme_subkey_t                  NEW
1228 gpgme_key_sig_t                 NEW
1229 gpgme_user_id_t                 NEW
1230 gpgme_key_t                     CHANGED: Now has user accessible data members.
1231 gpgme_key_get_string_attr       DEPRECATED
1232 gpgme_key_get_ulong_attr        DEPRECATED
1233 gpgme_key_sig_get_string_attr   DEPRECATED
1234 gpgme_key_sig_get_ulong_attr    DEPRECATED
1235 gpgme_key_get_as_xml            REMOVED
1236 gpgme_key_list_result_t         NEW
1237 gpgme_op_keylist_result         NEW
1238 gpgme_get_op_info               REMOVED
1239 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1240
1241 Noteworthy changes in version 0.4.0 (2002-12-23)
1242 ------------------------------------------------
1243
1244  * Key generation returns the fingerprint of the generated key.
1245
1246  * New convenience function gpgme_get_key.
1247
1248  * Supports signatures of user IDs in keys via the new
1249    GPGME_KEYLIST_MODE_SIGS keylist mode and the
1250    gpgme_key_sig_get_string_attr and gpgme_key_sig_get_ulong_attr
1251    interfaces.  The XML info about a key also includes the signatures
1252    if available.
1253
1254  * New data object interface, which is more flexible and transparent.
1255
1256  * Interface changes relative to the 0.3.9 release:
1257 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1258 GpgmeDataReadCb                 NEW
1259 GpgmeDataWriteCb                NEW
1260 GpgmeDataSeekCb                 NEW
1261 GpgmeDataReleaseCb              NEW
1262 GpgmeDataCbs                    NEW
1263 gpgme_data_read                 CHANGED: Match read() closely.
1264 gpgme_data_write                CHANGED: Match write() closely.
1265 gpgme_data_seek                 NEW
1266 gpgme_data_new_from_fd          NEW
1267 gpgme_data_new_from_stream      NEW
1268 gpgme_data_new_from_cbs         NEW
1269 gpgme_data_rewind               DEPRECATED: Replaced by gpgme_data_seek().
1270 gpgme_data_new_from_read_cb     DEPRECATED: Replaced by gpgme_data_from_cbs().
1271 gpgme_data_get_type             REMOVED: No replacement.
1272 gpgme_op_verify                 CHANGED: Take different data objects for
1273                                 signed text and plain text.
1274 gpgme_op_verify_start           CHANGED: See gpgme_op_verify.
1275 gpgme_check_engine              REMOVED: Deprecated since 0.3.0.
1276 gpgme_op_genkey                 CHANGED: New parameter FPR.
1277 GPGME_KEYLIST_MODE_SIGS         NEW
1278 gpgme_key_sig_get_string_attr   NEW
1279 gpgme_key_sig_get_ulong_attr    NEW
1280 gpgme_get_key                   NEW
1281 GPGME_ATTR_SIG_CLASS            NEW
1282 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1283
1284 Noteworthy changes in version 0.3.16 (2003-11-19)
1285 -------------------------------------------------
1286
1287  * Compatibility fixes for GnuPG 1.9.x
1288
1289 Noteworthy changes in version 0.3.15 (2003-02-18)
1290 -------------------------------------------------
1291
1292  * The progress status is sent via the progress callbacks in
1293    gpgme_op_edit.
1294
1295  * Bug fix for signing operations with explicit signer settings for
1296    the CMS protocol.
1297
1298 Noteworthy changes in version 0.3.14 (2002-12-04)
1299 -------------------------------------------------
1300
1301  * GPGME-Plug is now in its own package "cryptplug".
1302
1303  * Workaround for a setlocale problem.  Fixed a segv related to not
1304    correctly as closed marked file descriptors.
1305
1306 Noteworthy changes in version 0.3.13 (2002-11-20)
1307 -------------------------------------------------
1308
1309  * Release due to changes in gpgmeplug.
1310
1311 Noteworthy changes in version 0.3.12 (2002-10-15)
1312 -------------------------------------------------
1313
1314  * Fixed some bux with key listings.
1315
1316  * The development has been branched to clean up some API issues.
1317    This 0.3 series will be kept for compatibility reasons; so do don't
1318    expect new features.
1319
1320 Noteworthy changes in version 0.3.11 (2002-09-20)
1321 -------------------------------------------------
1322
1323  * Bug fixes.
1324
1325 Noteworthy changes in version 0.3.10 (2002-09-02)
1326 -------------------------------------------------
1327
1328  * Setting the signing keys for the CMS protocol does now work.
1329
1330  * The signers setting is honoured by gpgme_op_edit.
1331
1332 Noteworthy changes in version 0.3.9 (2002-08-21)
1333 ------------------------------------------------
1334
1335  * A spec file for creating RPMs has been added.
1336
1337  * An experimental interface to GnuPG's --edit-key functionality is
1338    introduced, see gpgme_op_edit.
1339
1340  * The new gpgme_import_ext function provides a convenient access to
1341    the number of processed keys.
1342
1343  * Interface changes relative to the 0.3.8 release:
1344 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1345 GpgmeStatusCode                 NEW
1346 GpgmeEditCb                     NEW
1347 gpgme_op_edit_start             NEW
1348 gpgme_op_edit                   NEW
1349 gpgme_op_import_ext             NEW
1350 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1351
1352 Noteworthy changes in version 0.3.8 (2002-06-25)
1353 ------------------------------------------------
1354
1355  * It is possible to use an outside event loop for the I/O to the
1356    crypto engine by setting the I/O callbacks with gpgme_set_io_cbs.
1357
1358  * Interface changes relative to the 0.3.6 release:
1359 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1360 GpgmeIOCb                       NEW
1361 GpgmeRegisterIOCb               NEW
1362 GpgmeRemoveIOCb                 NEW
1363 GpgmeEventIO                    NEW
1364 GpgmeEventIOCb                  NEW
1365 struct GpgmeIOCbs               NEW
1366 gpgme_set_io_cbs                NEW
1367 gpgme_get_io_cbs                NEW
1368 GPGME_ATTR_ERRTOK               NEW
1369 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1370
1371 Noteworthy changes in version 0.3.7 (2002-06-04)
1372 ------------------------------------------------
1373
1374  * GPGME_ATTR_OTRUST is implemented now.
1375
1376  * A first step toward thread safeness has been achieved, see the
1377    documentation for details.  Supported thread libraries are pthread
1378    and Pth.
1379
1380 Noteworthy changes in version 0.3.6 (2002-05-03)
1381 ------------------------------------------------
1382
1383  * All error output of the gpgsm backend is send to the bit bucket.
1384
1385  * The signature verification functions are extended.  Instead of
1386    always returning GPGME_SIG_STATUS_GOOD, the functions new codes for
1387    expired signatures.  2 new functions may be used to retrieve more
1388    detailed information like the signature expiration time and a
1389    validity information of the key without an extra key looking.
1390
1391  * The current passphrase callback and progress meter callback can be
1392    retrieved with the new functions gpgme_get_passphrase_cb and
1393    gpgme_get_progress_cb respectively.
1394
1395  * Interface changes relative to the 0.3.5 release:
1396 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1397 gpgme_get_passphrase_cb         NEW
1398 gpgme_get_progress_cb           NEW
1399 GpgmeDataEncoding               NEW
1400 gpgme_data_set_encoding         NEW
1401 gpgme_data_get_encoding         NEW
1402 GPGME_SIG_STAT_GOOD_EXP         NEW
1403 GPGME_SIG_STAT_GOOD_EXPKEY      NEW
1404 gpgme_op_verify                 CHANGED: Returns more status codes.
1405 GPGME_ATTR_SIG_STATUS           NEW
1406 gpgme_get_sig_string_attr       NEW
1407 gpgme_get_sig_ulong_attr        NEW
1408 gpgme_get_protocol              NEW
1409 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1410
1411 Noteworthy changes in version 0.3.5 (2002-04-01)
1412 ------------------------------------------------
1413
1414  * gpgme_op_encrypt can be called with RECIPIENTS being 0.  In this
1415    case, symmetric encryption is performed.  Note that this requires a
1416    passphrase from the user.
1417
1418  * More information is returned for X.509 certificates.
1419
1420  * Interface changes relative to the 0.3.4 release:
1421 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1422 gpgme_op_encrypt                EXTENDED: Symmetric encryption possible
1423 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1424
1425 Noteworthy changes in version 0.3.4 (2002-03-04)
1426 ------------------------------------------------
1427
1428  * gpgme_op_encrypt does now fail with GPGME_Invalid_Recipients if
1429    some recipients have been invalid, whereas earlier versions
1430    succeeded in this case.  The plaintext is still encrypted for all valid
1431    recipients, so the application might take this error as a hint that
1432    the ciphertext is not usable for all requested recipients.
1433    Information about invalid recipients is available with gpgme_get_op_info.
1434
1435  * gpgme_op_verify now allows to pass an uninitialized data object as
1436    its plaintext argument to check for normal and cleartext
1437    signatures.  The plaintext is then returned in the data object.
1438
1439  * New interfaces gpgme_set_include_certs and gpgme_get_include_certs
1440    to set and get the number of certifications to include in S/MIME
1441    signed messages.
1442
1443  * New interfaces gpgme_op_encrypt_sign and gpgme_op_encrypt_sign_start
1444    to encrypt and sign a message in a combined operation.
1445
1446  * New interface gpgme_op_keylist_ext_start to search for multiple patterns.
1447
1448  * gpgme_key_get_ulong_attr supports the GPGME_ATTR_EXPIRE attribute.
1449
1450  * Interface changes relative to the 0.3.3 release:
1451 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1452 gpgme_op_encrypt                CHANGED: Can fail with GPGME_Invalid_Recipients
1453 gpgme_op_verify                 EXTENDED: Accepts uninitialized text argument
1454 gpgme_key_get_ulong_attr        EXTENDED: Supports GPGME_ATTR_EXPIRE
1455 gpgme_set_include_certs         NEW
1456 gpgme_get_include_certs         NEW
1457 gpgme_op_encrypt_sign           NEW
1458 gpgme_op_encrypt_sign_start     NEW
1459 gpgme_op_keylist_ext_start      NEW
1460 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1461
1462 Noteworthy changes in version 0.3.3 (2002-02-12)
1463 ------------------------------------------------
1464
1465  * Fix the Makefile in jnlib.
1466
1467  * Fix the test suite (hopefully).  It should clean up all its state
1468    with `make check' now.
1469
1470
1471 Noteworthy changes in version 0.3.2 (2002-02-10)
1472 ------------------------------------------------
1473
1474  * Remove erroneous dependency on libgcrypt in jnlib.
1475
1476
1477 Noteworthy changes in version 0.3.1 (2002-02-09)
1478 ------------------------------------------------
1479
1480  * There is a Texinfo manual documenting the API.
1481
1482  * The gpgme_set_keylist_mode function returns an error, and changed
1483    its meaning.  It is no longer usable to select between normal and
1484    fast mode (newer versions of GnuPG will always be fast), but
1485    selects between local keyring, remote keyserver, or both.
1486    For this, two new macros are defined, GPGME_KEYLIST_MODE_LOCAL
1487    and GPGME_KEYLIST_MODE_EXTERN.  To make it possible to modify the
1488    current setting, a fucntion gpgme_get_keylist_mode was added to
1489    retrieve the current mode.
1490
1491  * gpgme_wait accepts a new argument STATUS to return the error status
1492    of the operation on the context.  Its definition is closer to
1493    waitpid() now than before.
1494
1495  * The LENGTH argument to gpgme_data_new_from_filepart changed its
1496    type from off_t to the unsigned size_t.
1497
1498  * The R_HD argument to the GpgmePassphraseCb type changed its type
1499    from void* to void**.
1500
1501  * New interface gpgme_op_trustlist_end() to match
1502    gpgme_op_keylist_end().
1503
1504  * The CryptPlug modules have been renamed to gpgme-openpgp and
1505    gpgme-smime, and they are installed in pkglibdir by `make install'.
1506
1507  * An idle function can be registered with gpgme_register_idle().
1508
1509  * The GpgSM backend supports key generation with gpgme_op_genkey().
1510
1511  * Interface changes relative to the 0.3.0 release:
1512 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1513 gpgme_data_new_from_filepart    CHANGED: Type of LENGTH is size_t.
1514 GpgmePassphraseCb               CHANGED: Type of R_HD is void **.
1515 gpgme_wait                      CHANGED: New argument STATUS.
1516 gpgme_set_keylist_mode          CHANGED: Type of return value is GpgmeError.
1517                                 The function has a new meaning!
1518 gpgme_get_keylist_mode          NEW
1519 GPGME_KEYLIST_MODE_LOCAL        NEW
1520 GPGME_KEYLIST_MODE_EXTERN       NEW
1521 gpgme_op_trustlist_next         NEW
1522 GpgmeIdleFunc                   NEW
1523 gpgme_register_idle             NEW
1524 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1525
1526 Noteworthy changes in version 0.3.0 (2001-12-19)
1527 ------------------------------------------------
1528
1529  * New interface gpgme_set_protocol() to set the protocol and thus the
1530    crypto engine to be used by the context.  Currently, the OpenPGP
1531    and the CMS protocols are supported.  They are specified by the new
1532    preprocessor symbols GPGME_PROTOCOL_OpenPGP and GPGME_PROTOCOL_CMS.
1533    A new context uses the OpenPGP engine by default.
1534
1535  * gpgme_get_engine_info() returns information for all crypto engines
1536    compiled into the library.  The XML format has changed.  To
1537    reliably get the version of a crypto engine, the <version> tag
1538    after the appropriate <protocol> tag has to be looked for.
1539
1540  * New interface gpgme_engine_check_version(), obsoleting
1541    gpgme_check_engine().  Check the version of all engines you are
1542    supporting in your software.
1543
1544  * GpgmeKey lists the user ids in the order as they are returned by
1545    GnuPG, first the primary key with index 0, then the sub-user ids.
1546
1547  * New operation gpgme_op_decrypt_verify() to decrypt and verify
1548    signatures simultaneously.
1549
1550  * The new interface gpgme_op_keylist_end() terminates a pending
1551    keylist operation.  A keylist operation is also terminated when
1552    gpgme_op_keylist_next() returns GPGME_EOF.
1553
1554  * GPGME can be compiled without GnuPG being installed (`--with-gpg=PATH'),
1555    cross-compiled, or even compiled without support for GnuPG
1556    (`--without-gpg').
1557
1558  * GPGME can be compiled with support for GpgSM (GnuPG for S/MIME,
1559    `--with-gpgsm=PATH').  It is enabled by default if the `gpgsm' is found
1560    in the path, but it can also be compiled without support for GpgSM
1561    (`--without-gpgsm').
1562
1563  * CryptPlug modules for GPGME are included and can be enabled at
1564    configure time (`--enable-gpgmeplug').  There is one module which
1565    uses the GnuPG engine (`gpgmeplug') and one module which uses the
1566    GpgSM engine (`gpgsmplug').
1567
1568  * Interface changes relative to the latest 0.2.x release:
1569 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1570 gpgme_key_get_as_xml            CHANGED: Sub-user ids reversed in order.
1571 gpgme_key_get_string_attr       CHANGED: User ids reversed in order.
1572 gpgme_key_get_ulong_attr        CHANGED: User ids reversed in order.
1573 gpgme_get_engine_info           CHANGED: New format, extended content.
1574 gpgme_engine_check_version      NEW
1575 gpgme_decrypt_verify_start      NEW
1576 gpgme_decrypt_verify            NEW
1577 gpgme_op_keylist_next           NEW
1578 gpgme_set_protocol              NEW
1579 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1580
1581
1582 Noteworthy changes in version 0.2.3 (2001-09-17)
1583 ------------------------------------------------
1584
1585  * New function gpgme_get_op_info which can be used to get the micalg
1586    parameter needed for MOSS.
1587
1588  * New functions gpgme_get_armor and gpgme_get_textmode.
1589
1590  * The usual bug fixes and some minor functionality improvements.
1591
1592  * Added a simple encryption component for MS-Windows; however the
1593    build procedure might have some problems.
1594
1595
1596 Noteworthy changes in version 0.2.2 (2001-06-12)
1597 ------------------------------------------------
1598
1599  * Implemented a key cache.
1600
1601  * Fixed a race condition under W32 and some other bug fixes.
1602
1603
1604 Noteworthy changes in version 0.2.1 (2001-04-02)
1605 ------------------------------------------------
1606
1607  * Changed debug output and GPGME_DEBUG variable (gpgme/debug.c)
1608
1609  * Handle GnuPG's new key capabilities output and support revocation
1610    et al. attributes
1611
1612  * Made the W32 support more robust.
1613
1614
1615  Copyright 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009,
1616            2010 g10 Code GmbH
1617
1618  This file is free software; as a special exception the author gives
1619  unlimited permission to copy and/or distribute it, with or without
1620  modifications, as long as this notice is preserved.
1621
1622  This file is distributed in the hope that it will be useful, but
1623  WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
1624  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.