fix some errors in the previous refactor

Change-Id: I6fced76ee754d93aa571313b81f3704dd50f1f35
diff --git a/src/ca-module.cpp b/src/ca-module.cpp
index d829f63..8b1c72a 100644
--- a/src/ca-module.cpp
+++ b/src/ca-module.cpp
@@ -267,7 +267,13 @@
 
   shared_ptr<security::v2::Certificate> clientCert = nullptr;
   // parse certificate request
-  Block requestPayload = parameterTLV.get(tlv_cert_request);
+  Block requestPayload;
+  if (requestType == RequestType::NEW) {
+    requestPayload = parameterTLV.get(tlv_cert_request);
+  }
+  else if (requestType == RequestType::REVOKE) {
+    requestPayload = parameterTLV.get(tlv_cert_to_revoke);
+  }
   requestPayload.parse();
   try {
     security::v2::Certificate cert = security::v2::Certificate(requestPayload.get(tlv::Data));
diff --git a/src/protocol-detail/info.cpp b/src/protocol-detail/info.cpp
index 306d060..da8b969 100644
--- a/src/protocol-detail/info.cpp
+++ b/src/protocol-detail/info.cpp
@@ -36,7 +36,6 @@
     caInfo = caConfig.m_caInfo;
   }
   content.push_back(makeStringBlock(tlv_ca_info, caInfo));
-
   for (const auto& key : caConfig.m_probeParameterKeys) {
     content.push_back(makeStringBlock(tlv_parameter_key, key));
   }
@@ -55,9 +54,9 @@
   CaConfigItem result;
   block.parse();
   for (auto const& item : block.elements()) {
-    item.parse();
     switch (item.type()) {
     case tlv_ca_prefix:
+      item.parse();
       result.m_caPrefix.wireDecode(item.get(tlv::Name));
       break;
     case tlv_ca_info:
@@ -73,7 +72,8 @@
       result.m_maxSuffixLength = readNonNegativeInteger(item);
       break;
     case tlv_ca_certificate:
-      result.m_cert->wireDecode(item.get(tlv::Data));
+      item.parse();
+      result.m_cert = std::make_shared<security::v2::Certificate>(item.get(tlv::Data));
       break;
     default:
       continue;
diff --git a/tests/unit-tests/bench.t.cpp b/tests/unit-tests/bench.t.cpp
index 4caed86..226f789 100644
--- a/tests/unit-tests/bench.t.cpp
+++ b/tests/unit-tests/bench.t.cpp
@@ -65,7 +65,8 @@
       contentBlock.parse();
       auto caItem = INFO::decodeDataContentToCaProfile(contentBlock);
       BOOST_CHECK_EQUAL(caItem.m_caPrefix, "/ndn");
-      BOOST_CHECK_EQUAL(caItem.m_probeParameterKeys.size(), 0);
+      BOOST_CHECK_EQUAL(caItem.m_probeParameterKeys.size(), 1);
+      BOOST_CHECK_EQUAL(caItem.m_probeParameterKeys.front(), "full name");
       BOOST_CHECK_EQUAL(caItem.m_cert->wireEncode(), cert.wireEncode());
       BOOST_CHECK_EQUAL(caItem.m_caInfo, "ndn testbed ca");
     }
diff --git a/tests/unit-tests/ca-module.t.cpp b/tests/unit-tests/ca-module.t.cpp
index 599b6ce..22c0d56 100644
--- a/tests/unit-tests/ca-module.t.cpp
+++ b/tests/unit-tests/ca-module.t.cpp
@@ -70,7 +70,7 @@
     contentBlock.parse();
     auto caItem = INFO::decodeDataContentToCaProfile(contentBlock);
     BOOST_CHECK_EQUAL(caItem.m_caPrefix, "/ndn");
-    BOOST_CHECK_EQUAL(caItem.m_probeParameterKeys.size(), 0);
+    BOOST_CHECK_EQUAL(caItem.m_probeParameterKeys.size(), 1);
     BOOST_CHECK_EQUAL(caItem.m_cert->wireEncode(), cert.wireEncode());
     BOOST_CHECK_EQUAL(caItem.m_caInfo, "ndn testbed ca");
   });
diff --git a/tests/unit-tests/configuration.t.cpp b/tests/unit-tests/configuration.t.cpp
index 2c0ca02..4f2f256 100644
--- a/tests/unit-tests/configuration.t.cpp
+++ b/tests/unit-tests/configuration.t.cpp
@@ -47,7 +47,7 @@
   BOOST_CHECK_EQUAL(config.m_caItem.m_maxValidityPeriod, time::seconds(86400));
   BOOST_CHECK(!config.m_caItem.m_maxSuffixLength);
   BOOST_CHECK_EQUAL(config.m_caItem.m_probeParameterKeys.size(), 0);
-  BOOST_CHECK_EQUAL(config.m_caItem.m_supportedChallenges.size(), 0);
+  BOOST_CHECK_EQUAL(config.m_caItem.m_supportedChallenges.size(), 2);
   BOOST_CHECK_EQUAL(config.m_caItem.m_supportedChallenges.front(), "pin");
   BOOST_CHECK_EQUAL(config.m_caItem.m_supportedChallenges.back(), "email");
 }
@@ -70,7 +70,7 @@
   BOOST_CHECK_EQUAL(config.m_caItems.size(), 2);
 
   auto& config1 = config.m_caItems.front();
-  BOOST_CHECK_EQUAL(config1.m_caPrefix, "/ndn");
+  BOOST_CHECK_EQUAL(config1.m_caPrefix, "/ndn/edu/ucla");
   BOOST_CHECK_EQUAL(config1.m_caInfo, "ndn testbed ca");
   BOOST_CHECK_EQUAL(config1.m_maxValidityPeriod, time::seconds(864000));
   BOOST_CHECK_EQUAL(*config1.m_maxSuffixLength, 3);
@@ -79,9 +79,9 @@
   BOOST_CHECK_EQUAL(config1.m_cert->getName(),
                     "/ndn/site1/KEY/%11%BC%22%F4c%15%FF%17/self/%FD%00%00%01Y%C8%14%D9%A5");
 
-  auto& config2 = config.m_caItems.front();
-  BOOST_CHECK_EQUAL(config2.m_caPrefix, "/ndn");
-  BOOST_CHECK_EQUAL(config2.m_caInfo, "ndn testbed ca");
+  auto& config2 = config.m_caItems.back();
+  BOOST_CHECK_EQUAL(config2.m_caPrefix, "/ndn/edu/ucla/zhiyi");
+  BOOST_CHECK_EQUAL(config2.m_caInfo, "");
   BOOST_CHECK_EQUAL(config2.m_maxValidityPeriod, time::seconds(86400));
   BOOST_CHECK(!config2.m_maxSuffixLength);
   BOOST_CHECK_EQUAL(config2.m_probeParameterKeys.size(), 0);