diff options
| author | Ingo Klöcker <[email protected]> | 2024-06-18 14:36:40 +0000 |
|---|---|---|
| committer | Ingo Klöcker <[email protected]> | 2024-06-18 14:36:40 +0000 |
| commit | 7d5df0bf0d86391151911160db24441966b6d938 (patch) | |
| tree | 8bff5499ec7b3492710e525d0ed33844ad9a4c9e /lang/qt/tests/run-signjob.cpp | |
| parent | qt,build: Install headers for Qt 5 and Qt 6 in different locations (diff) | |
| download | gpgme-7d5df0bf0d86391151911160db24441966b6d938.tar.gz gpgme-7d5df0bf0d86391151911160db24441966b6d938.zip | |
qt: Allow appending a detached signature to an existing file
* lang/qt/src/qgpgmesignjob.cpp (sign_to_filename): Add argument
"appendSignature". Append new detached signature to an existing file if
requested.
* lang/qt/src/signjob.cpp, lang/qt/src/signjob.h (class SignJob): Add
member functions setAppendSignature, appendSignatureEnabled.
* lang/qt/src/signjob_p.h (struct SignJobPrivate): Add member
m_appendSignature.
* lang/qt/tests/run-signjob.cpp (struct CommandLineOptions): Add members
signingFlags, appendSignature. Initialize armor.
(parseCommandLine): Add command line options --detach-sign and --append.
(main): Do not exit if output file exists and append is enabled.
Pass new options to the job.
--
This change simplifies cross-signing a document by appending additional
detached signatures to a file with already existing detached signatures.
GnuPG-bug-id: 6867
Diffstat (limited to 'lang/qt/tests/run-signjob.cpp')
| -rw-r--r-- | lang/qt/tests/run-signjob.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/lang/qt/tests/run-signjob.cpp b/lang/qt/tests/run-signjob.cpp index 14b0a406..c1342b66 100644 --- a/lang/qt/tests/run-signjob.cpp +++ b/lang/qt/tests/run-signjob.cpp @@ -56,7 +56,9 @@ std::ostream &operator<<(std::ostream &os, const QString &s) } struct CommandLineOptions { - bool armor; + GpgME::SignatureMode signingFlags = GpgME::NormalSignatureMode; + bool armor = false; + bool appendSignature = false; QString inputFile; QString outputFile; std::chrono::seconds cancelTimeout{0}; @@ -72,6 +74,8 @@ CommandLineOptions parseCommandLine(const QStringList &arguments) parser.addOptions({ {{"o", "output"}, "Write output to FILE.", "FILE"}, {{"a", "armor"}, "Create ASCII armored output."}, + {{"b", "detach-sign"}, "Create a detached signature."}, + {"append", "Append new (detached) signature to existing file."}, {"cancel-after", "Cancel the running job after SECONDS seconds.", "SECONDS"}, }); parser.addPositionalArgument("file", "File to sign", "FILE"); @@ -84,6 +88,10 @@ CommandLineOptions parseCommandLine(const QStringList &arguments) } options.armor = parser.isSet("armor"); + if (parser.isSet("detach-sign")) { + options.signingFlags = GpgME::Detached; + options.appendSignature = parser.isSet("append"); + } options.inputFile = args.front(); options.outputFile = parser.value("output"); if (parser.isSet("cancel-after")) { @@ -114,7 +122,7 @@ int main(int argc, char **argv) output.reset(new QFile); output->open(stdout, QIODevice::WriteOnly); } else { - if (QFile::exists(options.outputFile)) { + if (QFile::exists(options.outputFile) && !options.appendSignature) { qCritical() << "File" << options.outputFile << "exists. Bailing out."; return 1; } @@ -146,6 +154,8 @@ int main(int argc, char **argv) } else { job->setInputFile(options.inputFile); job->setOutputFile(options.outputFile); + job->setSigningFlags(options.signingFlags); + job->setAppendSignature(options.appendSignature); err = job->startIt(); } if (err) { |
