File indexing completed on 2024-06-16 04:55:55
0001 /* -*- mode: c++; c-basic-offset:4 -*- 0002 crypto/certificateresolver.h 0003 0004 This file is part of Kleopatra, the KDE keymanager 0005 SPDX-FileCopyrightText: 2007 Klarälvdalens Datakonsult AB 0006 0007 SPDX-License-Identifier: GPL-2.0-or-later 0008 */ 0009 0010 #pragma once 0011 0012 #include <utils/pimpl_ptr.h> 0013 0014 #include <KMime/Types> 0015 #include <gpgme++/key.h> 0016 0017 #include <KSharedConfig> 0018 0019 class KConfig; 0020 0021 namespace GpgME 0022 { 0023 class Key; 0024 } 0025 0026 namespace Kleo 0027 { 0028 namespace Crypto 0029 { 0030 0031 class SigningPreferences 0032 { 0033 public: 0034 virtual ~SigningPreferences() 0035 { 0036 } 0037 virtual GpgME::Key preferredCertificate(GpgME::Protocol protocol) = 0; 0038 virtual void setPreferredCertificate(GpgME::Protocol protocol, const GpgME::Key &certificate) = 0; 0039 }; 0040 0041 class RecipientPreferences 0042 { 0043 public: 0044 virtual ~RecipientPreferences() 0045 { 0046 } 0047 virtual GpgME::Key preferredCertificate(const KMime::Types::Mailbox &recipient, GpgME::Protocol protocol) = 0; 0048 virtual void setPreferredCertificate(const KMime::Types::Mailbox &recipient, GpgME::Protocol protocol, const GpgME::Key &certificate) = 0; 0049 }; 0050 0051 class KConfigBasedRecipientPreferences : public RecipientPreferences 0052 { 0053 public: 0054 explicit KConfigBasedRecipientPreferences(const KSharedConfigPtr &config); 0055 ~KConfigBasedRecipientPreferences() override; 0056 GpgME::Key preferredCertificate(const KMime::Types::Mailbox &recipient, GpgME::Protocol protocol) override; 0057 void setPreferredCertificate(const KMime::Types::Mailbox &recipient, GpgME::Protocol protocol, const GpgME::Key &certificate) override; 0058 0059 private: 0060 Q_DISABLE_COPY(KConfigBasedRecipientPreferences) 0061 class Private; 0062 kdtools::pimpl_ptr<Private> d; 0063 }; 0064 0065 class KConfigBasedSigningPreferences : public SigningPreferences 0066 { 0067 public: 0068 explicit KConfigBasedSigningPreferences(const KSharedConfigPtr &config); 0069 ~KConfigBasedSigningPreferences() override; 0070 GpgME::Key preferredCertificate(GpgME::Protocol protocol) override; 0071 void setPreferredCertificate(GpgME::Protocol protocol, const GpgME::Key &certificate) override; 0072 0073 private: 0074 Q_DISABLE_COPY(KConfigBasedSigningPreferences) 0075 class Private; 0076 kdtools::pimpl_ptr<Private> d; 0077 }; 0078 } 0079 }