rebaes to the new master branch from named-data/ndncert

Change-Id: I4d40daa5d1047a02fe814c464c73f06666c73bc7
diff --git a/src/ca-config.hpp b/src/ca-config.hpp
index 4ff3fe1..5cba37f 100644
--- a/src/ca-config.hpp
+++ b/src/ca-config.hpp
@@ -25,10 +25,6 @@
 
 #include "certificate-request.hpp"
 #include "client-config.hpp"
-<<<<<<< HEAD
-#include <ndn-cxx/security/certificate.hpp>
-=======
->>>>>>> Update CaConfig and ClientCaItem. Add INFO packet encoding and decoding.
 
 namespace ndn {
 namespace ndncert {
diff --git a/src/ca-detail/ca-memory.cpp b/src/ca-detail/ca-memory.cpp
index 67fd57b..437afa4 100644
--- a/src/ca-detail/ca-memory.cpp
+++ b/src/ca-detail/ca-memory.cpp
@@ -20,7 +20,7 @@
 
 #include "ca-memory.hpp"
 
-#include <ndn-cxx/security/validation-policy.hpp>
+#include <ndn-cxx/security/v2/validation-policy.hpp>
 
 namespace ndn {
 namespace ndncert {
@@ -105,7 +105,7 @@
 }
 
 // certificate related
-security::Certificate
+security::v2::Certificate
 CaMemory::getCertificate(const std::string& certId)
 {
   auto search = m_issuedCerts.find(certId);
@@ -116,7 +116,7 @@
 }
 
 void
-CaMemory::addCertificate(const std::string& certId, const security::Certificate& cert)
+CaMemory::addCertificate(const std::string& certId, const security::v2::Certificate& cert)
 {
   auto search = m_issuedCerts.find(certId);
   if (search == m_issuedCerts.end()) {
@@ -128,7 +128,7 @@
 }
 
 void
-CaMemory::updateCertificate(const std::string& certId, const security::Certificate& cert)
+CaMemory::updateCertificate(const std::string& certId, const security::v2::Certificate& cert)
 {
   m_issuedCerts[certId] = cert;
 }
@@ -142,23 +142,23 @@
   }
 }
 
-std::list<security::Certificate>
+std::list<security::v2::Certificate>
 CaMemory::listAllIssuedCertificates()
 {
-  std::list<security::Certificate> result;
+  std::list<security::v2::Certificate> result;
   for (const auto& entry : m_issuedCerts) {
     result.push_back(entry.second);
   }
   return result;
 }
 
-std::list<security::Certificate>
+std::list<security::v2::Certificate>
 CaMemory::listAllIssuedCertificates(const Name& caName)
 {
-  std::list<security::Certificate> result;
+  std::list<security::v2::Certificate> result;
   for (const auto& entry : m_issuedCerts) {
-    const auto& klName = entry.second.getSignatureInfo().getKeyLocator().getName();
-    if (security::extractIdentityNameFromKeyLocator(klName) == caName) {
+    const auto& klName = entry.second.getSignature().getKeyLocator().getName();
+    if (security::v2::extractIdentityFromKeyName(klName) == caName) {
       result.push_back(entry.second);
     }
   }
diff --git a/src/ca-detail/ca-memory.hpp b/src/ca-detail/ca-memory.hpp
index fb61218..859c726 100644
--- a/src/ca-detail/ca-memory.hpp
+++ b/src/ca-detail/ca-memory.hpp
@@ -52,27 +52,27 @@
   listAllRequests(const Name& caName) override;
 
   // certificate related
-  security::Certificate
+  security::v2::Certificate
   getCertificate(const std::string& certId) override;
 
   void
-  addCertificate(const std::string& certId, const security::Certificate& cert) override;
+  addCertificate(const std::string& certId, const security::v2::Certificate& cert) override;
 
   void
-  updateCertificate(const std::string& certId, const security::Certificate& cert) override;
+  updateCertificate(const std::string& certId, const security::v2::Certificate& cert) override;
 
   void
   deleteCertificate(const std::string& certId) override;
 
-  std::list<security::Certificate>
+  std::list<security::v2::Certificate>
   listAllIssuedCertificates() override;
 
-  std::list<security::Certificate>
+  std::list<security::v2::Certificate>
   listAllIssuedCertificates(const Name& caName) override;
 
 private:
   std::map<std::string, CertificateRequest> m_requests;
-  std::map<std::string, security::Certificate> m_issuedCerts;
+  std::map<std::string, security::v2::Certificate> m_issuedCerts;
 };
 
 } // namespace ndncert
diff --git a/src/ca-detail/ca-sqlite.cpp b/src/ca-detail/ca-sqlite.cpp
index dec5146..baaf771 100644
--- a/src/ca-detail/ca-sqlite.cpp
+++ b/src/ca-detail/ca-sqlite.cpp
@@ -20,7 +20,7 @@
 
 #include "ca-sqlite.hpp"
 
-#include <ndn-cxx/security/validation-policy.hpp>
+#include <ndn-cxx/security/v2/validation-policy.hpp>
 #include <ndn-cxx/util/sqlite3-statement.hpp>
 
 #include <sqlite3.h>
@@ -125,7 +125,7 @@
     Name caName(statement.getBlock(2));
     int status = statement.getInt(3);
     std::string challengeStatus = statement.getString(4);
-    security::Certificate cert(statement.getBlock(6));
+    security::v2::Certificate cert(statement.getBlock(6));
     std::string challengeType = statement.getString(7);
     std::string challengeSecrets = statement.getString(8);
     std::string challengeTp = statement.getString(9);
@@ -250,7 +250,7 @@
     Name caName(statement.getBlock(2));
     int status = statement.getInt(3);
     std::string challengeStatus = statement.getString(4);
-    security::Certificate cert(statement.getBlock(6));
+    security::v2::Certificate cert(statement.getBlock(6));
     std::string challengeType = statement.getString(7);
     std::string challengeSecrets = statement.getString(8);
     std::string challengeTp = statement.getString(9);
@@ -277,7 +277,7 @@
     Name caName(statement.getBlock(2));
     int status = statement.getInt(3);
     std::string challengeStatus = statement.getString(4);
-    security::Certificate cert(statement.getBlock(6));
+    security::v2::Certificate cert(statement.getBlock(6));
     std::string challengeType = statement.getString(7);
     std::string challengeSecrets = statement.getString(8);
     std::string challengeTp = statement.getString(9);
@@ -300,7 +300,7 @@
   statement.step();
 }
 
-security::Certificate
+security::v2::Certificate
 CaSqlite::getCertificate(const std::string& certId)
 {
   Sqlite3Statement statement(m_database,
@@ -308,7 +308,7 @@
   statement.bind(1, certId, SQLITE_TRANSIENT);
 
   if (statement.step() == SQLITE_ROW) {
-    return security::Certificate(statement.getBlock(0));
+    return security::v2::Certificate(statement.getBlock(0));
   }
   else {
     BOOST_THROW_EXCEPTION(Error("Certificate with ID " + certId + " cannot be fetched from database"));
@@ -316,7 +316,7 @@
 }
 
 void
-CaSqlite::addCertificate(const std::string& certId, const security::Certificate& cert)
+CaSqlite::addCertificate(const std::string& certId, const security::v2::Certificate& cert)
 {
   Sqlite3Statement statement(m_database,
                              R"_SQLTEXT_(INSERT INTO IssuedCerts (cert_id, cert_key_name, cert)
@@ -331,7 +331,7 @@
 }
 
 void
-CaSqlite::updateCertificate(const std::string& certId, const security::Certificate& cert)
+CaSqlite::updateCertificate(const std::string& certId, const security::v2::Certificate& cert)
 {
   Sqlite3Statement statement(m_database,
                              R"_SQLTEXT_(UPDATE IssuedCerts SET cert = ? WHERE cert_id = ?)_SQLTEXT_");
@@ -352,10 +352,10 @@
   statement.step();
 }
 
-std::list<security::Certificate>
+std::list<security::v2::Certificate>
 CaSqlite::listAllIssuedCertificates()
 {
-  std::list<security::Certificate> result;
+  std::list<security::v2::Certificate> result;
   Sqlite3Statement statement(m_database, R"_SQLTEXT_(SELECT * FROM IssuedCerts)_SQLTEXT_");
 
   while (statement.step() == SQLITE_ROW) {
@@ -364,14 +364,14 @@
   return result;
 }
 
-std::list<security::Certificate>
+std::list<security::v2::Certificate>
 CaSqlite::listAllIssuedCertificates(const Name& caName)
 {
   auto allCerts = listAllIssuedCertificates();
-  std::list<security::Certificate> result;
+  std::list<security::v2::Certificate> result;
   for (const auto& entry : allCerts) {
-    const auto& klName = entry.getSignatureInfo().getKeyLocator().getName();
-    if (security::extractIdentityNameFromKeyLocator(klName) == caName) {
+    const auto& klName = entry.getSignature().getKeyLocator().getName();
+    if (security::v2::extractIdentityFromKeyName(klName) == caName) {
       result.push_back(entry);
     }
   }
diff --git a/src/ca-detail/ca-sqlite.hpp b/src/ca-detail/ca-sqlite.hpp
index 9b09e1a..f0039f8 100644
--- a/src/ca-detail/ca-sqlite.hpp
+++ b/src/ca-detail/ca-sqlite.hpp
@@ -60,22 +60,22 @@
   listAllRequests(const Name& caName) override;
 
   // certificate related
-  security::Certificate
+  security::v2::Certificate
   getCertificate(const std::string& certId) override;
 
   void
-  addCertificate(const std::string& certId, const security::Certificate& cert) override;
+  addCertificate(const std::string& certId, const security::v2::Certificate& cert) override;
 
   void
-  updateCertificate(const std::string& certId, const security::Certificate& cert) override;
+  updateCertificate(const std::string& certId, const security::v2::Certificate& cert) override;
 
   void
   deleteCertificate(const std::string& certId) override;
 
-  std::list<security::Certificate>
+  std::list<security::v2::Certificate>
   listAllIssuedCertificates() override;
 
-  std::list<security::Certificate>
+  std::list<security::v2::Certificate>
   listAllIssuedCertificates(const Name& caName) override;
 
 PUBLIC_WITH_TESTS_ELSE_PRIVATE:
diff --git a/src/ca-module.cpp b/src/ca-module.cpp
index 9f95157..377486f 100644
--- a/src/ca-module.cpp
+++ b/src/ca-module.cpp
@@ -477,123 +477,6 @@
   return certRequest;
 }
 
-<<<<<<< HEAD
-/**
- * @brief Generate JSON file to response PROBE insterest
- *
- * PROBE response JSON format:
- * {
- *   "name": "@p identifier"
- * }
- */
-JsonSection
-CaModule::genProbeResponseJson(const Name& identifier, const std::string& m_probe, const JsonSection& parameterJson)
-{
-  std::vector<std::string> fields;
-  std::string delimiter = ":";
-  size_t last = 0;
-  size_t next = 0;
-  while ((next = m_probe.find(delimiter, last)) != std::string::npos) {
-    fields.push_back(m_probe.substr(last, next - last));
-    last = next + 1;
-  }
-  fields.push_back(m_probe.substr(last));
-  JsonSection root;
-
-  for (size_t i = 0; i < fields.size(); ++i) {
-    root.put(fields.at(i), parameterJson.get(fields.at(i), ""));
-  }
-
-  root.put(JSON_CA_NAME, identifier.toUri());
-  return root;
-}
-
-/**
- * @brief Generate JSON file to response NEW interest
- *
- * Target JSON format:
- * {
- *   "ecdh-pub": "@p echdPub",
- *   "salt": "@p salt"
- *   "request-id": "@p requestId",
- *   "status": "@p status",
- *   "challenges": [
- *     {
- *       "challenge-id": ""
- *     },
- *     {
- *       "challenge-id": ""
- *     },
- *     ...
- *   ]
- * }
- */
-JsonSection
-CaModule::genInfoResponseJson()
-{
-  JsonSection root;
-  // ca-prefix
-  Name caName = m_config.m_caPrefix;
-  root.put("ca-prefix", caName.toUri());
-
-  // ca-info
-  const auto& pib = m_keyChain.getPib();
-  const auto& identity = pib.getIdentity(m_config.m_caPrefix);
-  const auto& cert = identity.getDefaultKey().getDefaultCertificate();
-  std::string caInfo;
-  if (m_config.m_caInfo.empty()) {
-    caInfo = "Issued by " + cert.getSignatureInfo().getKeyLocator().getName().toUri();
-  }
-  else {
-    caInfo = m_config.m_caInfo;
-  }
-  root.put("ca-info", caInfo);
-
-  // probe
-  root.put("probe", m_config.m_probe);
-
-  // certificate
-  std::stringstream ss;
-  io::save(cert, ss);
-  root.put("certificate", ss.str());
-  return root;
-}
-
-JsonSection
-CaModule::genNewResponseJson(const std::string& ecdhKey, const std::string& salt,
-                             const CertificateRequest& request,
-                             const std::list<std::string>& challenges)
-{
-  JsonSection root;
-  JsonSection challengesSection;
-  root.put(JSON_CA_ECDH, ecdhKey);
-  root.put(JSON_CA_SALT, salt);
-  root.put(JSON_CA_REQUEST_ID, request.m_requestId);
-  root.put(JSON_CA_STATUS, std::to_string(request.m_status));
-
-  for (const auto& entry : challenges) {
-    JsonSection challenge;
-    challenge.put(JSON_CA_CHALLENGE_ID, entry);
-    challengesSection.push_back(std::make_pair("", challenge));
-  }
-  root.add_child(JSON_CA_CHALLENGES, challengesSection);
-  return root;
-}
-
-JsonSection
-CaModule::genChallengeResponseJson(const CertificateRequest& request)
-{
-  JsonSection root;
-  JsonSection challengesSection;
-  root.put(JSON_CA_STATUS, request.m_status);
-  root.put(JSON_CHALLENGE_STATUS, request.m_challengeStatus);
-  root.put(JSON_CHALLENGE_REMAINING_TRIES, std::to_string(request.m_remainingTries));
-  root.put(JSON_CHALLENGE_REMAINING_TIME, std::to_string(request.m_remainingTime));
-  return root;
-}
-
-=======
->>>>>>> add two functions for CA Info Packet and Metadata Packet
 void
 CaModule::onRegisterFailed(const std::string& reason)
 {
diff --git a/src/certificate-request.hpp b/src/certificate-request.hpp
index 216c21f..3ac9948 100644
--- a/src/certificate-request.hpp
+++ b/src/certificate-request.hpp
@@ -22,14 +22,10 @@
 #define NDNCERT_CERTIFICATE_REQUEST_HPP
 
 #include "ndncert-common.hpp"
-<<<<<<< HEAD
-#include <ndn-cxx/security/certificate.hpp>
-=======
 #include <ndn-cxx/security/v2/certificate.hpp>
 #include <boost/property_tree/info_parser.hpp>
 #include <boost/property_tree/json_parser.hpp>
 #include <boost/property_tree/ptree.hpp>
->>>>>>> Update CaConfig and ClientCaItem. Add INFO packet encoding and decoding.
 
 namespace ndn {
 namespace ndncert {
diff --git a/src/challenge-module/challenge-credential.cpp b/src/challenge-module/challenge-credential.cpp
index 16724bc..bdc8b37 100644
--- a/src/challenge-module/challenge-credential.cpp
+++ b/src/challenge-module/challenge-credential.cpp
@@ -112,7 +112,7 @@
   ss2.clear();
 
   // verify the credential and the self-signed cert
-  Name signingKeyName = cert->getSignatureInfo().getKeyLocator().getName();
+  Name signingKeyName = cert->getSignature().getKeyLocator().getName();
   for (auto anchor : m_trustAnchors) {
     if (anchor.getKeyName() == signingKeyName) {
       if (security::verifySignature(*cert, anchor) && security::verifySignature(*self, *cert)
diff --git a/src/client-config.hpp b/src/client-config.hpp
index 0195c48..80d5241 100644
--- a/src/client-config.hpp
+++ b/src/client-config.hpp
@@ -22,12 +22,7 @@
 #define NDNCERT_CLIENT_CONFIG_HPP
 
 #include "certificate-request.hpp"
-<<<<<<< HEAD
-#include <ndn-cxx/security/certificate.hpp>
-=======
-
 #include <ndn-cxx/security/v2/certificate.hpp>
->>>>>>> Update CaConfig and ClientCaItem. Add INFO packet encoding and decoding.
 
 namespace ndn {
 namespace ndncert {
diff --git a/src/client-module.cpp b/src/client-module.cpp
index 069d796..697ff8f 100644
--- a/src/client-module.cpp
+++ b/src/client-module.cpp
@@ -320,19 +320,30 @@
   }
   catch (const std::exception& e) {
     _LOG_ERROR("Cannot add replied certificate into the keychain " << e.what());
-    return nullptr;
+    return;
   }
 }
 
-JsonSection
-ClientModule::getJsonFromData(const Data& data)
+void
+ClientModule::endSession()
 {
-  std::istringstream ss(encoding::readString(data.getContent()));
-  JsonSection json;
-  boost::property_tree::json_parser::read_json(ss, json);
-  return json;
+  if (getApplicationStatus() == STATUS_SUCCESS || getApplicationStatus() == STATUS_ENDED) {
+    return;
+  }
+  if (m_isNewlyCreatedIdentity) {
+    // put the identity into the if scope is because it may cause an error
+    // outside since when endSession is called, identity may not have been created yet.
+    auto identity = m_keyChain.getPib().getIdentity(m_identityName);
+    m_keyChain.deleteIdentity(identity);
+  }
+  else if (m_isNewlyCreatedKey) {
+    auto identity = m_keyChain.getPib().getIdentity(m_identityName);
+    m_keyChain.deleteKey(identity, m_key);
+  }
+  m_status = STATUS_ENDED;
 }
 
+
 std::vector<std::string>
 ClientModule::parseProbeComponents(const std::string& probe)
 {
@@ -348,66 +359,5 @@
   return components;
 }
 
-JsonSection
-ClientModule::genProbeRequestJson(const ClientCaItem& ca, const std::string& probeInfo)
-{
-  JsonSection root;
-  std::vector<std::string> fields = parseProbeComponents(ca.m_probe);
-  std::vector<std::string> arguments  = parseProbeComponents(probeInfo);;
-
-  if (arguments.size() != fields.size()) {
-    BOOST_THROW_EXCEPTION(Error("Error in genProbeRequestJson: argument list does not match field list in the config file."));
-  }
-  for (size_t i = 0; i < fields.size(); ++i) {
-      root.put(fields.at(i), arguments.at(i));
-  }
-  return root;
-}
-
-JsonSection
-ClientModule::genNewRequestJson(const std::string& ecdhPub, const security::v2::Certificate& certRequest,
-                                const shared_ptr<Data>& probeToken)
-{
-  JsonSection root;
-  std::stringstream ss;
-  try {
-    security::transform::bufferSource(certRequest.wireEncode().wire(), certRequest.wireEncode().size())
-    >> security::transform::base64Encode(false)
-    >> security::transform::streamSink(ss);
-  }
-  catch (const security::transform::Error& e) {
-    _LOG_ERROR("Cannot convert self-signed cert into BASE64 string " << e.what());
-    return root;
-  }
-  root.put(JSON_CLIENT_ECDH, ecdhPub);
-  root.put(JSON_CLIENT_CERT_REQ, ss.str());
-  if (probeToken != nullptr) {
-    // clear the stringstream
-    ss.str("");
-    ss.clear();
-    // transform the probe data into a base64 string
-    try {
-      security::transform::bufferSource(probeToken->wireEncode().wire(), probeToken->wireEncode().size())
-      >> security::transform::base64Encode(false)
-      >> security::transform::streamSink(ss);
-    }
-    catch (const security::transform::Error& e) {
-      _LOG_ERROR("Cannot convert self-signed cert into BASE64 string " << e.what());
-      return root;
-    }
-    // add the token into the JSON
-    root.put("probe-token", ss.str());
-  }
-  return root;
-}
-
-Block
-ClientModule::paramFromJson(const JsonSection& json)
-{
-  std::stringstream ss;
-  boost::property_tree::write_json(ss, json);
-  return makeStringBlock(ndn::tlv::ApplicationParameters, ss.str());
-}
-
 } // namespace ndncert
 } // namespace ndn
diff --git a/src/client-module.hpp b/src/client-module.hpp
index f45b034..46a0a29 100644
--- a/src/client-module.hpp
+++ b/src/client-module.hpp
@@ -111,13 +111,6 @@
   void
   onCertFetchResponse(const Data& reply);
 
-  // helper functions
-  static JsonSection
-  getJsonFromData(const Data& data);
-
-  static Block
-  paramFromJson(const JsonSection& json);
-
   static std::vector<std::string>
   parseProbeComponents(const std::string& probe);
 
@@ -125,14 +118,6 @@
   endSession();
 
 PUBLIC_WITH_TESTS_ELSE_PRIVATE:
-  JsonSection
-  genProbeRequestJson(const ClientCaItem& ca, const std::string& probeInfo);
-
-  JsonSection
-  genNewRequestJson(const std::string& ecdhPub, const security::v2::Certificate& certRequest,
-                    const shared_ptr<Data>& probeToken = nullptr);
-
-PUBLIC_WITH_TESTS_ELSE_PRIVATE:
   ClientConfig m_config;
   security::v2::KeyChain& m_keyChain;
 
diff --git a/src/crypto-support/crypto-helper.hpp b/src/crypto-support/crypto-helper.hpp
index 4381977..53f57f1 100644
--- a/src/crypto-support/crypto-helper.hpp
+++ b/src/crypto-support/crypto-helper.hpp
@@ -26,12 +26,12 @@
 
 #include "certificate-request.hpp"
 
-static const int INFO_LEN = 10;
-static const uint8_t INFO[] = {0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9};
-
 namespace ndn {
 namespace ndncert {
 
+static const int INFO_LEN = 10;
+static const uint8_t INFO[] = {0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9};
+
 struct ECDH_CTX {
   int EC_NID;
   EVP_PKEY_CTX* ctx_params;
diff --git a/src/ndncert-common.hpp b/src/ndncert-common.hpp
index ce43640..a6a7a04 100644
--- a/src/ndncert-common.hpp
+++ b/src/ndncert-common.hpp
@@ -46,7 +46,7 @@
 #include <ndn-cxx/encoding/block.hpp>
 #include <ndn-cxx/lp/nack.hpp>
 #include <ndn-cxx/security/key-chain.hpp>
-#include <ndn-cxx/security/certificate.hpp>
+#include <ndn-cxx/security/v2/certificate.hpp>
 
 #include <boost/algorithm/string.hpp>
 #include <boost/assert.hpp>
diff --git a/tests/identity-management-fixture.cpp b/tests/identity-management-fixture.cpp
index db99d5a..1694dfa 100644
--- a/tests/identity-management-fixture.cpp
+++ b/tests/identity-management-fixture.cpp
@@ -20,7 +20,7 @@
  */
 
 #include "identity-management-fixture.hpp"
-#include <ndn-cxx/security/additional-description.hpp>
+#include <ndn-cxx/security/v2/additional-description.hpp>
 #include <ndn-cxx/util/io.hpp>
 #include <boost/filesystem.hpp>
 
@@ -92,7 +92,7 @@
 
   v2::AdditionalDescription description;
   description.set("type", "sub-certificate");
-  info.addCustomTlv(description.wireEncode());
+  info.appendTypeSpecificTlv(description.wireEncode());
 
   m_keyChain.sign(request, signingByIdentity(issuer).setSignatureInfo(info));
   m_keyChain.setDefaultCertificate(subIdentity.getDefaultKey(), request);
diff --git a/tests/unit-tests/client-module.t.cpp b/tests/unit-tests/client-module.t.cpp
index 888ad6b..7e6214b 100644
--- a/tests/unit-tests/client-module.t.cpp
+++ b/tests/unit-tests/client-module.t.cpp
@@ -65,26 +65,26 @@
                     "zhiyi@cs.ucla.edu");
 }
 
-BOOST_AUTO_TEST_CASE(GenProbeRequestJson)
-{
-  ClientModule client(m_keyChain);
-  client.getClientConf().load("tests/unit-tests/client.conf.test");
+// BOOST_AUTO_TEST_CASE(GenProbeRequestJson)
+// {
+//   ClientModule client(m_keyChain);
+//   client.getClientConf().load("tests/unit-tests/client.conf.test");
 
-  auto identity = addIdentity(Name("/site"));
-  auto key = identity.getDefaultKey();
-  auto cert = key.getDefaultCertificate();
+//   auto identity = addIdentity(Name("/site"));
+//   auto key = identity.getDefaultKey();
+//   auto cert = key.getDefaultCertificate();
 
-  ClientCaItem item;
-  item.m_probe = "email:uid:name";
-  item.m_caPrefix = Name("/site");
-  item.m_anchor = cert;
-  client.getClientConf().m_caItems.push_back(item);
+//   ClientCaItem item;
+//   item.m_probe = "email:uid:name";
+//   item.m_caPrefix = Name("/site");
+//   item.m_anchor = cert;
+//   client.getClientConf().m_caItems.push_back(item);
 
-  auto interestPacket = client.genProbeRequestJson(item, "yufeng@ucla.edu:123456789:Yufeng Zhang");
-  BOOST_CHECK_EQUAL(interestPacket.get("email", ""), "yufeng@ucla.edu");
-  BOOST_CHECK_EQUAL(interestPacket.get("uid", ""), "123456789");
-  BOOST_CHECK_EQUAL(interestPacket.get("name", ""), "Yufeng Zhang");
-}
+//   auto interestPacket = client.genProbeRequestJson(item, "yufeng@ucla.edu:123456789:Yufeng Zhang");
+//   BOOST_CHECK_EQUAL(interestPacket.get("email", ""), "yufeng@ucla.edu");
+//   BOOST_CHECK_EQUAL(interestPacket.get("uid", ""), "123456789");
+//   BOOST_CHECK_EQUAL(interestPacket.get("name", ""), "Yufeng Zhang");
+// }
 
 BOOST_AUTO_TEST_SUITE_END() // TestClientModule
 
diff --git a/tools/ndncert-client.cpp b/tools/ndncert-client.cpp
index 788ee74..f7bd7b0 100644
--- a/tools/ndncert-client.cpp
+++ b/tools/ndncert-client.cpp
@@ -20,6 +20,7 @@
 
 #include "challenge-module.hpp"
 #include "protocol-detail/info.hpp"
+#include "client-module.hpp"
 #include <iostream>
 #include <string>
 
@@ -119,7 +120,7 @@
   client.onCertFetchResponse(reply);
   std::cerr << "Step " << nStep++
             << ": DONE! Certificate has already been installed to local keychain\n"
-            << "Certificate Name: " << cert->getName().toUri() << std::endl;
+            << "Certificate Name: " << reply.getName().toUri() << std::endl;
 }
 
 static void
@@ -224,7 +225,7 @@
   auto caItem = INFO::decodeClientConfigFromContent(contentBlock);
 
   std::cerr << "Will use a new trust anchor, please double check the identity info: \n"
-            << "This trust anchor information is signed by " << reply.getSignatureInfo().getKeyLocator()
+            << "This trust anchor information is signed by " << reply.getSignature().getKeyLocator()
             << std::endl
             << "The certificate is " << caItem.m_anchor << std::endl
             << "Do you trust the information? Type in YES or NO" << std::endl;