aboutsummaryrefslogtreecommitdiffstats
path: root/NEWS
Commit message (Collapse)AuthorAgeFilesLines
* Post release updatesWerner Koch2026-08-311-0/+7
| | | | --
* Release 2.2.0gpgme-2.2.0Werner Koch2026-08-311-1/+9
|
* doc: Document new fields in gpgme_signature_tIngo Klöcker2026-08-041-1/+1
| | | | | | -- GnuPG-bug-id: 8369
* Provide serial number and issuer of unknown S/MIME signing certificatesIngo Klöcker2026-08-031-0/+9
| | | | | | | | | | | | | | * src/gpgme.h.in (_gpgme_signature): Add fields issuer_serial and issuer_name. * src/verify.c (release_op_data): Free new fields. (parse_no_pubkey): New. (_gpgme_verify_status_handler): Handle NO_PUBKEY status code. * tests/run-verify.c (print_result): Print issuer_serial and issuer_name. -- GnuPG-bug-id: 8369
* Post release updatesWerner Koch2026-06-301-0/+6
| | | | --
* Release 2.1.2gpgme-2.1.2Werner Koch2026-06-301-2/+4
|
* Post release updatesWerner Koch2026-06-251-0/+6
| | | | --
* Release 2.1.1gpgme-2.1.1Werner Koch2026-06-251-1/+11
|
* Post release updatesWerner Koch2026-05-181-0/+6
| | | | --
* Release 2.1.0gpgme-2.1.0Werner Koch2026-05-181-4/+21
|
* Make GPGME_DECRYPT_SESSION_HASH also work for gnupg 2.2.55Werner Koch2026-05-111-4/+13
| | | | | * src/engine-gpg.c (have_usable_session_hash): New. (gpg_decrypt): Use here.
* Add flag fields is_de_vs and beta_compliance to encryption resultsIngo Klöcker2026-04-211-1/+5
| | | | | | | | | | | | | | | | | | | * src/encrypt.c (_gpgme_encrypt_status_handler): Handle the compliance status line. * src/gpgme.h.in (struct _gpgme_op_encrypt_result): Add fields is_de_vs and beta_compliance. (gpgme_status_code_t): Add status code for the encryption compliance status line. * src/status-table.c (status_table): Add encryption compliance status line. * tests/run-encrypt.c (print_encrypt_result): Print compliance. -- This allows checking whether the encrypt operation is in compliance with the VS-NfD criteria. GnuPG-bug-id: 6702
* Update NEWSIngo Klöcker2026-03-241-0/+4
| | | | --
* Allow setting export filters when exporting keysIngo Klöcker2026-01-141-0/+5
| | | | | | | | | | | | | | | | | | | | | | * src/context.h (struct gpgme_context): New field export_filter. * src/engine-backend.h (struct engine_ops): Add arg export_filter to field 'export' and field 'export_ext'. * src/engine-gpg.c (export_common): Add arg export_filter and pass option --export-filter with argument value to gpg. (gpg_export, gpg_export_ext): Add arg export_filter and pass it to export_common. Adjust all callers of the two functions. * src/engine-gpgsm.c (gpgsm_export, gpgsm_export_ext): Add dummy arg export_filter. * src/gpgme.c (gpgme_release): Free 'export_filter'. (gpgme_set_ctx_flag, gpgme_get_ctx_flag): New flag "export-filter". * tests/run-export.c (main): Add option --export-filter. -- This makes the --export-filter option available in the GPGME API for key exports. GnuPG-bug-id: 8033
* Slight changes to comments and trace output.Werner Koch2025-10-141-1/+1
| | | | --
* Post release updatesWerner Koch2025-09-231-0/+4
| | | | --
* Release 2.0.1gpgme-2.0.1Werner Koch2025-09-231-1/+13
|
* gnupg-manage-keys: Implement a new tool.Werner Koch2025-07-151-0/+4
| | | | | | | * tools/gnupg-key-manage.c: new. * tools/Makefile.am: New. * configure.ac: Add Makefile. * Makefile.am (SUBDIRS): Add tools directory.
* NEWS: Mention the split of gpgmeIngo Klöcker2025-06-041-0/+3
| | | | | --
* Post release updateWerner Koch2025-06-031-1/+5
| | | | --
* Release 2.0.0gpgme-2.0.0Werner Koch2025-06-031-1/+3
|
* Add GPGME_CREATE_GROUP flag for gpgme_op_createkey and _createsubkey.Werner Koch2025-05-121-0/+3
| | | | | | * src/gpgme.h.in (GPGME_CREATE_GROUP): New. * src/engine-gpg.c (gpg_add_algo_usage_expire): Pass to engine. * tests/run-genkey.c (parse_usage_string): Support here too.
* Change timestamp fields from signed to unsigned long.Werner Koch2025-05-051-0/+5
| | | | | | | | | | | | * src/gpgme.h.in (struct _gpgme_subkey): Chnage timestamp and expires. (struct _gpgme_key_sig): Ditto. (struct _gpgme_new_signature): Ditto. -- Note that unsigned long has always been used for gpgme_signature_t. A change to time_t would be a real ABI change and require may users of gpgme to adjust their code. The signed/unsigned change is sufficient and mostly invisible.
* Allow signing using an exactly specified subkey.Werner Koch2025-05-051-0/+5
| | | | | | | | | | | | | | | | | * src/engine-gpg.c (append_args_from_signers): Detect exactly specified keys and apped the '!' suffix. -- Due to the ABI break which removed long long deprecated functions we can also risk to introduce a slight semantic change in the way signer keys are specified. The change is that iff a subkey-fingerprint with the '!' suffix was used to lookup a signer's key we now use this specific subkey and not any key gpg considers to be a good signing subkey. Most people would have considered the old behaviour anyway as a bug because it differs from what gpg uses at the command line. GnuPG-bug-id: 3325 Suggested-by: Benjamin Kibbey
* Mark the subkey used to find a key.Werner Koch2025-05-051-0/+1
| | | | | | | | | | | | | | | | | * src/gpgme.h.in (struct _gpgme_subkey): New flag subkey_match. * src/keylist.c (spacep): New. (op_data_t): Add field requested_subkey. (release_op_data): Free it. (exact_match_pattern): New. (maybe_setup_for_requested_subkey): New. (gpgme_op_keylist_start): Call it here. (gpgme_op_keylist_ext_start): Call it for each pattern until one found. (gpgme_op_keylist_next): Set the subkey_match field. --- This is needed for GnuPG-bug-id: 3325
* New decrypt flags GPGME_DECRYPT_LISTONLY.Werner Koch2025-03-181-0/+4
| | | | | | | | | | | | | | * src/gpgme.h.in (GPGME_DECRYPT_LISTONLY): New. * src/decrypt.c (op_data_t): Add member list_only. (_gpgme_decrypt_status_handler): Do not return NO_DATA in list_only mode. (_gpgme_op_decrypt_init_result): Add arg flags and set the list_only flag. (_gpgme_decrypt_start): Pss flags to the init function. * src/decrypt-verify.c (decrypt_verify_start): Ditto. * src/engine-gpg.c (gpg_decrypt): Add --list-only if flag is set. * tests/run-decrypt.c (main): Add option --list-only.
* Add API gpgme_op_random_value.Werner Koch2025-03-141-2/+6
| | | | | | | | | | | | | | | | | | * src/genrandom.c (getrandom_size_t): New. (gpgme_op_random_value): New. * src/gpgme.def: Add new function. * src/libgpgme.vers: Ditto. * src/gpgme.h.in: Add prototype. * tests/run-genrandom.c: Add an option to use the new function. -- The implementation is not optimized but sufficient for our use case. Possible improvements for this and gpgme_op_random_bytes are a cache for random bytes in the context so that we do not need to get out to gpgme for just a few random bytes. GnuPG-bug-id: 6694
* Add API gpgme_op_random_bytes.Werner Koch2025-02-261-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | * src/genrandom.c: New. * src/Makefile.am: Add new file. * src/engine-backend.h (struct engine_ops): Add func ptr getdirect. Adjust all engine_ops. * src/engine-gpg.c (gpg_getdirect): New. (_gpgme_engine_ops_gpg): Connect new handler. * src/gpgme.h.in (gpgme_random_mode_t): New. (GPGME_RANDOM_MODE_NORMAL): New. (GPGME_RANDOM_MODE_ZBASE32): New. (gpgme_op_random_bytes): New public function * src/libgpgme.vers: Add function. * src/gpgme.def: Add function. * tests/run-genrandom.c: New. * tests/Makefile.am: Add new file. -- This is a first take on this the mode parameter allows to extend the function if ever needed. Due to the gpg calling and fd setup overhead this function is not yet very fast but its purpose is to get "approved" random bytes. We might eventually extend it to keep a small internal cache of random numbers and get for example 128 random bytes directly from gpg and deliver only the few required. GnuPG-bug-id: 6694
* Remove the long deprecated and never working trust list functions.Werner Koch2025-02-211-3/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * src/trust-item.c: Remove file. * src/trustlist.c: Remove file. * src/Makefile.am (main_sources): Remove those files. * src/gpgme.h.in (GPGME_EVENT_NEXT_TRUSTITEM): Remove. (gpgme_trust_item_t, GpgmeTrustItem): Remove. (gpgme_op_trustlist_start): Remove. (gpgme_op_trustlist_next): Remove. (gpgme_op_trustlist_end): Remove. (gpgme_trust_item_ref): Remove. (gpgme_trust_item_unref, gpgme_trust_item_release): Remove. * src/gpgme.def: Remove removed functions. * src/libgpgme.vers: Ditto. -- The GPGME_ATTR_foo based functions are deprecated since 2003 and it is time to remove them now. The trustlist functions never worked: This never worked in reality because the required feature has been removed from GnuPG version 1.3.2 soon after introduction of this feature in gpgme in 2003. It was anyway marked as experimental. They even returned GPG_ERR_NOT_IMPLEMENTED since gpgme 1.14.0 (summer 2000) instead of failing with a incomprehensible error code. GnuPG-bug-id: 4834
* Remove long deprecated functions.Werner Koch2025-02-211-0/+18
| | | | | | | | | | | | | | | | | | | * src/gpgme.h.in (GPGME_EXPORT_MODE_NOUID): Remove. This was a left-over from an experiment. (gpgme_attr_t,_gpgme_attr_t) Remove. Deprecated sinze 2003. (gpgme_get_sig_ulong_attr): Ditto. (gpgme_get_sig_string_attr): Ditto. (gpgme_key_get_string_attr): Ditto. (gpgme_key_get_ulong_attr): Ditto. (gpgme_key_sig_get_string_attr): Ditto. (gpgme_key_sig_get_ulong_attr): Ditto. (gpgme_trust_item_get_string_attr): Ditto. (gpgme_trust_item_get_int_attr): Ditto. * src/gpgme.def: Remove them here too. * src/libgpgme.vers: Ditto. * src/trust-item.c: Remove corresponding implementations. * src/verify.c: Ditto. * src/key.c: Ditto.
* NEWS: Fix typosIngo Klöcker2025-02-041-1/+1
| | | | | --
* Update copyright notices.Werner Koch2025-02-041-0/+3
| | | | --
* Bump version after splitting off bindingsIngo Klöcker2025-02-031-2/+2
| | | | | --
* Post release updatesWerner Koch2024-12-041-0/+4
| | | | --
* Release 1.24.1gpgme-1.24.1Werner Koch2024-12-041-1/+13
| | | | | | | | | | | -- Although the GPGME_PK_KYBER is technically an API change we ignore it because this is just another enum value which does not change the ABI and no software uses it yet. Kleopatra is the first to use this and it already has a test for gpgme 1.24.1. GnuPG-bug-id: 7440
* Post release updatesWerner Koch2024-11-061-0/+4
| | | | --
* Release 1.24.0gpgme-1.24.0Werner Koch2024-11-061-3/+14
|
* core: New context flags "known-notations".Werner Koch2024-10-291-0/+2
| | | | | | | | | | | | | | | | | | | * src/gpgme.c (gpgme_set_ctx_flag): Add "known-notations". (gpgme_get_ctx_flag): Ditto. (gpgme_release): Free variable. * src/context.h (struct gpgme_context): Add "known_notations". * src/engine-gpg.c (struct engine_gpg): Add "known_notations". (gpg_release): Free variable. (gpg_set_engine_flags): Set variable. (add_known_notations): New. (gpg_decrypt, gpg_verify): Call function. * tests/run-decrypt.c (main): Add option --known-notations. * tests/run-verify.c (main): Ditto. -- GnuPG-bug-id: 4060
* cpp,doc: Update NEWSIngo Klöcker2024-10-221-0/+4
| | | | --
* core: New encryption flags GPGME_ENCRYPT_ADD_RECP and _CHG_RECP.Werner Koch2024-09-091-0/+4
| | | | | | | | | | | | | * src/gpgme.h.in (GPGME_ENCRYPT_ADD_RECP, GPGME_ENCRYPT_CHG_RECP): New flag values. * src/engine-gpg.c (have_cmd_modify_recipients): New. (gpg_encrypt): Check availability of the feature and prepare command. * tests/run-encrypt.c (main): New options --add-recipients and --change-recipients. -- GnuPG-bug-id: 1825
* qt: Add support for new context flag "proc-all-sigs"Ingo Klöcker2024-08-261-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lang/qt/src/decryptverifyarchivejob.cpp, lang/qt/src/decryptverifyarchivejob.h (DecryptVerifyArchiveJob): Add member functions setProcessAllSignatures, processAllSignatures. * lang/qt/src/decryptverifyarchivejob_p.h (DecryptVerifyArchiveJobPrivate): Add member m_processAllSignatures. * lang/qt/src/decryptverifyjob.cpp, lang/qt/src/decryptverifyjob.h (DecryptVerifyJob): Add member functions setProcessAllSignatures, processAllSignatures. * lang/qt/src/decryptverifyjob_p.h (DecryptVerifyJobPrivate): Add member m_processAllSignatures. * lang/qt/src/qgpgmedecryptverifyarchivejob.cpp (decrypt_verify_from_file_name): Add argument "processAllSignatures". Set context flag "proc-all-sigs" if requested. (QGpgMEDecryptVerifyArchiveJob::start): Set context flag "proc-all-sigs" if requested. (QGpgMEDecryptVerifyArchiveJobPrivate::startIt): Pass m_processAllSignatures to decrypt_verify_from_file_name. * lang/qt/src/qgpgmedecryptverifyjob.cpp (decrypt_verify_from_filename): Add argument "processAllSignatures". Set context flag "proc-all-sigs" if requested. (QGpgMEDecryptVerifyJob::start, QGpgMEDecryptVerifyJob::exec): Set context flag "proc-all-sigs" if requested. (QGpgMEDecryptVerifyJobPrivate::startIt): Pass m_processAllSignatures to decrypt_verify_from_filename. * lang/qt/src/qgpgmeverifydetachedjob.cpp (verify_from_filename): Add argument "processAllSignatures". Set context flag "proc-all-sigs" if requested. (QGpgMEVerifyDetachedJob::start, QGpgMEVerifyDetachedJob::exec): Set context flag "proc-all-sigs" if requested. (QGpgMEVerifyDetachedJobPrivate::startIt): Pass m_processAllSignatures to decrypt_verify_from_filename. * lang/qt/src/qgpgmeverifyopaquejob.cpp (verify_from_filename): Add argument "processAllSignatures". Set context flag "proc-all-sigs" if requested. (QGpgMEVerifyOpaqueJob::start, QGpgMEVerifyOpaqueJob::exec): Set context flag "proc-all-sigs" if requested. (QGpgMEVerifyOpaqueJobPrivate::startIt): Pass m_processAllSignatures to decrypt_verify_from_filename. * lang/qt/src/verifydetachedjob.cpp, lang/qt/src/verifydetachedjob.h (VerifyDetachedJob): Add member functions setProcessAllSignatures, processAllSignatures. * lang/qt/src/verifydetachedjob_p.h (VerifyDetachedJobPrivate): Add member m_processAllSignatures. * lang/qt/src/verifyopaquejob.cpp, lang/qt/src/verifyopaquejob.h (VerifyOpaqueJob): Add member functions setProcessAllSignatures, processAllSignatures. * lang/qt/src/verifyopaquejob_p.h (VerifyOpaqueJobPrivate): Add member m_processAllSignatures. * lang/qt/tests/run-decryptverifyarchivejob.cpp, lang/qt/tests/run-decryptverifyjob.cpp, lang/qt/tests/run-verifydetachedjob.cpp, lang/qt/tests/run-verifyopaquejob.cpp (struct CommandLineOptions): Add member processAllSignatures. (parseCommandLine): Add command line option --process-all-signatures. (main): Pass new option to the job. -- The new option processAllSignatures is added to all jobs that verify data signatures. By enabling this option, one can tell gpg not to stop checking signatures after the first bad signature. GnuPG-bug-id: 6870
* New context flag "proc-all-sigs".Werner Koch2024-08-231-0/+2
| | | | | | | | | | | | | * src/context.h (struct gpgme_context): Add proc_all_sigs. * src/gpgme.c (gpgme_set_ctx_flag): Add flag "proc-all-sigs". (gpgme_get_ctx_flag): Ditto. * src/engine-gpg.c (engine.gpg): Add flags.proc_all_sigs. (have_option_proc_all_sigs): New. (gpg_set_engine_flags): Set flag from context. (build_argv): Add --proc-all-sigs if requested and supported. -- GnuPG-bug-id: 7261
* qt: Support disabling and enabling of keysIngo Klöcker2024-08-071-0/+3
| | | | | | | | | | | | | | | | | | | * lang/qt/src/Makefile.am: Add new files. * lang/qt/src/job.cpp (QuickJob): Move definition of constructor and destructor and inclusion of the moc file to quickjob.cpp. * lang/qt/src/qgpgmequickjob.cpp (class QGpgMEQuickJobPrivate): New. (QGpgMEQuickJob::QGpgMEQuickJob): Instantiate private job class. (set_key_enabled): New. * lang/qt/src/quickjob.cpp: New. * lang/qt/src/quickjob.h (class QuickJob): Add member function startSetKeyEnabled. * lang/qt/src/quickjob_p.h: New. * lang/qt/tests/Makefile.am: Add new test for Qt 5 and Qt 6. * lang/qt/tests/t-disablekey.cpp: New. -- GnuPG-bug-id: 7239
* cpp: Add support for setting owner trust and for disabling keysIngo Klöcker2024-08-061-0/+7
| | | | | | | | | | * lang/cpp/src/context.cpp, lang/cpp/src/context.h (class Context): Add member functions setOwnerTrust, startSetOwnerTrust, setKeyEnabled, startSetKeyEnabled. * lang/cpp/src/context.cpp (owner_trust_to_string): New. -- GnuPG-bug-id: 7239
* core: New function gpgme_op_setownertrustIngo Klöcker2024-08-061-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * src/Makefile.am (main_sources): Add new file. * src/context.h (ctx_op_data_id_t): Add OPDATA_SETOWNERTRUST. * src/engine.c, src/engine.h (_gpgme_engine_op_setownertrust): New. * src/engine-backend.h (engine_ops): Add 'setownertrust' and adjust all engine initializers. * src/engine-gpg.c (gpg_setownertrust): New. (_gpgme_engine_ops_gpg): Set setownertrust to gpg_setownertrust. * src/gpgme.h.in (gpgme_op_setownertrust_start, gpgme_op_setownertrust): New. * src/gpgme.def, src/libgpgme.vers: Add new functions. * src/setownertrust.c: New. * doc/gpgme.texi: Document new functions. * tests/Makefile.am (noinst_PROGRAMS): Add new test program. * tests/run-setownertrust.c: New. * tests/gpg/Makefile.am (c_tests): Add new file. (LDADD): Add @GPG_ERROR_LIBS@. * tests/gpg/t-setownertrust.c: New. * tests/gpg/t-support.h (have_gpg_version): New. -- This extends GPGME to support the --quick-set-ownertrust command added by GnuPG 2.4.6. This allows changing the owner trust of keys and enabling/disabling keys without using the editinteractor interface. GnuPG-bug-id: 7239
* build,qt: Allow building Qt 5 bindings and Qt 6 bindingsIngo Klöcker2024-07-181-0/+2
| | | | | | | | | | | | | | | | | | * configure.ac: Remove "qt" from default_languages. Add "qt5 qt6" to default_languages. Remove "qt" from help for --enable-languages. Don't fail anymore if "qt5" and "qt6" are enabled. Warn that "qt" is deprecated if it was enabled. * lang/qt/src/Makefile.am (libqgpgme_la, libqgpgmeqt6_la): New. (lib_LTLIBRARIES): Set Qt 5 and/or Qt 6 variant of libqgpgme. (AM_CPPFLAGS): Replace with libqgpgme_la_CPPFLAGS for Qt 5 and libqgpgmeqt6_la_CPPFLAGS for Qt 6. -- This makes it possible to build QGpgME simultaneously for Qt 5 and Qt 6. By default, QGpgME is now built for all versions of Qt that are found. Specifying "qt" as language is deprecated. GnuPG-bug-id: 7205
* cpp: Deprecate Error::asString and update usersIngo Klöcker2024-07-051-0/+1
| | | | | | | | | | | | | * lang/cpp/src/error.h (Error::asString): Mark as deprecated. * lang/cpp/src/context.cpp (operator<<), lang/cpp/src/editinteractor.cpp (edit_interactor_callback_impl), lang/cpp/tests/run-getkey.cpp (main), lang/cpp/tests/run-keylist.cpp (main), lang/cpp/tests/run-wkdlookup.cpp (main): Use Error::asStdString instead of Error::asString. -- GnuPG-bug-id: 7188
* cpp: Add safer member function returning text describing an errorIngo Klöcker2024-07-051-0/+4
| | | | | | | | | | | | | | | * lang/cpp/src/error.h, lang/cpp/src/context.cpp (class Error): New member function asStdString. -- Unlike asString the new function doesn't cache the value returned by gpgme_strerror_r. This ensures that on Windows the UTF-8 encoded text is returned for the main thread even if the function was called before for another thread. For other threads asStdString will still return the natively encoded error description until UTF-8 encoded error descriptions can be enabled for all threads (T7185). GnuPG-bug-id: 7188
* qt: Allow appending a detached signature to an existing fileIngo Klöcker2024-06-181-0/+4
| | | | | | | | | | | | | | | | | | | | | | * lang/qt/src/qgpgmesignjob.cpp (sign_to_filename): Add argument "appendSignature". Append new detached signature to an existing file if requested. * lang/qt/src/signjob.cpp, lang/qt/src/signjob.h (class SignJob): Add member functions setAppendSignature, appendSignatureEnabled. * lang/qt/src/signjob_p.h (struct SignJobPrivate): Add member m_appendSignature. * lang/qt/tests/run-signjob.cpp (struct CommandLineOptions): Add members signingFlags, appendSignature. Initialize armor. (parseCommandLine): Add command line options --detach-sign and --append. (main): Do not exit if output file exists and append is enabled. Pass new options to the job. -- This change simplifies cross-signing a document by appending additional detached signatures to a file with already existing detached signatures. GnuPG-bug-id: 6867
* qt,build: Install headers for Qt 5 and Qt 6 in different locationsIngo Klöcker2024-06-171-0/+2
| | | | | | | | | | | | | | | | * lang/qt/src/Makefile.am (includeprefix): New. (qgpgmeincludedir, camelcaseincludedir): Add $(includeprefix). (QGpgmeConfig.cmake, QGpgmeQt6Config.cmake): Add $(includeprefix) to replacement for @resolved_includedir@. -- This installs the headers for Qt 5 in $(includedir)/qgpgme-qt5 and the headers for Qt 6 in $(includedir)/qgpgme-qt6. For users of the CMake files the change will be transparent, i.e. they don't have to do anything. Packagers will have to change their scripts but in the end this change will make their lifes easier. GnuPG-bug-id: 7161