diff options
author | Werner Koch <[email protected]> | 2023-01-31 06:59:27 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2023-01-31 06:59:50 +0000 |
commit | 3cdcfa33f7496c3130797224f8ae327732409460 (patch) | |
tree | a51d92d3455d969c60b33d63e9e6c60670575c1a /lang/cpp/src/context.cpp | |
parent | cpp: Support all encryption flags (diff) | |
parent | qt: Add job for creating signed archives (diff) | |
download | gpgme-3cdcfa33f7496c3130797224f8ae327732409460.tar.gz gpgme-3cdcfa33f7496c3130797224f8ae327732409460.zip |
Merge branch 'ikloecker/t6342-gpgtar' into master
--
Solved conflicts:
NEWS
lang/cpp/src/context.cpp
lang/cpp/src/context.h
Diffstat (limited to 'lang/cpp/src/context.cpp')
-rw-r--r-- | lang/cpp/src/context.cpp | 36 |
1 files changed, 22 insertions, 14 deletions
diff --git a/lang/cpp/src/context.cpp b/lang/cpp/src/context.cpp index 120c7c70..f93887f5 100644 --- a/lang/cpp/src/context.cpp +++ b/lang/cpp/src/context.cpp @@ -1278,14 +1278,22 @@ std::vector<Notation> 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<gpgme_sig_mode_t>(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 @@ -1344,6 +1352,9 @@ static gpgme_encrypt_flags_t encryptflags2encryptflags(Context::EncryptionFlags if (flags & Context::WantAddress) { result |= GPGME_ENCRYPT_WANT_ADDRESS; } + if (flags & Context::EncryptArchive) { + result |= GPGME_ENCRYPT_ARCHIVE; + } return static_cast<gpgme_encrypt_flags_t>(result); } @@ -1895,16 +1906,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<int>(mode) << ')'; - break; - } return os << ')'; } @@ -1921,6 +1928,7 @@ std::ostream &operator<<(std::ostream &os, Context::EncryptionFlags flags) CHECK(ThrowKeyIds); CHECK(EncryptWrap); CHECK(WantAddress); + CHECK(EncryptArchive); #undef CHECK return os << ')'; } |