diff --git a/auth-client.cc b/auth-client.cc index cdf2872..9dc4a1b 100644 --- a/auth-client.cc +++ b/auth-client.cc @@ -1,13 +1,4 @@ -#include -#include - #include -#include -#include -#include -#include -#include -#include #include "crypto.h" @@ -48,24 +39,10 @@ int main(int argc, char *argv[]) { } std::string secret_key; - { - std::fstream secret_key_file(secret_key_filename, std::fstream::in); - if (secret_key_file.fail()) { - std::cerr << "Failed to open secret key file" << std::endl; - return 1; - } - secret_key_file >> secret_key; - } + CryptoBase::ReadKeyFromFile(secret_key_filename, &secret_key); std::string server_public_key; - { - std::fstream server_public_key_file(server_public_key_filename, std::fstream::in); - if (server_public_key_file.fail()) { - std::cerr << "Failed to open server public key file" << std::endl; - return 1; - } - server_public_key_file >> server_public_key; - } + CryptoBase::ReadKeyFromFile(server_public_key_filename, &server_public_key); auto client = CryptoPubClient::FromHostname(server_address, server_port, secret_key, server_public_key); client->Loop(); diff --git a/auth-server.cc b/auth-server.cc index 8bdc090..96feb01 100644 --- a/auth-server.cc +++ b/auth-server.cc @@ -1,12 +1,4 @@ -#include -#include - #include -#include -#include -#include -#include -#include #include "crypto.h" @@ -28,14 +20,7 @@ int main(int argc, char *argv[]) { } std::string secret_key; - { - std::fstream secret_key_file(secret_key_filename, std::fstream::in); - if (secret_key_file.fail()) { - std::cerr << "Failed to open secret key file" << std::endl; - return 1; - } - secret_key_file >> secret_key; - } + CryptoBase::ReadKeyFromFile(secret_key_filename, &secret_key); CryptoPubServer server(secret_key); server.Loop(); diff --git a/crypto.cc b/crypto.cc index f9ecb1e..ce10e15 100644 --- a/crypto.cc +++ b/crypto.cc @@ -4,6 +4,7 @@ #include #include +#include #include #include @@ -46,6 +47,18 @@ void CryptoBase::DerivePublicKey(const std::string& secret_key, std::string* pub public_key->assign((char*)buf, crypto_box_PUBLICKEYBYTES); } +void CryptoBase::ReadKeyFromFile(const std::string& filename, std::string* key) { + std::fstream key_file(filename, std::fstream::in); + assert(!key_file.fail()); + key_file >> *key; +} + +void CryptoBase::WriteKeyToFile(const std::string& filename, const std::string& key) { + std::fstream key_file(filename, std::fstream::out); + assert(!key_file.fail()); + key_file << key; +} + void CryptoBase::EncodeEncryptAppend(const std::string& secret_key, const std::string& public_key, const TLVNode& input, TLVNode* container) { assert(secret_key.length() == crypto_box_SECRETKEYBYTES); assert(public_key.length() == crypto_box_PUBLICKEYBYTES); diff --git a/crypto.h b/crypto.h index 5416356..7abe225 100644 --- a/crypto.h +++ b/crypto.h @@ -13,6 +13,9 @@ class CryptoBase { static void GenKey(std::string* key); static void GenKeyPair(std::string* secret_key, std::string* public_key); static void DerivePublicKey(const std::string& secret_key, std::string* public_key); + static void ReadKeyFromFile(const std::string& filename, std::string* key); + static void WriteKeyToFile(const std::string& filename, const std::string& key); + static void EncodeEncryptAppend(const std::string& secret_key, const std::string& public_key, const TLVNode& input, TLVNode* container); TLVNode *DecryptDecode(const std::string& secret_key, const std::string& public_key, const TLVNode& input); diff --git a/gen-key.cc b/gen-key.cc index 6cba2ff..ca38135 100644 --- a/gen-key.cc +++ b/gen-key.cc @@ -13,14 +13,7 @@ int main(int argc, char *argv[]) { std::string key; CryptoBase::GenKey(&key); - { - std::fstream key_file(argv[1], std::fstream::out); - if (key_file.fail()) { - std::cerr << "Failed to open key file" << std::endl; - return 1; - } - key_file << key; - } + CryptoBase::WriteKeyToFile(argv[1], key); return 0; } diff --git a/gen-keypair.cc b/gen-keypair.cc index 2f45fa8..6fbce4d 100644 --- a/gen-keypair.cc +++ b/gen-keypair.cc @@ -13,23 +13,8 @@ int main(int argc, char *argv[]) { std::string secret_key, public_key; CryptoBase::GenKeyPair(&secret_key, &public_key); - { - std::fstream secret_key_file(argv[1], std::fstream::out); - if (secret_key_file.fail()) { - std::cerr << "Failed to open secret key file" << std::endl; - return 1; - } - secret_key_file << secret_key; - } - - { - std::fstream public_key_file(argv[2], std::fstream::out); - if (public_key_file.fail()) { - std::cerr << "Failed to open public key file" << std::endl; - return 1; - } - public_key_file << public_key; - } + CryptoBase::WriteKeyToFile(argv[1], secret_key); + CryptoBase::WriteKeyToFile(argv[2], public_key); return 0; }