Add forwarding hint support
Change-Id: Ie8a1d45f3abe0377a3b6c0cff08d27824b2861b1
diff --git a/src/detail/challenge-encoder.cpp b/src/detail/challenge-encoder.cpp
index 0f85fdc..c2bdd68 100644
--- a/src/detail/challenge-encoder.cpp
+++ b/src/detail/challenge-encoder.cpp
@@ -41,6 +41,7 @@
}
if (!issuedCertName.empty()) {
response.push_back(makeNestedBlock(tlv::IssuedCertName, issuedCertName));
+ response.push_back(makeNestedBlock(ndn::tlv::ForwardingHint, Name(request.caPrefix).append("CA")));
}
response.encode();
@@ -81,6 +82,9 @@
case tlv::IssuedCertName:
state.m_issuedCertName = Name(item.blockFromValue());
break;
+ case ndn::tlv::ForwardingHint:
+ state.m_forwardingHint = Name(item.blockFromValue());
+ break;
case tlv::ParameterKey:
if (readString(item) == "nonce") {
lookingForNonce = true;
diff --git a/src/requester-request.cpp b/src/requester-request.cpp
index 5d9896f..e8d6b26 100644
--- a/src/requester-request.cpp
+++ b/src/requester-request.cpp
@@ -277,6 +277,9 @@
{
Name interestName = m_issuedCertName;
auto interest = std::make_shared<Interest>(interestName);
+ if (!m_forwardingHint.empty()) {
+ interest->setForwardingHint({m_forwardingHint});
+ }
interest->setMustBeFresh(false);
interest->setCanBePrefix(false);
return interest;
diff --git a/src/requester-request.hpp b/src/requester-request.hpp
index acd06cc..9291958 100644
--- a/src/requester-request.hpp
+++ b/src/requester-request.hpp
@@ -1,6 +1,6 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
- * Copyright (c) 2017-2021, Regents of the University of California.
+ * Copyright (c) 2017-2022, Regents of the University of California.
*
* This file is part of ndncert, a certificate management system based on NDN.
*
@@ -249,6 +249,10 @@
*/
Name m_issuedCertName;
/**
+ * @brief The optional forwarding hint.
+ */
+ Name m_forwardingHint;
+ /**
* @brief ecdh state.
*/
ECDHState m_ecdh;