File indexing completed on 2025-03-09 04:54:12

0001 /*
0002   SPDX-FileCopyrightText: 2020 Sandro Knauß <knauss@kde.org>
0003 
0004   SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include "messagecore_export.h"
0010 
0011 #include <KMime/Headers>
0012 
0013 #include <gpgme++/data.h>
0014 
0015 #include <QJsonDocument>
0016 
0017 namespace MessageCore
0018 {
0019 class AutocryptRecipientPrivate;
0020 class AutocryptStorage;
0021 class HeaderMixupNodeHelper;
0022 
0023 class MESSAGECORE_EXPORT AutocryptRecipient
0024 {
0025 public:
0026     using Ptr = QSharedPointer<AutocryptRecipient>;
0027     AutocryptRecipient();
0028     void updateFromMessage(const HeaderMixupNodeHelper &mixup, const KMime::Headers::Base *header);
0029     void updateFromGossip(const HeaderMixupNodeHelper &mixup, const KMime::Headers::Base *header);
0030 
0031     [[nodiscard]] QByteArray toJson(QJsonDocument::JsonFormat format) const;
0032     void fromJson(const QByteArray &json);
0033 
0034     [[nodiscard]] bool hasChanged() const;
0035     void setChangedFlag(bool changed);
0036 
0037     [[nodiscard]] QByteArray addr() const;
0038     [[nodiscard]] QByteArray bad_user_agent() const;
0039 
0040     [[nodiscard]] QDateTime last_seen() const;
0041     [[nodiscard]] QDateTime autocrypt_timestamp() const;
0042     [[nodiscard]] QDateTime counting_since() const;
0043     [[nodiscard]] QDateTime gossip_timestamp() const;
0044 
0045     [[nodiscard]] int count_have_ach() const;
0046     [[nodiscard]] int count_no_ach() const;
0047 
0048     [[nodiscard]] bool prefer_encrypt() const;
0049 
0050     [[nodiscard]] GpgME::Key gpgKey() const;
0051     [[nodiscard]] QByteArray gpgKeydata() const;
0052 
0053     [[nodiscard]] GpgME::Key gossipKey() const;
0054     [[nodiscard]] QByteArray gossipKeydata() const;
0055 
0056 private:
0057     std::unique_ptr<AutocryptRecipientPrivate> d_ptr;
0058     Q_DECLARE_PRIVATE(AutocryptRecipient)
0059 
0060     friend class AutocryptStorage;
0061 };
0062 }