File indexing completed on 2024-06-23 05:14:17
0001 /* -*- mode: c++; c-basic-offset:4 -*- 0002 utils/keyparameters.h 0003 0004 This file is part of Kleopatra, the KDE keymanager 0005 SPDX-FileCopyrightText: 2020, 2022 g10 Code GmbH 0006 SPDX-FileContributor: Ingo Klöcker <dev@ingo-kloecker.de> 0007 0008 SPDX-License-Identifier: GPL-2.0-or-later 0009 */ 0010 0011 #pragma once 0012 0013 #include <gpgme++/key.h> 0014 0015 #include <memory> 0016 0017 class QDate; 0018 class QString; 0019 0020 namespace Kleo 0021 { 0022 class KeyUsage; 0023 0024 class KeyParameters 0025 { 0026 public: 0027 enum Protocol { 0028 NoProtocol, 0029 OpenPGP, 0030 CMS, 0031 }; 0032 0033 KeyParameters(); 0034 explicit KeyParameters(Protocol protocol); 0035 ~KeyParameters(); 0036 0037 KeyParameters(const KeyParameters &other); 0038 KeyParameters &operator=(const KeyParameters &other); 0039 0040 KeyParameters(KeyParameters &&other); 0041 KeyParameters &operator=(KeyParameters &&other); 0042 0043 Protocol protocol() const; 0044 0045 void setKeyType(GpgME::Subkey::PubkeyAlgo type); 0046 GpgME::Subkey::PubkeyAlgo keyType() const; 0047 void setCardKeyRef(const QString &cardKeyRef); 0048 QString cardKeyRef() const; 0049 void setKeyLength(unsigned int length); 0050 unsigned int keyLength() const; 0051 void setKeyCurve(const QString &curve); 0052 QString keyCurve() const; 0053 void setKeyUsage(const KeyUsage &usage); 0054 KeyUsage keyUsage() const; 0055 0056 void setSubkeyType(GpgME::Subkey::PubkeyAlgo type); 0057 GpgME::Subkey::PubkeyAlgo subkeyType() const; 0058 void setSubkeyLength(unsigned int length); 0059 unsigned int subkeyLength() const; 0060 void setSubkeyCurve(const QString &curve); 0061 QString subkeyCurve() const; 0062 void setSubkeyUsage(const KeyUsage &usage); 0063 KeyUsage subkeyUsage() const; 0064 0065 void setExpirationDate(const QDate &date); 0066 QDate expirationDate() const; 0067 0068 void setName(const QString &name); 0069 QString name() const; 0070 void setComment(const QString &comment); 0071 QString comment() const; 0072 void setDN(const QString &dn); 0073 QString dn() const; 0074 void setEmail(const QString &email); 0075 void addEmail(const QString &email); 0076 std::vector<QString> emails() const; 0077 void addDomainName(const QString &domain); 0078 std::vector<QString> domainNames() const; 0079 void addURI(const QString &uri); 0080 std::vector<QString> uris() const; 0081 0082 void addDesignatedRevoker(const QString &fpr); 0083 std::vector<QString> designatedRevokers() const; 0084 0085 QString toString() const; 0086 0087 private: 0088 class Private; 0089 std::unique_ptr<Private> d; 0090 }; 0091 0092 }