<feed xmlns='http://www.w3.org/2005/Atom'>
<title>gpgme/doc, branch gpgme-2.0.0</title>
<subtitle>GnuPG Made Easy.</subtitle>
<id>http://git.bktus.com/gpgfrontend/gpgme/atom?h=gpgme-2.0.0</id>
<link rel='self' href='http://git.bktus.com/gpgfrontend/gpgme/atom?h=gpgme-2.0.0'/>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/gpgme/'/>
<updated>2025-05-12T12:42:57Z</updated>
<entry>
<title>Add GPGME_CREATE_GROUP flag for gpgme_op_createkey and _createsubkey.</title>
<updated>2025-05-12T12:42:57Z</updated>
<author>
<name>Werner Koch</name>
<email>wk@gnupg.org</email>
</author>
<published>2025-05-12T12:42:57Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/gpgme/commit/?id=905bd760a99a455af6717b66311fc2197dea1055'/>
<id>urn:sha1:905bd760a99a455af6717b66311fc2197dea1055</id>
<content type='text'>
* 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.
</content>
</entry>
<entry>
<title>Change timestamp fields from signed to unsigned long.</title>
<updated>2025-05-05T14:27:34Z</updated>
<author>
<name>Werner Koch</name>
<email>wk@gnupg.org</email>
</author>
<published>2025-05-05T14:27:34Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/gpgme/commit/?id=f2d40473b522e348d96a70c089d2191d0b978098'/>
<id>urn:sha1:f2d40473b522e348d96a70c089d2191d0b978098</id>
<content type='text'>
* 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.
</content>
</entry>
<entry>
<title>Allow signing using an exactly specified subkey.</title>
<updated>2025-05-05T14:01:10Z</updated>
<author>
<name>Werner Koch</name>
<email>wk@gnupg.org</email>
</author>
<published>2025-05-05T13:52:08Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/gpgme/commit/?id=bfd320abfeaf0c7a16af3057279c77a45bfa961a'/>
<id>urn:sha1:bfd320abfeaf0c7a16af3057279c77a45bfa961a</id>
<content type='text'>
* 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
</content>
</entry>
<entry>
<title>New decrypt flags GPGME_DECRYPT_LISTONLY.</title>
<updated>2025-03-18T15:22:58Z</updated>
<author>
<name>Werner Koch</name>
<email>wk@gnupg.org</email>
</author>
<published>2025-03-18T15:22:58Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/gpgme/commit/?id=91a59d2a35540769c055da2341b5face0be6c286'/>
<id>urn:sha1:91a59d2a35540769c055da2341b5face0be6c286</id>
<content type='text'>
* 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.
</content>
</entry>
<entry>
<title>Add API gpgme_op_random_value.</title>
<updated>2025-03-14T12:08:37Z</updated>
<author>
<name>Werner Koch</name>
<email>wk@gnupg.org</email>
</author>
<published>2025-03-14T12:03:46Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/gpgme/commit/?id=926b1f1f1e3e382f08cc57fc86d5892649514007'/>
<id>urn:sha1:926b1f1f1e3e382f08cc57fc86d5892649514007</id>
<content type='text'>
* 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
</content>
</entry>
<entry>
<title>Add API gpgme_op_random_bytes.</title>
<updated>2025-02-26T13:11:20Z</updated>
<author>
<name>Werner Koch</name>
<email>wk@gnupg.org</email>
</author>
<published>2025-02-26T12:09:05Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/gpgme/commit/?id=0a64c7d0c6d0463cf2e06b3a01ef5be4d879bcf0'/>
<id>urn:sha1:0a64c7d0c6d0463cf2e06b3a01ef5be4d879bcf0</id>
<content type='text'>
* 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
</content>
</entry>
<entry>
<title>Remove long deprecated functions.</title>
<updated>2025-02-21T09:42:30Z</updated>
<author>
<name>Werner Koch</name>
<email>wk@gnupg.org</email>
</author>
<published>2025-02-21T09:28:46Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/gpgme/commit/?id=d54d6eaa642ba6de179ef280930525c7367c9b88'/>
<id>urn:sha1:d54d6eaa642ba6de179ef280930525c7367c9b88</id>
<content type='text'>
* 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.
</content>
</entry>
<entry>
<title>doc: Refer to separate repositories for C++ and Python bindings</title>
<updated>2025-02-03T10:20:08Z</updated>
<author>
<name>Ingo Klöcker</name>
<email>dev@ingo-kloecker.de</email>
</author>
<published>2025-02-03T10:20:08Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/gpgme/commit/?id=df41dbec895110b68f9222dbdfccc3d91035dbdb'/>
<id>urn:sha1:df41dbec895110b68f9222dbdfccc3d91035dbdb</id>
<content type='text'>
--

GnuPG-bug-id: 7262

</content>
</entry>
<entry>
<title>python: Remove Python bindings</title>
<updated>2025-02-03T10:19:09Z</updated>
<author>
<name>Ingo Klöcker</name>
<email>dev@ingo-kloecker.de</email>
</author>
<published>2025-02-03T09:49:45Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/gpgme/commit/?id=932caf37d36eca2caec59bf48bc505364a5765bb'/>
<id>urn:sha1:932caf37d36eca2caec59bf48bc505364a5765bb</id>
<content type='text'>
* 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

</content>
</entry>
<entry>
<title>core: New context flags "known-notations".</title>
<updated>2024-10-29T11:00:11Z</updated>
<author>
<name>Werner Koch</name>
<email>wk@gnupg.org</email>
</author>
<published>2024-10-29T10:59:51Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/gpgme/commit/?id=a304ec0ede937e21df5b4a311cbaf8d89f13ef59'/>
<id>urn:sha1:a304ec0ede937e21df5b4a311cbaf8d89f13ef59</id>
<content type='text'>
* 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
</content>
</entry>
</feed>
