aboutsummaryrefslogtreecommitdiffstats
path: root/lang/qt/tests/run-signjob.cpp
diff options
context:
space:
mode:
authorIngo Klöcker <[email protected]>2024-06-18 14:36:40 +0000
committerIngo Klöcker <[email protected]>2024-06-18 14:36:40 +0000
commit7d5df0bf0d86391151911160db24441966b6d938 (patch)
tree8bff5499ec7b3492710e525d0ed33844ad9a4c9e /lang/qt/tests/run-signjob.cpp
parentqt,build: Install headers for Qt 5 and Qt 6 in different locations (diff)
downloadgpgme-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.cpp14
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) {