merge two onInterest callback into one

Change-Id: I82e8150239d795cb465ea2526624300590e4434c
diff --git a/src/ca-config.cpp b/src/ca-config.cpp
index c9721fb..a7b3f9a 100644
--- a/src/ca-config.cpp
+++ b/src/ca-config.cpp
@@ -19,13 +19,11 @@
  */
 
 #include "ca-config.hpp"
-
+#include "challenge-module.hpp"
+#include <ndn-cxx/util/io.hpp>
 #include <boost/filesystem.hpp>
 #include <boost/property_tree/json_parser.hpp>
 #include <boost/property_tree/ptree.hpp>
-#include <ndn-cxx/util/io.hpp>
-
-#include "challenge-module.hpp"
 
 namespace ndn {
 namespace ndncert {
diff --git a/src/ca-detail/ca-sqlite.cpp b/src/ca-detail/ca-sqlite.cpp
index 8312eaa..e5bca2f 100644
--- a/src/ca-detail/ca-sqlite.cpp
+++ b/src/ca-detail/ca-sqlite.cpp
@@ -22,7 +22,6 @@
 
 #include <ndn-cxx/security/v2/validation-policy.hpp>
 #include <ndn-cxx/util/sqlite3-statement.hpp>
-
 #include <sqlite3.h>
 #include <boost/filesystem.hpp>
 
@@ -126,15 +125,15 @@
 
   if (statement.step() == SQLITE_ROW) {
     Name caName(statement.getBlock(2));
-    Status status = static_cast<Status>(statement.getInt(3));
-    std::string challengeStatus = statement.getString(4);
+    auto status = static_cast<Status>(statement.getInt(3));
+    auto challengeStatus = statement.getString(4);
     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);
-    int remainingTries = statement.getInt(10);
-    int remainingTime = statement.getInt(11);
-    int requestType = statement.getInt(12);
+    auto challengeType = statement.getString(7);
+    auto challengeSecrets = statement.getString(8);
+    auto challengeTp = statement.getString(9);
+    auto remainingTries = statement.getInt(10);
+    auto remainingTime = statement.getInt(11);
+    auto requestType = static_cast<RequestType>(statement.getInt(12));
     CertificateRequest request(caName, requestId, requestType, status, challengeStatus, challengeType,
                               challengeTp, remainingTime, remainingTries,
                               convertString2Json(challengeSecrets), cert);
@@ -174,9 +173,9 @@
     Sqlite3Statement statement(
         m_database,
         R"_SQLTEXT_(INSERT INTO CertRequests (request_id, ca_name, status,
-                             challenge_status, cert_key_name, cert_request, challenge_type, challenge_secrets,
-                             challenge_tp, remaining_tries, remaining_time, request_type, probe_token)
-                             values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?))_SQLTEXT_");
+                    challenge_status, cert_key_name, cert_request, challenge_type, challenge_secrets,
+                    challenge_tp, remaining_tries, remaining_time, request_type, probe_token)
+                    values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?))_SQLTEXT_");
     statement.bind(1, request.m_requestId, SQLITE_TRANSIENT);
     statement.bind(2, request.m_caPrefix.wireEncode(), SQLITE_TRANSIENT);
     statement.bind(3, static_cast<int>(request.m_status));
@@ -190,7 +189,7 @@
     statement.bind(9, request.m_challengeTp, SQLITE_TRANSIENT);
     statement.bind(10, request.m_remainingTries);
     statement.bind(11, request.m_remainingTime);
-    statement.bind(12, request.m_requestType);
+    statement.bind(12, static_cast<int>(request.m_requestType));
     statement.bind(13, request.m_probeToken->wireEncode(), SQLITE_TRANSIENT);
     if (statement.step() != SQLITE_DONE) {
       BOOST_THROW_EXCEPTION(Error("Request " + request.m_requestId + " cannot be added to database"));
@@ -200,9 +199,9 @@
     Sqlite3Statement statement(
         m_database,
         R"_SQLTEXT_(INSERT INTO CertRequests (request_id, ca_name, status,
-                             challenge_status, cert_key_name, cert_request, challenge_type, challenge_secrets,
-                             challenge_tp, remaining_tries, remaining_time, request_type)
-                             values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?))_SQLTEXT_");
+                    challenge_status, cert_key_name, cert_request, challenge_type, challenge_secrets,
+                    challenge_tp, remaining_tries, remaining_time, request_type)
+                    values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?))_SQLTEXT_");
     statement.bind(1, request.m_requestId, SQLITE_TRANSIENT);
     statement.bind(2, request.m_caPrefix.wireEncode(), SQLITE_TRANSIENT);
     statement.bind(3, static_cast<int>(request.m_status));
