♻️ refactor: splitting into in-mem and on-disk formats, for 'check key' cmd

main
_ 2021-01-19 23:01:17 +00:00
parent 7b11633015
commit ce3342d961
2 changed files with 25 additions and 5 deletions

View File

@ -9,6 +9,15 @@
namespace BareMinimumCrypto {
using nlohmann::json;
vector <uint8_t> SigningKeyFile::to_msgpack () const {
const auto j = json {
{"salt", json::binary (salt)},
{"time_created", time_created.x},
{"pubkey", json::binary (pubkey)},
};
return json::to_msgpack (j);
}
// The whole process for a passphrased key is like this:
// Passphrase + random salt -->
// Seed -->
@ -46,12 +55,12 @@ namespace BareMinimumCrypto {
return nullopt;
}
const auto j = json {
{"salt", json::binary (salt)},
{"time_created", Instant::now ().x},
{"pubkey", json::binary (key.pk)},
SigningKeyFile key_on_disk {
salt,
Instant::now (),
key.pk
};
const auto msg = json::to_msgpack (j);
const auto msg = key_on_disk.to_msgpack ();
ofstream f;
f.open (file_path, ofstream::binary);

View File

@ -11,6 +11,15 @@
namespace BareMinimumCrypto {
using namespace std;
struct SigningKeyFile {
vector <uint8_t> salt;
Instant time_created;
vector <uint8_t> pubkey;
vector <uint8_t> to_msgpack () const;
static optional <SigningKeyFile> try_from_msgpack (const vector <uint8_t> & msg);
};
struct SigningKey {
vector <uint8_t> pk;
vector <uint8_t> sk;
@ -25,6 +34,8 @@ namespace BareMinimumCrypto {
static optional <SigningKey> load_from_file (const string & file_path, const string & passphrase);
static optional <SigningKeyFile> check_file (const string & file_path);
vector <uint8_t> pubkey () const;
vector <uint8_t> pub_to_msgpack () const;