aboutsummaryrefslogtreecommitdiffstats
path: root/src/gpg/GpgGenKeyInfo.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/gpg/GpgGenKeyInfo.h')
-rw-r--r--src/gpg/GpgGenKeyInfo.h167
1 files changed, 167 insertions, 0 deletions
diff --git a/src/gpg/GpgGenKeyInfo.h b/src/gpg/GpgGenKeyInfo.h
new file mode 100644
index 00000000..53b0c9f1
--- /dev/null
+++ b/src/gpg/GpgGenKeyInfo.h
@@ -0,0 +1,167 @@
+/**
+ * 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 <https://www.gnu.org/licenses/>.
+ *
+ * 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<[email protected]> starting on May 12, 2021.
+ *
+ */
+
+#ifndef GPGFRONTEND_GPGGENKEYINFO_H
+#define GPGFRONTEND_GPGGENKEYINFO_H
+
+#include <boost/date_time.hpp>
+#include <boost/date_time/gregorian/greg_duration_types.hpp>
+#include <string>
+#include <vector>
+
+namespace GpgFrontend {
+
+class GenKeyInfo {
+ bool subKey = true;
+ std::string userid;
+ std::string algo;
+ int keySize = 2048;
+ boost::gregorian::date expired =
+ boost::gregorian::day_clock::local_day() + boost::gregorian::years(2);
+ bool nonExpired = false;
+
+ bool noPassPhrase = false;
+ bool allowNoPassPhrase = true;
+
+ int suggestMaxKeySize = 4096;
+ int suggestSizeAdditionStep = 1024;
+ int suggestMinKeySize = 1024;
+
+ std::string passPhrase;
+
+ public:
+ static const std::vector<std::string> SupportedKeyAlgo;
+
+ static const std::vector<std::string> SupportedSubkeyAlgo;
+
+ [[nodiscard]] bool isSubKey() const { return subKey; }
+
+ void setIsSubKey(bool m_sub_key) { GenKeyInfo::subKey = m_sub_key; }
+
+ [[nodiscard]] const std::string &getUserid() const { return userid; }
+
+ void setUserid(const std::string &m_userid) { GenKeyInfo::userid = m_userid; }
+
+ [[nodiscard]] const std::string &getAlgo() const { return algo; }
+
+ void setAlgo(const std::string &m_algo);
+
+ [[nodiscard]] std::string getKeySizeStr() const;
+
+ [[nodiscard]] int getKeySize() const { return keySize; }
+
+ void setKeySize(int m_key_size);
+
+ [[nodiscard]] const boost::gregorian::date &getExpired() const {
+ return expired;
+ }
+
+ void setExpired(const boost::gregorian::date &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 std::string &getPassPhrase() const { return passPhrase; }
+
+ void setPassPhrase(const std::string &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");
+ }
+};
+
+} // namespace GpgFrontend
+
+#endif // GPGFRONTEND_GPGGENKEYINFO_H