CR fix 3

Change-Id: If6802a52f48870a1fe3c42d57d7797a5f5248b26
diff --git a/src/identity-challenge/challenge-email.cpp b/src/identity-challenge/challenge-email.cpp
index 332ef96..8b08d82 100644
--- a/src/identity-challenge/challenge-email.cpp
+++ b/src/identity-challenge/challenge-email.cpp
@@ -103,18 +103,18 @@
 }
 
 // For Client
-std::vector<std::tuple<std::string, std::string>>
+std::multimap<std::string, std::string>
 ChallengeEmail::getRequestedParameterList(Status status, const std::string& challengeStatus)
 {
-  std::vector<std::tuple<std::string, std::string>> result;
+  std::multimap<std::string, std::string> result;
   if (status == Status::BEFORE_CHALLENGE && challengeStatus == "") {
-    result.push_back(std::make_tuple(PARAMETER_KEY_EMAIL, "Please input your email address"));
+    result.emplace(PARAMETER_KEY_EMAIL, "Please input your email address");
   }
   else if (status == Status::CHALLENGE && challengeStatus == NEED_CODE) {
-    result.push_back(std::make_tuple(PARAMETER_KEY_CODE, "Please input your verification code"));
+    result.emplace(PARAMETER_KEY_CODE, "Please input your verification code");
   }
   else if (status == Status::CHALLENGE && challengeStatus == WRONG_CODE) {
-    result.push_back(std::make_tuple(PARAMETER_KEY_CODE, "Incorrect code, please try again"));
+    result.emplace(PARAMETER_KEY_CODE, "Incorrect code, please try again");
   }
   else {
     NDN_THROW(std::runtime_error("Unexpected status or challenge status."));
@@ -124,24 +124,24 @@
 
 Block
 ChallengeEmail::genChallengeRequestTLV(Status status, const std::string& challengeStatus,
-                                       std::vector<std::tuple<std::string, std::string>>&& params)
+                                       std::multimap<std::string, std::string>&& params)
 {
   Block request(tlv::EncryptedPayload);
   if (status == Status::BEFORE_CHALLENGE) {
-    if (params.size() != 1 || std::get<0>(params[0]) != PARAMETER_KEY_EMAIL) {
+    if (params.size() != 1 || params.find(PARAMETER_KEY_EMAIL) == params.end()) {
       NDN_THROW(std::runtime_error("Wrong parameter provided."));
     }
     request.push_back(makeStringBlock(tlv::SelectedChallenge, CHALLENGE_TYPE));
     request.push_back(makeStringBlock(tlv::ParameterKey, PARAMETER_KEY_EMAIL));
-    request.push_back(makeStringBlock(tlv::ParameterValue, std::get<1>(params[0])));
+    request.push_back(makeStringBlock(tlv::ParameterValue, params.find(PARAMETER_KEY_EMAIL)->second));
   }
   else if (status == Status::CHALLENGE && (challengeStatus == NEED_CODE || challengeStatus == WRONG_CODE)) {
-    if (params.size() != 1 || std::get<0>(params[0]) != PARAMETER_KEY_CODE) {
+    if (params.size() != 1 || params.find(PARAMETER_KEY_CODE) == params.end()) {
       NDN_THROW(std::runtime_error("Wrong parameter provided."));
     }
     request.push_back(makeStringBlock(tlv::SelectedChallenge, CHALLENGE_TYPE));
     request.push_back(makeStringBlock(tlv::ParameterKey, PARAMETER_KEY_CODE));
-    request.push_back(makeStringBlock(tlv::ParameterValue, std::get<1>(params[0])));
+    request.push_back(makeStringBlock(tlv::ParameterValue, params.find(PARAMETER_KEY_CODE)->second));
   }
   else {
     NDN_THROW(std::runtime_error("Unexpected status or challenge status."));