remove JSON parameter list from challenge module and add unified return interfaces for challenge modules
Change-Id: I0e69f7f8ef2ea36f38f11815aa980928b049cdc7
diff --git a/tests/unit-tests/bench.t.cpp b/tests/unit-tests/bench.t.cpp
index a8602ef..81f9cf4 100644
--- a/tests/unit-tests/bench.t.cpp
+++ b/tests/unit-tests/bench.t.cpp
@@ -110,10 +110,10 @@
if (Name("/ndn/CA/NEW").isPrefixOf(response.getName())) {
std::cout << "NEW Data Size: " << response.wireEncode().size() << std::endl;
client.onNewResponse(response);
- auto paramJson = pinChallenge.getRequirementForChallenge(client.m_status, client.m_challengeStatus);
+ auto paramList = pinChallenge.getRequestedParameterList(client.m_status, client.m_challengeStatus);
challengeInterest = client.generateChallengeInterest(pinChallenge.genChallengeRequestTLV(client.m_status,
client.m_challengeStatus,
- paramJson));
+ std::move(paramList)));
}
else if (Name("/ndn/CA/CHALLENGE").isPrefixOf(response.getName()) && count == 0) {
count++;
@@ -123,10 +123,10 @@
BOOST_CHECK(client.m_status == Status::CHALLENGE);
BOOST_CHECK_EQUAL(client.m_challengeStatus, ChallengePin::NEED_CODE);
- auto paramJson = pinChallenge.getRequirementForChallenge(client.m_status, client.m_challengeStatus);
+ auto paramList = pinChallenge.getRequestedParameterList(client.m_status, client.m_challengeStatus);
challengeInterest2 = client.generateChallengeInterest(pinChallenge.genChallengeRequestTLV(client.m_status,
client.m_challengeStatus,
- paramJson));
+ std::move(paramList)));
}
else if (Name("/ndn/CA/CHALLENGE").isPrefixOf(response.getName()) && count == 1) {
count++;
@@ -136,16 +136,13 @@
BOOST_CHECK(client.m_status == Status::CHALLENGE);
BOOST_CHECK_EQUAL(client.m_challengeStatus, ChallengePin::WRONG_CODE);
- auto paramJson = pinChallenge.getRequirementForChallenge(client.m_status, client.m_challengeStatus);
+ auto paramList = pinChallenge.getRequestedParameterList(client.m_status, client.m_challengeStatus);
auto request = ca.getCertificateRequest(*challengeInterest2);
- auto secret = request.m_challengeSecrets.get(ChallengePin::JSON_PIN_CODE, "");
- for (auto& i : paramJson) {
- if (i.first == ChallengePin::JSON_PIN_CODE)
- i.second.put("", secret);
- }
+ auto secret = request.m_challengeSecrets.get(ChallengePin::PARAMETER_KEY_CODE, "");
+ std::get<1>(paramList[0]) = secret;
challengeInterest3 = client.generateChallengeInterest(pinChallenge.genChallengeRequestTLV(client.m_status,
client.m_challengeStatus,
- paramJson));
+ std::move(paramList)));
std::cout << "CHALLENGE Interest Size: " << challengeInterest3->wireEncode().size() << std::endl;
}
else if (Name("/ndn/CA/CHALLENGE").isPrefixOf(response.getName()) && count == 2) {
@@ -155,7 +152,6 @@
client.onChallengeResponse(response);
BOOST_CHECK(client.m_status == Status::SUCCESS);
- BOOST_CHECK_EQUAL(client.m_challengeStatus, CHALLENGE_STATUS_SUCCESS);
}
});
diff --git a/tests/unit-tests/ca-module.t.cpp b/tests/unit-tests/ca-module.t.cpp
index 9e0289a..3860060 100644
--- a/tests/unit-tests/ca-module.t.cpp
+++ b/tests/unit-tests/ca-module.t.cpp
@@ -46,49 +46,51 @@
advanceClocks(time::milliseconds(20), 60);
BOOST_CHECK_EQUAL(ca.m_registeredPrefixHandles.size(), 2);
- BOOST_CHECK_EQUAL(ca.m_interestFilterHandles.size(), 5); // onInfo, onProbe, onNew, onChallenge, onRevoke
+ BOOST_CHECK_EQUAL(ca.m_interestFilterHandles.size(), 5); // onInfo, onProbe, onNew, onChallenge, onRevoke
}
-// BOOST_AUTO_TEST_CASE(HandleProbe)
-// {
-// auto identity = addIdentity(Name("/ndn"));
-// auto key = identity.getDefaultKey();
-// auto cert = key.getDefaultCertificate();
+BOOST_AUTO_TEST_CASE(HandleProbe)
+{
+ auto identity = addIdentity(Name("/ndn"));
+ auto key = identity.getDefaultKey();
+ auto cert = key.getDefaultCertificate();
-// util::DummyClientFace face(io, m_keyChain, {true, true});
-// CaModule ca(face, m_keyChain, "tests/unit-tests/ca.conf.test", "ca-storage-memory");
-// ca.setProbeHandler([&](const Block& probeInfo) {
-// return "example";
-// });
-// advanceClocks(time::milliseconds(20), 60);
+ util::DummyClientFace face(io, m_keyChain, {true, true});
+ CaModule ca(face, m_keyChain, "tests/unit-tests/ca.conf.test", "ca-storage-memory");
+ ca.setNameAssignmentFunction([&](const std::vector<std::tuple<std::string, std::string>>) -> std::vector<std::string> {
+ std::vector<std::string> result;
+ result.push_back("example");
+ return result;
+ });
+ advanceClocks(time::milliseconds(20), 60);
-// Interest interest("/ndn/CA/PROBE");
-// interest.setCanBePrefix(false);
+ Interest interest("/ndn/CA/PROBE");
+ interest.setCanBePrefix(false);
-// Block paramTLV = makeEmptyBlock(tlv::ApplicationParameters);
-// paramTLV.push_back(makeStringBlock(tlv_parameter_key, JSON_CLIENT_PROBE_INFO));
-// paramTLV.push_back(makeStringBlock(tlv_parameter_value, "zhiyi"));
-// paramTLV.encode();
+ Block paramTLV = makeEmptyBlock(tlv::ApplicationParameters);
+ paramTLV.push_back(makeStringBlock(tlv_parameter_key, JSON_CLIENT_PROBE_INFO));
+ paramTLV.push_back(makeStringBlock(tlv_parameter_value, "zhiyi"));
+ paramTLV.encode();
-// interest.setApplicationParameters(paramTLV);
+ interest.setApplicationParameters(paramTLV);
-// int count = 0;
-// face.onSendData.connect([&](const Data& response) {
-// count++;
-// BOOST_CHECK(security::verifySignature(response, cert));
-// Block contentBlock = response.getContent();
-// contentBlock.parse();
-// Block probeResponse = contentBlock.get(tlv_probe_response);
-// probeResponse.parse();
-// Name caName;
-// caName.wireDecode(probeResponse.get(tlv::Name));
-// BOOST_CHECK_EQUAL(caName, "/ndn/example");
-// });
-// face.receive(interest);
+ int count = 0;
+ face.onSendData.connect([&](const Data& response) {
+ count++;
+ BOOST_CHECK(security::verifySignature(response, cert));
+ Block contentBlock = response.getContent();
+ contentBlock.parse();
+ Block probeResponse = contentBlock.get(tlv_probe_response);
+ probeResponse.parse();
+ Name caName;
+ caName.wireDecode(probeResponse.get(tlv::Name));
+ BOOST_CHECK_EQUAL(caName, "/ndn/example");
+ });
+ face.receive(interest);
-// advanceClocks(time::milliseconds(20), 60);
-// BOOST_CHECK_EQUAL(count, 1);
-// }
+ advanceClocks(time::milliseconds(20), 60);
+ BOOST_CHECK_EQUAL(count, 1);
+}
BOOST_AUTO_TEST_CASE(HandleInfo)
{
@@ -305,10 +307,10 @@
face.onSendData.connect([&](const Data& response) {
if (Name("/ndn/CA/NEW").isPrefixOf(response.getName())) {
client.onNewResponse(response);
- auto paramJson = pinChallenge.getRequirementForChallenge(client.m_status, client.m_challengeStatus);
+ auto paramList = pinChallenge.getRequestedParameterList(client.m_status, client.m_challengeStatus);
challengeInterest = client.generateChallengeInterest(pinChallenge.genChallengeRequestTLV(client.m_status,
client.m_challengeStatus,
- paramJson));
+ std::move(paramList)));
}
else if (Name("/ndn/CA/CHALLENGE").isPrefixOf(response.getName()) && count == 0) {
count++;
@@ -318,10 +320,10 @@
BOOST_CHECK(client.m_status == Status::CHALLENGE);
BOOST_CHECK_EQUAL(client.m_challengeStatus, ChallengePin::NEED_CODE);
- auto paramJson = pinChallenge.getRequirementForChallenge(client.m_status, client.m_challengeStatus);
+ auto paramList = pinChallenge.getRequestedParameterList(client.m_status, client.m_challengeStatus);
challengeInterest2 = client.generateChallengeInterest(pinChallenge.genChallengeRequestTLV(client.m_status,
client.m_challengeStatus,
- paramJson));
+ std::move(paramList)));
}
else if (Name("/ndn/CA/CHALLENGE").isPrefixOf(response.getName()) && count == 1) {
count++;
@@ -331,16 +333,13 @@
BOOST_CHECK(client.m_status == Status::CHALLENGE);
BOOST_CHECK_EQUAL(client.m_challengeStatus, ChallengePin::WRONG_CODE);
- auto paramJson = pinChallenge.getRequirementForChallenge(client.m_status, client.m_challengeStatus);
+ auto paramList = pinChallenge.getRequestedParameterList(client.m_status, client.m_challengeStatus);
auto request = ca.getCertificateRequest(*challengeInterest2);
- auto secret = request.m_challengeSecrets.get(ChallengePin::JSON_PIN_CODE, "");
- for (auto& i : paramJson) {
- if (i.first == ChallengePin::JSON_PIN_CODE)
- i.second.put("", secret);
- }
+ auto secret = request.m_challengeSecrets.get(ChallengePin::PARAMETER_KEY_CODE, "");
+ std::get<1>(paramList[0]) = secret;
challengeInterest3 = client.generateChallengeInterest(pinChallenge.genChallengeRequestTLV(client.m_status,
client.m_challengeStatus,
- paramJson));
+ std::move(paramList)));
}
else if (Name("/ndn/CA/CHALLENGE").isPrefixOf(response.getName()) && count == 2) {
count++;
@@ -348,7 +347,6 @@
client.onChallengeResponse(response);
BOOST_CHECK(client.m_status == Status::SUCCESS);
- BOOST_CHECK_EQUAL(client.m_challengeStatus, CHALLENGE_STATUS_SUCCESS);
}
});
@@ -369,7 +367,7 @@
auto key = identity.getDefaultKey();
auto cert = key.getDefaultCertificate();
- util::DummyClientFace face(io, { true, true });
+ util::DummyClientFace face(io, {true, true});
CaModule ca(face, m_keyChain, "tests/unit-tests/ca.conf.test", "ca-storage-memory");
advanceClocks(time::milliseconds(20), 60);
@@ -383,7 +381,7 @@
clientCert.setContent(clientKey.getPublicKey().data(), clientKey.getPublicKey().size());
SignatureInfo signatureInfo;
signatureInfo.setValidityPeriod(security::ValidityPeriod(time::system_clock::now(),
- time::system_clock::now() + time::hours(10)));
+ 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);
auto issuedCert = ca.issueCertificate(certRequest);
@@ -397,7 +395,7 @@
auto interest = client.generateRevokeInterest(issuedCert);
int count = 0;
- face.onSendData.connect([&] (const Data& response) {
+ face.onSendData.connect([&](const Data& response) {
count++;
BOOST_CHECK(security::verifySignature(response, cert));
auto contentBlock = response.getContent();
@@ -409,16 +407,16 @@
auto challengeBlockCount = 0;
for (auto const& element : contentBlock.elements()) {
- if (element.type() == tlv_challenge) {
- challengeBlockCount++;
- }
+ if (element.type() == tlv_challenge) {
+ challengeBlockCount++;
+ }
}
BOOST_CHECK(challengeBlockCount != 0);
client.onRevokeResponse(response);
BOOST_CHECK_EQUAL_COLLECTIONS(client.m_aesKey, client.m_aesKey + sizeof(client.m_aesKey),
- ca.m_aesKey, ca.m_aesKey + sizeof(ca.m_aesKey));
+ ca.m_aesKey, ca.m_aesKey + sizeof(ca.m_aesKey));
});
face.receive(*interest);
@@ -432,7 +430,7 @@
auto key = identity.getDefaultKey();
auto cert = key.getDefaultCertificate();
- util::DummyClientFace face(io, { true, true });
+ util::DummyClientFace face(io, {true, true});
CaModule ca(face, m_keyChain, "tests/unit-tests/ca.conf.test", "ca-storage-memory");
advanceClocks(time::milliseconds(20), 60);
@@ -446,7 +444,7 @@
clientCert.setContent(clientKey.getPublicKey().data(), clientKey.getPublicKey().size());
SignatureInfo signatureInfo;
signatureInfo.setValidityPeriod(security::ValidityPeriod(time::system_clock::now(),
- time::system_clock::now() + time::hours(10)));
+ time::system_clock::now() + time::hours(10)));
m_keyChain.sign(clientCert, signingByKey(clientKey.getName()).setSignatureInfo(signatureInfo));
ClientModule client(m_keyChain);
@@ -458,7 +456,7 @@
auto interest = client.generateRevokeInterest(clientCert);
int count = 0;
- face.onSendData.connect([&] (const Data& response) {
+ face.onSendData.connect([&](const Data& response) {
count++;
});
face.receive(*interest);
@@ -467,8 +465,7 @@
BOOST_CHECK_EQUAL(count, 0);
}
-
-BOOST_AUTO_TEST_SUITE_END() // TestCaModule
+BOOST_AUTO_TEST_SUITE_END() // TestCaModule
} // namespace tests
} // namespace ndncert
diff --git a/tests/unit-tests/challenge-credential.t.cpp b/tests/unit-tests/challenge-credential.t.cpp
index e600e20..358175e 100644
--- a/tests/unit-tests/challenge-credential.t.cpp
+++ b/tests/unit-tests/challenge-credential.t.cpp
@@ -89,15 +89,14 @@
Block params = makeEmptyBlock(tlv_encrypted_payload);
params.push_back(makeStringBlock(tlv_selected_challenge, "Credential"));
- params.push_back(makeStringBlock(tlv_parameter_key, ChallengeCredential::JSON_CREDENTIAL_CERT));
+ params.push_back(makeStringBlock(tlv_parameter_key, ChallengeCredential::PARAMETER_KEY_CREDENTIAL_CERT));
params.push_back(makeStringBlock(tlv_parameter_value, credentialStr));
- params.push_back(makeStringBlock(tlv_parameter_key, ChallengeCredential::JSON_PROOF_OF_PRIVATE_KEY));
+ params.push_back(makeStringBlock(tlv_parameter_key, ChallengeCredential::PARAMETER_KEY_PROOF_OF_PRIVATE_KEY));
params.push_back(makeStringBlock(tlv_parameter_value, selfSignedStr));
params.encode();
challenge.handleChallengeRequest(params, request);
BOOST_CHECK(request.m_status == Status::PENDING);
- BOOST_CHECK_EQUAL(request.m_challengeStatus, CHALLENGE_STATUS_SUCCESS);
}
BOOST_AUTO_TEST_SUITE_END()
diff --git a/tests/unit-tests/challenge-email.t.cpp b/tests/unit-tests/challenge-email.t.cpp
index 4beb6b4..d397e58 100644
--- a/tests/unit-tests/challenge-email.t.cpp
+++ b/tests/unit-tests/challenge-email.t.cpp
@@ -48,7 +48,7 @@
CertificateRequest request(Name("/ndn/site1"), "123", REQUEST_TYPE_NEW, Status::BEFORE_CHALLENGE, cert);
Block paramTLV = makeEmptyBlock(tlv_encrypted_payload);
- paramTLV.push_back(makeStringBlock(tlv_parameter_key, ChallengeEmail::JSON_EMAIL));
+ paramTLV.push_back(makeStringBlock(tlv_parameter_key, ChallengeEmail::PARAMETER_KEY_EMAIL));
paramTLV.push_back(makeStringBlock(tlv_parameter_value, "zhiyi@cs.ucla.edu"));
ChallengeEmail challenge("./tests/unit-tests/test-send-email.sh");
@@ -56,7 +56,7 @@
BOOST_CHECK(request.m_status == Status::CHALLENGE);
BOOST_CHECK_EQUAL(request.m_challengeStatus, ChallengeEmail::NEED_CODE);
- BOOST_CHECK(request.m_challengeSecrets.get<std::string>(ChallengeEmail::JSON_CODE) != "");
+ BOOST_CHECK(request.m_challengeSecrets.get<std::string>(ChallengeEmail::PARAMETER_KEY_CODE) != "");
BOOST_CHECK(request.m_remainingTime != 0);
BOOST_CHECK(request.m_remainingTries != 0);
BOOST_CHECK(request.m_challengeTp != "");
@@ -76,7 +76,7 @@
end = line.find(delimiter);
std::string secret = line.substr(0, end);
- auto stored_secret = request.m_challengeSecrets.get<std::string>(ChallengeEmail::JSON_CODE);
+ auto stored_secret = request.m_challengeSecrets.get<std::string>(ChallengeEmail::PARAMETER_KEY_CODE);
BOOST_CHECK_EQUAL(secret, stored_secret);
line = line.substr(end + 1);
@@ -98,13 +98,12 @@
CertificateRequest request(Name("/ndn/site1"), "123", REQUEST_TYPE_NEW, Status::BEFORE_CHALLENGE, cert);
Block paramTLV = makeEmptyBlock(tlv_encrypted_payload);
- paramTLV.push_back(makeStringBlock(tlv_parameter_key, ChallengeEmail::JSON_EMAIL));
+ paramTLV.push_back(makeStringBlock(tlv_parameter_key, ChallengeEmail::PARAMETER_KEY_EMAIL));
paramTLV.push_back(makeStringBlock(tlv_parameter_value, "zhiyi@cs"));
ChallengeEmail challenge;
challenge.handleChallengeRequest(paramTLV, request);
- BOOST_CHECK_EQUAL(request.m_challengeStatus, ChallengeEmail::FAILURE_INVALID_EMAIL);
BOOST_CHECK(request.m_status == Status::FAILURE);
}
@@ -114,18 +113,17 @@
auto key = identity.getDefaultKey();
auto cert = key.getDefaultCertificate();
JsonSection json;
- json.put(ChallengeEmail::JSON_CODE, "4567");
+ json.put(ChallengeEmail::PARAMETER_KEY_CODE, "4567");
CertificateRequest request(Name("/ndn/site1"), "123", REQUEST_TYPE_NEW, Status::CHALLENGE, ChallengeEmail::NEED_CODE,
"Email", time::toIsoString(time::system_clock::now()), 3600, 3, json, cert);
Block paramTLV = makeEmptyBlock(tlv_encrypted_payload);
- paramTLV.push_back(makeStringBlock(tlv_parameter_key, ChallengeEmail::JSON_CODE));
+ paramTLV.push_back(makeStringBlock(tlv_parameter_key, ChallengeEmail::PARAMETER_KEY_CODE));
paramTLV.push_back(makeStringBlock(tlv_parameter_value, "4567"));
ChallengeEmail challenge;
challenge.handleChallengeRequest(paramTLV, request);
- BOOST_CHECK_EQUAL(request.m_challengeStatus, CHALLENGE_STATUS_SUCCESS);
BOOST_CHECK(request.m_status == Status::PENDING);
BOOST_CHECK_EQUAL(request.m_challengeSecrets.empty(), true);
}
@@ -136,12 +134,12 @@
auto key = identity.getDefaultKey();
auto cert = key.getDefaultCertificate();
JsonSection json;
- json.put(ChallengeEmail::JSON_CODE, "4567");
+ json.put(ChallengeEmail::PARAMETER_KEY_CODE, "4567");
CertificateRequest request(Name("/ndn/site1"), "123", REQUEST_TYPE_NEW, Status::CHALLENGE, ChallengeEmail::NEED_CODE,
"email", time::toIsoString(time::system_clock::now()), 3600, 3, json, cert);
Block paramTLV = makeEmptyBlock(tlv_encrypted_payload);
- paramTLV.push_back(makeStringBlock(tlv_parameter_key, ChallengeEmail::JSON_CODE));
+ paramTLV.push_back(makeStringBlock(tlv_parameter_key, ChallengeEmail::PARAMETER_KEY_CODE));
paramTLV.push_back(makeStringBlock(tlv_parameter_value, "7890"));
ChallengeEmail challenge;
diff --git a/tests/unit-tests/challenge-pin.t.cpp b/tests/unit-tests/challenge-pin.t.cpp
index ef0a572..a75444a 100644
--- a/tests/unit-tests/challenge-pin.t.cpp
+++ b/tests/unit-tests/challenge-pin.t.cpp
@@ -54,19 +54,18 @@
auto key = identity.getDefaultKey();
auto cert = key.getDefaultCertificate();
JsonSection secret;
- secret.add(ChallengePin::JSON_PIN_CODE, "12345");
+ secret.add(ChallengePin::PARAMETER_KEY_CODE, "12345");
CertificateRequest request(Name("/ndn/site1"), "123", REQUEST_TYPE_NEW, Status::CHALLENGE, ChallengePin::NEED_CODE, "pin",
time::toIsoString(time::system_clock::now()), 3600, 3, secret, cert);
Block paramTLV = makeEmptyBlock(tlv_encrypted_payload);
- paramTLV.push_back(makeStringBlock(tlv_parameter_key, ChallengePin::JSON_PIN_CODE));
+ paramTLV.push_back(makeStringBlock(tlv_parameter_key, ChallengePin::PARAMETER_KEY_CODE));
paramTLV.push_back(makeStringBlock(tlv_parameter_value, "12345"));
ChallengePin challenge;
challenge.handleChallengeRequest(paramTLV, request);
BOOST_CHECK(request.m_status == Status::PENDING);
- BOOST_CHECK_EQUAL(request.m_challengeStatus, CHALLENGE_STATUS_SUCCESS);
BOOST_CHECK_EQUAL(request.m_challengeSecrets.empty(), true);
}
@@ -76,12 +75,12 @@
auto key = identity.getDefaultKey();
auto cert = key.getDefaultCertificate();
JsonSection secret;
- secret.add(ChallengePin::JSON_PIN_CODE, "12345");
+ secret.add(ChallengePin::PARAMETER_KEY_CODE, "12345");
CertificateRequest request(Name("/ndn/site1"), "123", REQUEST_TYPE_NEW, Status::CHALLENGE, ChallengePin::NEED_CODE, "pin",
time::toIsoString(time::system_clock::now()), 3600, 3, secret, cert);
Block paramTLV = makeEmptyBlock(tlv_encrypted_payload);
- paramTLV.push_back(makeStringBlock(tlv_parameter_key, ChallengePin::JSON_PIN_CODE));
+ paramTLV.push_back(makeStringBlock(tlv_parameter_key, ChallengePin::PARAMETER_KEY_CODE));
paramTLV.push_back(makeStringBlock(tlv_parameter_value, "45678"));
ChallengePin challenge;
diff --git a/tests/unit-tests/challenge-private-key.t.cpp b/tests/unit-tests/challenge-private-key.t.cpp
deleted file mode 100644
index 20eceaa..0000000
--- a/tests/unit-tests/challenge-private-key.t.cpp
+++ /dev/null
@@ -1,75 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2017-2020, Regents of the University of California.
- *
- * This file is part of ndncert, a certificate management system based on NDN.
- *
- * ndncert is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation, either
- * version 3 of the License, or (at your option) any later version.
- *
- * ndncert is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- * PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received copies of the GNU General Public License along with
- * ndncert, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
- *
- * See AUTHORS.md for complete list of ndncert authors and contributors.
- */
-
-#include "challenge-module/challenge-private-key.hpp"
-#include "test-common.hpp"
-#include <ndn-cxx/security/signing-helpers.hpp>
-#include <ndn-cxx/util/io.hpp>
-
-namespace ndn {
-namespace ndncert {
-namespace tests {
-
-BOOST_FIXTURE_TEST_SUITE(TestChallengeCredential, IdentityManagementFixture)
-
-BOOST_AUTO_TEST_CASE(HandlePrivateKeyChallengeRequest)
-{
- // create trust anchor
- ChallengePrivateKey challenge;
-
- // create certificate request
- auto identityA = addIdentity(Name("/example"));
- auto keyA = identityA.getDefaultKey();
- auto certA = keyA.getDefaultCertificate();
- CertificateRequest request(Name("/example"), "123", REQUEST_TYPE_REVOKE, Status::BEFORE_CHALLENGE, certA);
-
- security::v2::Certificate privateKeyProof;
- privateKeyProof.setName(Name(keyA.getName()).append("proof-of-private-key").appendVersion());
- privateKeyProof.setContent(makeStringBlock(tlv::Content, "123"));
- m_keyChain.sign(privateKeyProof, signingByKey(keyA));
-
- std::stringstream ss;
- io::save<security::v2::Certificate>(privateKeyProof, ss);
- auto checkCert = *(io::load<security::v2::Certificate>(ss));
- BOOST_CHECK_EQUAL(checkCert, privateKeyProof);
- ss.str("");
- ss.clear();
-
- io::save<security::v2::Certificate>(privateKeyProof, ss);
- std::string selfSignedStr = ss.str();
- ss.str("");
- ss.clear();
-
- Block params = makeEmptyBlock(tlv_encrypted_payload);
- params.push_back(makeStringBlock(tlv_selected_challenge, "Private Key"));
- params.push_back(makeStringBlock(tlv_parameter_key, ChallengePrivateKey::JSON_PROOF_OF_PRIVATE_KEY));
- params.push_back(makeStringBlock(tlv_parameter_value, selfSignedStr));
- params.encode();
-
- challenge.handleChallengeRequest(params, request);
- BOOST_CHECK(request.m_status == Status::PENDING);
- BOOST_CHECK_EQUAL(request.m_challengeStatus, CHALLENGE_STATUS_SUCCESS);
-}
-
-BOOST_AUTO_TEST_SUITE_END()
-
-} // namespace tests
-} // namespace ndncert
-} // namespace ndn