File indexing completed on 2024-05-12 05:20:00

0001 /*
0002     kleopatra_options.h
0003 
0004     This file is part of Kleopatra, the KDE keymanager
0005     SPDX-FileCopyrightText: 2015 Bundesamt für Sicherheit in der Informationstechnik
0006     SPDX-FileContributor: Intevation GmbH
0007 
0008     SPDX-License-Identifier: GPL-2.0-or-later
0009 */
0010 #pragma once
0011 
0012 #include <config-kleopatra.h>
0013 
0014 #include <KLocalizedString>
0015 #include <QCommandLineParser>
0016 
0017 static void kleopatra_options(QCommandLineParser *parser)
0018 {
0019     parser->addOptions({
0020         QCommandLineOption({QStringLiteral("openpgp"), QStringLiteral("p")}, i18n("Use OpenPGP for the following operation")),
0021         QCommandLineOption({QStringLiteral("cms"), QStringLiteral("c")}, i18n("Use CMS (X.509, S/MIME) for the following operation")),
0022         QCommandLineOption(QStringLiteral("uiserver-socket"), i18n("Location of the socket the ui server is listening on"), QStringLiteral("argument")),
0023         QCommandLineOption(QStringLiteral("daemon"), i18n("Run UI server only, hide main window")),
0024         QCommandLineOption({QStringLiteral("import-certificate"), QStringLiteral("i")}, i18n("Import certificate file(s)")),
0025         QCommandLineOption({QStringLiteral("encrypt"), QStringLiteral("e")}, i18n("Encrypt file(s)")),
0026         QCommandLineOption({QStringLiteral("sign"), QStringLiteral("s")}, i18n("Sign file(s)")),
0027         QCommandLineOption({QStringLiteral("sign-encrypt"), QStringLiteral("E")}, i18n("Sign and/or encrypt file(s)")),
0028         QCommandLineOption(QStringLiteral("encrypt-sign"), i18n("Same as --sign-encrypt, do not use")),
0029         QCommandLineOption({QStringLiteral("decrypt"), QStringLiteral("d")}, i18n("Decrypt file(s)")),
0030         QCommandLineOption({QStringLiteral("verify"), QStringLiteral("V")}, i18n("Verify file/signature")),
0031         QCommandLineOption({QStringLiteral("decrypt-verify"), QStringLiteral("D")}, i18n("Decrypt and/or verify file(s)")),
0032         QCommandLineOption(QStringLiteral("search"), i18n("Search for a certificate on a keyserver")),
0033         QCommandLineOption(QStringLiteral("checksum"), i18n("Create or check a checksum file")),
0034         QCommandLineOption({QStringLiteral("query"), QStringLiteral("q")},
0035                            i18nc("If a certificate is already known it shows the certificate details dialog. "
0036                                  "Otherwise it brings up the certificate search dialog.",
0037                                  "Show details of a local certificate or search for it on a keyserver by fingerprint")),
0038         QCommandLineOption(QStringLiteral("gen-key"), i18n("Create a new key pair or certificate signing request")),
0039         QCommandLineOption(QStringLiteral("parent-windowid"), i18n("Parent Window Id for dialogs"), QStringLiteral("windowId")),
0040         QCommandLineOption(QStringLiteral("config"), i18n("Open the config dialog")),
0041     });
0042 
0043     /* Security note: To avoid code execution by shared library injection
0044      * through e.g. -platformpluginpath any external input should be seperated
0045      * by a double dash -- this is why query / search uses positional arguments.
0046      *
0047      * For example on Windows there is an URLhandler for openpgp4fpr:
0048      * be opened with Kleopatra's query function. And while a browser should
0049      * urlescape such a query there might be tricks to inject a quote character
0050      * and as such inject command line options for Kleopatra in an URL. */
0051     parser->addPositionalArgument(QStringLiteral("files"), i18n("File(s) to process"), QStringLiteral("-- [files..]"));
0052     parser->addPositionalArgument(QStringLiteral("query"), i18n("String or Fingerprint for query and search"), QStringLiteral("-- [query..]"));
0053 }