From 1a9dfdfccba1a10ce87809beba71d8e035df3aa5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ingo=20Kl=C3=B6cker?= Date: Wed, 18 Jan 2023 10:33:54 +0100 Subject: cpp,doc: Update list of allowed values for dirInfo -- GnuPG-bug-id: 6342 --- lang/cpp/src/global.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lang/cpp/src') diff --git a/lang/cpp/src/global.h b/lang/cpp/src/global.h index 1336142a..84c8d462 100644 --- a/lang/cpp/src/global.h +++ b/lang/cpp/src/global.h @@ -103,7 +103,7 @@ homedir, sysconfdir, bindir, libexecdir, libdir, datadir, localedir, agent-socket, agent-ssh-socket, dirmngr-socket, uiserver-socket, gpgconf-name, gpg-name, gpgsm-name, g13-name, keyboxd-name, agent-name, scdaemon-name, -dirmngr-name, pinentry-name, socketdir. +dirmngr-name, pinentry-name, socketdir, gpg-wks-client-name, gpgtar-name. This may be extended in the future. */ -- cgit v1.2.3 From 261245a2e0e76568607c79a0c80372cb6f46444e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ingo=20Kl=C3=B6cker?= Date: Fri, 27 Jan 2023 09:37:05 +0100 Subject: cpp: Add convenience overload to set file name * lang/cpp/src/data.h, lang/cpp/src/data.cpp (setFileName): Add overload. -- GnuPG-bug-id: 6342 --- lang/cpp/src/data.cpp | 5 +++++ lang/cpp/src/data.h | 1 + 2 files changed, 6 insertions(+) (limited to 'lang/cpp/src') diff --git a/lang/cpp/src/data.cpp b/lang/cpp/src/data.cpp index 7a93cbc2..dd8b1740 100644 --- a/lang/cpp/src/data.cpp +++ b/lang/cpp/src/data.cpp @@ -217,6 +217,11 @@ GpgME::Error GpgME::Data::setFileName(const char *name) return Error(gpgme_data_set_file_name(d->data, name)); } +GpgME::Error GpgME::Data::setFileName(const std::string &name) +{ + return Error(gpgme_data_set_file_name(d->data, name.c_str())); +} + ssize_t GpgME::Data::read(void *buffer, size_t length) { return gpgme_data_read(d->data, buffer, length); diff --git a/lang/cpp/src/data.h b/lang/cpp/src/data.h index 649e4104..9a5d5b0c 100644 --- a/lang/cpp/src/data.h +++ b/lang/cpp/src/data.h @@ -106,6 +106,7 @@ public: char *fileName() const; Error setFileName(const char *name); + Error setFileName(const std::string &name); ssize_t read(void *buffer, size_t length); ssize_t write(const void *buffer, size_t length); -- cgit v1.2.3 From d28ea8c6b3db008150e2bae99a33e30b55c4bc10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ingo=20Kl=C3=B6cker?= Date: Fri, 27 Jan 2023 09:40:05 +0100 Subject: cpp: Support new archive encryption flag * lang/cpp/src/context.h (EncryptArchive): New flag. * lang/cpp/src/context.cpp (encryptflags2encryptflags): Convert EncryptArchive to corresponding gpgme encrypt flags. (operator<<): Add new flag to debug stream. -- GnuPG-bug-id: 6342 --- lang/cpp/src/context.cpp | 4 ++++ lang/cpp/src/context.h | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) (limited to 'lang/cpp/src') diff --git a/lang/cpp/src/context.cpp b/lang/cpp/src/context.cpp index dba958cf..f7f6f54d 100644 --- a/lang/cpp/src/context.cpp +++ b/lang/cpp/src/context.cpp @@ -1335,6 +1335,9 @@ static gpgme_encrypt_flags_t encryptflags2encryptflags(Context::EncryptionFlags if (flags & Context::Symmetric) { result |= GPGME_ENCRYPT_SYMMETRIC; } + if (flags & Context::EncryptArchive) { + result |= GPGME_ENCRYPT_ARCHIVE; + } return static_cast(result); } @@ -1909,6 +1912,7 @@ std::ostream &operator<<(std::ostream &os, Context::EncryptionFlags flags) CHECK(ExpectSign); CHECK(NoCompress); CHECK(Symmetric); + CHECK(EncryptArchive); #undef CHECK return os << ')'; } diff --git a/lang/cpp/src/context.h b/lang/cpp/src/context.h index 7bd1b03d..b38e8cdf 100644 --- a/lang/cpp/src/context.h +++ b/lang/cpp/src/context.h @@ -447,7 +447,8 @@ public: NoCompress = 16, Symmetric = 32, ThrowKeyIds = 64, - EncryptWrap = 128 + EncryptWrap = 128, + EncryptArchive = 512, }; EncryptionResult encrypt(const std::vector &recipients, const Data &plainText, Data &cipherText, EncryptionFlags flags); GpgME::Error encryptSymmetrically(const Data &plainText, Data &cipherText); -- cgit v1.2.3 From 2faa031af24959d5093da430d5f10fe30d77a75d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ingo=20Kl=C3=B6cker?= Date: Mon, 30 Jan 2023 12:08:43 +0100 Subject: cpp: Support new archive signing flag * lang/cpp/src/global.h (enum SignatureMode): Add constant SignArchive. * lang/cpp/src/context.cpp (sigmode2sigmode): Rename to sigflags2sigflags (sigflags2sigflags): ... and rename argument mode to flags and treat it as flags. Adjust the callers. (operator<<): Change local CHECK macro to handle flags. Add new flag to debug stream. * lang/cpp/src/signingresult.cpp (CreatedSignature::mode): Handle new flags (even if it cannot occur currently). -- GnuPG-bug-id: 6342 --- lang/cpp/src/context.cpp | 32 ++++++++++++++++++-------------- lang/cpp/src/global.h | 7 ++++++- lang/cpp/src/signingresult.cpp | 1 + 3 files changed, 25 insertions(+), 15 deletions(-) (limited to 'lang/cpp/src') diff --git a/lang/cpp/src/context.cpp b/lang/cpp/src/context.cpp index f7f6f54d..68b061db 100644 --- a/lang/cpp/src/context.cpp +++ b/lang/cpp/src/context.cpp @@ -1278,14 +1278,22 @@ std::vector Context::signatureNotations() const return result; } -static gpgme_sig_mode_t sigmode2sigmode(SignatureMode mode) +static gpgme_sig_mode_t sigflags2sigflags(SignatureMode flags) { - switch (mode) { - default: - case NormalSignatureMode: return GPGME_SIG_MODE_NORMAL; - case Detached: return GPGME_SIG_MODE_DETACH; - case Clearsigned: return GPGME_SIG_MODE_CLEAR; + unsigned int result = 0; + if (flags & SignatureMode::NormalSignatureMode) { + result |= GPGME_SIG_MODE_NORMAL; + } + if (flags & SignatureMode::Detached) { + result |= GPGME_SIG_MODE_DETACH; + } + if (flags & SignatureMode::Clearsigned) { + result |= GPGME_SIG_MODE_CLEAR; + } + if (flags & SignatureMode::SignArchive) { + result |= GPGME_SIG_MODE_ARCHIVE; } + return static_cast(result); } SigningResult Context::sign(const Data &plainText, Data &signature, SignatureMode mode) @@ -1293,7 +1301,7 @@ SigningResult Context::sign(const Data &plainText, Data &signature, SignatureMod d->lastop = Private::Sign; const Data::Private *const pdp = plainText.impl(); Data::Private *const sdp = signature.impl(); - d->lasterr = gpgme_op_sign(d->ctx, pdp ? pdp->data : nullptr, sdp ? sdp->data : nullptr, sigmode2sigmode(mode)); + d->lasterr = gpgme_op_sign(d->ctx, pdp ? pdp->data : nullptr, sdp ? sdp->data : nullptr, sigflags2sigflags(mode)); return SigningResult(d->ctx, Error(d->lasterr)); } @@ -1302,7 +1310,7 @@ Error Context::startSigning(const Data &plainText, Data &signature, SignatureMod d->lastop = Private::Sign; const Data::Private *const pdp = plainText.impl(); Data::Private *const sdp = signature.impl(); - return Error(d->lasterr = gpgme_op_sign_start(d->ctx, pdp ? pdp->data : nullptr, sdp ? sdp->data : nullptr, sigmode2sigmode(mode))); + return Error(d->lasterr = gpgme_op_sign_start(d->ctx, pdp ? pdp->data : nullptr, sdp ? sdp->data : nullptr, sigflags2sigflags(mode))); } SigningResult Context::signingResult() const @@ -1889,16 +1897,12 @@ std::ostream &operator<<(std::ostream &os, KeyListMode mode) std::ostream &operator<<(std::ostream &os, SignatureMode mode) { os << "GpgME::SignatureMode("; - switch (mode) { -#define CHECK( x ) case x: os << #x; break +#define CHECK( x ) if ( !(mode & (x)) ) {} else do { os << #x " "; } while (0) CHECK(NormalSignatureMode); CHECK(Detached); CHECK(Clearsigned); + CHECK(SignArchive); #undef CHECK - default: - os << "???" "(" << static_cast(mode) << ')'; - break; - } return os << ')'; } diff --git a/lang/cpp/src/global.h b/lang/cpp/src/global.h index 84c8d462..c9c65cdb 100644 --- a/lang/cpp/src/global.h +++ b/lang/cpp/src/global.h @@ -74,7 +74,12 @@ enum KeyListMode { KeyListModeMask = 0x3ff }; -enum SignatureMode { NormalSignatureMode, Detached, Clearsigned }; +enum SignatureMode { + NormalSignatureMode = 0, + Detached = 1, + Clearsigned = 2, + SignArchive = 4, +}; enum class RevocationReason { Unspecified = 0, diff --git a/lang/cpp/src/signingresult.cpp b/lang/cpp/src/signingresult.cpp index 6e0dd90a..06169cbc 100644 --- a/lang/cpp/src/signingresult.cpp +++ b/lang/cpp/src/signingresult.cpp @@ -199,6 +199,7 @@ GpgME::SignatureMode GpgME::CreatedSignature::mode() const case GPGME_SIG_MODE_NORMAL: return NormalSignatureMode; case GPGME_SIG_MODE_DETACH: return Detached; case GPGME_SIG_MODE_CLEAR: return Clearsigned; + case GPGME_SIG_MODE_ARCHIVE: return SignArchive; // cannot happen } } -- cgit v1.2.3