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