update certificate request data structure
Change-Id: Id73428d07e6a0315dcdf78da8aba380f429a8f46
diff --git a/src/challenge-module/challenge-email.cpp b/src/challenge-module/challenge-email.cpp
index aec7859..2e9e133 100644
--- a/src/challenge-module/challenge-email.cpp
+++ b/src/challenge-module/challenge-email.cpp
@@ -65,34 +65,38 @@
// send out the email
sendEmail(emailAddress, emailCode, request);
_LOG_TRACE("Secret for request " << request.m_requestId << " : " << emailCode);
- return returnWithNewChallengeStatus(request, NEED_CODE, std::move(secretJson), m_maxAttemptTimes, m_secretLifetime.count());
+ return returnWithNewChallengeStatus(request, NEED_CODE, std::move(secretJson), m_maxAttemptTimes, m_secretLifetime);
}
-
- if (request.m_challengeStatus == NEED_CODE || request.m_challengeStatus == WRONG_CODE) {
- _LOG_TRACE("Challenge Interest arrives. Challenge Status: " << request.m_challengeStatus);
- // the incoming interest should bring the pin code
- std::string givenCode = readString(params.get(tlv_parameter_value));
- auto secret = request.m_challengeSecrets;
- // check if run out of time
- if (currentTime - time::fromIsoString(request.m_challengeTp) >= m_secretLifetime) {
- return returnWithError(request, ErrorCode::OUT_OF_TIME, "Secret expired.");
- }
- // check if provided secret is correct
- if (givenCode == secret.get<std::string>(PARAMETER_KEY_CODE)) {
- // the code is correct
- _LOG_TRACE("Correct secret code. Challenge succeeded.");
- return returnWithSuccess(request);
- }
- // otherwise, check remaining attempt times
- if (request.m_remainingTries > 1) {
- auto remainTime = m_secretLifetime - (currentTime - time::fromIsoString(request.m_challengeTp));
- _LOG_TRACE("Wrong secret code provided. Remaining Tries - 1.");
- return returnWithNewChallengeStatus(request, WRONG_CODE, std::move(secret), request.m_remainingTries - 1, remainTime.count());
- }
- else {
- // run out times
- _LOG_TRACE("Wrong secret code provided. Ran out tires. Challenge failed.");
- return returnWithError(request, ErrorCode::OUT_OF_TRIES, "Ran out tires.");
+ if (request.m_challengeState) {
+ if (request.m_challengeState->m_challengeStatus == NEED_CODE ||
+ request.m_challengeState->m_challengeStatus == WRONG_CODE) {
+ _LOG_TRACE("Challenge Interest arrives. Challenge Status: " << request.m_challengeState->m_challengeStatus);
+ // the incoming interest should bring the pin code
+ std::string givenCode = readString(params.get(tlv_parameter_value));
+ auto secret = request.m_challengeState->m_secrets;
+ // check if run out of time
+ if (currentTime - request.m_challengeState->m_timestamp >= m_secretLifetime) {
+ return returnWithError(request, ErrorCode::OUT_OF_TIME, "Secret expired.");
+ }
+ // check if provided secret is correct
+ if (givenCode == secret.get<std::string>(PARAMETER_KEY_CODE)) {
+ // the code is correct
+ _LOG_TRACE("Correct secret code. Challenge succeeded.");
+ return returnWithSuccess(request);
+ }
+ // otherwise, check remaining attempt times
+ if (request.m_challengeState->m_remainingTries > 1) {
+ auto remainTime = m_secretLifetime - (currentTime - request.m_challengeState->m_timestamp);
+ _LOG_TRACE("Wrong secret code provided. Remaining Tries - 1.");
+ return returnWithNewChallengeStatus(request, WRONG_CODE, std::move(secret),
+ request.m_challengeState->m_remainingTries - 1,
+ time::duration_cast<time::seconds>(remainTime));
+ }
+ else {
+ // run out times
+ _LOG_TRACE("Wrong secret code provided. Ran out tires. Challenge failed.");
+ return returnWithError(request, ErrorCode::OUT_OF_TRIES, "Ran out tires.");
+ }
}
}
return returnWithError(request, ErrorCode::INVALID_PARAMETER, "Unexpected status or challenge status");