GpgFrontend Project A Free, Powerful, Easy-to-Use, Compact, Cross-Platform, and Installation-Free OpenPGP(pgp) Crypto Tool.

GpgGenKeyInfo.h
1
29 #ifndef GPGFRONTEND_GPGGENKEYINFO_H
30 #define GPGFRONTEND_GPGGENKEYINFO_H
31
32 #include <boost/date_time.hpp>
33 #include <boost/date_time/gregorian/greg_duration_types.hpp>
34 #include <boost/format.hpp>
35 #include <string>
36 #include <vector>
37
38 #include "GpgFrontend.h"
39
40 namespace GpgFrontend {
41
42 class GPGFRONTEND_CORE_EXPORT GenKeyInfo {
43 bool standalone_ = false;
44 bool subkey_ = false;
45 std::string name_;
46 std::string email_;
47 std::string comment_;
48
49 std::string algo_;
50 int key_size_ = 2048;
51 boost::posix_time::ptime expired_ =
52 boost::posix_time::second_clock::local_time() +
53 boost::gregorian::years(2);
54 bool non_expired_ = false;
55
56 bool no_passphrase_ = false;
57 bool allow_no_pass_phrase_ = true;
58
59 int suggest_max_key_size_ = 4096;
60 int suggest_size_addition_step_ = 1024;
61 int suggest_min_key_size_ = 1024;
62
63 std::string passphrase_;
64
65 public:
71 static const std::vector<std::string> &GetSupportedKeyAlgo();
72
78 static const std::vector<std::string> &GetSupportedSubkeyAlgo();
79
85 static const std::vector<std::string> &GetSupportedKeyAlgoStandalone();
86
92 static const std::vector<std::string> &GetSupportedSubkeyAlgoStandalone();
93
100 [[nodiscard]] bool IsSubKey() const { return subkey_; }
101
107 void SetIsSubKey(bool m_sub_key) { GenKeyInfo::subkey_ = m_sub_key; }
108
114 [[nodiscard]] std::string GetUserid() const {
115 auto uid_format = boost::format("%1%(%2%)<%3%>") % this->name_ %
116 this->comment_ % this->email_;
117 return uid_format.str();
118 }
119
125 void SetName(const std::string &m_name) { this->name_ = m_name; }
126
132 void SetEmail(const std::string &m_email) { this->email_ = m_email; }
133
139 void SetComment(const std::string &m_comment) { this->comment_ = m_comment; }
140
146 [[nodiscard]] std::string GetName() const { return name_; }
147
153 [[nodiscard]] std::string GetEmail() const { return email_; }
154
160 [[nodiscard]] std::string GetComment() const { return comment_; }
161
167 [[nodiscard]] const std::string &GetAlgo() const { return algo_; }
168
174 void SetAlgo(const std::string &m_algo);
175
181 [[nodiscard]] std::string GetKeySizeStr() const;
182
188 [[nodiscard]] int GetKeyLength() const { return key_size_; }
189
195 void SetKeyLength(int m_key_size);
196
202 [[nodiscard]] const boost::posix_time::ptime &GetExpireTime() const {
203 return expired_;
204 }
205
211 void SetExpireTime(const boost::posix_time::ptime &m_expired);
212
219 [[nodiscard]] bool IsNonExpired() const { return non_expired_; }
220
226 void SetNonExpired(bool m_non_expired);
227
234 [[nodiscard]] bool IsNoPassPhrase() const { return this->no_passphrase_; }
235
241 void SetNonPassPhrase(bool m_non_pass_phrase) {
242 GenKeyInfo::no_passphrase_ = m_non_pass_phrase;
243 }
244
251 [[nodiscard]] bool IsAllowSigning() const { return allow_signing_; }
252
259 [[nodiscard]] bool IsAllowNoPassPhrase() const {
260 return allow_no_pass_phrase_;
261 }
262
268 void SetAllowSigning(bool m_allow_signing) {
269 if (allow_change_signing_) GenKeyInfo::allow_signing_ = m_allow_signing;
270 }
271
278 [[nodiscard]] bool IsAllowEncryption() const { return allow_encryption_; }
279
285 void SetAllowEncryption(bool m_allow_encryption);
286
293 [[nodiscard]] bool IsAllowCertification() const {
294 return allow_certification_;
295 }
296
302 void SetAllowCertification(bool m_allow_certification);
303
310 [[nodiscard]] bool IsAllowAuthentication() const {
311 return allow_authentication_;
312 }
313
319 void SetAllowAuthentication(bool m_allow_authentication) {
320 if (allow_change_authentication_)
321 GenKeyInfo::allow_authentication_ = m_allow_authentication;
322 }
323
329 [[nodiscard]] const std::string &GetPassPhrase() const { return passphrase_; }
330
336 void SetPassPhrase(const std::string &m_pass_phrase) {
337 GenKeyInfo::passphrase_ = m_pass_phrase;
338 }
339
346 [[nodiscard]] bool IsAllowChangeSigning() const {
347 return allow_change_signing_;
348 }
349
356 [[nodiscard]] bool IsAllowChangeEncryption() const {
357 return allow_change_encryption_;
358 }
359
366 [[nodiscard]] bool IsAllowChangeCertification() const {
367 return allow_change_certification_;
368 }
369
376 [[nodiscard]] bool IsAllowChangeAuthentication() const {
377 return allow_change_authentication_;
378 }
379
385 [[nodiscard]] int GetSuggestMaxKeySize() const {
386 return suggest_max_key_size_;
387 }
388
394 [[nodiscard]] int GetSuggestMinKeySize() const {
395 return suggest_min_key_size_;
396 }
397
403 [[nodiscard]] int GetSizeChangeStep() const {
404 return suggest_size_addition_step_;
405 }
406
407 private:
408 bool allow_encryption_ = true;
409 bool allow_change_encryption_ = true;
410 bool allow_certification_ = true;
411 bool allow_change_certification_ = true;
412 bool allow_authentication_ = true;
413 bool allow_change_authentication_ = true;
414 bool allow_signing_ = true;
415 bool allow_change_signing_ = true;
416
421 void reset_options();
422
423 public:
430 explicit GenKeyInfo(bool m_is_sub_key = false, bool m_standalone = false);
431 };
432
433 } // namespace GpgFrontend
434
435 #endif // GPGFRONTEND_GPGGENKEYINFO_H
GpgFrontend::GenKeyInfo::IsAllowChangeAuthentication
bool IsAllowChangeAuthentication() const
Definition: GpgGenKeyInfo.h:376
GpgFrontend::GenKeyInfo::GetUserid
std::string GetUserid() const
Get the Userid object.
Definition: GpgGenKeyInfo.h:114
GpgFrontend::GenKeyInfo::IsAllowNoPassPhrase
bool IsAllowNoPassPhrase() const
Definition: GpgGenKeyInfo.h:259
GpgFrontend::GenKeyInfo::IsAllowAuthentication
bool IsAllowAuthentication() const
Definition: GpgGenKeyInfo.h:310
GpgFrontend::GenKeyInfo::IsAllowChangeEncryption
bool IsAllowChangeEncryption() const
Definition: GpgGenKeyInfo.h:356
GpgFrontend::GenKeyInfo::GetSizeChangeStep
int GetSizeChangeStep() const
Get the Size Change Step object.
Definition: GpgGenKeyInfo.h:403
GpgFrontend::GenKeyInfo::GetSupportedSubkeyAlgo
static const std::vector< std::string > & GetSupportedSubkeyAlgo()
Get the Supported Subkey Algo object.
Definition: GpgGenKeyInfo.cpp:207
GpgFrontend::GenKeyInfo::GetAlgo
const std::string & GetAlgo() const
Get the Algo object.
Definition: GpgGenKeyInfo.h:167
GpgFrontend
Definition: CoreCommonUtil.cpp:29
GpgFrontend::GenKeyInfo::SetAllowSigning
void SetAllowSigning(bool m_allow_signing)
Set the Allow Signing object.
Definition: GpgGenKeyInfo.h:268
GpgFrontend::GenKeyInfo::GetSuggestMaxKeySize
int GetSuggestMaxKeySize() const
Get the Suggest Max Key Size object.
Definition: GpgGenKeyInfo.h:385
GpgFrontend::GenKeyInfo::SetNonPassPhrase
void SetNonPassPhrase(bool m_non_pass_phrase)
Set the Non Pass Phrase object.
Definition: GpgGenKeyInfo.h:241
GpgFrontend::GenKeyInfo::GetKeyLength
int GetKeyLength() const
Get the Key Size object.
Definition: GpgGenKeyInfo.h:188
GpgFrontend::GenKeyInfo::SetAllowCertification
void SetAllowCertification(bool m_allow_certification)
Set the Allow Certification object.
Definition: GpgGenKeyInfo.cpp:189
GpgFrontend::GenKeyInfo::IsNoPassPhrase
bool IsNoPassPhrase() const
Definition: GpgGenKeyInfo.h:234
GpgFrontend::GenKeyInfo::GetName
std::string GetName() const
Get the Name object.
Definition: GpgGenKeyInfo.h:146
GpgFrontend::GenKeyInfo::SetAllowAuthentication
void SetAllowAuthentication(bool m_allow_authentication)
Set the Allow Authentication object.
Definition: GpgGenKeyInfo.h:319
GpgFrontend::GenKeyInfo::SetPassPhrase
void SetPassPhrase(const std::string &m_pass_phrase)
Set the Pass Phrase object.
Definition: GpgGenKeyInfo.h:336
GpgFrontend::GenKeyInfo::IsNonExpired
bool IsNonExpired() const
Definition: GpgGenKeyInfo.h:219
GpgFrontend::GenKeyInfo::IsAllowCertification
bool IsAllowCertification() const
Definition: GpgGenKeyInfo.h:293
GpgFrontend::GenKeyInfo::SetComment
void SetComment(const std::string &m_comment)
Set the Comment object.
Definition: GpgGenKeyInfo.h:139
GpgFrontend::GenKeyInfo::GetSupportedSubkeyAlgoStandalone
static const std::vector< std::string > & GetSupportedSubkeyAlgoStandalone()
Get the Supported Subkey Algo Standalone object.
Definition: GpgGenKeyInfo.cpp:221
GpgFrontend::GenKeyInfo::SetAllowEncryption
void SetAllowEncryption(bool m_allow_encryption)
Set the Allow Encryption object.
Definition: GpgGenKeyInfo.cpp:184
GpgFrontend::GenKeyInfo::SetKeyLength
void SetKeyLength(int m_key_size)
Set the Key Size object.
Definition: GpgGenKeyInfo.cpp:162
GpgFrontend::GenKeyInfo::IsAllowChangeSigning
bool IsAllowChangeSigning() const
Definition: GpgGenKeyInfo.h:346
GpgFrontend::GenKeyInfo::SetEmail
void SetEmail(const std::string &m_email)
Set the Email object.
Definition: GpgGenKeyInfo.h:132
GpgFrontend::GenKeyInfo::GetSuggestMinKeySize
int GetSuggestMinKeySize() const
Get the Suggest Min Key Size object.
Definition: GpgGenKeyInfo.h:394
GpgFrontend::GenKeyInfo::SetExpireTime
void SetExpireTime(const boost::posix_time::ptime &m_expired)
Set the Expired object.
Definition: GpgGenKeyInfo.cpp:170
GpgFrontend::GenKeyInfo::GetSupportedKeyAlgoStandalone
static const std::vector< std::string > & GetSupportedKeyAlgoStandalone()
Get the Supported Key Algo Standalone object.
Definition: GpgGenKeyInfo.cpp:214
GpgFrontend::GenKeyInfo::IsAllowSigning
bool IsAllowSigning() const
Definition: GpgGenKeyInfo.h:251
GpgFrontend::GenKeyInfo::SetIsSubKey
void SetIsSubKey(bool m_sub_key)
Set the Is Sub Key object.
Definition: GpgGenKeyInfo.h:107
GpgFrontend::GenKeyInfo::GetKeySizeStr
std::string GetKeySizeStr() const
Get the Key Size Str object.
Definition: GpgGenKeyInfo.cpp:154
GpgFrontend::GenKeyInfo::IsSubKey
bool IsSubKey() const
Definition: GpgGenKeyInfo.h:100
GpgFrontend::GenKeyInfo::IsAllowChangeCertification
bool IsAllowChangeCertification() const
Definition: GpgGenKeyInfo.h:366
GpgFrontend::GenKeyInfo::GetSupportedKeyAlgo
static const std::vector< std::string > & GetSupportedKeyAlgo()
Get the Supported Key Algo object.
Definition: GpgGenKeyInfo.cpp:200
GpgFrontend::GenKeyInfo::SetName
void SetName(const std::string &m_name)
Set the Name object.
Definition: GpgGenKeyInfo.h:125
GpgFrontend::GenKeyInfo::SetNonExpired
void SetNonExpired(bool m_non_expired)
Set the Non Expired object.
Definition: GpgGenKeyInfo.cpp:178
GpgFrontend::GenKeyInfo::GetEmail
std::string GetEmail() const
Get the Email object.
Definition: GpgGenKeyInfo.h:153
GpgFrontend::GenKeyInfo::GetExpireTime
const boost::posix_time::ptime & GetExpireTime() const
Get the Expired object.
Definition: GpgGenKeyInfo.h:202
GpgFrontend::GenKeyInfo::GenKeyInfo
GenKeyInfo(bool m_is_sub_key=false, bool m_standalone=false)
Construct a new Gen Key Info object.
Definition: GpgGenKeyInfo.cpp:195
GpgFrontend::GenKeyInfo::GetPassPhrase
const std::string & GetPassPhrase() const
Get the Pass Phrase object.
Definition: GpgGenKeyInfo.h:329
GpgFrontend::GenKeyInfo::GetComment
std::string GetComment() const
Get the Comment object.
Definition: GpgGenKeyInfo.h:160
GpgFrontend::GenKeyInfo
Definition: GpgGenKeyInfo.h:42
GpgFrontend::GenKeyInfo::SetAlgo
void SetAlgo(const std::string &m_algo)
Set the Algo object.
Definition: GpgGenKeyInfo.cpp:37
GpgFrontend::GenKeyInfo::IsAllowEncryption
bool IsAllowEncryption() const
Definition: GpgGenKeyInfo.h:278