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 }