1 /*
2 SPDX-FileCopyrightText: 2012 Rolf Eike Beer <kde@opensource.sf-tec.de>
3 SPDX-License-Identifier: GPL-2.0-or-later
4 */
5
6 #include "kgpgsigntext.h"
7
8 #include "kgpgsettings.h"
9
KGpgSignText(QObject * parent,const QString & signId,const QString & text,const SignOptions & options,const QStringList & extraOptions)10 KGpgSignText::KGpgSignText(QObject *parent, const QString &signId, const QString &text, const SignOptions &options, const QStringList &extraOptions)
11 : KGpgTextOrFileTransaction(parent, text),
12 m_fileIndex(-1),
13 m_options(options),
14 m_signId(signId),
15 m_extraOptions(extraOptions)
16 {
17 }
18
KGpgSignText(QObject * parent,const QString & signId,const QList<QUrl> & files,const SignOptions & options,const QStringList & extraOptions)19 KGpgSignText::KGpgSignText(QObject *parent, const QString &signId, const QList<QUrl> &files, const SignOptions &options, const QStringList &extraOptions)
20 : KGpgTextOrFileTransaction(parent, files),
21 m_fileIndex(0),
22 m_options(options),
23 m_signId(signId),
24 m_extraOptions(extraOptions)
25 {
26 /* GnuPG can only handle one file at a time when signing */
27 Q_ASSERT(files.count() == 1);
28 }
29
~KGpgSignText()30 KGpgSignText::~KGpgSignText()
31 {
32 }
33
34 QStringList
command() const35 KGpgSignText::command() const
36 {
37 QStringList ret = m_extraOptions;
38
39 const QList<QUrl> &files = getInputFiles();
40 QString fileName;
41
42 if (!files.isEmpty())
43 fileName = files.first().path();
44
45 ret << QLatin1String("-u") << m_signId;
46
47 if (m_options & AsciiArmored) {
48 if (fileName.isEmpty())
49 ret << QLatin1String("--clearsign");
50 else
51 ret << QLatin1String("--armor");
52 }
53 if (KGpgSettings::pgpCompatibility())
54 ret << QLatin1String("--pgp6");
55
56 if (!fileName.isEmpty()) {
57 if (m_options & DetachedSignature)
58 ret << QLatin1String("--detach-sign") <<
59 QLatin1String("--output") << fileName + QLatin1String(".sig");
60 }
61
62 return ret;
63 }
64
65 QStringList
signedText() const66 KGpgSignText::signedText() const
67 {
68 QStringList result;
69
70 for (const QString &line : getMessages())
71 if (!line.startsWith(QLatin1String("[GNUPG:] "))) {
72 result.append(line);
73 }
74
75 return result;
76 }
77