<feed xmlns='http://www.w3.org/2005/Atom'>
<title>gpgme, branch ikloecker/t6550</title>
<subtitle>GnuPG Made Easy.</subtitle>
<id>http://git.bktus.com/gpgfrontend/gpgme/atom?h=ikloecker%2Ft6550</id>
<link rel='self' href='http://git.bktus.com/gpgfrontend/gpgme/atom?h=ikloecker%2Ft6550'/>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/gpgme/'/>
<updated>2023-12-19T12:12:59Z</updated>
<entry>
<title>core: Support writing the decrypt/verify output directly to a file</title>
<updated>2023-12-19T12:12:59Z</updated>
<author>
<name>Ingo Klöcker</name>
<email>dev@ingo-kloecker.de</email>
</author>
<published>2023-12-19T10:26:15Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/gpgme/commit/?id=5efd3486a9fa9f4b0f383aca2f2f01412e73237c'/>
<id>urn:sha1:5efd3486a9fa9f4b0f383aca2f2f01412e73237c</id>
<content type='text'>
* src/engine-gpg.c (gpg_decrypt): Pass output file name to gpg if output
has file name set.
(gpg_verify): Ditto.

* tests/run-decrypt.c (show_usage): New option --output.
(main): Parse new option. Set file name on output if --output is given.
Do not print output if --output is given.
* tests/run-verify.c (show_usage): New option --output.
(main): Parse new option. Set file name on output if --output is given.
--

This change makes it possible to tell gpg to write the output (i.e. the
decrypted/verified data) directly to a file with given file name instead
of piping the output back to gpgme.

GnuPG-bug-id: 6550
</content>
</entry>
<entry>
<title>core: Support direct signing of file with gpg</title>
<updated>2023-12-19T12:09:33Z</updated>
<author>
<name>Ingo Klöcker</name>
<email>dev@ingo-kloecker.de</email>
</author>
<published>2023-12-15T09:05:19Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/gpgme/commit/?id=963ace1f9f39f09fee522b996e05d42040b1f4b4'/>
<id>urn:sha1:963ace1f9f39f09fee522b996e05d42040b1f4b4</id>
<content type='text'>
* src/gpgme.h.in (GPGME_SIG_MODE_FILE): New signature mode flag.
* src/engine-gpg.c (gpg_sign): Separate signature mode from additional
flags. Check for incompatible flags. Explicitly set output to stdout if
no output file is used. Pass filename instead of fd to gpg when new flag
is set.
* src/engine-gpgsm.c (gpgsm_sign): Return error if new flag is set.
* src/engine-uiserver.c (uiserver_sign): Ditto.
* src/sign.c (sign_start): Consider new flag on check for invalid flags.

* tests/run-sign.c (show_usage): New options --detach and
--direct-file-io.
(main): Parse new options. Create a detached signature if --detach is
given. Make gpg read the input file itself if --direct-file-io is given.
--

With this change the gpgme_op_sign* functions gain the possibility to
make gpg read the data to sign directly from a file instead of from an
input FD to which it is written by gpgme.

GnuPG-bug-id: 6550
</content>
</entry>
<entry>
<title>core: Support direct encryption of file with gpg</title>
<updated>2023-12-19T12:07:45Z</updated>
<author>
<name>Ingo Klöcker</name>
<email>dev@ingo-kloecker.de</email>
</author>
<published>2023-12-14T09:59:47Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/gpgme/commit/?id=0221d7f28a315d305409cf2dcae853c22ad94d31'/>
<id>urn:sha1:0221d7f28a315d305409cf2dcae853c22ad94d31</id>
<content type='text'>
* src/gpgme.h.in (GPGME_ENCRYPT_FILE): New encryption flag.
* src/engine-gpg.c (gpg_encrypt, gpg_encrypt_sign): Check for
incompatible flags. Pass filename instead of fd to gpg when new flag is
set.
* src/engine-gpgsm.c (gpgsm_encrypt): Return error if new flag is set.
* src/engine-uiserver.c (uiserver_encrypt): Ditto.

* tests/run-encrypt.c (show_usage): New option --direct-file-io.
(main): Parse new option. Make gpg read the input file itself if the
option is given.
--

With this change the gpgme_op_encrypt* and gpgme_op_encrypt_sign*
functions gain the possibility to make gpg read the data to (sign and)
encrypt directly from a file instead of from an input FD to which it is
written by gpgme.

GnuPG-bug-id: 6550
</content>
</entry>
<entry>
<title>doc: Fix documentation for creating encrypted/signed archive</title>
<updated>2023-12-14T08:29:43Z</updated>
<author>
<name>Ingo Klöcker</name>
<email>dev@ingo-kloecker.de</email>
</author>
<published>2023-12-14T08:29:43Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/gpgme/commit/?id=b35bcf0040903ab5d803ce21fb512a327816a1d9'/>
<id>urn:sha1:b35bcf0040903ab5d803ce21fb512a327816a1d9</id>
<content type='text'>
--

