diff --git a/src/detail/ca-sqlite.cpp b/src/detail/ca-sqlite.cpp
index 6abedee..1cddfed 100644
--- a/src/detail/ca-sqlite.cpp
+++ b/src/detail/ca-sqlite.cpp
@@ -137,14 +137,15 @@
 
   if (statement.step() == SQLITE_ROW) {
     RequestState state;
+    state.requestId = requestId;
     state.caPrefix = Name(statement.getBlock(1));
     state.status = static_cast<Status>(statement.getInt(2));
     state.cert = security::Certificate(statement.getBlock(4));
     state.challengeType = statement.getString(5);
     state.requestType = static_cast<RequestType>(statement.getInt(10));
     std::memcpy(state.encryptionKey.data(), statement.getBlob(11), statement.getSize(11));
-    state.encryptionIv.assign(statement.getBlob(12), statement.getBlob(12) + statement.getSize(12));
-    state.decryptionIv.assign(statement.getBlob(13), statement.getBlob(13) + statement.getSize(13));
+    state.encryptionIv = std::vector<uint8_t>(statement.getBlob(12), statement.getBlob(12) + statement.getSize(12));
+    state.decryptionIv = std::vector<uint8_t>(statement.getBlob(13), statement.getBlob(13) + statement.getSize(13));
     if (state.challengeType != "") {
       ChallengeState challengeState(statement.getString(3), time::fromIsoString(statement.getString(7)),
                                     statement.getInt(8), time::seconds(statement.getInt(9)),
@@ -179,8 +180,7 @@
   if (request.challengeState) {
     statement.bind(6, request.challengeType, SQLITE_TRANSIENT);
     statement.bind(7, request.challengeState->challengeStatus, SQLITE_TRANSIENT);
-    statement.bind(8, convertJson2String(request.challengeState->secrets),
-                   SQLITE_TRANSIENT);
+    statement.bind(8, convertJson2String(request.challengeState->secrets), SQLITE_TRANSIENT);
     statement.bind(9, time::toIsoString(request.challengeState->timestamp), SQLITE_TRANSIENT);
     statement.bind(10, request.challengeState->remainingTries);
     statement.bind(11, request.challengeState->remainingTime.count());
@@ -241,8 +241,8 @@
     state.cert = security::Certificate(statement.getBlock(5));
     state.requestType = static_cast<RequestType>(statement.getInt(11));
     std::memcpy(state.encryptionKey.data(), statement.getBlob(12), statement.getSize(12));
-    state.encryptionIv.assign(statement.getBlob(13), statement.getBlob(13) + statement.getSize(13));
-    state.decryptionIv.assign(statement.getBlob(14), statement.getBlob(14) + statement.getSize(14));
+    state.encryptionIv = std::vector<uint8_t>(statement.getBlob(13), statement.getBlob(13) + statement.getSize(13));
+    state.decryptionIv = std::vector<uint8_t>(statement.getBlob(14), statement.getBlob(14) + statement.getSize(14));
     if (state.challengeType != "") {
       ChallengeState challengeState(statement.getString(4), time::fromIsoString(statement.getString(8)),
                                     statement.getInt(9), time::seconds(statement.getInt(10)),
@@ -262,7 +262,7 @@
                              R"_SQLTEXT_(SELECT id, request_id, ca_name, status,
                              challenge_status, cert_request, challenge_type, challenge_secrets,
                              challenge_tp, remaining_tries, remaining_time, request_type,
-                             encryption_key, aes_block_counter
+                             encryption_key, encryption_iv, decryption_iv
                              FROM RequestStates WHERE ca_name = ?)_SQLTEXT_");
   statement.bind(1, caName.wireEncode(), SQLITE_TRANSIENT);
 
@@ -275,8 +275,8 @@
     state.cert = security::Certificate(statement.getBlock(5));
     state.requestType = static_cast<RequestType>(statement.getInt(11));
     std::memcpy(state.encryptionKey.data(), statement.getBlob(12), statement.getSize(12));
-    state.encryptionIv.assign(statement.getBlob(13), statement.getBlob(13) + statement.getSize(13));
-    state.decryptionIv.assign(statement.getBlob(14), statement.getBlob(14) + statement.getSize(14));
+    state.encryptionIv = std::vector<uint8_t>(statement.getBlob(13), statement.getBlob(13) + statement.getSize(13));
+    state.decryptionIv = std::vector<uint8_t>(statement.getBlob(14), statement.getBlob(14) + statement.getSize(14));
     if (state.challengeType != "") {
       ChallengeState challengeState(statement.getString(4), time::fromIsoString(statement.getString(8)),
                                     statement.getInt(9), time::seconds(statement.getInt(10)),
diff --git a/tests/unit-tests/bench.t.cpp b/tests/unit-tests/bench.t.cpp
index 54fc7d7..44e5ac5 100644
--- a/tests/unit-tests/bench.t.cpp
+++ b/tests/unit-tests/bench.t.cpp
@@ -24,8 +24,6 @@
 #include "requester.hpp"
 #include "test-common.hpp"
 
-#include <iostream>
-
 namespace ndn {
 namespace ndncert {
 namespace tests {
diff --git a/tests/unit-tests/ca-sqlite.t.cpp b/tests/unit-tests/ca-sqlite.t.cpp
index e338b63..78077db 100644
--- a/tests/unit-tests/ca-sqlite.t.cpp
+++ b/tests/unit-tests/ca-sqlite.t.cpp
@@ -44,6 +44,9 @@
   request1.requestId = requestId;
   request1.requestType = RequestType::NEW;
   request1.cert = cert1;
+  request1.encryptionKey = {{102}};
+  request1.decryptionIv.assign({1,2,3,4,5,6,7,8,9,10,11,12});
+  request1.decryptionIv.assign({2,3,4,5,6,7,8,9,10,11,12,13});
   storage.addRequest(request1);
 
   // get operation
@@ -53,6 +56,10 @@
   BOOST_CHECK_EQUAL(request1.caPrefix, result.caPrefix);
   BOOST_CHECK_EQUAL_COLLECTIONS(request1.encryptionKey.begin(), request1.encryptionKey.end(),
                                 result.encryptionKey.begin(), result.encryptionKey.end());
+  BOOST_CHECK_EQUAL_COLLECTIONS(request1.encryptionIv.begin(), request1.encryptionIv.end(),
+                                result.encryptionIv.begin(), result.encryptionIv.end());
+  BOOST_CHECK_EQUAL_COLLECTIONS(request1.decryptionIv.begin(), request1.decryptionIv.end(),
+                                result.decryptionIv.begin(), result.decryptionIv.end());
 
   // update operation
   RequestState request2;
@@ -65,11 +72,17 @@
   secret.add("code", "1234");
   request2.challengeState = ChallengeState("test", time::system_clock::now(), 3,
                                            time::seconds(3600), std::move(secret));
+  request2.decryptionIv.assign({1,2,3,4,5,6,7,8,9,10,11,14});
+  request2.decryptionIv.assign({2,3,4,5,6,7,8,9,10,11,12,15});
   storage.updateRequest(request2);
   result = storage.getRequest(requestId);
   BOOST_CHECK_EQUAL(request2.cert, result.cert);
   BOOST_CHECK(request2.status == result.status);
   BOOST_CHECK_EQUAL(request2.caPrefix, result.caPrefix);
+  BOOST_CHECK_EQUAL_COLLECTIONS(request2.encryptionIv.begin(), request2.encryptionIv.end(),
+                                result.encryptionIv.begin(), result.encryptionIv.end());
+  BOOST_CHECK_EQUAL_COLLECTIONS(request2.decryptionIv.begin(), request2.decryptionIv.end(),
+                                result.decryptionIv.begin(), result.decryptionIv.end());
 
   // another add operation
   auto identity2 = addIdentity(Name("/ndn/site2"));
diff --git a/tools/ndncert-client.cpp b/tools/ndncert-client.cpp
index 738c019..2402833 100644
--- a/tools/ndncert-client.cpp
+++ b/tools/ndncert-client.cpp
@@ -155,7 +155,7 @@
     std::cerr << "There is no available challenge provided by the CA. Exit" << std::endl;
     exit(1);
   }
-  else if (challengeList.size() > 1) {
+  else if (challengeList.size() >= 1) {
     std::cerr << "\n***************************************\n"
               << "Step " << nStep++
               << ": CHALLENGE SELECTION" << std::endl;
@@ -408,7 +408,7 @@
   int validityPeriod = captureValidityPeriod();
   auto now = time::system_clock::now();
   std::cerr << "The validity period of your certificate will be: " << validityPeriod << " hours" << std::endl;
-  requesterState =std::make_shared<RequestState>(keyChain, profile, RequestType::NEW);
+  requesterState = std::make_shared<RequestState>(keyChain, profile, RequestType::NEW);
   auto interest = Requester::genNewInterest(*requesterState, identityName, now, now + time::hours(validityPeriod));
   if (interest != nullptr) {
     face.expressInterest(*interest, bind(&newCb, _2), bind(&onNackCb), bind(&timeoutCb));
