31 const uint64_t ConfParameter::SYNC_VERSION = 8;
33 static std::unique_ptr<ndn::security::v2::CertificateFetcherDirectFetch>
36 auto fetcher = std::make_unique<ndn::security::v2::CertificateFetcherDirectFetch>(face);
37 fetcher->setSendDirectInterestOnly(
true);
42 const std::string& confFileName)
43 : m_confFileName(confFileName)
61 , m_prefixUpdateValidator(
std::make_unique<
ndn::security::v2::CertificateFetcherDirectFetch>(face))
62 , m_keyChain(keyChain)
75 NLSR_LOG_INFO(
"Hello Interest retry number: " << m_interestRetryNumber);
76 NLSR_LOG_INFO(
"Hello Interest resend second: " << m_interestResendTime);
77 NLSR_LOG_INFO(
"Info Interest interval: " << m_infoInterestInterval);
79 NLSR_LOG_INFO(
"FIB Entry refresh time: " << m_lsaRefreshTime * 2);
82 NLSR_LOG_INFO(
"Max Faces Per Prefix: " << m_maxFacesPerPrefix);
87 for (
auto const& value: m_corTheta) {
94 NLSR_LOG_INFO(
"Adjacency LSA build interval: " << m_adjLsaBuildInterval);
95 NLSR_LOG_INFO(
"Routing calculation interval: " << m_routingCalcInterval);
101 m_network = networkName;
103 m_syncPrefix.append(
"localhop");
104 m_syncPrefix.append(m_network);
105 m_syncPrefix.append(
"nlsr");
106 m_syncPrefix.append(
"sync");
107 m_syncPrefix.appendVersion(SYNC_VERSION);
109 m_lsaPrefix.append(
"localhop");
110 m_lsaPrefix.append(m_network);
111 m_lsaPrefix.append(
"nlsr");
112 m_lsaPrefix.append(
"LSA");
119 m_validator.loadAnchor(
"Authoritative-Certificate", ndn::security::v2::Certificate(cert));
120 m_prefixUpdateValidator.loadAnchor(
"Authoritative-Certificate", ndn::security::v2::Certificate(cert));
123 shared_ptr<ndn::security::v2::Certificate>
128 ndn::Name nlsrInstanceName(m_routerPrefix);
129 nlsrInstanceName.append(
"nlsr");
132 m_keyChain.deleteIdentity(m_keyChain.getPib().getIdentity(nlsrInstanceName));
134 catch (
const std::exception& e) {
138 ndn::security::Identity nlsrInstanceIdentity;
140 nlsrInstanceIdentity = m_keyChain.createIdentity(nlsrInstanceName);
142 catch (
const std::exception& e) {
144 NLSR_LOG_ERROR(
"Unable to create identity, NLSR will run without security!");
145 NLSR_LOG_ERROR(
"Can be ignored if running in non-production environments.");
148 auto certificate = std::make_shared<ndn::security::v2::Certificate>();
149 auto nlsrInstanceKey = nlsrInstanceIdentity.getDefaultKey();
150 ndn::Name certificateName = nlsrInstanceKey.getName();
151 certificateName.append(
"NA");
152 certificateName.appendVersion();
154 certificate->setName(certificateName);
157 certificate->setContentType(ndn::tlv::ContentType_Key);
158 certificate->setFreshnessPeriod(365_days);
161 certificate->setContent(nlsrInstanceKey.getPublicKey().data(),
162 nlsrInstanceKey.getPublicKey().size());
165 ndn::SignatureInfo signatureInfo;
166 signatureInfo.setValidityPeriod(ndn::security::ValidityPeriod(ndn::time::system_clock::TimePoint(),
167 ndn::time::system_clock::now()
171 m_keyChain.sign(*certificate,
172 ndn::security::SigningInfo(m_keyChain.getPib().getIdentity(m_routerPrefix))
173 .setSignatureInfo(signatureInfo));
175 catch (
const std::exception& e) {
176 NLSR_LOG_ERROR(
"Router's " << e.what() <<
", NLSR is running without security. " <<
177 "If security is enabled in the configuration, NLSR will not converge.");
181 m_signingInfo = ndn::security::SigningInfo(ndn::security::SigningInfo::SIGNER_TYPE_ID,
void setNetwork(const ndn::Name &networkName)
#define NLSR_LOG_DEBUG(x)
Copyright (c) 2014-2018, The University of Memphis, Regents of the University of California.
const ndn::time::seconds & getLsaInterestLifetime() const
#define INIT_LOGGER(name)
shared_ptr< ndn::security::v2::Certificate > initializeKey()
static std::unique_ptr< ndn::security::v2::CertificateFetcherDirectFetch > makeCertificateFetcher(ndn::Face &face)
#define NLSR_LOG_ERROR(x)
Copyright (c) 2014-2019, The University of Memphis, Regents of the University of California, Arizona Board of Regents.
void loadCertToValidator(const ndn::security::v2::Certificate &cert)
ConfParameter(ndn::Face &face, ndn::KeyChain &keyChain, const std::string &confFileName="nlsr.conf")
uint32_t getRouterDeadInterval() const
#define NLSR_LOG_TRACE(x)
void writeLog()
Dump the current state of all attributes to the log.