1#ifndef NDNPH_CLI_KEYCHAIN_HPP
2#define NDNPH_CLI_KEYCHAIN_HPP
4#include "../keychain/ec.hpp"
5#include "../keychain/keychain.hpp"
15 static bool ready =
false;
17 const char* env = getenv(
"NDNPH_KEYCHAIN");
19 fprintf(stderr,
"ndnph::cli::openKeyChain missing NDNPH_KEYCHAIN environment variable\n");
23 ready = keyChain.
open(env);
25 fprintf(stderr,
"ndnph::cli::openKeyChain error\n");
35 bool ok = std::all_of(
id.begin(),
id.end(), [](
char ch) {
36 return static_cast<bool>(std::islower(ch)) ||
static_cast<bool>(std::isdigit(ch));
38 if (
id.empty() || !ok) {
40 "ndnph::cli::checkKeyChainId(%s) id must be non-empty and only contain digits and "
41 "lower-case letters\n",
52 fprintf(stderr,
"ndnph::cli::loadKey(%s) not found in KeyChain\n",
id.data());
62 fprintf(stderr,
"ndnph::cli::loadCertificate(%s) not found in KeyChain\n",
id.data());
72 if (!data || !
input(region, data, is) ||
74 fprintf(stderr,
"ndnph::cli::inputCertificate parse cert error\n");
Data packet.
Definition data.hpp:136
Data get(const char *id, Region ®ion)
Definition keychain.hpp:26
File based key and certificate store.
Definition keychain.hpp:36
bool open(Arg &&... arg)
Open the FileStore backend in both key store and certificate store.
Definition keychain.hpp:46
KeyChainCerts certs
Definition keychain.hpp:52
Region-based memory allocator thats owns memory of NDNph objects.
Definition region.hpp:9
RefType create(Arg &&... arg)
Allocate and create an object, and return its reference.
Definition region.hpp:90
EC private key.
Definition ec.hpp:180
EC public key.
Definition ec.hpp:65
bool isCertificate(const Data &data)
Determine if the Data packet is a certificate.
Definition certificate.hpp:170
void loadKey(Region ®ion, const std::string &id, EcPrivateKey &pvt, EcPublicKey &pub)
Load a key from the KeyChain.
Definition keychain.hpp:50
std::string checkKeyChainId(const std::string &id)
Check KeyChain object ID has the proper format.
Definition keychain.hpp:34
KeyChain & openKeyChain()
Open KeyChain according to `NDNPH_KEYCHAIN` environ.
Definition keychain.hpp:13
bool input(Region ®ion, T &target, std::istream &is=std::cin)
Read and decode from input stream.
Definition io.hpp:15
Data loadCertificate(Region ®ion, const std::string &id)
Load a certificate from the KeyChain.
Definition keychain.hpp:59
Data inputCertificate(Region ®ion, EcPublicKey *pub=nullptr, std::istream &is=std::cin)
Load a certificate in binary format from input stream.
Definition keychain.hpp:70
bool load(KeyChain &keyChain, const char *id, Region ®ion, EcPrivateKey &pvt, EcPublicKey &pub)
Load key pair from KeyChain.
Definition ec.hpp:301