9 #include <boost/filesystem.hpp>
14 kFirstKnown = kED25519,
18 kLastKnown = kRSA4096,
22 inline std::ostream& operator<<(std::ostream& os,
const KeyType kt) {
25 case KeyType::kRSA2048:
28 case KeyType::kRSA3072:
31 case KeyType::kRSA4096:
34 case KeyType::kED25519:
41 os <<
'"' << kt_str <<
'"';
45 inline std::istream& operator>>(std::istream& is, KeyType& kt) {
49 std::transform(kt_str.begin(), kt_str.end(), kt_str.begin(), ::toupper);
50 kt_str.erase(std::remove(kt_str.begin(), kt_str.end(),
'"'), kt_str.end());
52 if (kt_str ==
"RSA2048") {
53 kt = KeyType::kRSA2048;
54 }
else if (kt_str ==
"RSA3072") {
55 kt = KeyType::kRSA3072;
56 }
else if (kt_str ==
"RSA4096") {
57 kt = KeyType::kRSA4096;
58 }
else if (kt_str ==
"ED25519") {
59 kt = KeyType::kED25519;
61 kt = KeyType::kUnknown;
66 enum class CryptoSource { kFile = 0, kPkcs11, kAndroid };
68 inline std::ostream& operator<<(std::ostream& os, CryptoSource cs) {
71 case CryptoSource::kFile:
74 case CryptoSource::kPkcs11:
81 os <<
'"' << cs_str <<
'"';
89 static struct tm CurrentTime();
94 bool IsExpiredAt(
const TimeStamp& now)
const;
96 std::string ToString()
const {
return time_; }
97 bool operator<(
const TimeStamp& other)
const;
98 bool operator>(
const TimeStamp& other)
const;
99 friend std::ostream& operator<<(std::ostream& os,
const TimeStamp& t);
100 bool operator==(
const TimeStamp& rhs)
const {
return time_ == rhs.time_; }
112 std::ostream& operator<<(std::ostream& os,
const TimeStamp& t);
117 using UpdateRequestId = std::string;
121 Json::Value toJson();
122 static Package fromJson(
const std::string& );
143 kNeedCompletion = 21,
153 : num_code(in_num_code), text_code(std::move(text_code_in)) {}
155 bool operator==(
const ResultCode& rhs)
const {
return num_code == rhs.num_code && toString() == rhs.toString(); }
156 bool operator!=(
const ResultCode& rhs)
const {
return !(*
this == rhs); }
157 friend std::ostream& operator<<(std::ostream& os,
const ResultCode& result_code);
160 std::string text_code;
164 std::string toString()
const {
165 if (text_code !=
"") {
169 return std::string(string_repr.at(num_code));
173 std::string toRepr()
const;
174 static ResultCode fromRepr(
const std::string& repr);
177 static const std::map<Numeric, const char*> string_repr;
180 std::ostream& operator<<(std::ostream& os,
const ResultCode& result_code);
185 : success(result_code_in.num_code == ResultCode::Numeric::kOk),
186 result_code(std::move(result_code_in)),
187 description(std::move(description_in)) {}
189 : success(success_in), result_code(std::move(result_code_in)), description(std::move(description_in)) {}
191 Json::Value toJson()
const;
192 bool isSuccess()
const {
return success; };
193 bool needCompletion()
const {
return result_code == ResultCode::Numeric::kNeedCompletion; }
196 ResultCode result_code{ResultCode::Numeric::kOk};
197 std::string description;