1 Noteworthy changes in version 1.1.0 (unreleased)
2 ------------------------------------------------
4 * "./autogen.sh --build-w32" does now build gpgme.dll.
6 * [W32] The environment variable GPGME_DEBUG now uses a semicolon as
7 delimiter. The standard install directory is used when locating
8 gpg or gpgsm before finally falling back to the hardwired name.
10 * You can now configure the backend engine file name and home
11 directory to be used, as default and per context.
13 * Previousy, GPGME would use a default "include certs" of 1. This
14 has been changed. Now GPGME will use the crypto backend engines
15 default unless you set the value with gpgme_set_include_certs()
16 explicitely. A new macro GPGME_INCLUDE_CERTS_DEFAULT can be used
17 as a value to explicitely request the new default behaviour.
19 Because the default changes, this is a slight change of the API
20 semantics. We consider it to be a bug fix.
22 * Information about the recipients of an encrypted text is now
23 available at decryption time.
25 * New status GPGME_STATUS_PLAINTEXT. This is analyzed by the decrypt
26 and verify handlers, the information about the plaintext filename,
27 if available is made available in the new field plaintext_filename
28 of the respective result structure.
30 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
31 gpgme_set_engine_info NEW
32 gpgme_ctx_get_engine_info NEW
33 gpgme_ctx_set_engine_info NEW
34 gpgme_set_include_certs CHANGED DEFAULT
35 GPGME_INCLUDE_CERTS_DEFAULT NEW
37 gpgme_decrypt_result_t EXTENDED: New field recipients.
38 gpgme_verify_result_t EXTENDED: New fields pubkey_algo, hash_algo.
39 GPGME_STATUS_SIG_SUBPACKET NEW
40 GPGME_STATUS_NEED_PASSPHRASE_PIN NEW
41 GPGME_STATUS_SC_OP_FAILURE NEW
42 GPGME_STATUS_SC_OP_SUCCESS NEW
43 GPGME_STATUS_CARDCTRL NEW
44 GPGME_STATUS_BACKUP_KEY_CREATED NEW
45 gpgme_decrypt_result_t EXTENDED: New field plaintext_filename.
46 gpgme_verify_result_t EXTENDED: New field plaintext_filename.
47 GPGME_STATUS_PLAINTEXT NEW
48 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
51 Noteworthy changes in version 1.0.2 (2004-12-28)
52 ------------------------------------------------
54 * Changed the license of the library to the GNU Lesser General Public
55 License (LGPL), version 2.1 or later.
58 Noteworthy changes in version 1.0.1 (2004-10-22)
59 ------------------------------------------------
64 Noteworthy changes in version 1.0.0 (2004-09-30)
65 ------------------------------------------------
67 * Version 1.0.0! We are proud to present you with a thoroughly
68 tested and stable version of the GPGME library. A big Thank You!
69 to all the people who made this possible.
71 The development will be branched into a stable 1.x.y series and the
74 * The gpgme.m4 macro supports checking the API version. Just prepend
75 it to the required version string, separated by a colon. For
76 example, this release has the version "1:1.0.0". The last release
77 to which this version is (mostly) ABI compatible is "1:0.4.2",
78 which is the default required version.
81 Noteworthy changes in version 0.9.0 (2004-06-08)
82 ------------------------------------------------
84 * The type gpgme_key_t has now a new field keylist_mode that contains
85 the keylist mode that was active at the time the key was retrieved.
87 * The type gpgme_decrypt_result_t has a new field "wrong_key_usage"
88 that contains a flag indicating that the key should not have been
91 * Verifying a signature of a revoked key gives the correct result now
92 (GPG_ERR_CERT_REVOKED error code).
94 * Clarified that the error code GPG_ERR_NO_DATA from the decrypt &
95 verify operations still allows you to look at the signature
98 * Clarified that patterns in keylisting operations have an upper
99 limit, and thus are not suited to list many keys at once by their
100 fingerprint. Also improve the error message if the pattern is too
101 long for the CMS protocol to handle.
103 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
104 gpgme_key_t EXTENDED: New field keylist_mode.
105 gpgme_decrypt_result_t EXTENDED: New field wrong_key_usage.
106 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
109 Noteworthy changes in version 0.4.7 (2004-04-29)
110 ------------------------------------------------
112 * Correctly initialize the fields expired, revoked, invalid, and
113 disabled in the gpgme_key_t structures.
115 * A bug fix: The flag wrong_key_usage of gpgme_signature_t was
116 accidently of type int instead unsigned int.
118 * Interface changes relative to the 0.4.5 release:
119 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
120 gpgme_signature_t CHANGED: wrong_key_usage is unsigned int now.
121 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
123 Noteworthy changes in version 0.4.6 (2004-04-06)
124 ------------------------------------------------
129 Noteworthy changes in version 0.4.5 (2004-03-07)
130 ------------------------------------------------
132 * GPGME is now compiled with LFS (large file support) by default.
133 This means that _all_ programs using GPGME must be compiled with
134 LFS support enabled by default. You can do this easily with
135 autoconf, by using the AC_SYS_LARGEFILE macro. Or you can do this
136 without autoconf by defining the preprocessor symbol
137 _FILE_OFFSET_BITS to 64 (by passing the -D_FILE_OFFSET_BITS=64 to
138 the C compiler command line, or by defining this preprocessor
139 symbol before including any system header files). For more
140 details, read the section on LFS in the manual.
142 Up to now, it was undocumented that GPGME was not using LFS.
143 But the public interfaces use off_t, and file descriptors are
144 exchanged between the application and GPGME. This was an oversight,
145 and bound to cause troubles in the future.
147 Writing GPGME as a dual mode library that seamlessly supports LFS
148 while keeping backwards compatibility is possible, but does not
149 solve the problem: Many applications already expect GPGME to have
150 LFS (they are compiled with off_t being a 64bit value). This is true
151 in particular for the popular Gtk+ and Qt programs.
153 So, although this is an ABI (but not an API) break, we will not
154 change the library version to reflect that. Because the interfaces
155 affected are probably not used yet in any GPGME 0.4 based
156 application, we don't expect any real failures from this change.
157 In fact, applications already using LFS will have some subtle bugs
160 However, if you encounter an application using GPGME 0.4.x that
161 does _not_ use LFS by default (off_t is a 32bit value), _and_
162 uses at least one of the functions gpgme_data_seek,
163 gpgme_data_new_from_filepart, or a gpgme_data_seek_cb_t with
164 gpgme_data_new_from_cbs, then indeed this library will be ABI
165 incompatible with the program. As said above, we don't believe
166 such a program exists. If we are in error, then you have two
167 options: As a quick hack, you can configure GPGME with the
168 --disable-largefile option. This will revert the change, and GPGME
169 will not use LFS. However, GPGME will be incompatible with
170 programs that expect GPGME to use LFS. All applications are
171 required to use LFS when using GPGME, so this is only good as a
172 temporary local work-around.
174 The other option is to change the versioning of the library and
175 recompile all applications. We have reserved a special version of
176 the library for that, so you can do that without expecting a
177 version clash in the future. Furthermore, everyone who does this
178 will agree on the version to use (this is important for
179 distribution makers). Read the comment in configure.ac (before
180 LIBGPGME_LT_AGE) if you want to do this. Please don't do this
181 blindly: As stated above, we think it is unlikely this measure is
182 needed. Still, it is there if necessary. If in doubt, contact us
183 and we will give our advise for your specific situation.
185 * New key listing mode GPGME_KEYLIST_MODE_VALIDATE for validation of
188 * New interface gpgme_cancel() that can be used to cancel
189 asynchronous operations.
191 * Interface changes relative to the 0.4.4 release:
192 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
193 gpgme_data_seek_cb_t CHANGED: off_t is now a largefile type.
194 gpgme_data_seek CHANGED: off_t is now a largefile type.
195 gpgme_data_new_from_filepart CHANGED: off_t is now a largefile type.
196 GPGME_KEYLIST_MODE_VALIDATE NEW
198 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
200 Noteworthy changes in version 0.4.4 (2004-01-12)
201 ------------------------------------------------
203 * The member "class" in gpgme_key_sig_t and gpgme_new_signature_t has
204 been renamed to "sig_class", to avoid clash with C++ compilers. In
205 the C API, the old name "class" has been preserved for backwards
206 compatibility, but is deprecated.
208 * Interface changes relative to the 0.4.3 release:
209 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
210 gpgme_key_sig_t CHANGED: class deprecated, use new sig_class.
211 gpgme_new_signature_t CHANGED: class deprecated, use new sig_class.
212 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
214 Noteworthy changes in version 0.4.3 (2003-10-06)
215 ------------------------------------------------
217 * libgpgme should not be used for threaded programs anymore. This
218 never worked reliably in all cases, because you had to
219 be careful about the linking order and libtool wouldn't do that for
220 you automatically. Instead, now you have to link against
221 libgpgme-pthread for applications using pthread and libgpgme-pth for
222 applications using GNU Pth.
224 The old code for automagically detecting the thread library is
225 still part of libgpgme, but it is DEPRECATED.
227 * There are new automake macros AM_PATH_GPGME_PTH and
228 AM_PATH_GPGME_PTHREAD, which support checking for thread-enabled
229 versions of GPGME. They define GPGME_PTH_CFLAGS, GPGME_PTH_LIBS,
230 GPGME_PTHREAD_CFLAGS and GPGME_PTHREAD_LIBS respectively. These
231 variables of course also include the configuration for the thread
232 package itself. Alternatively, use libtool.
234 * gpgme_strerror_r as a thread safe variant of gpgme_strerror was
237 * gpgme-config doesn't support setting the prefix or exec prefix
238 anymore. I don't think it ever worked correctly, and it seems to
241 * gpgme_get_key fails with GPG_ERR_AMBIGUOUS_NAME if the key ID
242 provided was not unique, instead returning the first matching key.
244 * gpgme_key_t and gpgme_subkey_t have a new field, can_authenticate,
245 that indicates if the key can be used for authentication.
247 * gpgme_signature_t's status field is now correctly set to an error
248 with error code GPG_ERR_NO_PUBKEY if public key is not found.
250 * gpgme_new_signature_t's class field is now an unsigned int, rather
251 than an unsigned long (the old class field is preserved for
252 backwards compatibility).
254 * A new function gpgme_set_locale() is provided to allow configuring
255 the locale for the crypto backend. This is necessary for text
256 terminals so that programs like the pinentry can be started with
257 the right locale settings for the terminal the application is running
258 on, in case the terminal has different settings than the system
259 default (for example, if it is a remote terminal). You are highly
260 recommended to call the following functions directly after
265 setlocale (LC_ALL, "");
266 gpgme_set_locale (NULL, LC_CTYPE, setlocale (LC_CTYPE, NULL));
267 gpgme_set_locale (NULL, LC_MESSAGES, setlocale (LC_MESSAGES, NULL));
269 GPGME can not do this for you, as setlocale is not thread safe, and
270 there is no alternative.
272 * The signal action for SIGPIPE is now set to SIG_IGN by
273 gpgme_check_version, instead the first time a crypto engine is
274 started (which is not well defined).
276 * In the output of gpgme_hash_algo_name, change RMD160 to RIPEMD160,
277 TIGER to TIGER192, CRC32-RFC1510 to CRC32RFC1510, and CRC24-RFC2440
278 to CRC24RFC2440. For now, these strings can be used as the MIC
279 parameter for PGP/MIME (if appropriately modified).
281 * Interface changes relative to the 0.4.2 release:
282 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
284 gpgme_get_key CHANGED: Fails correctly if key ID not unique.
285 gpgme_key_t EXTENDED: New field can_authenticate.
286 gpgme_subkey_t EXTENDED: New field can_authenticate.
287 gpgme_new_signature_t CHANGED: New type for class field.
289 gpgme_hash_algo_name CHANGED: Slight adjustment of algo names.
290 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
292 Noteworthy changes in version 0.4.2 (2003-07-30)
293 ------------------------------------------------
295 * Allow gpg-error to be in non-standard place when linking the test suite.
297 * Configure will fail now if gpg-error can not be found.
299 * Fixed initialized memory backed data objects for writing, which
300 caused the test program to crash (but only on Mac OS, surprisingly).
302 * Eliminate use of C99 constructs.
304 * Small improvements to the manual.
307 Noteworthy changes in version 0.4.1 (2003-06-06)
308 ------------------------------------------------
310 This is the release that 0.4.0 should have been. There are many
311 interface changes, please see below for the details. The changes are
312 sometimes the result of new functionality, but more often express a
313 paradigm shift. Others are an overdue cleanup to get GPGME in line
314 with the GNU coding standards and to make the interface more
315 self-consistent. Here is an overview on the changes:
317 All types have been renamed to conform to the GNU coding standards,
318 most of the time by keeping the whole name in lowercase and inserting
319 underscores between words.
321 All operations consistently only accept input parameters in their
322 invocation function, and return only an error code directly. Further
323 information about the result of the operation has to be retrieved
324 afterwards by calling one of the result functions. This unifies the
325 synchronous and the asynchronous interface.
327 The error values have been completely replaced by a more
328 sophisticated model that allows GPGME to transparently and accurately
329 report all errors from the other GnuPG components, irregardless of
330 process boundaries. This is achieved by using the library
331 libgpg-errors, which is shared by all GnuPG components. This library
332 is now required for GPGME.
334 The results of all operations are now provided by pointers to C
335 structs rather than by XML structs or in other ways.
337 Objects which used to be opaque (for example a key) are now pointers
338 to accessible structs, so no accessor functions are necessary.
340 Backward compatibility is provided where it was possible without too
341 much effort and did not collide with the overall sanitization effort.
342 However, this is only for ease of transition. NO DEPRECATED FUNCTION
343 OR DATA TYPE IS CONSIDERED A PART OF THE API OR ABI AND WILL BE
344 DROPPED IN THE FUTURE WITHOUT CHANGING THE SONAME OF THE LIBRARY.
345 Recommendations how to replace deprecated or removed functionality
346 can be found within the description of each change.
348 What follows are all changes to the interface and behaviour of GPGME
351 * If gpgme.h is included in sources compiled by GCC 3.1 or later,
352 deprecated attributes will warn about use of obsolete functions and
353 type definitions. You can suppress these warnings by passing
354 -Wno-deprecated-declarations to the gcc command.
356 * The following types have been renamed. The old types are still
357 available as aliases, but they are deprecated now:
360 GpgmeData gpgme_data_t
361 GpgmeError gpgme_error_t
362 GpgmeDataEncoding gpgme_data_encoding_t
363 GpgmeSigStat gpgme_sig_stat_t
364 GpgmeSigMode gpgme_sig_mode_t
365 GpgmeAttr gpgme_attr_t
366 GpgmeValidity gpgme_validity_t
367 GpgmeProtocol gpgme_protocol_t
369 GpgmePassphraseCb gpgme_passphrase_cb_t
370 GpgmeProgressCb gpgme_progress_cb_t
371 GpgmeIOCb gpgme_io_cb_t
372 GpgmeRegisterIOCb gpgme_register_io_cb_t
373 GpgmeRemoveIOCb gpgme_remove_io_cb_t
374 GpgmeEventIO gpgme_event_io_t
375 GpgmeEventIOCb gpgme_event_io_cb_t
376 GpgmeIOCbs gpgme_io_cbs
377 GpgmeDataReadCb gpgme_data_read_cb_t
378 GpgmeDataWriteCb gpgme_data_write_cb_t
379 GpgmeDataSeekCb gpgme_data_seek_cb_t
380 GpgmeDataReleaseCb gpgme_data_release_cb_t
381 GpgmeDataCbs gpgme_data_cbs_t
382 GpgmeTrustItem gpgme_trust_item_t
383 GpgmeStatusCode gpgme_status_code_t
385 * gpgme_error_t is now identical to gpg_error_t, the error type
386 provided by libgpg-error. More about using libgpg-error with GPGME
387 can be found in the manual. All error symbols have been removed!
389 * All functions and types in libgpg-error have been wrapped in GPGME.
390 The new types are gpgme_err_code_t and gpgme_err_source_t. The new
391 functions are gpgme_err_code, gpgme_err_source, gpgme_error,
392 gpgme_err_make, gpgme_error_from_errno, gpgme_err_make_from_errno,
393 gpgme_err_code_from_errno, gpgme_err_code_to_errno,
396 * GPGME_ATTR_IS_SECRET is not anymore representable as a string.
398 * GnuPG 1.2.2 is required. The progress callback is now also invoked
399 for encrypt, sign, encrypt-sign, decrypt, verify, and
400 decrypt-verify operations. For verify operations on detached
401 signatures, the progress callback is invoked for both the detached
402 signature and the plaintext message, though.
404 * gpgme_passphrase_cb_t has been changed to not provide a complete
405 description, but the UID hint, passphrase info and a flag
406 indicating if this is a repeated attempt individually, so the user
407 can compose his own description from this information.
409 The passphrase is not returned as a C string, but must be written
410 to a file descriptor directly. This allows for secure passphrase
413 The return type has been changed to gpgme_error_t value. This
414 allowed to remove the gpgme_cancel function; just return
415 the error code GPG_ERR_CANCELED in the passphrase callback directly.
417 * gpgme_edit_cb_t has been changed to take a file descriptor argument.
418 The user is expected to write the response to the file descriptor,
419 followed by a newline.
421 * The recipients interface has been removed. Instead, you use
422 NULL-terminated lists of keys for specifying the recipients of an
423 encryption operation. Use the new encryption flag
424 GPGME_ENCRYPT_ALWAYS_TRUST if you want to override the validity of
425 the keys (but note that in general this is not a good idea).
427 This change has been made to the prototypes of gpgme_op_encrypt,
428 gpgme_op_encrypt_start, gpgme_op_encrypt_sign and
429 gpgme_op_encrypt_sign_start.
431 The export interface has been changed to use pattern strings like
432 the keylist interface. Thus, new functions gpgme_op_export_ext and
433 gpgme_op_export_ext_start have been added as well. Now the
434 prototypes of gpgme_op_export_start and gpgme_op_export finally
437 * gpgme_op_verify and gpgme_op_decrypt_verify don't return a status
438 summary anymore. Use gpgme_get_sig_status to retrieve the individual
441 * gpgme_io_cb_t changed from a void function to a function returning
442 a gpgme_error_t value. However, it will always return 0, so you
443 can safely ignore the return value.
445 * A new I/O callback event GPGME_EVENT_START has been added. The new
446 requirement is that you must wait until this event until you are
447 allowed to call the I/O callback handlers previously registered for
448 this context operation. Calling I/O callback functions for this
449 context operation before the start event happened is unsafe because
450 it can lead to race conditions in a multi-threaded environment.
452 * The idle function feature has been removed. It was not precisely
453 defined in a multi-threaded environment and is obsoleted by the
454 user I/O callback functions. If you still need a simple way to
455 call something while waiting on one or multiple asynchronous
456 operations to complete, don't set the HANG flag in gpgme_wait (note
457 that this will return to your program more often than the idle
460 * gpgme_wait can return NULL even if hang is true, if an error
461 occurs. In that case *status contains the error code.
463 * gpgme_get_engine_info was radically changed. Instead an XML
464 string, an info structure of the new type gpgme_engine_info_t is
465 returned. This makes it easier and more robust to evaluate the
466 information in an application.
468 * The new function gpgme_get_protocol_name can be used to convert a
469 gpgme_protocol_t value into a string.
471 * The status of a context operation is not checked anymore. Starting
472 a new operation will silently cancel the previous one. Calling a
473 function that requires you to have started an operation before without
474 doing so is undefined.
476 * The FPR argument to gpgme_op_genkey was removed. Instead, use the
477 gpgme_op_genkey_result function to retrieve a gpgme_genkey_result_t
478 pointer to a structure which contains the fingerprint. This also
479 works with gpgme_op_genkey_start. The structure also provides
480 other information about the generated keys.
485 err = gpgme_op_genkey (ctx, NULL, NULL, &fpr);
487 printf ("%s\n", fpr);
491 gpgme_genkey_result_t result;
492 err = gpgme_op_genkey (ctx, NULL, NULL);
495 result = gpgme_op_genkey_result (ctx);
497 printf ("%s\n", result->fpr);
500 * The new gpgme_op_import_result function provides detailed
501 information about the result of an import operation in
502 gpgme_import_result_t and gpgme_import_status_t objects.
503 Thus, the gpgme_op_import_ext variant is deprecated.
505 * The new gpgme_op_sign_result function provides detailed information
506 about the result of a signing operation in gpgme_sign_result_t,
507 gpgme_invalid_key_t and gpgme_new_signature_t objects.
509 * The new gpgme_op_encrypt_result function provides detailed
510 information about the result of an encryption operation in
511 a GpgmeEncryptResult object.
513 * The new gpgme_op_decrypt_result function provides detailed
514 information about the result of a decryption operation in
515 a GpgmeDecryptResult object.
517 * The new gpgme_op_verify_result function provides detailed
518 information about the result of an verify operation in
519 a GpgmeVerifyResult object. Because of this, the GPGME_SIG_STAT_*
520 values, gpgme_get_sig_status, gpgme_get_sig_ulong_attr,
521 gpgme_get_sig_string_attr and gpgme_get_sig_key are now deprecated,
522 and gpgme_get_notation is removed.
524 * GpgmeTrustItem objects have now directly accessible data, so the
525 gpgme_trust_item_get_string_attr and gpgme_trust_item_get_ulong_attr
526 accessor functions are deprecated. Also, reference counting is
527 available through gpgme_trust_item_ref and gpgme_trust_item_unref
528 (the gpgme_trust_item_release alias for the latter is deprecated).
530 * Keys are not cached internally anymore, so the force_update argument
531 to gpgme_get_key has been removed.
533 * GpgmeKey objects have now directly accessible data so the
534 gpgme_key_get_string_attr, gpgme_key_get_ulong_attr,
535 gpgme_key_sig_get_string_attr and gpgme_key_sig_get_ulong_attr
536 functions are deprecated. Also, gpgme_key_release is now
537 deprecated. The gpgme_key_get_as_xml function has been dropped.
539 * Because all interfaces using attributes are deprecated, the
540 GpgmeAttr data type is also deprecated.
542 * The new gpgme_op_keylist_result function provides detailed
543 information about the result of a key listing operation in
544 a GpgmeKeyListResult object.
546 * Now that each function comes with its own result retrieval
547 interface, the generic gpgme_get_op_info interface is not useful
550 * The type and mode of data objects is not available anymore.
552 * Interface changes relative to the 0.4.0 release:
553 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
554 GpgmeCtx DEPRECATED: Use gpgme_ctx_t.
555 GpgmeData DEPRECATED: Use gpgme_data_t.
556 GpgmeError DEPRECATED: Use gpgme_error_t.
557 GpgmeDataEncoding DEPRECATED: Use gpgme_data_encoding_t.
558 GpgmeSigStat DEPRECATED: Use gpgme_sig_stat_t.
559 GpgmeSigMode DEPRECATED: Use gpgme_sig_mode_t.
560 GpgmeAttr DEPRECATED: Use gpgme_attr_t.
561 GpgmeValidity DEPRECATED: Use gpgme_validity_t.
562 GpgmeProtocol DEPRECATED: Use gpgme_protocol_t.
563 GpgmeKey DEPRECATED: Use gpgme_key_t.
564 GpgmePassphraseCb DEPRECATED: Use gpgme_passphrase_cb_t.
565 GpgmeProgressCb DEPRECATED: Use gpgme_progress_cb_t.
566 GpgmeIOCb DEPRECATED: Use gpgme_io_cb_t.
567 GpgmeRegisterIOCb DEPRECATED: Use gpgme_register_io_cb_t.
568 GpgmeRemoveIOCb DEPRECATED: Use gpgme_remove_io_cb_t.
569 GpgmeEventIO DEPRECATED: Use gpgme_event_io_t.
570 GpgmeEventIOCb DEPRECATED: Use gpgme_event_io_cb_t.
571 GpgmeIOCbs DEPRECATED: Use gpgme_io_cbs.
572 GpgmeDataReadCb DEPRECATED: Use gpgme_data_read_cb_t.
573 GpgmeDataWriteCb DEPRECATED: Use gpgme_data_write_cb_t.
574 GpgmeDataSeekCb DEPRECATED: Use gpgme_data_seek_cb_t.
575 GpgmeDataReleaseCb DEPRECATED: Use gpgme_data_release_cb_t.
576 GpgmeDataCbs DEPRECATED: Use gpgme_data_cbs_t.
577 GpgmeTrustItem DEPRECATED: Use gpgme_trust_item_t.
578 GpgmeStatusCode DEPRECATED: Use gpgme_status_code_t.
581 gpgme_recipients_t NEW
583 gpgme_data_encoding_t NEW
590 gpgme_passphrase_cb_t NEW
591 gpgme_progress_cb_t NEW
593 gpgme_register_io_cb_t NEW
594 gpgme_remove_io_cb_t NEW
596 gpgme_event_io_cb_t NEW
598 gpgme_data_read_cb_t NEW
599 gpgme_data_write_cb_t NEW
600 gpgme_data_seek_cb_t NEW
601 gpgme_data_release_cb_t NEW
603 gpgme_trust_item_t NEW
604 gpgme_status_code_t NEW
605 GPGME_{some error code} REMOVED! Use GPG_ERR_* from libgpg-error.
607 gpgme_err_source_t NEW
612 gpgme_error_from_errno NEW
613 gpgme_err_make_from_errno NEW
614 gpgme_err_code_from_errno NEW
615 gpgme_err_code_to_errno NEW
617 gpgme_io_cb_t CHANGED: Return type from void to GpgmeError.
618 gpgme_event_io_t CHANGED: New event type (all numbers changed).
619 gpgme_passphrase_cb_t CHANGED: Desc decomposed, write directly to FD.
620 gpgme_edit_cb_t CHANGED: Write directly to FD.
621 gpgme_key_get_string_attr CHANGED: Don't handle GPGME_ATTR_IS_SECRET.
622 gpgme_op_verify CHANGED: Drop R_STAT argument.
623 gpgme_op_decrypt_verify CHANGED: Drop R_STAT argument.
624 gpgme_wait CHANGED: Can return NULL even if hang is true.
625 GpgmeIdleFunc REMOVED
626 gpgme_register_idle REMOVED
627 GpgmeRecipients REMOVED
628 gpgme_recipients_new REMOVED
629 gpgme_recipients_release REMOVED
630 gpgme_recipients_add_name REMOVED
631 gpgme_recipients_add_name_with_validity REMOVED
632 gpgme_recipients_count REMOVED
633 gpgme_recipients_enum_open REMOVED
634 gpgme_recipients_enum_read REMOVED
635 gpgme_recipients_enum_close REMOVED
636 gpgme_encrypt_flags_t NEW
637 GPGME_ENCRYPT_ALWAYS_TRUST NEW
638 gpgme_op_encrypt CHANGED: Recipients passed as gpgme_key_t[].
639 gpgme_op_encrypt_start CHANGED: Recipients passed as gpgme_key_t[].
640 gpgme_op_encrypt_sign CHANGED: Recipients passed as gpgme_key_t[].
641 gpgme_op_encrypt_sign_start CHANGED: Recipients passed as gpgme_key_t[].
642 gpgme_op_export_start CHANGED: User IDs passed as patterns.
643 gpgme_op_export CHANGED: User IDs passed as patterns.
644 gpgme_op_export_ext_start NEW
645 gpgme_op_export_ext NEW
646 gpgme_keylist_mode_t NEW
648 gpgme_engine_info_t NEW
649 gpgme_get_engine_info CHANGED: Return info structure instead XML.
650 gpgme_get_protocol_name NEW
651 gpgme_cancel REMOVED: Return error in callback directly.
652 gpgme_op_genkey CHANGED: FPR argument dropped.
653 gpgme_op_genkey_result NEW
654 gpgme_genkey_result_t NEW
655 gpgme_op_import_ext DEPRECATED: Use gpgme_op_import_result.
656 gpgme_op_import_result NEW
657 gpgme_import_status_t NEW
658 gpgme_import_result_t NEW
659 gpgme_pubkey_algo_t NEW
660 gpgme_hash_algo_t NEW
661 gpgme_invalid_key_t NEW
662 gpgme_new_signature_t NEW
663 gpgme_sign_result_t NEW
664 gpgme_op_sign_result NEW
665 gpgme_pubkey_algo_name NEW
666 gpgme_hash_algo_name NEW
667 gpgme_encrypt_result_t NEW
668 gpgme_op_encrypt_result NEW
669 gpgme_decrypt_result_t NEW
670 gpgme_op_decrypt_result NEW
671 gpgme_verify_result_t NEW
672 gpgme_op_verify_result NEW
673 gpgme_get_notation REMOVED: Access verify result directly instead.
674 gpgme_get_sig_key DEPRECATED: Use gpgme_get_key with fingerprint.
675 gpgme_get_sig_ulong_attr DEPRECATED: Use verify result directly.
676 gpgme_get_sig_string_attr DEPRECATED: Use verify result directly.
677 GPGME_SIG_STAT_* DEPRECATED: Use error value in sig status.
678 gpgme_get_sig_status DEPRECATED: Use verify result directly.
679 gpgme_trust_item_t CHANGED: Now has user accessible data members.
680 gpgme_trust_item_ref NEW
681 gpgme_trust_item_unref NEW
682 gpgme_trust_item_release DEPRECATED: Use gpgme_trust_item_unref.
683 gpgme_trust_item_get_string_attr DEPRECATED
684 gpgme_trust_item_get_ulong_attr DEPRECATED
685 gpgme_get_key CHANGED: Removed force_update argument.
689 gpgme_key_t CHANGED: Now has user accessible data members.
690 gpgme_key_get_string_attr DEPRECATED
691 gpgme_key_get_ulong_attr DEPRECATED
692 gpgme_key_sig_get_string_attr DEPRECATED
693 gpgme_key_sig_get_ulong_attr DEPRECATED
694 gpgme_key_get_as_xml REMOVED
695 gpgme_key_list_result_t NEW
696 gpgme_op_keylist_result NEW
697 gpgme_get_op_info REMOVED
698 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
700 Noteworthy changes in version 0.4.0 (2002-12-23)
701 ------------------------------------------------
703 * Key generation returns the fingerprint of the generated key.
705 * New convenience function gpgme_get_key.
707 * Supports signatures of user IDs in keys via the new
708 GPGME_KEYLIST_MODE_SIGS keylist mode and the
709 gpgme_key_sig_get_string_attr and gpgme_key_sig_get_ulong_attr
710 interfaces. The XML info about a key also includes the signatures
713 * New data object interface, which is more flexible and transparent.
715 * Interface changes relative to the 0.3.9 release:
716 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
720 GpgmeDataReleaseCb NEW
722 gpgme_data_read CHANGED: Match read() closely.
723 gpgme_data_write CHANGED: Match write() closely.
725 gpgme_data_new_from_fd NEW
726 gpgme_data_new_from_stream NEW
727 gpgme_data_new_from_cbs NEW
728 gpgme_data_rewind DEPRECATED: Replaced by gpgme_data_seek().
729 gpgme_data_new_from_read_cb DEPRECATED: Replaced by gpgme_data_from_cbs().
730 gpgme_data_get_type REMOVED: No replacement.
731 gpgme_op_verify CHANGED: Take different data objects for
732 signed text and plain text.
733 gpgme_op_verify_start CHANGED: See gpgme_op_verify.
734 gpgme_check_engine REMOVED: Deprecated since 0.3.0.
735 gpgme_op_genkey CHANGED: New parameter FPR.
736 GPGME_KEYLIST_MODE_SIGS NEW
737 gpgme_key_sig_get_string_attr NEW
738 gpgme_key_sig_get_ulong_attr NEW
740 GPGME_ATTR_SIG_CLASS NEW
741 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
743 Noteworthy changes in version 0.3.16 (2003-11-19)
744 -------------------------------------------------
746 * Compatibility fixes for GnuPG 1.9.x
748 Noteworthy changes in version 0.3.15 (2003-02-18)
749 -------------------------------------------------
751 * The progress status is sent via the progress callbacks in
754 * Bug fix for signing operations with explicit signer settings for
757 Noteworthy changes in version 0.3.14 (2002-12-04)
758 -------------------------------------------------
760 * GPGME-Plug is now in its own package "cryptplug".
762 * Workaround for a setlocale problem. Fixed a segv related to not
763 correctly as closed marked file descriptors.
765 Noteworthy changes in version 0.3.13 (2002-11-20)
766 -------------------------------------------------
768 * Release due to changes in gpgmeplug.
770 Noteworthy changes in version 0.3.12 (2002-10-15)
771 -------------------------------------------------
773 * Fixed some bux with key listings.
775 * The development has been branched to clean up some API issues.
776 This 0.3 series will be kept for compatibility reasons; so do don't
779 Noteworthy changes in version 0.3.11 (2002-09-20)
780 -------------------------------------------------
784 Noteworthy changes in version 0.3.10 (2002-09-02)
785 -------------------------------------------------
787 * Setting the signing keys for the CMS protocol does now work.
789 * The signers setting is honoured by gpgme_op_edit.
791 Noteworthy changes in version 0.3.9 (2002-08-21)
792 ------------------------------------------------
794 * A spec file for creating RPMs has been added.
796 * An experimental interface to GnuPG's --edit-key functionality is
797 introduced, see gpgme_op_edit.
799 * The new gpgme_import_ext function provides a convenient access to
800 the number of processed keys.
802 * Interface changes relative to the 0.3.8 release:
803 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
806 gpgme_op_edit_start NEW
808 gpgme_op_import_ext NEW
809 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
811 Noteworthy changes in version 0.3.8 (2002-06-25)
812 ------------------------------------------------
814 * It is possible to use an outside event loop for the I/O to the
815 crypto engine by setting the I/O callbacks with gpgme_set_io_cbs.
817 * Interface changes relative to the 0.3.6 release:
818 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
820 GpgmeRegisterIOCb NEW
824 struct GpgmeIOCbs NEW
827 GPGME_ATTR_ERRTOK NEW
828 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
830 Noteworthy changes in version 0.3.7 (2002-06-04)
831 ------------------------------------------------
833 * GPGME_ATTR_OTRUST is implemented now.
835 * A first step toward thread safeness has been achieved, see the
836 documentation for details. Supported thread libraries are pthread
839 Noteworthy changes in version 0.3.6 (2002-05-03)
840 ------------------------------------------------
842 * All error output of the gpgsm backend is send to the bit bucket.
844 * The signature verification functions are extended. Instead of
845 always returning GPGME_SIG_STATUS_GOOD, the functions new codes for
846 expired signatures. 2 new functions may be used to retrieve more
847 detailed information like the signature expiration time and a
848 validity information of the key without an extra key looking.
850 * The current passphrase callback and progress meter callback can be
851 retrieved with the new functions gpgme_get_passphrase_cb and
852 gpgme_get_progress_cb respectively.
854 * Interface changes relative to the 0.3.5 release:
855 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
856 gpgme_get_passphrase_cb NEW
857 gpgme_get_progress_cb NEW
858 GpgmeDataEncoding NEW
859 gpgme_data_set_encoding NEW
860 gpgme_data_get_encoding NEW
861 GPGME_SIG_STAT_GOOD_EXP NEW
862 GPGME_SIG_STAT_GOOD_EXPKEY NEW
863 gpgme_op_verify CHANGED: Returns more status codes.
864 GPGME_ATTR_SIG_STATUS NEW
865 gpgme_get_sig_string_attr NEW
866 gpgme_get_sig_ulong_attr NEW
867 gpgme_get_protocol NEW
868 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
870 Noteworthy changes in version 0.3.5 (2002-04-01)
871 ------------------------------------------------
873 * gpgme_op_encrypt can be called with RECIPIENTS being 0. In this
874 case, symmetric encryption is performed. Note that this requires a
875 passphrase from the user.
877 * More information is returned for X.509 certificates.
879 * Interface changes relative to the 0.3.4 release:
880 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
881 gpgme_op_encrypt EXTENDED: Symmetric encryption possible
882 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
884 Noteworthy changes in version 0.3.4 (2002-03-04)
885 ------------------------------------------------
887 * gpgme_op_encrypt does now fail with GPGME_Invalid_Recipients if
888 some recipients have been invalid, whereas earlier versions
889 succeeded in this case. The plaintext is still encrypted for all valid
890 recipients, so the application might take this error as a hint that
891 the ciphertext is not usable for all requested recipients.
892 Information about invalid recipients is available with gpgme_get_op_info.
894 * gpgme_op_verify now allows to pass an uninitialized data object as
895 its plaintext argument to check for normal and cleartext
896 signatures. The plaintext is then returned in the data object.
898 * New interfaces gpgme_set_include_certs and gpgme_get_include_certs
899 to set and get the number of certifications to include in S/MIME
902 * New interfaces gpgme_op_encrypt_sign and gpgme_op_encrypt_sign_start
903 to encrypt and sign a message in a combined operation.
905 * New interface gpgme_op_keylist_ext_start to search for multiple patterns.
907 * gpgme_key_get_ulong_attr supports the GPGME_ATTR_EXPIRE attribute.
909 * Interface changes relative to the 0.3.3 release:
910 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
911 gpgme_op_encrypt CHANGED: Can fail with GPGME_Invalid_Recipients
912 gpgme_op_verify EXTENDED: Accepts uninitialized text argument
913 gpgme_key_get_ulong_attr EXTENDED: Supports GPGME_ATTR_EXPIRE
914 gpgme_set_include_certs NEW
915 gpgme_get_include_certs NEW
916 gpgme_op_encrypt_sign NEW
917 gpgme_op_encrypt_sign_start NEW
918 gpgme_op_keylist_ext_start NEW
919 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
921 Noteworthy changes in version 0.3.3 (2002-02-12)
922 ------------------------------------------------
924 * Fix the Makefile in jnlib.
926 * Fix the test suite (hopefully). It should clean up all its state
927 with `make check' now.
930 Noteworthy changes in version 0.3.2 (2002-02-10)
931 ------------------------------------------------
933 * Remove erroneous dependency on libgcrypt in jnlib.
936 Noteworthy changes in version 0.3.1 (2002-02-09)
937 ------------------------------------------------
939 * There is a Texinfo manual documenting the API.
941 * The gpgme_set_keylist_mode function returns an error, and changed
942 its meaning. It is no longer usable to select between normal and
943 fast mode (newer versions of GnuPG will always be fast), but
944 selects between local keyring, remote keyserver, or both.
945 For this, two new macros are defined, GPGME_KEYLIST_MODE_LOCAL
946 and GPGME_KEYLIST_MODE_EXTERN. To make it possible to modify the
947 current setting, a fucntion gpgme_get_keylist_mode was added to
948 retrieve the current mode.
950 * gpgme_wait accepts a new argument STATUS to return the error status
951 of the operation on the context. Its definition is closer to
952 waitpid() now than before.
954 * The LENGTH argument to gpgme_data_new_from_filepart changed its
955 type from off_t to the unsigned size_t.
957 * The R_HD argument to the GpgmePassphraseCb type changed its type
958 from void* to void**.
960 * New interface gpgme_op_trustlist_end() to match
961 gpgme_op_keylist_end().
963 * The CryptPlug modules have been renamed to gpgme-openpgp and
964 gpgme-smime, and they are installed in pkglibdir by `make install'.
966 * An idle function can be registered with gpgme_register_idle().
968 * The GpgSM backend supports key generation with gpgme_op_genkey().
970 * Interface changes relative to the 0.3.0 release:
971 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
972 gpgme_data_new_from_filepart CHANGED: Type of LENGTH is size_t.
973 GpgmePassphraseCb CHANGED: Type of R_HD is void **.
974 gpgme_wait CHANGED: New argument STATUS.
975 gpgme_set_keylist_mode CHANGED: Type of return value is GpgmeError.
976 The function has a new meaning!
977 gpgme_get_keylist_mode NEW
978 GPGME_KEYLIST_MODE_LOCAL NEW
979 GPGME_KEYLIST_MODE_EXTERN NEW
980 gpgme_op_trustlist_next NEW
982 gpgme_register_idle NEW
983 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
985 Noteworthy changes in version 0.3.0 (2001-12-19)
986 ------------------------------------------------
988 * New interface gpgme_set_protocol() to set the protocol and thus the
989 crypto engine to be used by the context. Currently, the OpenPGP
990 and the CMS protocols are supported. They are specified by the new
991 preprocessor symbols GPGME_PROTOCOL_OpenPGP and GPGME_PROTOCOL_CMS.
992 A new context uses the OpenPGP engine by default.
994 * gpgme_get_engine_info() returns information for all crypto engines
995 compiled into the library. The XML format has changed. To
996 reliably get the version of a crypto engine, the <version> tag
997 after the appropriate <protocol> tag has to be looked for.
999 * New interface gpgme_engine_check_version(), obsoleting
1000 gpgme_check_engine(). Check the version of all engines you are
1001 supporting in your software.
1003 * GpgmeKey lists the user ids in the order as they are returned by
1004 GnuPG, first the primary key with index 0, then the sub-user ids.
1006 * New operation gpgme_op_decrypt_verify() to decrypt and verify
1007 signatures simultaneously.
1009 * The new interface gpgme_op_keylist_end() terminates a pending
1010 keylist operation. A keylist operation is also terminated when
1011 gpgme_op_keylist_next() returns GPGME_EOF.
1013 * GPGME can be compiled without GnuPG being installed (`--with-gpg=PATH'),
1014 cross-compiled, or even compiled without support for GnuPG
1017 * GPGME can be compiled with support for GpgSM (GnuPG for S/MIME,
1018 `--with-gpgsm=PATH'). It is enabled by default if the `gpgsm' is found
1019 in the path, but it can also be compiled without support for GpgSM
1020 (`--without-gpgsm').
1022 * CryptPlug modules for GPGME are included and can be enabled at
1023 configure time (`--enable-gpgmeplug'). There is one module which
1024 uses the GnuPG engine (`gpgmeplug') and one module which uses the
1025 GpgSM engine (`gpgsmplug').
1027 * Interface changes relative to the latest 0.2.x release:
1028 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1029 gpgme_key_get_as_xml CHANGED: Sub-user ids reversed in order.
1030 gpgme_key_get_string_attr CHANGED: User ids reversed in order.
1031 gpgme_key_get_ulong_attr CHANGED: User ids reversed in order.
1032 gpgme_get_engine_info CHANGED: New format, extended content.
1033 gpgme_engine_check_version NEW
1034 gpgme_decrypt_verify_start NEW
1035 gpgme_decrypt_verify NEW
1036 gpgme_op_keylist_next NEW
1037 gpgme_set_protocol NEW
1038 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1041 Noteworthy changes in version 0.2.3 (2001-09-17)
1042 ------------------------------------------------
1044 * New function gpgme_get_op_info which can be used to get the micalg
1045 parameter needed for MOSS.
1047 * New functions gpgme_get_armor and gpgme_get_textmode.
1049 * The usual bug fixes and some minor functionality improvements.
1051 * Added a simple encryption component for MS-Windows; however the
1052 build procedure might have some problems.
1055 Noteworthy changes in version 0.2.2 (2001-06-12)
1056 ------------------------------------------------
1058 * Implemented a key cache.
1060 * Fixed a race condition under W32 and some other bug fixes.
1063 Noteworthy changes in version 0.2.1 (2001-04-02)
1064 ------------------------------------------------
1066 * Changed debug output and GPGME_DEBUG variable (gpgme/debug.c)
1068 * Handle GnuPG's new key capabilities output and support revocation
1071 * Made the W32 support more robust.
1074 Copyright 2001, 2002, 2003, 2004 g10 Code GmbH
1076 This file is free software; as a special exception the author gives
1077 unlimited permission to copy and/or distribute it, with or without
1078 modifications, as long as this notice is preserved.
1080 This file is distributed in the hope that it will be useful, but
1081 WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
1082 implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.