diff --git a/src/encryptor.cpp b/src/encryptor.cpp
index 0472e1e..eb6c486 100644
--- a/src/encryptor.cpp
+++ b/src/encryptor.cpp
@@ -153,7 +153,9 @@
                              m_kekPendingInterest = nullptr;
                              // @todo verify if the key is legit
                              m_kek = kek;
-                             makeAndPublishCkData(onFailure);
+                             if (makeAndPublishCkData(onFailure)) {
+                               onReady();
+                             }
                              // otherwise, failure has been already declared
                            },
                            [=] (const Interest& i, const lp::Nack& nack) {
@@ -189,7 +191,7 @@
                            });
 }
 
-void
+bool
 Encryptor::makeAndPublishCkData(const ErrorCallback& onFailure)
 {
   try {
@@ -207,9 +209,11 @@
     m_ims.insert(*ckData);
 
     NDN_LOG_DEBUG("Publishing CK data: " << ckData->getName());
+    return true;
   }
   catch (const std::runtime_error& error) {
     onFailure(ErrorCode::EncryptionFailure, "Failed to encrypt generated CK with KEK " + m_kek->getName().toUri());
+    return false;
   }
 }
 
diff --git a/src/encryptor.hpp b/src/encryptor.hpp
index 34d69bb..2b82d31 100644
--- a/src/encryptor.hpp
+++ b/src/encryptor.hpp
@@ -124,10 +124,10 @@
                            const ErrorCallback& onFailure,
                            size_t nTriesLeft);
 
-  void
+  bool
   makeAndPublishCkData(const ErrorCallback& onFailure);
 
-private:
+PUBLIC_WITH_TESTS_ELSE_PRIVATE:
   Name m_accessPrefix;
   Name m_ckPrefix;
   Name m_ckName;
diff --git a/tests/tests/encryptor.t.cpp b/tests/tests/encryptor.t.cpp
index 57e8b21..5b8aae8 100644
--- a/tests/tests/encryptor.t.cpp
+++ b/tests/tests/encryptor.t.cpp
@@ -98,6 +98,11 @@
 
 BOOST_AUTO_TEST_CASE(EncryptAndPublishedCk)
 {
+  encryptor.m_kek.reset();
+  BOOST_CHECK_EQUAL(encryptor.m_isKekRetrievalInProgress, false);
+  encryptor.regenerateCk();
+  BOOST_CHECK_EQUAL(encryptor.m_isKekRetrievalInProgress, true);
+
   std::string plaintext = "Data to encrypt";
   auto block = encryptor.encrypt(reinterpret_cast<const uint8_t*>(plaintext.data()), plaintext.size());
 
@@ -133,6 +138,8 @@
 
   auto extractedKek = ckName.getSubName(6);
   BOOST_CHECK_EQUAL(extractedKek, kek.getName());
+
+  BOOST_CHECK_EQUAL(encryptor.m_isKekRetrievalInProgress, false);
 }
 
 BOOST_FIXTURE_TEST_CASE(KekRetrievalFailure, EncryptorFixture<false>)
diff --git a/wscript b/wscript
index 6ee6d57..2010b7f 100644
--- a/wscript
+++ b/wscript
@@ -29,8 +29,11 @@
                    uselib_store='NDN_CXX', mandatory=True)
 
     USED_BOOST_LIBS = ['system', 'thread', 'log', 'log_setup']
+
     if conf.env['WITH_TESTS']:
         USED_BOOST_LIBS += ['unit_test_framework']
+        conf.define('NDN_NAC_HAVE_TESTS', 1)
+
     conf.check_boost(lib=USED_BOOST_LIBS, mandatory=True, mt=True)
 
     conf.check_compiler_flags()