@@ -216,7 +215,7 @@
     statement.bind(9, request.m_challengeTp, SQLITE_TRANSIENT);
     statement.bind(10, request.m_remainingTries);
     statement.bind(11, request.m_remainingTime);
-    statement.bind(12, request.m_requestType);
+    statement.bind(12, static_cast<int>(request.m_requestType));
     if (statement.step() != SQLITE_DONE) {
       BOOST_THROW_EXCEPTION(Error("Request " + request.m_requestId + " cannot be added to database"));
     }
@@ -238,7 +237,7 @@
   statement.bind(5, request.m_challengeTp, SQLITE_TRANSIENT);
   statement.bind(6, request.m_remainingTries);
   statement.bind(7, request.m_remainingTime);
-  statement.bind(8, request.m_requestType);
+  statement.bind(8, static_cast<int>(request.m_requestType));
   statement.bind(9, request.m_requestId, SQLITE_TRANSIENT);
 
   if (statement.step() != SQLITE_DONE) {
@@ -256,17 +255,17 @@
                              FROM CertRequests)_SQLTEXT_");
 
   while (statement.step() == SQLITE_ROW) {
-    std::string requestId = statement.getString(1);
+    auto requestId = statement.getString(1);
     Name caName(statement.getBlock(2));
-    Status status = static_cast<Status>(statement.getInt(3));
-    std::string challengeStatus = statement.getString(4);
+    auto status = static_cast<Status>(statement.getInt(3));
+    auto challengeStatus = statement.getString(4);
     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);
-    int remainingTries = statement.getInt(10);
-    int remainingTime = statement.getInt(11);
-    int requestType = statement.getInt(12);
+    auto challengeType = statement.getString(7);
+    auto challengeSecrets = statement.getString(8);
+    auto challengeTp = statement.getString(9);
+    auto remainingTries = statement.getInt(10);
+    auto remainingTime = statement.getInt(11);
+    auto requestType = static_cast<RequestType>(statement.getInt(12));
     CertificateRequest entry(caName, requestId, requestType, status, challengeStatus, challengeType,
                              challengeTp, remainingTime, remainingTries,
                              convertString2Json(challengeSecrets), cert);
@@ -287,17 +286,17 @@
   statement.bind(1, caName.wireEncode(), SQLITE_TRANSIENT);
 
   while (statement.step() == SQLITE_ROW) {
-    std::string requestId = statement.getString(1);
+    auto requestId = statement.getString(1);
     Name caName(statement.getBlock(2));
-    Status status = static_cast<Status>(statement.getInt(3));
-    std::string challengeStatus = statement.getString(4);
+    auto status = static_cast<Status>(statement.getInt(3));
+    auto challengeStatus = statement.getString(4);
     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);
-    int remainingTries = statement.getInt(10);
-    int remainingTime = statement.getInt(11);
-    int requestType = statement.getInt(12);
+    auto challengeType = statement.getString(7);
+    auto challengeSecrets = statement.getString(8);
+    auto challengeTp = statement.getString(9);
+    auto remainingTries = statement.getInt(10);
+    auto remainingTime = statement.getInt(11);
+    auto requestType = static_cast<RequestType>(statement.getInt(12));
     CertificateRequest entry(caName, requestId, requestType, status, challengeStatus, challengeType,
                              challengeTp, remainingTime, remainingTries,
                              convertString2Json(challengeSecrets), cert);
diff --git a/src/ca-module.cpp b/src/ca-module.cpp
index 5a16ab3..81b7138 100644
--- a/src/ca-module.cpp
+++ b/src/ca-module.cpp
@@ -58,10 +58,10 @@
 
 CaModule::~CaModule()
 {
-  for (auto handle : m_interestFilterHandles) {
+  for (auto& handle : m_interestFilterHandles) {
     handle.cancel();
   }
-  for (auto handle : m_registeredPrefixHandles) {
+  for (auto& handle : m_registeredPrefixHandles) {
     handle.unregister();
   }
 }
@@ -96,7 +96,7 @@
 
         // register NEW prefix
         filterId = m_face.setInterestFilter(Name(name).append("NEW"),
-                                            bind(&CaModule::onNew, this, _2));
+                                            bind(&CaModule::onNewRenewRevoke, this, _1, _2, RequestType::NEW));
         m_interestFilterHandles.push_back(filterId);
 
         // register SELECT prefix
@@ -106,7 +106,7 @@
 
         // register REVOKE prefix
         filterId = m_face.setInterestFilter(Name(name).append("REVOKE"),
-                                            bind(&CaModule::onRevoke, this, _2));
+                                            bind(&CaModule::onNewRenewRevoke, this, _1, _2, RequestType::REVOKE));
         m_interestFilterHandles.push_back(filterId);
         _LOG_TRACE("Prefix " << name << " got registered");
       },
@@ -226,22 +226,10 @@
 }
 
 void
-CaModule::onNew(const Interest& request)
+CaModule::onNewRenewRevoke(const InterestFilter& filter, const Interest& request, RequestType requestType)
 {
   // NEW Naming Convention: /<CA-prefix>/CA/NEW/[SignedInterestParameters_Digest]
-  onRequestInit(request, REQUEST_TYPE_NEW);
-}
-
-void
-CaModule::onRevoke(const Interest& request)
-{
   // REVOKE Naming Convention: /<CA-prefix>/CA/REVOKE/[SignedInterestParameters_Digest]
-  onRequestInit(request, REQUEST_TYPE_REVOKE);
-}
-
-void
-CaModule::onRequestInit(const Interest& request, int requestType)
-{
   // get ECDH pub key and cert request
   const auto& parameterTLV = request.getApplicationParameters();
   parameterTLV.parse();
@@ -275,7 +263,7 @@
 
   shared_ptr<security::v2::Certificate> clientCert = nullptr;
 
-  if (requestType == REQUEST_TYPE_NEW) {
+  if (requestType == RequestType::NEW) {
     // parse certificate request
     Block cert_req = parameterTLV.get(tlv_cert_request);
     cert_req.parse();
@@ -318,7 +306,7 @@
       return;
     }
   }
-  else if (requestType == REQUEST_TYPE_REVOKE) {
+  else if (requestType == RequestType::REVOKE) {
     // parse certificate request
     Block cert_revoke = parameterTLV.get(tlv_cert_to_revoke);
     cert_revoke.parse();
@@ -362,13 +350,13 @@
   Data result;
   result.setName(request.getName());
   result.setFreshnessPeriod(DEFAULT_DATA_FRESHNESS_PERIOD);
-  if (requestType == REQUEST_TYPE_NEW) {
+  if (requestType == RequestType::NEW) {
     result.setContent(NEW::encodeDataContent(myEcdhPubKeyBase64,
                                              std::to_string(saltInt),
                                              certRequest,
                                              m_config.m_supportedChallenges));
   }
-  else if (requestType == REQUEST_TYPE_REVOKE) {
+  else if (requestType == RequestType::REVOKE) {
     result.setContent(REVOKE::encodeDataContent(myEcdhPubKeyBase64,
                                                 std::to_string(saltInt),
                                                 certRequest,
@@ -444,7 +432,7 @@
   Block payload;
   if (certRequest.m_status == Status::PENDING) {
     // if challenge succeeded
-    if (certRequest.m_requestType == REQUEST_TYPE_NEW) {
+    if (certRequest.m_requestType == RequestType::NEW) {
       auto issuedCert = issueCertificate(certRequest);
       certRequest.m_cert = issuedCert;
       certRequest.m_status = Status::SUCCESS;
@@ -466,7 +454,7 @@
       //contentJson.add(JSON_CA_CERT_ID, readString(issuedCert.getName().at(-1)));
       _LOG_TRACE("Challenge succeeded. Certificate has been issued");
     }
-    else if (certRequest.m_requestType == REQUEST_TYPE_REVOKE) {
+    else if (certRequest.m_requestType == RequestType::REVOKE) {
       certRequest.m_status = Status::SUCCESS;
       try {
         m_storage->deleteRequest(certRequest.m_requestId);
diff --git a/src/ca-module.hpp b/src/ca-module.hpp
index 1cdd246..7a48aef 100644
--- a/src/ca-module.hpp
+++ b/src/ca-module.hpp
@@ -84,13 +84,7 @@
   onProbe(const Interest& request);
 
   void
-  onRequestInit(const Interest& request, int requestType);
-
-  void
-  onNew(const Interest& request);
-
-  void
-  onRevoke(const Interest& request);
+  onNewRenewRevoke(const InterestFilter& filter, const Interest& request, RequestType requestType);
 
   void
   onChallenge(const Interest& request);
diff --git a/src/certificate-request.cpp b/src/certificate-request.cpp
index b205531..15b1fb2 100644
--- a/src/certificate-request.cpp
+++ b/src/certificate-request.cpp
@@ -26,7 +26,7 @@
 
 CertificateRequest::CertificateRequest() = default;
 
-CertificateRequest::CertificateRequest(const Name& caName, const std::string& requestId, int requestType, Status status,
+CertificateRequest::CertificateRequest(const Name& caName, const std::string& requestId, RequestType requestType, Status status,
                                        const security::v2::Certificate& cert)
     : m_caPrefix(caName)
     , m_requestId(requestId)
@@ -36,7 +36,7 @@
 {
 }
 
-CertificateRequest::CertificateRequest(const Name& caName, const std::string& requestId, int requestType, Status status,
+CertificateRequest::CertificateRequest(const Name& caName, const std::string& requestId, RequestType requestType, Status status,
                                        const std::string& challengeStatus, const std::string& challengeType,
                                        const std::string& challengeTp, int remainingTime, int remainingTries,
                                        const JsonSection& challengeSecrets, const security::v2::Certificate& cert)
diff --git a/src/certificate-request.hpp b/src/certificate-request.hpp
index bed7660..55b90c8 100644
--- a/src/certificate-request.hpp
+++ b/src/certificate-request.hpp
@@ -32,12 +32,6 @@
 
 typedef boost::property_tree::ptree JsonSection;
 
-//Request Type Enum
-enum {
-    REQUEST_TYPE_NEW = 0,
-    REQUEST_TYPE_REVOKE = 1
-};
-
 /**
  * @brief Represents a certificate request instance.
  *
@@ -45,13 +39,12 @@
  * m_challengeDefinedField to finish verification.
  *
  */
-class CertificateRequest
-{
+class CertificateRequest {
 public:
   CertificateRequest();
-  CertificateRequest(const Name& caName, const std::string& requestId, int requestType, Status status,
+  CertificateRequest(const Name& caName, const std::string& requestId, RequestType requestType, Status status,
                      const security::v2::Certificate& cert);
-  CertificateRequest(const Name& caName, const std::string& requestId, int requestType, Status status,
+  CertificateRequest(const Name& caName, const std::string& requestId, RequestType requestType, Status status,
                      const std::string& challengeStatus, const std::string& challengeType,
                      const std::string& challengeTp, int remainingTime, int remainingTries,
                      const JsonSection& challengeSecrets, const security::v2::Certificate& cert);
@@ -62,7 +55,7 @@
 public:
   Name m_caPrefix;
   std::string m_requestId = "";
-  int m_requestType = -1;
+  RequestType m_requestType = RequestType::NOTINITIALIZED;
   Status m_status = Status::NOT_STARTED;
   security::v2::Certificate m_cert;
   std::shared_ptr<Data> m_probeToken = nullptr;
@@ -78,7 +71,7 @@
 std::ostream&
 operator<<(std::ostream& os, const CertificateRequest& request);
 
-} // namespace ndncert
-} // namespace ndn
+}  // namespace ndncert
+}  // namespace ndn
 
-#endif // NDNCERT_CERTIFICATE_REQUEST_HPP
+#endif  // NDNCERT_CERTIFICATE_REQUEST_HPP
diff --git a/src/client-module.cpp b/src/client-module.cpp
index 6ebe9d7..024c23e 100644
--- a/src/client-module.cpp
+++ b/src/client-module.cpp
@@ -214,11 +214,11 @@
 std::list<std::string>
 ClientModule::onNewResponse(const Data& reply)
 {
-  return onRequestInitResponse(reply, REQUEST_TYPE_NEW);
+  return onRequestInitResponse(reply, RequestType::NEW);
 }
 
 std::list<std::string>
-ClientModule::onRequestInitResponse(const Data& reply, int requestType)
+ClientModule::onRequestInitResponse(const Data& reply, RequestType requestType)
 {
   if (!security::verifySignature(reply, m_ca.m_anchor)) {
     _LOG_ERROR("Cannot verify data signature from " << m_ca.m_caPrefix.toUri());
@@ -281,7 +281,7 @@
 std::list<std::string>
 ClientModule::onRevokeResponse(const Data& reply)
 {
-  return onRequestInitResponse(reply, REQUEST_TYPE_REVOKE);
+  return onRequestInitResponse(reply, RequestType::REVOKE);
 }
 
 shared_ptr<Interest>
diff --git a/src/client-module.hpp b/src/client-module.hpp
index f90cff3..394c584 100644
--- a/src/client-module.hpp
+++ b/src/client-module.hpp
@@ -103,7 +103,7 @@
   onRevokeResponse(const Data& reply);
 
   std::list<std::string>
-  onRequestInitResponse(const Data& reply, int requestType);
+  onRequestInitResponse(const Data& reply, RequestType requestType);
 
   shared_ptr<Interest>
   generateChallengeInterest(const Block& paramTLV);
diff --git a/src/ndncert-common.cpp b/src/ndncert-common.cpp
index 0a6c994..fc0e9c6 100644
--- a/src/ndncert-common.cpp
+++ b/src/ndncert-common.cpp
@@ -45,5 +45,22 @@
   }
 }
 
+std::string requestTypeToString(RequestType type)
+{
+  switch (type)
+  {
+  case RequestType::NEW:
+    return "New";
+  case RequestType::RENEW:
+    return "Renew";
+  case RequestType::REVOKE:
+    return "Revoke";
+  case RequestType::NOTINITIALIZED:
+    return "Not initalized";
+  default:
+    return "Unrecognized type";
+  }
+}
+
 }  // namespace ndncert
 }  // namespace ndn
diff --git a/src/ndncert-common.hpp b/src/ndncert-common.hpp
index 63c7881..02f24ff 100644
--- a/src/ndncert-common.hpp
+++ b/src/ndncert-common.hpp
@@ -35,10 +35,6 @@
 #define PROTECTED_WITH_TESTS_ELSE_PRIVATE private
 #endif
 
-#include <boost/algorithm/string.hpp>
-#include <boost/assert.hpp>
-#include <boost/noncopyable.hpp>
-#include <boost/throw_exception.hpp>
 #include <cstddef>
 #include <cstdint>
 #include <ndn-cxx/data.hpp>
@@ -50,6 +46,10 @@
 #include <ndn-cxx/name.hpp>
 #include <ndn-cxx/security/key-chain.hpp>
 #include <ndn-cxx/security/v2/certificate.hpp>
+#include <boost/algorithm/string.hpp>
+#include <boost/assert.hpp>
+#include <boost/noncopyable.hpp>
+#include <boost/throw_exception.hpp>
 
 namespace ndn {
 namespace ndncert {
@@ -161,6 +161,15 @@
   NO_AVAILABLE_NAMES = 9
 };
 
+enum class RequestType : uint16_t {
+  NOTINITIALIZED = 0,
+  NEW = 1,
+  RENEW = 2,
+  REVOKE = 3
+};
+
+std::string requestTypeToString(RequestType type);
+
 // Pre-defined challenge status
 const std::string CHALLENGE_STATUS_SUCCESS = "success";
 const std::string CHALLENGE_STATUS_FAILURE_TIMEOUT = "failure-timeout";
diff --git a/src/protocol-detail/probe.cpp b/src/protocol-detail/probe.cpp
index 2a3a71e..aa7755f 100644
--- a/src/protocol-detail/probe.cpp
+++ b/src/protocol-detail/probe.cpp
@@ -19,11 +19,9 @@
  */
 
 #include "probe.hpp"
-
-#include <boost/throw_exception.hpp>
-#include <ndn-cxx/encoding/tlv.hpp>
-
 #include "../logging.hpp"
+#include <ndn-cxx/encoding/tlv.hpp>
+#include <boost/throw_exception.hpp>
 
 namespace ndn {
 namespace ndncert {
diff --git a/tests/global-configuration.cpp b/tests/global-configuration.cpp
index 0a76e0f..61d0cbd 100644
--- a/tests/global-configuration.cpp
+++ b/tests/global-configuration.cpp
@@ -19,7 +19,6 @@
  */
 
 #include "boost-test.hpp"
-
 #include <boost/filesystem.hpp>
 #include <fstream>
 #include <stdlib.h>
diff --git a/tests/identity-management-fixture.cpp b/tests/identity-management-fixture.cpp
index 56f445e..84e1492 100644
--- a/tests/identity-management-fixture.cpp
+++ b/tests/identity-management-fixture.cpp
@@ -20,7 +20,6 @@
  */
 
 #include "identity-management-fixture.hpp"
-
 #include <ndn-cxx/security/v2/additional-description.hpp>
 #include <ndn-cxx/util/io.hpp>
 #include <boost/filesystem.hpp>
diff --git a/tests/unit-tests/ca-memory.t.cpp b/tests/unit-tests/ca-memory.t.cpp
index 01812af..452937e 100644
--- a/tests/unit-tests/ca-memory.t.cpp
+++ b/tests/unit-tests/ca-memory.t.cpp
@@ -82,7 +82,7 @@
   auto cert1 = key1.getDefaultCertificate();
 
   // add operation
-  CertificateRequest request1(Name("/ndn/site1"), "123", REQUEST_TYPE_NEW, Status::BEFORE_CHALLENGE, cert1);
+  CertificateRequest request1(Name("/ndn/site1"), "123", RequestType::NEW, Status::BEFORE_CHALLENGE, cert1);
   BOOST_CHECK_NO_THROW(storage.addRequest(request1));
 
   // get operation
@@ -95,7 +95,7 @@
   json.put("code", "1234");
 
   // update operation
-  CertificateRequest request2(Name("/ndn/site1"), "123", REQUEST_TYPE_NEW, Status::CHALLENGE, CHALLENGE_STATUS_SUCCESS,
+  CertificateRequest request2(Name("/ndn/site1"), "123", RequestType::NEW, Status::CHALLENGE, CHALLENGE_STATUS_SUCCESS,
                               "Email", time::toIsoString(time::system_clock::now()), 3600, 3, json, cert1);
   storage.updateRequest(request2);
   result = storage.getRequest("123");
@@ -106,7 +106,7 @@
   auto identity2 = addIdentity(Name("/ndn/site2"));
   auto key2 = identity2.getDefaultKey();
   auto cert2 = key2.getDefaultCertificate();
-  CertificateRequest request3(Name("/ndn/site2"), "456", REQUEST_TYPE_NEW, Status::BEFORE_CHALLENGE, cert2);
+  CertificateRequest request3(Name("/ndn/site2"), "456", RequestType::NEW, Status::BEFORE_CHALLENGE, cert2);
   storage.addRequest(request3);
 
   // list operation
diff --git a/tests/unit-tests/ca-module.t.cpp b/tests/unit-tests/ca-module.t.cpp
index 2ac15da..4f2c092 100644
--- a/tests/unit-tests/ca-module.t.cpp
+++ b/tests/unit-tests/ca-module.t.cpp
@@ -441,7 +441,7 @@
   signatureInfo.setValidityPeriod(security::ValidityPeriod(time::system_clock::now(),
                                                            time::system_clock::now() + time::hours(10)));
   m_keyChain.sign(clientCert, signingByKey(clientKey.getName()).setSignatureInfo(signatureInfo));
-  CertificateRequest certRequest(Name("/ndn"), "122", REQUEST_TYPE_NEW, Status::SUCCESS, clientCert);
+  CertificateRequest certRequest(Name("/ndn"), "122", RequestType::NEW, Status::SUCCESS, clientCert);
   auto issuedCert = ca.issueCertificate(certRequest);
 
   ClientModule client(m_keyChain);
diff --git a/tests/unit-tests/ca-sqlite.t.cpp b/tests/unit-tests/ca-sqlite.t.cpp
index 467ddb3..123db6a 100644
--- a/tests/unit-tests/ca-sqlite.t.cpp
+++ b/tests/unit-tests/ca-sqlite.t.cpp
@@ -81,7 +81,7 @@
   auto cert1 = key1.getDefaultCertificate();
 
   // add operation
-  CertificateRequest request1(Name("/ndn/site1"), "123", REQUEST_TYPE_NEW, Status::BEFORE_CHALLENGE, cert1);
+  CertificateRequest request1(Name("/ndn/site1"), "123", RequestType::NEW, Status::BEFORE_CHALLENGE, cert1);
   BOOST_CHECK_NO_THROW(storage.addRequest(request1));
 
   // get operation
@@ -93,7 +93,7 @@
   // update operation
   JsonSection json;
   json.put("test", "4567");
-  CertificateRequest request2(Name("/ndn/site1"), "123", REQUEST_TYPE_NEW, Status::CHALLENGE, CHALLENGE_STATUS_SUCCESS,
+  CertificateRequest request2(Name("/ndn/site1"), "123", RequestType::NEW, Status::CHALLENGE, CHALLENGE_STATUS_SUCCESS,
                              "Email", time::toIsoString(time::system_clock::now()), 3600, 3, json, cert1);
   storage.updateRequest(request2);
   result = storage.getRequest("123");
@@ -104,7 +104,7 @@
   auto identity2 = addIdentity(Name("/ndn/site2"));
   auto key2 = identity2.getDefaultKey();
   auto cert2 = key2.getDefaultCertificate();
-  CertificateRequest request3(Name("/ndn/site2"), "456", REQUEST_TYPE_NEW, Status::BEFORE_CHALLENGE, cert2);
+  CertificateRequest request3(Name("/ndn/site2"), "456", RequestType::NEW, Status::BEFORE_CHALLENGE, cert2);
   storage.addRequest(request3);
 
   // list operation
diff --git a/tests/unit-tests/challenge-credential.t.cpp b/tests/unit-tests/challenge-credential.t.cpp
index 358175e..a4acddc 100644
--- a/tests/unit-tests/challenge-credential.t.cpp
+++ b/tests/unit-tests/challenge-credential.t.cpp
@@ -55,7 +55,7 @@
   auto identityA = addIdentity(Name("/example"));
   auto keyA = identityA.getDefaultKey();
   auto certA = key.getDefaultCertificate();
-  CertificateRequest request(Name("/example"), "123", REQUEST_TYPE_NEW, Status::BEFORE_CHALLENGE, certA);
+  CertificateRequest request(Name("/example"), "123", RequestType::NEW, Status::BEFORE_CHALLENGE, certA);
 
   // create requester's existing cert
   auto identityB = addIdentity(Name("/trust/cert"));
diff --git a/tests/unit-tests/challenge-email.t.cpp b/tests/unit-tests/challenge-email.t.cpp
index d397e58..9be44be 100644
--- a/tests/unit-tests/challenge-email.t.cpp
+++ b/tests/unit-tests/challenge-email.t.cpp
@@ -45,7 +45,7 @@
   auto identity = addIdentity(Name("/ndn/site1"));
   auto key = identity.getDefaultKey();
   auto cert = key.getDefaultCertificate();
-  CertificateRequest request(Name("/ndn/site1"), "123", REQUEST_TYPE_NEW, Status::BEFORE_CHALLENGE, cert);
+  CertificateRequest request(Name("/ndn/site1"), "123", RequestType::NEW, Status::BEFORE_CHALLENGE, cert);
 
   Block paramTLV = makeEmptyBlock(tlv_encrypted_payload);
   paramTLV.push_back(makeStringBlock(tlv_parameter_key, ChallengeEmail::PARAMETER_KEY_EMAIL));
@@ -95,7 +95,7 @@
   auto identity = addIdentity(Name("/ndn/site1"));
   auto key = identity.getDefaultKey();
   auto cert = key.getDefaultCertificate();
-  CertificateRequest request(Name("/ndn/site1"), "123", REQUEST_TYPE_NEW, Status::BEFORE_CHALLENGE, cert);
+  CertificateRequest request(Name("/ndn/site1"), "123", RequestType::NEW, Status::BEFORE_CHALLENGE, cert);
 
   Block paramTLV = makeEmptyBlock(tlv_encrypted_payload);
   paramTLV.push_back(makeStringBlock(tlv_parameter_key, ChallengeEmail::PARAMETER_KEY_EMAIL));
@@ -114,7 +114,7 @@
   auto cert = key.getDefaultCertificate();
   JsonSection json;
   json.put(ChallengeEmail::PARAMETER_KEY_CODE, "4567");
-  CertificateRequest request(Name("/ndn/site1"), "123", REQUEST_TYPE_NEW, Status::CHALLENGE, ChallengeEmail::NEED_CODE,
+  CertificateRequest request(Name("/ndn/site1"), "123", RequestType::NEW, Status::CHALLENGE, ChallengeEmail::NEED_CODE,
                              "Email", time::toIsoString(time::system_clock::now()), 3600, 3, json, cert);
 
   Block paramTLV = makeEmptyBlock(tlv_encrypted_payload);
@@ -135,7 +135,7 @@
   auto cert = key.getDefaultCertificate();
   JsonSection json;
   json.put(ChallengeEmail::PARAMETER_KEY_CODE, "4567");
-  CertificateRequest request(Name("/ndn/site1"), "123", REQUEST_TYPE_NEW, Status::CHALLENGE, ChallengeEmail::NEED_CODE,
+  CertificateRequest request(Name("/ndn/site1"), "123", RequestType::NEW, Status::CHALLENGE, ChallengeEmail::NEED_CODE,
                              "email", time::toIsoString(time::system_clock::now()), 3600, 3, json, cert);
 
   Block paramTLV = makeEmptyBlock(tlv_encrypted_payload);
diff --git a/tests/unit-tests/challenge-pin.t.cpp b/tests/unit-tests/challenge-pin.t.cpp
index a75444a..810b285 100644
--- a/tests/unit-tests/challenge-pin.t.cpp
+++ b/tests/unit-tests/challenge-pin.t.cpp
@@ -38,7 +38,7 @@
   auto identity = addIdentity(Name("/ndn/site1"));
   auto key = identity.getDefaultKey();
   auto cert = key.getDefaultCertificate();
-  CertificateRequest request(Name("/ndn/site1"), "123", REQUEST_TYPE_NEW, Status::BEFORE_CHALLENGE, cert);
+  CertificateRequest request(Name("/ndn/site1"), "123", RequestType::NEW, Status::BEFORE_CHALLENGE, cert);
 
   ChallengePin challenge;
   challenge.handleChallengeRequest(makeEmptyBlock(tlv_encrypted_payload), request);
@@ -55,7 +55,7 @@
   auto cert = key.getDefaultCertificate();
   JsonSection secret;
   secret.add(ChallengePin::PARAMETER_KEY_CODE, "12345");
-  CertificateRequest request(Name("/ndn/site1"), "123", REQUEST_TYPE_NEW, Status::CHALLENGE, ChallengePin::NEED_CODE, "pin",
+  CertificateRequest request(Name("/ndn/site1"), "123", RequestType::NEW, Status::CHALLENGE, ChallengePin::NEED_CODE, "pin",
                              time::toIsoString(time::system_clock::now()), 3600, 3, secret, cert);
 
   Block paramTLV = makeEmptyBlock(tlv_encrypted_payload);
@@ -76,7 +76,7 @@
   auto cert = key.getDefaultCertificate();
   JsonSection secret;
   secret.add(ChallengePin::PARAMETER_KEY_CODE, "12345");
-  CertificateRequest request(Name("/ndn/site1"), "123", REQUEST_TYPE_NEW, Status::CHALLENGE, ChallengePin::NEED_CODE, "pin",
+  CertificateRequest request(Name("/ndn/site1"), "123", RequestType::NEW, Status::CHALLENGE, ChallengePin::NEED_CODE, "pin",
                              time::toIsoString(time::system_clock::now()), 3600, 3, secret, cert);
 
   Block paramTLV = makeEmptyBlock(tlv_encrypted_payload);
diff --git a/tools/ndncert-ca-server.cpp b/tools/ndncert-ca-server.cpp
index 82f7c70..59f4d44 100644
--- a/tools/ndncert-ca-server.cpp
+++ b/tools/ndncert-ca-server.cpp
@@ -83,14 +83,10 @@
 
   if (wantRepoOut) {
       ca.setStatusUpdateCallback([&] (const CertificateRequest& request) {
-          if (request.m_status == Status::SUCCESS && request.m_requestType == REQUEST_TYPE_NEW) {
+          if (request.m_status == Status::SUCCESS && request.m_requestType == RequestType::NEW) {
             auto issuedCert = request.m_cert;
             boost::asio::ip::tcp::iostream requestStream;
-#if BOOST_VERSION >= 106700
             requestStream.expires_after(std::chrono::seconds(3));
-#else
-            requestStream.expires_from_now(boost::posix_time::seconds(3));
-#endif // BOOST_VERSION >= 106700
             requestStream.connect(repoHost, repoPort);
             if (!requestStream) {
               std::cerr << "ERROR: Cannot publish certificate to repo-ng"
diff --git a/tools/ndncert-ca-status.cpp b/tools/ndncert-ca-status.cpp
index cf1c862..6d98f86 100644
--- a/tools/ndncert-ca-status.cpp
+++ b/tools/ndncert-ca-status.cpp
@@ -76,7 +76,7 @@
 
   for (const auto& entry : requestList) {
     std::cerr << "Request ID: " << entry.m_requestId << "\t"
-              << "Request Type" << entry.m_requestType << "\t"
+              << "Request Type" << requestTypeToString(entry.m_requestType) << "\t"
               << "Current Status: " << statusToString(entry.m_status) << std::endl
               << "Applying CA: " << entry.m_caPrefix << std::endl
               << "Applying for key: " << entry.m_cert.getName() << std::endl
diff --git a/tools/ndncert-client.cpp b/tools/ndncert-client.cpp
index 4b3b38a..096ceb2 100644
--- a/tools/ndncert-client.cpp
+++ b/tools/ndncert-client.cpp
@@ -18,18 +18,17 @@
  * See AUTHORS.md for complete list of ndncert authors and contributors.
  */
 
+#include "challenge-module.hpp"
+#include "client-module.hpp"
+#include "protocol-detail/info.hpp"
+#include <ndn-cxx/security/verification-helpers.hpp>
 #include <boost/asio.hpp>
 #include <boost/program_options/options_description.hpp>
 #include <boost/program_options/parsers.hpp>
 #include <boost/program_options/variables_map.hpp>
 #include <iostream>
-#include <ndn-cxx/security/verification-helpers.hpp>
 #include <string>
 
-#include "challenge-module.hpp"
-#include "client-module.hpp"
-#include "protocol-detail/info.hpp"
-
 namespace ndn {
 namespace ndncert {