1 /* view/pivcardwiget.h 2 3 This file is part of Kleopatra, the KDE keymanager 4 SPDX-FileCopyrightText: 2020 g10 Code GmbH 5 SPDX-FileContributor: Ingo Klöcker <dev@ingo-kloecker.de> 6 7 SPDX-License-Identifier: GPL-2.0-or-later 8 */ 9 #pragma once 10 11 #include <QMap> 12 #include <QWidget> 13 14 #include <gpgme++/error.h> 15 16 class QGridLayout; 17 class QLabel; 18 class QPushButton; 19 20 namespace Kleo 21 { 22 23 namespace SmartCard 24 { 25 struct KeyPairInfo; 26 class PIVCard; 27 } // namespace SmartCard 28 29 class PIVCardWidget: public QWidget 30 { 31 Q_OBJECT 32 public: 33 explicit PIVCardWidget(QWidget *parent = nullptr); 34 ~PIVCardWidget() override; 35 36 void setCard(const SmartCard::PIVCard* card); 37 38 struct KeyWidgets { 39 QLabel *keyGrip = nullptr; 40 QLabel *keyAlgorithm = nullptr; 41 QLabel *certificateInfo = nullptr; 42 QPushButton *generateButton = nullptr; 43 QPushButton *createCSRButton = nullptr; 44 QPushButton *writeCertificateButton = nullptr; 45 QPushButton *importCertificateButton = nullptr; 46 QPushButton *writeKeyButton = nullptr; 47 }; 48 49 private: 50 KeyWidgets createKeyWidgets(const SmartCard::KeyPairInfo &keyInfo); 51 void updateKeyWidgets(const std::string &keyRef, const SmartCard::PIVCard *card); 52 void generateKey(const std::string &keyref); 53 void createCSR(const std::string &keyref); 54 void writeCertificateToCard(const std::string &keyref); 55 void importCertificateFromCard(const std::string &keyref); 56 void writeKeyToCard(const std::string &keyref); 57 void createKeyFromCardKeys(); 58 void changePin(const std::string &keyRef); 59 void setAdminKey(); 60 61 private: 62 std::string mCardSerialNumber; 63 QLabel *mSerialNumber = nullptr; 64 QLabel *mVersionLabel = nullptr; 65 QPushButton *mKeyForCardKeysButton = nullptr; 66 QMap<std::string, KeyWidgets> mKeyWidgets; 67 }; 68 } // namespace Kleo 69 70