🚧 wip: working on key signing still
parent
ddba8953fa
commit
20ee11b4f8
|
@ -14,7 +14,7 @@ bmc_main.o: bmc_main.cpp expiring_signature.h receiver.h sender.h signing_key.h
|
||||||
base64.o: cpp-base64/base64.cpp cpp-base64/base64.h
|
base64.o: cpp-base64/base64.cpp cpp-base64/base64.h
|
||||||
$(CXX) -o $@ $(CXX_FLAGS) $<
|
$(CXX) -o $@ $(CXX_FLAGS) $<
|
||||||
|
|
||||||
expiring_signature.o: expiring_signature.cpp expiring_signature.h
|
expiring_signature.o: expiring_signature.cpp expiring_signature.h time_helpers.h
|
||||||
$(CXX) -o $@ $(CXX_FLAGS) $<
|
$(CXX) -o $@ $(CXX_FLAGS) $<
|
||||||
|
|
||||||
receiver.o: receiver.cpp receiver.h expiring_signature.h sodium_helpers.h string_helpers.h time_helpers.h
|
receiver.o: receiver.cpp receiver.h expiring_signature.h sodium_helpers.h string_helpers.h time_helpers.h
|
||||||
|
|
|
@ -215,6 +215,13 @@ int main (int argc, char ** argv) {
|
||||||
auto pubkey_opt = base64_decode (pubkey_b64);
|
auto pubkey_opt = base64_decode (pubkey_b64);
|
||||||
const auto pubkey = std::move (*pubkey_opt);
|
const auto pubkey = std::move (*pubkey_opt);
|
||||||
|
|
||||||
|
auto sig_opt = key.sign (pubkey, TimeRange::from_start_and_dur (Instant::now (), about_3_months));
|
||||||
|
if (! sig_opt) {
|
||||||
|
cerr << "Error, could not sign pubkey." << endl;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
const auto sig = std::move (*sig_opt);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (result.count ("test")) {
|
else if (result.count ("test")) {
|
||||||
|
|
|
@ -12,4 +12,26 @@ namespace BareMinimumCrypto {
|
||||||
bool ExpiringSignature::operator != (const ExpiringSignature & o) const {
|
bool ExpiringSignature::operator != (const ExpiringSignature & o) const {
|
||||||
return ! (*this == o);
|
return ! (*this == o);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Bytes KeyCertFile::to_msgpack () const {
|
||||||
|
const json cert_j {
|
||||||
|
{"pubkey", json::binary (pubkey)},
|
||||||
|
{"not_before", valid_time.not_before},
|
||||||
|
{"not_after", valid_time.not_after},
|
||||||
|
};
|
||||||
|
|
||||||
|
const auto cert = json::to_msgpack (cert_j);
|
||||||
|
|
||||||
|
const json j {
|
||||||
|
{"sig", json::binary (sig)},
|
||||||
|
{"cert", json::binary (cert)},
|
||||||
|
};
|
||||||
|
|
||||||
|
return json::to_msgpack (j);
|
||||||
|
}
|
||||||
|
|
||||||
|
optional <KeyCertFile> KeyCertFile::try_from_msgpack (const json & msg)
|
||||||
|
{
|
||||||
|
return nullopt;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,8 +6,11 @@
|
||||||
|
|
||||||
#include "json.hpp"
|
#include "json.hpp"
|
||||||
|
|
||||||
|
#include "time_helpers.h"
|
||||||
|
|
||||||
namespace BareMinimumCrypto {
|
namespace BareMinimumCrypto {
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
using nlohmann::json;
|
||||||
|
|
||||||
typedef vector <uint8_t> Bytes;
|
typedef vector <uint8_t> Bytes;
|
||||||
|
|
||||||
|
@ -19,4 +22,15 @@ namespace BareMinimumCrypto {
|
||||||
bool operator == (const ExpiringSignature & o) const;
|
bool operator == (const ExpiringSignature & o) const;
|
||||||
bool operator != (const ExpiringSignature & o) const;
|
bool operator != (const ExpiringSignature & o) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct KeyCertFile {
|
||||||
|
Bytes sig;
|
||||||
|
|
||||||
|
// The rest of the fields are inside a nested msgpack that gets signed
|
||||||
|
Bytes pubkey;
|
||||||
|
TimeRange valid_time;
|
||||||
|
|
||||||
|
Bytes to_msgpack () const;
|
||||||
|
static optional <KeyCertFile> try_from_msgpack (const json & msg);
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue