diff --git a/src/detail/challenge-encoder.cpp b/src/detail/challenge-encoder.cpp
index 023b2c1..9ab567a 100644
--- a/src/detail/challenge-encoder.cpp
+++ b/src/detail/challenge-encoder.cpp
@@ -34,6 +34,15 @@
         makeNonNegativeIntegerBlock(tlv::RemainingTries, request.challengeState->remainingTries));
     response.push_back(
         makeNonNegativeIntegerBlock(tlv::RemainingTime, request.challengeState->remainingTime.count()));
+    if (request.challengeState->challengeStatus == "need-proof") {
+      response.push_back(
+              makeStringBlock(tlv::ParameterKey, "nonce")
+              );
+      auto nonce = fromHex(request.challengeState->secrets.get("nonce", ""));
+      response.push_back(
+              makeBinaryBlock(tlv::ParameterValue, nonce->data(), 16)
+            );
+    }
   }
   if (!issuedCertName.empty()) {
     response.push_back(makeNestedBlock(tlv::IssuedCertName, issuedCertName));
@@ -65,6 +74,16 @@
     Block issuedCertNameBlock = data.get(tlv::IssuedCertName);
     state.issuedCertName = Name(issuedCertNameBlock.blockFromValue());
   }
+  if (data.find(tlv::ParameterKey) != data.elements_end() && readString(data.get(tlv::ParameterKey)) == "nonce") {
+    if (data.find(tlv::ParameterKey) == data.elements_end()) {
+        NDN_THROW(std::runtime_error("Parameter Key found, but no value found"));
+    }
+    Block nonceBlock = data.get(tlv::ParameterValue);
+    if (nonceBlock.value_size() != 16) {
+        NDN_THROW(std::runtime_error("Wrong nonce length"));
+    }
+    memcpy(state.nonce.data(), nonceBlock.value(), 16);
+  }
 }
 
 } // namespace ndncert
