/** * This file is part of GPGFrontend. * * GPGFrontend is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Foobar is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Foobar. If not, see . * * The initial version of the source code is inherited from gpg4usb-team. * Their source code version also complies with GNU General Public License. * * The source code version of this software was modified and released * by Saturneric starting on May 12, 2021. * */ #ifndef GPG4USB_GPGGENKEYINFO_H #define GPG4USB_GPGGENKEYINFO_H #include "GpgFrontend.h" class GenKeyInfo { bool subKey = true; QString userid; QString algo; int keySize = 2048; QDateTime expired = QDateTime::currentDateTime().addYears(2); bool nonExpired = false; bool noPassPhrase = false; bool allowNoPassPhrase = true; int suggestMaxKeySize = 1024; int suggestSizeAdditionStep = 1024; int suggestMinKeySize = 4096; QString passPhrase; public: static const QVector SupportedKeyAlgo; static const QVector SupportedSubkeyAlgo; [[nodiscard]] bool isSubKey() const { return subKey; } void setIsSubKey(bool m_sub_key) { GenKeyInfo::subKey = m_sub_key; } [[nodiscard]] const QString &getUserid() const { return userid; } void setUserid(const QString &m_userid) { GenKeyInfo::userid = m_userid; } [[nodiscard]] const QString &getAlgo() const { return algo; } void setAlgo(const QString &m_algo); [[nodiscard]] QString getKeySizeStr() const; [[nodiscard]] int getKeySize() const { return keySize; } void setKeySize(int m_key_size); [[nodiscard]] const QDateTime &getExpired() const { return expired; } void setExpired(const QDateTime &m_expired); [[nodiscard]] bool isNonExpired() const { return nonExpired; } void setNonExpired(bool m_non_expired); [[nodiscard]] bool isNoPassPhrase() const { return this->noPassPhrase; } void setNonPassPhrase(bool m_non_pass_phrase) { GenKeyInfo::noPassPhrase = m_non_pass_phrase; } [[nodiscard]] bool isAllowSigning() const { return allowSigning; } [[nodiscard]] bool isAllowNoPassPhrase() const { return allowNoPassPhrase; } void setAllowSigning(bool m_allow_signing) { if(allowChangeSigning) GenKeyInfo::allowSigning = m_allow_signing; } [[nodiscard]] bool isAllowEncryption() const { return allowEncryption; } void setAllowEncryption(bool m_allow_encryption); [[nodiscard]] bool isAllowCertification() const { return allowCertification; } void setAllowCertification(bool m_allow_certification); [[nodiscard]] bool isAllowAuthentication() const { return allowAuthentication; } void setAllowAuthentication(bool m_allow_authentication) { if(allowChangeAuthentication) GenKeyInfo::allowAuthentication = m_allow_authentication; } [[nodiscard]] const QString &getPassPhrase() const { return passPhrase; } void setPassPhrase(const QString &m_pass_phrase) { GenKeyInfo::passPhrase = m_pass_phrase; } [[nodiscard]] bool isAllowChangeSigning() const { return allowChangeSigning; } [[nodiscard]] bool isAllowChangeEncryption() const { return allowChangeEncryption; } [[nodiscard]] bool isAllowChangeCertification() const { return allowChangeCertification; } [[nodiscard]] bool isAllowChangeAuthentication() const { return allowChangeAuthentication; } [[nodiscard]] int getSuggestMaxKeySize() const { return suggestMaxKeySize; } [[nodiscard]] int getSuggestMinKeySize() const { return suggestMinKeySize; } [[nodiscard]] int getSizeChangeStep() const { return suggestSizeAdditionStep; } private: bool allowEncryption = true; bool allowChangeEncryption = true; bool allowCertification = true; bool allowChangeCertification = true; bool allowAuthentication = true; bool allowChangeAuthentication = true; bool allowSigning = true; bool allowChangeSigning = true; void reset_options(); public: explicit GenKeyInfo(bool m_is_sub_key = false) : subKey(m_is_sub_key) { setAlgo("rsa"); } }; #endif //GPG4USB_GPGGENKEYINFO_H