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));
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");
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();
const Name & getName() const noexcept
Get the data name.
Represents an Interest packet.
const Name & getName() const noexcept
bool matchesData(const Data &data) const
Check if Interest can be satisfied by data.
Represents an absolute name.
size_t size() const noexcept
Returns the number of components.
bool isPrefixOf(const Name &other) const noexcept
Check if this name is a prefix of another name.
std::pair< time::system_clock::TimePoint, time::system_clock::TimePoint > getPeriod() const
Get the stored validity period.
Represents a container for verified certificates.
void insert(const Certificate &cert)
Insert certificate into cache.
CertificateCache(const time::nanoseconds &maxLifetime=getDefaultLifetime())
Create an object for certificate cache.
void clear()
Remove all certificates from cache.
static time::nanoseconds getDefaultLifetime()
const Certificate * find(const Name &certPrefix) const
Get certificate given key name.
Represents an NDN certificate.
ValidityPeriod getValidityPeriod() const
Get validity period of the certificate.
static time_point now() noexcept
#define NDN_LOG_DEBUG(expression)
Log at DEBUG level.
#define NDN_LOG_INFO(expression)
Log at INFO level.
#define NDN_LOG_INIT(name)
Define a non-member log module.
std::string toIsoString(const system_clock::time_point &timePoint)
Convert to the ISO 8601 string representation, basic format (YYYYMMDDTHHMMSS,fffffffff).
boost::chrono::nanoseconds nanoseconds