File indexing completed on 2024-04-21 05:50:44

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 "kgpguidtransaction.h"
0007 
0008 KGpgUidTransaction::KGpgUidTransaction(QObject *parent, const QString &keyid, const QString &uid)
0009     : KGpgTransaction(parent)
0010 {
0011     addArgument(QLatin1String( "--status-fd=1" ));
0012     addArgument(QLatin1String( "--command-fd=0" ));
0013     addArgument(QLatin1String( "--edit-key" ));
0014     m_keyidpos = addArgument(QString());
0015     addArgumentRef(&m_keyidpos);
0016     addArgument(QLatin1String( "uid" ));
0017     m_uidpos = addArgument(QString());
0018     addArgumentRef(&m_uidpos);
0019 
0020     setKeyId(keyid);
0021     setUid(uid);
0022 }
0023 
0024 bool
0025 KGpgUidTransaction::preStart()
0026 {
0027     setSuccess(TS_MSG_SEQUENCE);
0028 
0029     return true;
0030 }
0031 
0032 bool
0033 KGpgUidTransaction::standardCommands(const QString &line)
0034 {
0035     if (!line.startsWith(QLatin1String("[GNUPG:] ")))
0036         return false;
0037 
0038     if (line.contains(QLatin1String( "GOOD_PASSPHRASE" ))) {
0039         setSuccess(TS_MSG_SEQUENCE);
0040     } else if (line.contains(QLatin1String( "keyedit.prompt" ))) {
0041         write("save");
0042         if (getSuccess() == TS_MSG_SEQUENCE)
0043             setSuccess(TS_OK);
0044         return true;
0045     } else if (line.contains(QLatin1String( "GET_" ))) {
0046         setSuccess(TS_MSG_SEQUENCE);
0047         return true;
0048     }
0049 
0050     return false;
0051 }
0052 
0053 void
0054 KGpgUidTransaction::setKeyId(const QString &keyid)
0055 {
0056     m_keyid = keyid;
0057 
0058     replaceArgument(m_keyidpos, keyid);
0059 }
0060 
0061 QString
0062 KGpgUidTransaction::getKeyId(void) const
0063 {
0064     return m_keyid;
0065 }
0066 
0067 void
0068 KGpgUidTransaction::setUid(const QString &uid)
0069 {
0070     m_uid = uid;
0071 
0072     replaceArgument(m_uidpos, uid);
0073 }
0074 
0075 void
0076 KGpgUidTransaction::setUid(const unsigned int uid)
0077 {
0078     setUid(QString::number(uid));
0079 }