File indexing completed on 2024-04-14 05:43:30
0001 /* 0002 SPDX-FileCopyrightText: 2009-2022 Rolf Eike Beer <kde@opensource.sf-tec.de> 0003 SPDX-License-Identifier: GPL-2.0-or-later 0004 */ 0005 0006 #include "kgpgsigntransactionhelper.h" 0007 0008 #include "model/kgpgitemnode.h" 0009 0010 KGpgSignTransactionHelper::KGpgSignTransactionHelper(const QString &signer, const bool local, const carefulCheck checking) 0011 : m_node(nullptr), 0012 m_signer(signer), 0013 m_local(local), 0014 m_checking(checking), 0015 m_signerPos(-1) 0016 { 0017 } 0018 0019 void 0020 KGpgSignTransactionHelper::setKey(const KGpgKeyNode *node) 0021 { 0022 m_node = node; 0023 } 0024 0025 const KGpgKeyNode * 0026 KGpgSignTransactionHelper::getKey(void) const 0027 { 0028 return m_node; 0029 } 0030 0031 KGpgSignTransactionHelper::lineParseResults 0032 KGpgSignTransactionHelper::nextLine(const QString &line) 0033 { 0034 if (!line.startsWith(QLatin1String("[GNUPG:]"))) { 0035 return notHandled; 0036 } 0037 0038 if (line.contains(QLatin1String( "ALREADY_SIGNED" ))) { 0039 asTransaction()->setSuccess(TS_ALREADY_SIGNED); 0040 return handledFalse; 0041 } else if (line.contains(QLatin1String( "GOOD_PASSPHRASE" ))) { 0042 asTransaction()->setSuccess(KGpgTransaction::TS_MSG_SEQUENCE); 0043 return handledFalse; 0044 } else if (line.contains(QLatin1String( "sign_uid.expire" ))) { 0045 asTransaction()->write("Never"); 0046 return handledFalse; 0047 } else if (line.contains(QLatin1String( "sign_uid.class" ))) { 0048 asTransaction()->write(m_checking); 0049 return handledFalse; 0050 } else { 0051 return notHandled; 0052 } 0053 } 0054 0055 KGpgTransaction::ts_boolanswer 0056 KGpgSignTransactionHelper::boolQuestion(const QString& line) 0057 { 0058 if (line == QLatin1String("sign_uid.okay")) { 0059 return KGpgTransaction::BA_YES; 0060 } else if (line == QLatin1String("keyedit.save.okay")) { 0061 KGpgTransaction *ta = asTransaction(); 0062 0063 switch (ta->getSuccess()) { 0064 case TS_ALREADY_SIGNED: 0065 case KGpgTransaction::TS_USER_ABORTED: 0066 break; 0067 default: 0068 asTransaction()->setSuccess(KGpgTransaction::TS_OK); 0069 } 0070 0071 return KGpgTransaction::BA_YES; 0072 } else { 0073 return KGpgTransaction::BA_UNKNOWN; 0074 } 0075 } 0076 0077 void 0078 KGpgSignTransactionHelper::setLocal(const bool local) 0079 { 0080 if (local == m_local) 0081 return; 0082 0083 m_local = local; 0084 if (local) 0085 replaceCmd(QLatin1String( "lsign" )); 0086 else 0087 replaceCmd(QLatin1String( "sign" )); 0088 } 0089 0090 bool 0091 KGpgSignTransactionHelper::getLocal(void) const 0092 { 0093 return m_local; 0094 } 0095 0096 void 0097 KGpgSignTransactionHelper::setChecking(const carefulCheck level) 0098 { 0099 m_checking = level; 0100 } 0101 0102 KGpgSignTransactionHelper::carefulCheck 0103 KGpgSignTransactionHelper::getChecking(void) const 0104 { 0105 return m_checking; 0106 } 0107 0108 void 0109 KGpgSignTransactionHelper::setSigner(const QString &signer) 0110 { 0111 m_signer = signer; 0112 asTransaction()->replaceArgument(m_signerPos, signer); 0113 } 0114 0115 0116 QString 0117 KGpgSignTransactionHelper::getSigner(void) const 0118 { 0119 return m_signer; 0120 } 0121 0122 void 0123 KGpgSignTransactionHelper::setSecringFile(const QString &filename) 0124 { 0125 QStringList secringargs(QLatin1String( "--secret-keyring" )); 0126 secringargs << filename; 0127 0128 asTransaction()->insertArguments(1, secringargs); 0129 }