File indexing completed on 2024-04-28 09:46:03
0001 /* 0002 SPDX-FileCopyrightText: 2008-2022 Rolf Eike Beer <kde@opensource.sf-tec.de> 0003 SPDX-License-Identifier: GPL-2.0-or-later 0004 */ 0005 0006 #include "kgpgdelkey.h" 0007 0008 #include "gpgproc.h" 0009 0010 #include <QString> 0011 #include <QStringList> 0012 0013 static QStringList keyFingerprints(const KGpgKeyNode::List &keys) 0014 { 0015 QStringList ret; 0016 ret.reserve(keys.count()); 0017 0018 for (const KGpgKeyNode *key : keys) 0019 ret << key->getFingerprint(); 0020 0021 return ret; 0022 } 0023 0024 KGpgDelKey::KGpgDelKey(QObject *parent, const KGpgKeyNode::List &keys) 0025 : KGpgTransaction(parent) 0026 , keys(keys) 0027 , fingerprints(keyFingerprints(keys)) 0028 { 0029 setCmdLine(); 0030 setExpectedFingerprints(fingerprints); 0031 } 0032 0033 bool 0034 KGpgDelKey::nextLine(const QString &line) 0035 { 0036 if (!line.startsWith(QLatin1String("[GNUPG:] GOT_IT"))) 0037 setSuccess(KGpgTransaction::TS_MSG_SEQUENCE); 0038 0039 return false; 0040 } 0041 0042 KGpgTransaction::ts_boolanswer 0043 KGpgDelKey::boolQuestion(const QString &line) 0044 { 0045 if (line.startsWith(QLatin1String("delete_key.okay"))) 0046 return KGpgTransaction::BA_YES; 0047 0048 if (line.startsWith(QLatin1String("delete_key.secret.okay"))) 0049 return KGpgTransaction::BA_YES; 0050 0051 return KGpgTransaction::boolQuestion(line); 0052 } 0053 0054 bool 0055 KGpgDelKey::preStart() 0056 { 0057 GPGProc *proc = getProcess(); 0058 const QStringList args = proc->program() + fingerprints; 0059 0060 proc->setProgram(args); 0061 0062 setSuccess(KGpgTransaction::TS_OK); 0063 0064 return true; 0065 } 0066 0067 void 0068 KGpgDelKey::setCmdLine() 0069 { 0070 addArguments( { QLatin1String("--status-fd=1"), 0071 QLatin1String("--command-fd=0"), 0072 QLatin1String("--delete-secret-and-public-key") 0073 }); 0074 0075 m_argscount = getProcess()->program().count(); 0076 }