fix all test errors
Change-Id: I9f4eaef441f0e4a48cefe33d21d07e206b387457
diff --git a/src/challenge-modules/challenge-credential.cpp b/src/challenge-modules/challenge-credential.cpp
index cf429b5..50a15c0 100644
--- a/src/challenge-modules/challenge-credential.cpp
+++ b/src/challenge-modules/challenge-credential.cpp
@@ -82,18 +82,19 @@
if (m_trustAnchors.empty()) {
parseConfigFile();
}
- shared_ptr<security::v2::Certificate> credential;
+ security::v2::Certificate credential;
const uint8_t* signature;
size_t signatureLen;
const auto& elements = params.elements();
for (size_t i = 0; i < elements.size(); i++) {
if (elements[i].type() == tlv_parameter_key) {
if (readString(elements[i]) == PARAMETER_KEY_CREDENTIAL_CERT) {
- std::istringstream ss(readString(elements[i + 1]));
- credential = io::load<security::v2::Certificate>(ss);
- if (credential == nullptr) {
- _LOG_ERROR("Cannot load challenge parameter: credential");
- return returnWithError(request, ErrorCode::INVALID_PARAMETER, "Cannot challenge credential: credential.");
+ try {
+ credential.wireDecode(elements[i + 1].blockFromValue());
+ }
+ catch (const std::exception& e) {
+ _LOG_ERROR("Cannot load challenge parameter: credential " << e.what());
+ return returnWithError(request, ErrorCode::INVALID_PARAMETER, "Cannot challenge credential: credential." + std::string(e.what()));
}
}
else if (readString(elements[i]) == PARAMETER_KEY_PROOF_OF_PRIVATE_KEY) {
@@ -104,13 +105,13 @@
}
// verify the credential and the self-signed cert
- Name signingKeyName = credential->getSignature().getKeyLocator().getName();
+ Name signingKeyName = credential.getSignature().getKeyLocator().getName();
security::transform::PublicKey key;
- const auto& pubKeyBuffer = credential->getPublicKey();
+ const auto& pubKeyBuffer = credential.getPublicKey();
key.loadPkcs8(pubKeyBuffer.data(), pubKeyBuffer.size());
for (auto anchor : m_trustAnchors) {
if (anchor.getKeyName() == signingKeyName) {
- if (security::verifySignature(*credential, anchor) &&
+ if (security::verifySignature(credential, anchor) &&
security::verifySignature((uint8_t*)request.m_requestId.c_str(), request.m_requestId.size(), signature, signatureLen, key)) {
return returnWithSuccess(request);
}
diff --git a/tests/unit-tests/ca-module.t.cpp b/tests/unit-tests/ca-module.t.cpp
index b1e4d22..66a929b 100644
--- a/tests/unit-tests/ca-module.t.cpp
+++ b/tests/unit-tests/ca-module.t.cpp
@@ -194,17 +194,15 @@
contentBlock.parse();
// Test CA sent redirections
- BOOST_CHECK_EQUAL(true, contentBlock.get(tlv_probe_redirect).hasValue());
- Block probeRedirect = contentBlock.get(tlv_probe_redirect);
- probeRedirect.parse();
- // Test the case where we have multiple probeRedirects
- BOOST_CHECK_EQUAL(probeRedirect.elements().size(), 2);
- for (const auto& item : probeRedirect.elements()) {
- Name caName;
- caName.wireDecode(item.get(tlv::Name));
- // TODO: Checkout the format of the name
- BOOST_CHECK_EQUAL(caName, "/ndn/example");
+ std::vector<Name> redirectionItems;
+ for (auto item : contentBlock.elements()) {
+ if (item.type() == tlv_probe_redirect) {
+ redirectionItems.push_back(Name(item.blockFromValue()));
+ }
}
+ BOOST_CHECK_EQUAL(redirectionItems.size(), 2);
+ BOOST_CHECK_EQUAL(security::v2::extractIdentityFromCertName(redirectionItems[0].getPrefix(-1)), "/ndn/site1");
+ BOOST_CHECK_EQUAL(security::v2::extractIdentityFromCertName(redirectionItems[1].getPrefix(-1)), "/ndn/site1");
});
face.receive(interest);
advanceClocks(time::milliseconds(20), 60);
diff --git a/tests/unit-tests/challenge-credential.t.cpp b/tests/unit-tests/challenge-credential.t.cpp
index 0854155..65d3a3d 100644
--- a/tests/unit-tests/challenge-credential.t.cpp
+++ b/tests/unit-tests/challenge-credential.t.cpp
@@ -67,13 +67,14 @@
SignatureInfo signatureInfo;
signatureInfo.setValidityPeriod(security::ValidityPeriod(system_clock::now(), system_clock::now() + time::minutes(1)));
m_keyChain.sign(credential, signingByCertificate(trustAnchor).setSignatureInfo(signatureInfo));
+ m_keyChain.addCertificate(keyB, credential);
// using private key to sign cert request
- std::vector<std::tuple<std::string, std::string>> params;
+ auto params = challenge.getRequestedParameterList(state.m_status, "");
ChallengeCredential::fulfillParameters(params, m_keyChain, credential.getName(), "123");
- Block paramsTlv = challenge.genChallengeRequestTLV(Status::BEFORE_CHALLENGE, "", std::move(params));
+ Block paramsTlv = challenge.genChallengeRequestTLV(state.m_status, "", std::move(params));
challenge.handleChallengeRequest(paramsTlv, state);
- BOOST_CHECK(state.m_status == Status::PENDING);
+ BOOST_CHECK_EQUAL(statusToString(state.m_status), statusToString(Status::PENDING));
}
BOOST_AUTO_TEST_SUITE_END()