38 : m_certsByTime(m_certs.
get<0>())
39 , m_certsByName(m_certs.
get<1>())
40 , m_maxLifetime(maxLifetime)
49 if (notAfterTime < now) {
56 << time::duration_cast<time::seconds>(removalTime - now));
57 m_certs.insert(Entry(cert, removalTime));
69 const_cast<CertificateCache*>(
this)->refresh();
70 if (certPrefix.
size() > 0 && certPrefix[-1].isImplicitSha256Digest()) {
71 NDN_LOG_INFO(
"Certificate search using name with the implicit digest is not yet supported");
73 auto itr = m_certsByName.lower_bound(certPrefix);
74 if (itr == m_certsByName.end() || !certPrefix.
isPrefixOf(itr->getCertName()))
82 if (interest.
getName().
size() > 0 && interest.
getName()[-1].isImplicitSha256Digest()) {
83 NDN_LOG_INFO(
"Certificate search using name with implicit digest is not yet supported");
85 const_cast<CertificateCache*>(
this)->refresh();
87 for (
auto i = m_certsByName.lower_bound(interest.
getName());
90 const auto& cert = i->cert;
99 CertificateCache::refresh()
103 auto cIt = m_certsByTime.begin();
104 while (cIt != m_certsByTime.end() && cIt->removalTime < now) {
105 m_certsByTime.erase(cIt);
106 cIt = m_certsByTime.begin();
Copyright (c) 2011-2015 Regents of the University of California.
The certificate following the certificate format naming convention.
const Name & getName() const
Get name.
const Certificate * find(const Name &certPrefix) const
Get certificate given key name.
bool isPrefixOf(const Name &other) const
Check if this name is a prefix of another name.
#define NDN_LOG_DEBUG(expression)
R & get(variant< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 > &v, nonstd_lite_in_place_type_t(R)=nonstd_lite_in_place_type(R))
void clear()
Remove all certificates from cache.
Represents an Interest packet.
static time::nanoseconds getDefaultLifetime()
static time_point now() noexcept
Represents a container for verified certificates.
CertificateCache(const time::nanoseconds &maxLifetime=getDefaultLifetime())
Create an object for certificate cache.
std::pair< time::system_clock::TimePoint, time::system_clock::TimePoint > getPeriod() const
Get the stored validity period.
#define NDN_LOG_INFO(expression)
bool matchesData(const Data &data) const
Check if Interest can be satisfied by data.
Represents an absolute name.
std::string toIsoString(const system_clock::TimePoint &timePoint)
Convert to the ISO string representation of the time (YYYYMMDDTHHMMSS,fffffffff)
size_t size() const
Get number of components.
void insert(const Certificate &cert)
Insert certificate into cache.
#define NDN_LOG_INIT(name)
declare a log module
ValidityPeriod getValidityPeriod() const
Get validity period of the certificate.
const Name & getName() const