Update validation related codes to security v2

Change-Id: I5467b87092820666c04f22623f0f1665ce9a1194
diff --git a/src/validator.cpp b/src/validator.cpp
index 71c9680..9eb9a2e 100644
--- a/src/validator.cpp
+++ b/src/validator.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2014, Regents of the University of California.
+/*
+ * Copyright (c) 2014-2017, Regents of the University of California.
  *
  * This file is part of NDNS (Named Data Networking Domain Name Service).
  * See AUTHORS.md for complete list of NDNS authors and contributors.
@@ -17,106 +17,30 @@
  * NDNS, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include "validator.hpp"
 #include "logger.hpp"
 #include "config.hpp"
-#include "validator.hpp"
 
-#include "ndn-cxx/data.hpp"
-#include <ndn-cxx/security/validator-config.hpp>
-
+#include <ndn-cxx/security/v2/validation-policy-config.hpp>
+#include <ndn-cxx/security/v2/certificate-fetcher-from-network.hpp>
 
 namespace ndn {
 namespace ndns {
 
 NDNS_LOG_INIT("validator")
 
-std::string Validator::VALIDATOR_CONF_FILE = DEFAULT_CONFIG_PATH "/" "validator.conf";
+std::string NdnsValidatorBuilder::VALIDATOR_CONF_FILE = DEFAULT_CONFIG_PATH "/" "validator.conf";
 
-Validator::Validator(Face& face, const std::string& confFile /* = VALIDATOR_CONF_FILE */)
-  : ValidatorConfig(face)
+unique_ptr<security::v2::Validator>
+NdnsValidatorBuilder::create(Face& face, const std::string& confFile)
 {
-  try {
-    this->load(confFile);
-    NDNS_LOG_TRACE("Validator loads configuration: " << confFile);
-  }
-  catch (std::exception&) {
-    std::string config =
-      "rule                                                                       \n"
-      "{                                                                          \n"
-      "  id \"NDNS Validator\"                                                    \n"
-      "  for data                                                                 \n"
-      "  checker                                                                  \n"
-      "  {                                                                        \n"
-      "    type customized                                                        \n"
-      "    sig-type rsa-sha256                                                    \n"
-      "    key-locator                                                            \n"
-      "    {                                                                      \n"
-      "      type name                                                            \n"
-      "      hyper-relation                                                       \n"
-      "      {                                                                    \n"
-      "        k-regex ^(<>*)<KEY>(<>*)<><ID-CERT>$                               \n"
-      "        k-expand \\\\1\\\\2                                                \n"
-      "        h-relation is-prefix-of                                            \n"
-      "        p-regex ^(<>*)[<KEY><NDNS>](<>*)<><>$                              \n"
-      "        p-expand \\\\1\\\\2                                                \n"
-      "      }                                                                    \n"
-      "    }                                                                      \n"
-      "  }                                                                        \n"
-      "}                                                                          \n"
-      "                                                                           \n"
-      "                                                                           \n"
-      "trust-anchor                                                               \n"
-      "{                                                                          \n"
-      "  type file                                                                \n"
-      "  file-name \""
-      ;
+  auto validator = make_unique<security::v2::Validator>(make_unique<security::v2::ValidationPolicyConfig>(),
+                                                        make_unique<security::v2::CertificateFetcherFromNetwork>(face));
+  security::v2::ValidationPolicyConfig& policy = dynamic_cast<security::v2::ValidationPolicyConfig&>(validator->getPolicy());
+  policy.load(confFile);
+  NDNS_LOG_TRACE("Validator loads configuration: " << confFile);
 
-    config += DEFAULT_CONFIG_PATH "/" "anchors/root.cert";
-
-    config +=
-      "\"                                                                         \n"
-      "}                                                                          \n"
-      "                                                                           \n"
-      ;
-
-    this->load(config, "embededConf");
-    NDNS_LOG_TRACE("Validator loads embedded configuration with anchors path: anchors/root.cert");
-  }
-
-}
-
-void
-Validator::validate(const Data& data,
-                    const OnDataValidated& onValidated,
-                    const OnDataValidationFailed& onValidationFailed)
-{
-  NDNS_LOG_TRACE("[* ?? *] verify data: " << data.getName() << ". KeyLocator: "
-                 << data.getSignature().getKeyLocator().getName());
-  ValidatorConfig::validate(data,
-                            [this, onValidated] (const shared_ptr<const Data>& data) {
-                              this->onDataValidated(data);
-                              onValidated(data);
-                            },
-                            [this, onValidationFailed] (const shared_ptr<const Data>& data,
-                                                        const std::string& str) {
-                              this->onDataValidationFailed(data, str);
-                              onValidationFailed(data, str);
-                            }
-                            );
-}
-
-void
-Validator::onDataValidated(const shared_ptr<const Data>& data)
-{
-  NDNS_LOG_TRACE("[* VV *] pass validation: " << data->getName() << ". KeyLocator = "
-                 << data->getSignature().getKeyLocator().getName());
-}
-
-void
-Validator::onDataValidationFailed(const shared_ptr<const Data>& data, const std::string& str)
-{
-  NDNS_LOG_WARN("[* XX *] fail validation: " << data->getName() << ". due to: " << str
-                << ". KeyLocator = " << data->getSignature().getKeyLocator().getName());
+  return validator;
 }
 
 } // namespace ndns