change salt to 32-byte array

Change-Id: I2c0a378feee555f1c8108b142c40967f382c0d24
diff --git a/src/detail/new-renew-revoke-encoder.cpp b/src/detail/new-renew-revoke-encoder.cpp
index ef67146..77717bd 100644
--- a/src/detail/new-renew-revoke-encoder.cpp
+++ b/src/detail/new-renew-revoke-encoder.cpp
@@ -74,13 +74,13 @@
 }
 
 Block
-NewRenewRevokeEncoder::encodeDataContent(const std::string& ecdhKey, const std::string& salt,
+NewRenewRevokeEncoder::encodeDataContent(const std::string& ecdhKey, const std::array<uint8_t, 32>& salt,
                                          const CaState& request,
                                          const std::list<std::string>& challenges)
 {
   Block response = makeEmptyBlock(ndn::tlv::Content);
   response.push_back(makeStringBlock(tlv::EcdhPub, ecdhKey));
-  response.push_back(makeStringBlock(tlv::Salt, salt));
+  response.push_back(makeBinaryBlock(tlv::Salt, salt.data(), salt.size()));
   response.push_back(makeBinaryBlock(tlv::RequestId, request.m_requestId.data(), request.m_requestId.size()));
   response.push_back(makeNonNegativeIntegerBlock(tlv::Status, static_cast<size_t>(request.m_status)));
   for (const auto& entry: challenges) {
@@ -94,19 +94,24 @@
 NewRenewRevokeEncoder::decodeDataContent(const Block& content)
 {
   content.parse();
-  const auto& ecdhKey = readString(content.get(tlv::EcdhPub));
-  const auto& salt = readString(content.get(tlv::Salt));
-  uint64_t saltInt = std::stoull(salt);
   const auto& requestStatus = static_cast<Status>(readNonNegativeInteger(content.get(tlv::Status)));
+  const auto& ecdhKey = readString(content.get(tlv::EcdhPub));
+
+  const auto& saltBlock = content.get(tlv::Salt);
+  std::array<uint8_t, 32> salt;
+  std::memcpy(salt.data(), saltBlock.value(), saltBlock.value_size());
+
+  const auto& requestIdBlock = content.get(tlv::RequestId);
   RequestID requestId;
-  std::memcpy(requestId.data(), content.get(tlv::RequestId).value(), content.get(tlv::RequestId).size());
+  std::memcpy(requestId.data(), requestIdBlock.value(), requestIdBlock.value_size());
+
   std::list<std::string> challenges;
   for (auto const& element : content.elements()) {
     if (element.type() == tlv::Challenge) {
       challenges.push_back(readString(element));
     }
   }
-  return DecodedData{ecdhKey, saltInt, requestId, requestStatus, challenges};
+  return DecodedData{ecdhKey, salt, requestId, requestStatus, challenges};
 }
 
 } // namespace ndncert