The previous paragraph already explains where/how the result is stored.
In particular, it's not always "returned in the data object ...".
</content>
</entry>
<entry>
<title>qt: Replace Q_FOREACH with range-for</title>
<updated>2023-12-13T12:16:21Z</updated>
<author>
<name>Ingo Klöcker</name>
<email>dev@ingo-kloecker.de</email>
</author>
<published>2023-12-13T10:45:26Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/gpgme/commit/?id=d5dafb2ae332fb6ad463c363e6c2c527bcf66656'/>
<id>urn:sha1:d5dafb2ae332fb6ad463c363e6c2c527bcf66656</id>
<content type='text'>
* lang/qt/src/qgpgmekeyformailboxjob.cpp (do_work): Replace Q_FOREACH
with range-for.
* lang/qt/src/qgpgmekeylistjob.cpp (QGpgMEKeyListJob::resultHook):
Ditto.
* lang/qt/src/threadedjobmixin.cpp (_detail::audit_log_as_html): Ditto.
* lang/qt/tests/t-keylist.cpp (KeyListTest::testPubkeyAlgoAsString):
Ditto.
* lang/qt/tests/t-keylocate.cpp (KeyLocateTest::testDaneKeyLocate,
KeyLocateTest::testKeyLocateSingle): Ditto.
* lang/qt/src/qgpgmesignencryptjob.cpp (sign_encrypt): Replace Q_FOREACH
with range-for. Add braces around single statement blocks.
* lang/qt/src/qgpgmesignjob.cpp (sign): Ditto.
* lang/qt/src/qgpgmenewcryptoconfig.cpp
(QGpgMENewCryptoConfig::reloadConfiguration,
QGpgMENewCryptoConfig::sync,
QGpgMENewCryptoConfigComponent::setComponent,
QGpgMENewCryptoConfigEntry::urlValueList,
QGpgMENewCryptoConfigEntry::setURLValueList): Replace Q_FOREACH with
range-for. Fix indentation. Add braces around single statement blocks.
--

Where necessary the iterated object is wrapped with qAsConst to avoid
deep copies of the iterated object.
</content>
</entry>
<entry>
<title>qt: Replace Q_NULLPTR with nullptr</title>
<updated>2023-12-13T12:04:32Z</updated>
<author>
<name>Ingo Klöcker</name>
<email>dev@ingo-kloecker.de</email>
</author>
<published>2023-12-13T09:16:41Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/gpgme/commit/?id=f7d69de030b36c1f8cb3491dc97750fb7725f258'/>
<id>urn:sha1:f7d69de030b36c1f8cb3491dc97750fb7725f258</id>
<content type='text'>
* lang/qt/src/defaultkeygenerationjob.h, lang/qt/src/qgpgmebackend.h,
lang/qt/src/quickjob.h, lang/qt/src/threadedjobmixin.h: Replace all
occurrences of Q_NULLPTR with nullptr.
--
</content>
</entry>
<entry>
<title>core: percent decode filename</title>
<updated>2023-11-29T23:06:08Z</updated>
<author>
<name>Andre Heinecke</name>
<email>aheinecke@gnupg.org</email>
</author>
<published>2023-11-29T23:06:08Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/gpgme/commit/?id=6baccdc0c35d93253975e672bbf608750f97ab2a'/>
<id>urn:sha1:6baccdc0c35d93253975e672bbf608750f97ab2a</id>
<content type='text'>
* src/op-support.c (_gpgme_parse_plaintext): Decode filename
as percent string.

--
From gnupg/doc/DETAILS:

    If a filename is available it gets printed as the third
    argument, percent-escaped as usual.

so we can use the usual percent decode function here.

GnuPG-Bug-Id: T6852
</content>
</entry>
<entry>
<title>Post release updates</title>
<updated>2023-11-28T15:48:37Z</updated>
<author>
<name>Werner Koch</name>
<email>wk@gnupg.org</email>
</author>
<published>2023-11-28T15:48:37Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/gpgme/commit/?id=f212de4a9e3c638b6346f65b11b39238018361d4'/>
<id>urn:sha1:f212de4a9e3c638b6346f65b11b39238018361d4</id>
<content type='text'>
--
</content>
</entry>
<entry>
<title>Release 1.23.2</title>
<updated>2023-11-28T15:42:59Z</updated>
<author>
<name>Werner Koch</name>
<email>wk@gnupg.org</email>
</author>
<published>2023-11-28T15:42:59Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/gpgme/commit/?id=1a26db717575068f0ab0d00a437ae870a93e1bb8'/>
<id>urn:sha1:1a26db717575068f0ab0d00a437ae870a93e1bb8</id>
<content type='text'>
</content>
</entry>
<entry>
<title>qt: Start dirmngr with gpgconf to avoid multiple instances</title>
<updated>2023-11-23T15:13:39Z</updated>
<author>
<name>Ingo Klöcker</name>
<email>dev@ingo-kloecker.de</email>
</author>
<published>2023-11-23T15:13:39Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/gpgme/commit/?id=1bbe2d4b707843cacf020c252ce883ec45bdbc38'/>
<id>urn:sha1:1bbe2d4b707843cacf020c252ce883ec45bdbc38</id>
<content type='text'>
* lang/qt/src/qgpgmewkdlookupjob.cpp (startDirmngr): Use "gpgconf
--launch dirmngr" to start dirmngr.
--

Using gpgconf to start dirmngr prevents multiple instances to be started
by the concurrently running keyserver lookup and WKD lookup.

GnuPG-bug-id: 6833
</content>
</entry>
</feed>
