blob: 69052ebe26ec6f118db302ce0bed7de19cf2b8d2 [file] [log] [blame]
#include <ndn-cpp-dev/security/identity-certificate.hpp>
#include <ndn-cpp-dev/encoding/block.hpp>
#include "nlsr_sm.hpp"
#include "nlsr_km.hpp"
namespace nlsr
{
void
KeyManager::initKeyManager(ConfParameter &cp)
{
string processIdentityName(cp.getRootKeyPrefix());
processIdentityName += "/";
processIdentityName += cp.getSiteName();
processIdentityName += "/";
processIdentityName += "R.Start";
processIdentityName += "/";
processIdentityName += cp.getRouterName();
processIdentityName += "/";
processIdentityName += "nlsr";
cout<<"Proces Identity Name: "<<processIdentityName<<endl;
ndn::Name identityName(processIdentityName);
routerIdentity=identityName;
ndn::KeyChain::deleteIdentity(routerIdentity);
routerCertName = ndn::KeyChain::createIdentity(routerIdentity);
cout<<"Certificate Name: "<<routerCertName.toUri()<<endl;
routerKeyName=
ndn::IdentityCertificate::certificateNameToPublicKeyName(routerCertName);
cout<<"Key Name: "<<routerKeyName.toUri()<<endl;
initCertSeqFromFile(cp.getSeqFileDir());
}
ndn::Name
KeyManager::getRouterCertName()
{
return routerCertName;
}
uint32_t
KeyManager::getCertSeqNo()
{
return certSeqNo;
}
void
KeyManager::setCerSeqNo(uint32_t csn)
{
certSeqNo=csn;
}
void
KeyManager::initCertSeqFromFile(string certSeqFileDir)
{
certSeqFileNameWithPath=certSeqFileDir;
if( certSeqFileNameWithPath.empty() )
{
SequencingManager sm;
certSeqFileNameWithPath=sm.getUserHomeDirectory();
}
certSeqFileNameWithPath += "/nlsrCertSeqNo.txt";
cout<<"Key Seq File Name: "<< certSeqFileNameWithPath<<endl;
std::ifstream inputFile(certSeqFileNameWithPath.c_str(),ios::binary);
if ( inputFile.good() )
{
inputFile>>certSeqNo;
certSeqNo++;
}
else
{
certSeqNo=1;
}
writeCertSeqToFile();
}
void
KeyManager::writeCertSeqToFile()
{
std::ofstream outputFile(certSeqFileNameWithPath.c_str(),ios::binary);
outputFile<<certSeqNo;
outputFile.close();
}
}