ca: fallback to CA identity key to sign prefix registrations
Change-Id: I19968754b5693a664fd92a28dddd636535b81fa6
diff --git a/src/ca-module.cpp b/src/ca-module.cpp
index 09c0b9c..b5547e0 100644
--- a/src/ca-module.cpp
+++ b/src/ca-module.cpp
@@ -74,11 +74,18 @@
void
CaModule::registerPrefix()
{
- // register prefixes
Name prefix = m_config.caProfile.caPrefix;
prefix.append("CA");
- auto prefixId = m_face.registerPrefix(prefix,
+ ndn::security::pib::Identity identity;
+ try {
+ identity = m_keyChain.getPib().getDefaultIdentity();
+ }
+ catch (const ndn::security::Pib::Error&) {
+ identity = m_keyChain.getPib().getIdentity(m_config.caProfile.caPrefix);
+ }
+
+ auto prefixHandle = m_face.registerPrefix(prefix,
[&] (const Name& name) {
// register INFO RDR metadata prefix
const auto& metaDataComp = ndn::MetadataObject::getKeywordComponent();
@@ -108,8 +115,9 @@
NDN_LOG_TRACE("Prefix " << name << " got registered");
},
- [this] (auto&&, const auto& reason) { onRegisterFailed(reason); });
- m_registeredPrefixHandles.push_back(prefixId);
+ [this] (auto&&, const auto& reason) { onRegisterFailed(reason); },
+ ndn::signingByIdentity(identity));
+ m_registeredPrefixHandles.push_back(prefixHandle);
}
void
diff --git a/tests/unit-tests/ca-module.t.cpp b/tests/unit-tests/ca-module.t.cpp
index 9fcee0f..3b0b02b 100644
--- a/tests/unit-tests/ca-module.t.cpp
+++ b/tests/unit-tests/ca-module.t.cpp
@@ -40,6 +40,7 @@
BOOST_AUTO_TEST_CASE(Initialization)
{
+ m_keyChain.createIdentity(Name("/ndn"));
ndn::DummyClientFace face(m_io, m_keyChain, {true, true});
CaModule ca(face, m_keyChain, "tests/unit-tests/config-files/config-ca-1", "ca-storage-memory");
BOOST_CHECK_EQUAL(ca.getCaConf().caProfile.caPrefix, "/ndn");
@@ -498,7 +499,7 @@
auto key = identity.getDefaultKey();
auto cert = key.getDefaultCertificate();
- ndn::DummyClientFace face(m_io, {true, true});
+ ndn::DummyClientFace face(m_io, m_keyChain, {true, true});
CaModule ca(face, m_keyChain, "tests/unit-tests/config-files/config-ca-1", "ca-storage-memory");
advanceClocks(time::milliseconds(20), 60);
@@ -569,7 +570,7 @@
auto key = identity.getDefaultKey();
auto cert = key.getDefaultCertificate();
- ndn::DummyClientFace face(m_io, {true, true});
+ ndn::DummyClientFace face(m_io, m_keyChain, {true, true});
CaModule ca(face, m_keyChain, "tests/unit-tests/config-files/config-ca-1", "ca-storage-memory");
advanceClocks(time::milliseconds(20), 60);
diff --git a/tests/unit-tests/requester.t.cpp b/tests/unit-tests/requester.t.cpp
index a3fa8d5..03cb3de 100644
--- a/tests/unit-tests/requester.t.cpp
+++ b/tests/unit-tests/requester.t.cpp
@@ -77,6 +77,7 @@
availableNames.emplace_back("/site1");
availableNames.emplace_back("/site2");
+ m_keyChain.createIdentity(Name("/ndn"));
ndn::DummyClientFace face(m_io, m_keyChain, {true, true});
ca::CaModule ca(face, m_keyChain, "tests/unit-tests/config-files/config-ca-5", "ca-storage-memory");