aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* New decrypt flags GPGME_DECRYPT_LISTONLY.HEADmasterWerner Koch2025-03-188-7/+36
| | | | | | | | | | | | | | * 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-147-20/+182
| | | | | | | | | | | | | | | | | | * 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
* m4: Update libassuan.m4.NIIBE Yutaka2025-03-101-2/+2
| | | | | | * m4/libassuan.m4: Update from libassuan master. Signed-off-by: NIIBE Yutaka <[email protected]>
* Add API gpgme_op_random_bytes.Werner Koch2025-02-2619-2/+411
| | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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 now unused functions.Werner Koch2025-02-214-116/+1
| | | | | | | | | | | | * src/engine.c (_gpgme_engine_op_trustlist): Remove. * src/libgpgme.vers (gpgme_op_trustlist_end) (gpgme_op_trustlist_next) (gpgme_op_trustlist_start): Remove. * src/gpgme.def: Ditto. * src/key.c (otrust_to_string) (validity_to_string) (capabilities_to_string) (get_keysig): Remove
* Update autogen.sh from gpgrtWerner Koch2025-02-211-6/+31
| | | | | | | -- This has no functional changes except for the recent beta numbering fix.
* Bump LT version to C45/A0/R0Werner Koch2025-02-211-3/+3
| | | | | | | | -- The version 2.0 is technically an API and ABI break due to the removal of long deprecated functions. Most user's won't notice this except for the changed SO number.
* Remove the long deprecated and never working trust list functions.Werner Koch2025-02-2110-449/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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-218-879/+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-045-5/+8
| | | | --
* core: Fix regression for RSA in gpgme_pubkey_algo_string.Werner Koch2025-02-031-1/+1
| | | | | | | | * src/gpgme.c (gpgme_pubkey_algo_string): Consider all RSA variants. -- Fixes-commit: 62b6c1f16ae0ed7b0eb1b095ee383aa0910314bb GnuPG-bug-id: 7508
* Bump version after splitting off bindingsIngo Klöcker2025-02-032-5/+5
| | | | | --
* doc: Refer to separate repositories for C++ and Python bindingsgpgme-2-baseIngo Klöcker2025-02-031-2/+4
| | | | | | | -- GnuPG-bug-id: 7262
* python: Remove Python bindingsIngo Klöcker2025-02-03148-30281/+8
| | | | | | | | | | | | | | | | | * README: Update. * configure.ac: Remove checks, variables and file generations related to the Python bindings. Remove python from available_languages and default_languages. * lang/Makefile.am (DIST_SUBDIRS): Remove python. * lang/python: Remove. * m4/ax_pkg_swig.m4, m4/ax_python_devel.m4, m4/python.m4: Remove. -- The Python bindings have been moved to a separate Git repository: gpgmepy. GnuPG-bug-id: 7262
* cpp,qt: Remove C++ and Qt bindingsIngo Klöcker2025-02-03328-51562/+16
| | | | | | | | | | | | | | | | | * README: Update. * configure.ac: Remove checks, variables and file generations related to the C++/Qt bindings. Remove cpp and qt* from available_languages and default_languages. * lang/Makefile.am (DIST_SUBDIRS): Remove cpp and qt. * lang/cpp, lang/qt: Remove. * m4/ax_check_compile_flag.m4, m4/ax_cxx_compile_stdcxx.m4, m4/ax_gcc_func_attribute.m4, m4/pkg.m4, m4/qt5.m4, m4/qt6.m4: Remove. -- The C++ and Qt bindings have been moved to separate Git repositories: gpgmepp and gpgmeqt. GnuPG-bug-id: 7262
* build: Fix generation of ChangeLog on secondary working treesIngo Klöcker2025-01-151-1/+1
| | | | | | | | | * Makefile.am (gen-ChangeLog): Use test -e instead of test -d to check for git working trees. -- In secondary working trees (created with `git worktree add ...`) .git is a file referencing the original .git directory.
* build: Remove defining GPG_ERR_ENABLE_ERRNO_MACROS.NIIBE Yutaka2025-01-151-3/+0
| | | | | | | | | | * configure.ac (GPG_ERR_ENABLE_ERRNO_MACROS): Remove. -- It was for Windows CE. Signed-off-by: NIIBE Yutaka <[email protected]>
* tests,json: Prevent failing tests after 2027-05-15Ingo Klöcker2025-01-022-20/+20
| | | | | | | | | | | | | | | | | | | * tests/json/key-with-revokers.asc: Replace with new public key. * tests/json/t-keylist-revokers.out.json: Update to new public key. -- The old test key expired on 2027-05-15 which would break the tests after this date. Replace it with a new test key which doesn't expire. The new key was generated with gpg --faked-system-time 1715782979 \ --add-desig-revoker sensitive:A0FF4590BB6122EDEF6E3C542D727CC768697734 \ --add-desig-revoker 23FD347A419429BACCD5E72D6BC4778054ACD246 \ --quick-gen-key [email protected] default default never and exported with gpg --export --armor --export-options export-sensitive-revkeys \ [email protected] GnuPG-bug-id: 7471
* build,python: Fix uninstalling in distcheckIngo Klöcker2024-12-041-1/+1
| | | | | | | | | | | | | | * lang/python/Makefile.am (uninstall-local): Get platlib path relative to data path. -- For unknown reasons (at least on my system) Python 3.1x's sysconfig returns a platlib (== directory for site-specific, platform-specific files) starting with /usr/local although the prefix config variable is /usr. This broke uninstallation because a wrong folder was (tried to) remove. Python 2.7 and 3.9 return a platlib starting with just /usr. In order to always get the correct relative path we use the data path instead of the prefix config variable as anchor directory.
* build,python: Add Python 3.13 and remove Python 3.8Ingo Klöcker2024-12-043-4/+4
| | | | | | | * configure.ac: Look for Python 3.13. Don't look for Python 3.8 anymore. * lang/python/setup.py.in: Update Python versions in classifiers. * m4/python.m4: Add python3.13 as valid interpreter. Remove python3.8. --
* Post release updatesWerner Koch2024-12-042-1/+5
| | | | --
* Release 1.24.1gpgme-1.24.1Werner Koch2024-12-042-4/+16
| | | | | | | | | | | -- 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
* Add a configure test for gettid.Werner Koch2024-12-042-2/+28
| | | | | | | | | | | | * configure.ac (HAVE_GETTID,HAVE_SYS_GETTID): New test. * src/debug.c: Include syscall.h if needed. (tid_log_callback) [HAVE_SYS_GETTID]: Use SYS_gettid -- Linux introduced the gettid syscall with 2.4.11 but glibc only with its version 2.30. This patch allows building on older platforms. Co-authored-by: lgh1
* cpp: Add Kyber algorithmIngo Klöcker2024-11-141-0/+1
| | | | | | | | * lang/cpp/src/key.h (enum Subkey::PubkeyAlgo): Add AlgoKyber with same value as GPGME_PK_KYBER. -- GnuPG-bug-id: 7397
* Support the Kyber algorithm in key listings.Werner Koch2024-11-144-5/+17
| | | | | | | * src/gpgme.h.in (GPGME_PK_KYBER): New. * src/conversion.c (_gpgme_map_pk_algo): Handle Kyber. * src/gpgme.c (gpgme_pubkey_algo_string): Support Kyber. (gpgme_pubkey_algo_name): Add Kyber.
* Post release updatesWerner Koch2024-11-062-1/+5
| | | | --
* Release 1.24.0gpgme-1.24.0Werner Koch2024-11-065-15/+26
|
* Include the full commit id.Werner Koch2024-11-053-9/+25
| | | | | | * autogen.sh: Update to version 2024-07-04 from libgpg-error. * configure.ac (BUILD_COMMITID): New. Append to VERSION file. * src/version.c (cright_blurb): Use BUILD_COMMITID here.
* core: New context flags "known-notations".Werner Koch2024-10-297-0/+94
| | | | | | | | | | | | | | | | | | | * 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
* core: Add new helper _gpgme_strtokenize.Werner Koch2024-10-293-1/+81
| | | | | | | | | * src/conversion.c (spacep): New. (_gpgme_strtokenize): New. -- Function taken from GnuPG and license changed to LGPL 2.1. The version in GnuPG was entirely written by the author.
* qt: Fix typoIngo Klöcker2024-10-231-1/+1
| | | | | * lang/qt/src/Makefile.am (camelcase_headers): Fix typo in header name. --
* qt: Put attributes before declarationsIngo Klöcker2024-10-231-1/+1
| | | | | | * lang/qt/src/downloadjob.h (DownloadJob::start): Move QGPGME_DEPRECATED before the whole function declaration. --
* cpp: Put attributes before declarationsIngo Klöcker2024-10-232-2/+2
| | | | | | | * lang/cpp/src/key.h (UserID::Signature::Notation): Move GPGMEPP_DEPRECATED before the whole typedef declaration. * lang/cpp/src/verificationresult.h (Signature::Notation): Ditto. --
* cpp: Add/change some includesIngo Klöcker2024-10-233-4/+6
| | | | | | | * lang/cpp/src/gpgaddexistingsubkeyeditinteractor.h, lang/cpp/src/gpgrevokekeyeditinteractor.h: Include <string>. * lang/cpp/src/key.h: Include <ctime> instead of <sys/time.h>. --
* cpp,doc: Update NEWSIngo Klöcker2024-10-221-0/+4
| | | | --
* cpp: Add support for new flag fields beta_complianceIngo Klöcker2024-10-216-6/+38
| | | | | | | | | | | | | | | | | | * lang/cpp/src/decryptionresult.cpp, lang/cpp/src/decryptionresult.h (class DecryptionResult): Add method isBetaCompliance. * lang/cpp/src/decryptionresult.cpp (operator<<): Add new flag. * lang/cpp/src/key.cpp, lang/cpp/src/key.h (class Key): Add method isBetaCompliance. (class Subkey): Add method isBetaCompliance. * lang/cpp/src/key.cpp: (Key::isDeVs): Remove duplicate check of is_de_vs of first subkey. (operator<<): Add new flag. * lang/cpp/src/verificationresult.cpp, lang/cpp/src/verificationresult.h (class Signature): Add method isBetaCompliance. * lang/cpp/src/verificationresult.cpp (operator<<): Add new flag. -- GnuPG-bug-id: 7346
* doc: Fix, update, add API documentationIngo Klöcker2024-10-211-3/+12
| | | | | | -- Nowadays, VS-NfD requires RSA 3072. And the documentation of gpgme_signature_t was missing the compliance flags.
* core: fix passing --proc-all-sigs to gpgtarTobias Fella2024-10-091-0/+12
| | | | | | | | * src/engine-gpg.c: Pass --gpg-args before passing --proc-all-sigs if using gpgtar -- GnuPG-Bug-ID: 7320
* core: New flag fields beta_compliance.Werner Koch2024-10-076-9/+33
| | | | | | | | | | | | | * src/gpgme.h.in (struct _gpgme_subkey): Add field beta_compliance. (struct _gpgme_op_decrypt_result): Ditto. (struct _gpgme_signature): Ditto. * src/util.h (PARSE_COMPLIANCE_FLAGS): Handle the new 2023 value. * tests/run-decrypt.c: Append a "(beta)" to the vs-de compliance. * tests/run-keylist.c: Ditto. * tests/run-verify.c: Ditto. -- See GnuPG commit b287fb577587655559fefb90f7ed90c9a15dc6a3
* core: Allow GPGME_CREATE_ADSK also for gnupg 2.2.45Werner Koch2024-09-261-1/+6
| | | | * src/engine-gpg.c (gpg_addadsk): Extend the version check.
* core: Report failed encryption/signing if gpgtar didn't emit SUCCESSIngo Klöcker2024-09-204-10/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | src/encrypt-sign.c (encrypt_sym_status_handler): Add call of _gpgme_encrypt_status_handler. (encrypt_sign_start): Call _gpgme_op_encrypt_init_result with success_required=1 if archive is created. Always call _gpgme_op_sign_init_result with success_required=0 because the encrypt status handler already checks for SUCCESS. src/encrypt.c (op_data_t): Add success_seen flag. (_gpgme_encrypt_status_handler): Return error if we didn't see a required SUCCESS on GPGME_STATUS_EOF. Set success_seen flag on GPGME_STATUS_SUCCESS. (encrypt_sym_status_handler): Add call of _gpgme_encrypt_status_handler. (_gpgme_op_encrypt_init_result): Add argument success_required. Set success_seen flag if SUCCESS is not required. (encrypt_start): Call _gpgme_op_encrypt_init_result with success_required=1 if archive is created. src/ops.h (_gpgme_op_sign_init_result, _gpgme_op_encrypt_init_result): Add argument success_required to prototypes. src/sign.c (op_data_t): Add success_seen flag. (_gpgme_sign_status_handler): Return error if we didn't see a required SUCCESS on GPGME_STATUS_EOF. Set success_seen flag on GPGME_STATUS_SUCCESS. (sign_init_result): Add argument success_required. Set success_seen flag if SUCCESS is not required. (_gpgme_op_sign_init_result): Add argument success_required and forward it to sign_init_result. (sign_start): Call sign_init_result with success_required=1 if archive is created. -- gpgtar emits a SUCCESS status just before successful termination. If the process terminates unexpectedly (e.g. because it's killed) then gpgme now reports GPG_ERR_EOF. The SUCCESS status is only required if a signed and/or encrypted archive is created which is only supported for OpenPGP. The other engines reject the GPGME_ENCRYPT_ARCHIVE flag so that we don't need to check the protocol in the generic code. This change also adds handling of invalid recipients in case symmetric encryption is used which makes sense because one can combine symmetric and public key encryption. GnuPG-bug-id: 6554
* doc,build: Look for yat2m in $prefix/binIngo Klöcker2024-09-171-1/+1
| | | | | | | | * configure.ac: Look for yat2m first in $prefix/bin and then in $PATH. -- This makes sure that yat2m is found in case libgpg-error and gpgme are installed in the same prefix.
* doc,build: Fix "make install" if yat2m isn't availableIngo Klöcker2024-09-172-0/+6
| | | | | | | | * configure.ac: Add hint for YAT2M variable. Set HAVE_YAT2M if yat2m was found. * doc/Makefile.am (myman_pages): Set to empty string if yat2m isn't available --
* doc: Provide a man page for gpgme-json.Sébastien Noel2024-09-103-2/+103
| | | | | | | | | | * doc/gpgme-json.texi: New. * configure.ac: Check for yat2m. * doc/Makefile.am (YAT2M_OPTIONS): New. Also add all the other man page stuff similar to what is used in gnupg. -- ChangeLog entries by wk.
* doc: Update the texinfo version also on gpgme.texi changes.Werner Koch2024-09-101-1/+1
| | | | | -- Fixes-commit: 7e7eaf43424556c3c25edc7b67e760ab60de55ce
* core: New encryption flags GPGME_ENCRYPT_ADD_RECP and _CHG_RECP.Werner Koch2024-09-095-3/+71
| | | | | | | | | | | | | * 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
* core: Treat email-only user IDs with upper case letters as email addressIngo Klöcker2024-09-042-420/+557
| | | | | | | | | | | | | | | | | | | | * src/key.c (_gpgme_key_append_name): Support email-only user IDs with upper case letters. * tests/gpg/t-keylist.c (struct key_info_s): Add algo, length, sec_algo, sec_length. (keys): Add expected algo and length for primary and secondary subkeys. (main): Factor out code for checking a key and the code for the keylist test. Call the factored out test function and a new test function. (check_key, test_keylist, key_with_email_only_user_id, key_info_email_only_user_id, test_email_only_user_id_with_upper_case_letters): New. -- Email-only user IDs with upper case letters are now also parsed as a user ID with empty name and the complete user ID as email. GnuPG-bug-id: 7280
* build,python: Fix build with setuptools 72.2.0+Ingo Klöcker2024-09-021-3/+3
| | | | | | | | | | | | | | | | | * lang/python/setup.py.in (BuildExtFirstHack.run): Extend members of the extension instead of lists that were passed to the extension. -- setuptools 72.2.0 integrated changes in distutils which included "Support for Pathlike objects in data files and extensions". With this change the extensions now take a copy of the sources list passed to the constructor instead of keeping a reference to the passed list. Hence, modifying the sources list that was passed to the extension didn't change the sources list of the extension anymore. This is fixed by modifying the sources list of the extension directly. For consistency we do the same for the swig_opts list. GnuPG-bug-id: 7281
* cpp: Add pkgconfig file for gpgmeppIngo Klöcker2024-08-293-3/+43
| | | | | | | | | | | | | | | | * configure.ac: Add substitutions GPGMEPP_PKGCONFIG_LIBS, GPGMEPP_PKGCONFIG_CFLAGS, GPGMEPP_PKGCONFIG_HOST. Apply them. Configure gpgmepp.pc file. * lang/cpp/src/Makefile.am (pkgconfigdir, pkgconfig_DATA): New. (EXTRA_DIST): Add gpgmepp.pc.in. * lang/cpp/src/gpgmepp.pc.in: New. -- This pkgconfig file will be used, at least temporarily, by qgpgme to find gpgmepp, but it's also useful in general for projects that don't use cmake. GnuPG-bug-id: 7262