CR fix 3

Change-Id: If6802a52f48870a1fe3c42d57d7797a5f5248b26
diff --git a/src/name-assignment/assignment-func.cpp b/src/name-assignment/assignment-func.cpp
index 22eb35e..d65eefd 100644
--- a/src/name-assignment/assignment-func.cpp
+++ b/src/name-assignment/assignment-func.cpp
@@ -24,8 +24,7 @@
 namespace ndn {
 namespace ndncert {
 
-NameAssignmentFunc::NameAssignmentFunc(const std::string& factoryType, const std::string& format)
-  : FACTORY_TYPE(factoryType)
+NameAssignmentFunc::NameAssignmentFunc(const std::string& format)
 {
   size_t index = 0, startIndex = 0;
   while ((index = format.find("/", startIndex)) != std::string::npos) {
diff --git a/src/name-assignment/assignment-func.hpp b/src/name-assignment/assignment-func.hpp
index e122ed2..9ed8e22 100644
--- a/src/name-assignment/assignment-func.hpp
+++ b/src/name-assignment/assignment-func.hpp
@@ -22,6 +22,7 @@
 #define NDNCERT_ASSIGNMENT_FUNC_HPP
 
 #include "detail/ca-request-state.hpp"
+#include <map>
 
 namespace ndn {
 namespace ndncert {
@@ -29,7 +30,7 @@
 class NameAssignmentFunc : noncopyable
 {
 protected:
-  explicit NameAssignmentFunc(const std::string& factoryType, const std::string& format = "");
+  explicit NameAssignmentFunc(const std::string& format = "");
 
 public:
   virtual ~NameAssignmentFunc() = default;
@@ -45,9 +46,7 @@
    * @return a vector containing the possible namespaces derived from the parameters.
    */
   virtual std::vector<PartialName>
-  assignName(const std::vector<std::tuple<std::string, std::string>>& params) = 0;
-
-  const std::string FACTORY_TYPE;
+  assignName(const std::multimap<std::string, std::string> &params) = 0;
 
 public:
   template <class AssignmentType>
@@ -62,7 +61,7 @@
   static unique_ptr<NameAssignmentFunc>
   createNameAssignmentFunc(const std::string& challengeType, const std::string& format = "");
 
-NDNCERT_PUBLIC_WITH_TESTS_ELSE_PRIVATE:
+NDNCERT_PUBLIC_WITH_TESTS_ELSE_PROTECTED:
     std::vector<std::string> m_nameFormat;
     
 private:
diff --git a/src/name-assignment/assignment-hash.cpp b/src/name-assignment/assignment-hash.cpp
index 8f0e641..0dec488 100644
--- a/src/name-assignment/assignment-hash.cpp
+++ b/src/name-assignment/assignment-hash.cpp
@@ -27,20 +27,19 @@
 NDNCERT_REGISTER_FUNCFACTORY(AssignmentHash, "hash");
 
 AssignmentHash::AssignmentHash(const std::string& format)
-  : NameAssignmentFunc("hash", format)
+  : NameAssignmentFunc(format)
 {}
 
 std::vector<PartialName>
-AssignmentHash::assignName(const std::vector<std::tuple<std::string, std::string>>& params)
+AssignmentHash::assignName(const std::multimap<std::string, std::string> &params)
 {
   std::vector<PartialName> resultList;
   Name result;
   for (const auto& item : m_nameFormat) {
-    auto it = std::find_if(params.begin(), params.end(),
-                           [&](const std::tuple<std::string, std::string>& e) { return std::get<0>(e) == item; });
+    auto it = params.find(item);
     if (it != params.end()) {
       util::Sha256 digest;
-      digest << std::get<1>(*it);
+      digest << it->second;
       result.append(digest.toString());
     }
     else {
diff --git a/src/name-assignment/assignment-hash.hpp b/src/name-assignment/assignment-hash.hpp
index 77e5e91..6acb30c 100644
--- a/src/name-assignment/assignment-hash.hpp
+++ b/src/name-assignment/assignment-hash.hpp
@@ -35,7 +35,7 @@
   AssignmentHash(const std::string& format = "");
 
   std::vector<PartialName>
-  assignName(const std::vector<std::tuple<std::string, std::string>>& params) override;
+  assignName(const std::multimap<std::string, std::string> &params) override;
 
 };
 
diff --git a/src/name-assignment/assignment-param.cpp b/src/name-assignment/assignment-param.cpp
index 4ebe637..b99d685 100644
--- a/src/name-assignment/assignment-param.cpp
+++ b/src/name-assignment/assignment-param.cpp
@@ -26,19 +26,19 @@
 NDNCERT_REGISTER_FUNCFACTORY(AssignmentParam, "param");
 
 AssignmentParam::AssignmentParam(const std::string& format)
-  : NameAssignmentFunc("param", format)
+  : NameAssignmentFunc(format)
 {}
 
 std::vector<PartialName>
-AssignmentParam::assignName(const std::vector<std::tuple<std::string, std::string>>& params)
+AssignmentParam::assignName(const std::multimap<std::string, std::string> &params)
 {
   std::vector<PartialName> resultList;
   Name result;
   for (const auto& item : m_nameFormat) {
     auto it = std::find_if(params.begin(), params.end(),
                            [&](const std::tuple<std::string, std::string>& e) { return std::get<0>(e) == item; });
-    if (it != params.end() && !std::get<1>(*it).empty()) {
-      result.append(std::get<1>(*it));
+    if (it != params.end() && !it->second.empty()) {
+      result.append(it->second);
     }
     else {
       return resultList;
diff --git a/src/name-assignment/assignment-param.hpp b/src/name-assignment/assignment-param.hpp
index 8a31dc6..cdf2cc5 100644
--- a/src/name-assignment/assignment-param.hpp
+++ b/src/name-assignment/assignment-param.hpp
@@ -35,7 +35,7 @@
   AssignmentParam(const std::string& format = "");
 
   std::vector<PartialName>
-  assignName(const std::vector<std::tuple<std::string, std::string>>& params) override;
+  assignName(const std::multimap<std::string, std::string> &params) override;
 
 };
 
diff --git a/src/name-assignment/assignment-random.cpp b/src/name-assignment/assignment-random.cpp
index 59f6477..eaed861 100644
--- a/src/name-assignment/assignment-random.cpp
+++ b/src/name-assignment/assignment-random.cpp
@@ -27,11 +27,11 @@
 NDNCERT_REGISTER_FUNCFACTORY(AssignmentRandom, "random");
 
 AssignmentRandom::AssignmentRandom(const std::string& format)
-  : NameAssignmentFunc("random", format)
+  : NameAssignmentFunc(format)
 {}
 
 std::vector<PartialName>
-AssignmentRandom::assignName(const std::vector<std::tuple<std::string, std::string>>& params)
+AssignmentRandom::assignName(const std::multimap<std::string, std::string> &params)
 {
   std::vector<PartialName> resultList;
   resultList.emplace_back(to_string(random::generateSecureWord64()));
diff --git a/src/name-assignment/assignment-random.hpp b/src/name-assignment/assignment-random.hpp
index cf6509f..978a0b7 100644
--- a/src/name-assignment/assignment-random.hpp
+++ b/src/name-assignment/assignment-random.hpp
@@ -35,7 +35,7 @@
   AssignmentRandom(const std::string& format = "");
 
   std::vector<PartialName>
-  assignName(const std::vector<std::tuple<std::string, std::string>>& params) override;
+  assignName(const std::multimap<std::string, std::string> &params) override;
 };
 
 } // namespace ndncert