make load functions part of the API

master
Volker Birk 1 year ago
parent 7d0f844946
commit b415b0dff4

@ -84,6 +84,30 @@ namespace SignedPackage {
}
}
static void Load(const std::string& filename, CryptoPP::BufferedTransformation& bt)
{
CryptoPP::FileSource file(filename.c_str(), true);
file.TransferTo(bt);
bt.MessageEnd();
}
void LoadPrivateKey(const std::string& filename, CryptoPP::PrivateKey& key)
{
CryptoPP::ByteQueue queue;
Load(filename, queue);
key.Load(queue);
}
void LoadPublicKey(const std::string& filename, CryptoPP::PublicKey& key)
{
CryptoPP::ByteQueue queue;
Load(filename, queue);
key.Load(queue);
}
void extract_archive(
std::string pkg_path,
std::string target_path
@ -165,7 +189,7 @@ namespace SignedPackage {
_sigfile.read(signature, size);
std::ifstream _archive(archive);
bool valid = verifier.VerifyStream(_archive, signature, size);
bool valid = verifier.VerifyStream(_archive, (unsigned char*) signature, size);
if (!valid)
throw std::runtime_error("signature does not match");
}

@ -17,6 +17,9 @@ namespace SignedPackage {
{ "PER_MACHINE_DIRECTORY", ::per_machine_directory() }
};
void LoadPrivateKey(const std::string& filename, CryptoPP::PrivateKey& key);
void LoadPublicKey(const std::string& filename, CryptoPP::PublicKey& key);
void extract_archive(
std::string pkg_path,
std::string target_path

@ -3,30 +3,6 @@
#include <cryptopp/files.h>
#include <cryptopp/xed25519.h>
void Load(const std::string& filename, CryptoPP::BufferedTransformation& bt)
{
CryptoPP::FileSource file(filename.c_str(), true);
file.TransferTo(bt);
bt.MessageEnd();
}
void LoadPrivateKey(const std::string& filename, CryptoPP::PrivateKey& key)
{
CryptoPP::ByteQueue queue;
Load(filename, queue);
key.Load(queue);
}
void LoadPublicKey(const std::string& filename, CryptoPP::PublicKey& key)
{
CryptoPP::ByteQueue queue;
Load(filename, queue);
key.Load(queue);
}
void test_extract_archive()
{
std::cout << "\n*** test: extract_archive()\n\n";
@ -59,7 +35,7 @@ void test_decrypt_distribution_key()
std::cout << "\n*** test: decrypt_distribution_key()\n\n";
CryptoPP::RSA::PrivateKey provisioning_key;
LoadPrivateKey("provisioning_key.der", provisioning_key);
SignedPackage::LoadPrivateKey("provisioning_key.der", provisioning_key);
SignedPackage::decrypt_distribution_key("DIST.KEY", provisioning_key);
}
@ -69,7 +45,7 @@ void test_decrypt_distribution_archive()
std::cout << "\n*** test: decrypt_distribution_archive()\n\n";
CryptoPP::RSA::PrivateKey provisioning_key;
LoadPrivateKey("provisioning_key.der", provisioning_key);
SignedPackage::LoadPrivateKey("provisioning_key.der", provisioning_key);
SignedPackage::decrypt_distribution_archive("DIST.A", "DIST.KEY",
provisioning_key);
@ -80,10 +56,10 @@ void test_extract_deployment_archive()
std::cout << "\n*** test: extract_deployment_archive()\n\n";
CryptoPP::ed25519PublicKey deployment_key;
LoadPublicKey("deployment_key-pub.der", deployment_key);
SignedPackage::LoadPublicKey("deployment_key-pub.der", deployment_key);
CryptoPP::RSA::PrivateKey provisioning_key;
LoadPrivateKey("provisioning_key.der", provisioning_key);
SignedPackage::LoadPrivateKey("provisioning_key.der", provisioning_key);
std::filesystem::path tmp_path =
SignedPackage::extract_deployment_archive(deployment_key,
@ -98,10 +74,10 @@ void test_install_if_location_empty()
std::cout << "\n*** test: install_if_location_empty()\n\n";
CryptoPP::ed25519PublicKey deployment_key;
LoadPublicKey("deployment_key-pub.der", deployment_key);
SignedPackage::LoadPublicKey("deployment_key-pub.der", deployment_key);
CryptoPP::RSA::PrivateKey provisioning_key;
LoadPrivateKey("provisioning_key.der", provisioning_key);
SignedPackage::LoadPrivateKey("provisioning_key.der", provisioning_key);
SignedPackage::install_if_location_empty(deployment_key, provisioning_key,
"pEp.ppk", "PER_USER_DIRECTORY", "pEp.target");

Loading…
Cancel
Save