File indexing completed on 2024-12-01 05:18:33

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 #ifndef KGPGIMPORT_H
0007 #define KGPGIMPORT_H
0008 
0009 #include <QObject>
0010 #include <QString>
0011 #include <QStringList>
0012 
0013 #include <QUrl>
0014 
0015 #include "kgpgtextorfiletransaction.h"
0016 
0017 class KGpgItemModel;
0018 
0019 /**
0020  * @brief import one or more keys into the keyring
0021  */
0022 class KGpgImport: public KGpgTextOrFileTransaction {
0023     Q_OBJECT
0024 
0025     Q_DISABLE_COPY(KGpgImport)
0026 public:
0027     /**
0028      * @brief import given text
0029      * @param parent parent object
0030      * @param text key text to import
0031      */
0032     explicit KGpgImport(QObject *parent, const QString &text = QString());
0033 
0034     /**
0035      * @brief import key(s) from file(s)
0036      * @param parent parent object
0037      * @param files list of file locations to import from
0038      */
0039     KGpgImport(QObject *parent, const QList<QUrl> &files);
0040 
0041     /**
0042      * @brief destructor
0043      */
0044     ~KGpgImport() override = default;
0045 
0046     /**
0047      * @brief get the names and short fingerprints of the imported keys
0048      * @return list of keys that were imported
0049      */
0050     QStringList getImportedKeys() const;
0051 
0052     /**
0053      * @brief get the full fingerprints of the imported keys
0054      * @param log transaction log to scan
0055      * @param reason key import reason
0056      * @return list of ids that were imported
0057      *
0058      * You can filter the list of keys returned by the status of that key
0059      * as reported by GnuPG. See doc/DETAILS of GnuPG for the meaning of
0060      * the different flags.
0061      *
0062      * If reason is -1 (the default) all processed key ids are returned.
0063      * If reason is 0 only keys of status 0 (unchanged) are returned. For
0064      * any other value a key is returned if one of his status bits matched
0065      * one of the bits in reason (i.e. (reason & status) != 0).
0066      */
0067     static QStringList getImportedIds(const QStringList &log, const int reason = -1);
0068     /**
0069      * @brief get the full fingerprints of the imported keys
0070      *
0071      * This is an overloaded member. It calls the static function with the
0072      * result log from this transaction object.
0073      */
0074     QStringList getImportedIds(const int reason = -1) const;
0075 
0076     /**
0077      * @brief get textual summary of the import events
0078      * @return messages describing what was imported
0079      *
0080      * This is an overloaded member. It calls the static function with the
0081      * result log from this transaction object.
0082      */
0083     QString getImportMessage() const;
0084 
0085     /**
0086      * @brief get textual summary of the import events
0087      * @param log import log
0088      * @return messages describing what was imported
0089      *
0090      * The log must contain a "IMPORT_RES" line. If this is not present
0091      * the result string will contain an error message.
0092      */
0093     static QString getImportMessage(const QStringList &log);
0094 
0095     /**
0096      * @brief get detailed summary of import
0097      * @param log import log
0098      * @param model item model, @see KGpgItemModel
0099      * @return message describing which keys changed and how
0100      *
0101      * The log must contain a "IMPORT_RES" line. If this is not present
0102      * the result string will contain an error message.
0103      */
0104     static QString getDetailedImportMessage(const QStringList &log, const KGpgItemModel *model = nullptr);
0105 
0106     /**
0107      * @brief check if the given text contains a private or public key
0108      * @param text text to check
0109      * @param incomplete assume text is only the beginning of the data
0110      * @return if text contains a key or not
0111      * @retval 0 no key found
0112      * @retval 1 public key found
0113      * @retval 2 private key found
0114      */
0115     static int isKey(const QString &text, const bool incomplete = false);
0116 
0117 protected:
0118     QStringList command() const override;
0119 };
0120 
0121 #endif // KGPGIMPORT_H