security: introduce KeyChain::makeCertificate
KeyChain::makeCertificate() captures a common routine of creating and
signing a certificate. Having it in the library allows deduplicating
similar code elsewhere.
Also add "find by certificate name" tests for CertificateCache and
TrustAnchorContainer.
refs #5112
Change-Id: I954587e1c03d6b372e3b4f04e702339d1ff1533e
diff --git a/tests/unit/security/certificate-cache.t.cpp b/tests/unit/security/certificate-cache.t.cpp
index f3b400e..8c715eb 100644
--- a/tests/unit/security/certificate-cache.t.cpp
+++ b/tests/unit/security/certificate-cache.t.cpp
@@ -1,6 +1,6 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
- * Copyright (c) 2013-2021 Regents of the University of California.
+ * Copyright (c) 2013-2022 Regents of the University of California.
*
* This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
*
@@ -42,6 +42,23 @@
cert = identity.getDefaultKey().getDefaultCertificate();
}
+ void
+ checkFindByInterest(const Name& name, bool canBePrefix, optional<Certificate> expected) const
+ {
+ Interest interest(name);
+ interest.setCanBePrefix(canBePrefix);
+ BOOST_TEST_CONTEXT(interest) {
+ auto found = certCache.find(interest);
+ if (expected) {
+ BOOST_REQUIRE(found != nullptr);
+ BOOST_CHECK_EQUAL(found->getName(), expected->getName());
+ }
+ else {
+ BOOST_CHECK(found == nullptr);
+ }
+ }
+ }
+
public:
CertificateCache certCache;
Identity identity;
@@ -75,18 +92,13 @@
{
BOOST_CHECK_NO_THROW(certCache.insert(cert));
- Interest i;
- i.setCanBePrefix(true);
- i.setName(cert.getIdentity());
- BOOST_CHECK(certCache.find(i) != nullptr);
- i.setName(cert.getKeyName());
- BOOST_CHECK(certCache.find(i) != nullptr);
- i.setName(Name(cert.getName()).appendVersion());
- BOOST_CHECK(certCache.find(i) == nullptr);
+ checkFindByInterest(cert.getIdentity(), true, cert);
+ checkFindByInterest(cert.getKeyName(), true, cert);
+ checkFindByInterest(cert.getName(), false, cert);
+ checkFindByInterest(Name(cert.getName()).appendVersion(), true, nullopt);
advanceClocks(12_s);
- i.setName(cert.getIdentity());
- BOOST_CHECK(certCache.find(i) == nullptr);
+ checkFindByInterest(cert.getIdentity(), true, nullopt);
}
BOOST_AUTO_TEST_SUITE_END() // TestCertificateCache