update ChallengeEncoder::encodeDataContent

Change-Id: I03672e22e01e60a9f34c7b8ca89a2f710016b8f5
diff --git a/src/ca-module.cpp b/src/ca-module.cpp
index 2aee91a..f591187 100644
--- a/src/ca-module.cpp
+++ b/src/ca-module.cpp
@@ -403,10 +403,7 @@
       requestState->m_status = Status::SUCCESS;
       m_storage->deleteRequest(requestState->m_requestId);
 
-      payload = ChallengeEncoder::encodeDataContent(*requestState);
-      payload.parse();
-      payload.push_back(makeNestedBlock(tlv::IssuedCertName, issuedCert.getName()));
-      payload.encode();
+      payload = ChallengeEncoder::encodeDataContent(*requestState, issuedCert.getName());
       NDN_LOG_TRACE("Challenge succeeded. Certificate has been issued: " << issuedCert.getName());
     }
     else if (requestState->m_requestType == RequestType::REVOKE) {
diff --git a/src/detail/challenge-encoder.cpp b/src/detail/challenge-encoder.cpp
index 33559c8..f2b1933 100644
--- a/src/detail/challenge-encoder.cpp
+++ b/src/detail/challenge-encoder.cpp
@@ -24,7 +24,7 @@
 namespace ndncert {
 
 Block
-ChallengeEncoder::encodeDataContent(const ca::RequestState& request)
+ChallengeEncoder::encodeDataContent(const ca::RequestState& request, optional<Name> issuedCertName)
 {
   Block response = makeEmptyBlock(tlv::EncryptedPayload);
   response.push_back(makeNonNegativeIntegerBlock(tlv::Status, static_cast<size_t>(request.m_status)));
@@ -35,6 +35,9 @@
     response.push_back(
         makeNonNegativeIntegerBlock(tlv::RemainingTime, request.m_challengeState->m_remainingTime.count()));
   }
+  if (issuedCertName.has_value()) {
+    response.push_back(makeNestedBlock(tlv::IssuedCertName, *issuedCertName));
+  }
   response.encode();
   return response;
 }
diff --git a/src/detail/challenge-encoder.hpp b/src/detail/challenge-encoder.hpp
index e499094..ab1fe8f 100644
--- a/src/detail/challenge-encoder.hpp
+++ b/src/detail/challenge-encoder.hpp
@@ -31,7 +31,7 @@
 {
 public:
   static Block
-  encodeDataContent(const ca::RequestState& request);
+  encodeDataContent(const ca::RequestState& request, optional<Name> issuedCertName = nullopt);
 
   static void
   decodeDataContent(const Block& data, requester::RequestContext& state);