diff --git a/config.h.in b/config.h.in
index 937916c..4c049d2 100644
--- a/config.h.in
+++ b/config.h.in
@@ -18,6 +18,9 @@
 /* Define to 1 if you have the `crypto' library (-lcrypto). */
 #undef HAVE_LIBCRYPTO
 
+/* Define to 1 if you have the `sqlite3' library (-lsqlite3). */
+#undef HAVE_LIBSQLITE3
+
 /* Define to 1 if you have the `memcmp' function. */
 #undef HAVE_MEMCMP
 
diff --git a/configure b/configure
index c5373db..20815a4 100755
--- a/configure
+++ b/configure
@@ -16479,6 +16479,7 @@
 
   fi
 
+# Require libcrypto.
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EVP_EncryptInit in -lcrypto" >&5
 $as_echo_n "checking for EVP_EncryptInit in -lcrypto... " >&6; }
 if ${ac_cv_lib_crypto_EVP_EncryptInit+:} false; then :
@@ -16529,6 +16530,52 @@
 See \`config.log' for more details" "$LINENO" 5; }
 fi
 
+# Silently check for libsqlite3.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqlite3_open in -lsqlite3" >&5
+$as_echo_n "checking for sqlite3_open in -lsqlite3... " >&6; }
+if ${ac_cv_lib_sqlite3_sqlite3_open+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsqlite3  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char sqlite3_open ();
+int
+main ()
+{
+return sqlite3_open ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_lib_sqlite3_sqlite3_open=yes
+else
+  ac_cv_lib_sqlite3_sqlite3_open=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_open" >&5
+$as_echo "$ac_cv_lib_sqlite3_sqlite3_open" >&6; }
+if test "x$ac_cv_lib_sqlite3_sqlite3_open" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBSQLITE3 1
+_ACEOF
+
+  LIBS="-lsqlite3 $LIBS"
+
+fi
+
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for std::shared_ptr" >&5
 $as_echo_n "checking for std::shared_ptr... " >&6; }
diff --git a/configure.ac b/configure.ac
index dc9a530..8a2ad04 100644
--- a/configure.ac
+++ b/configure.ac
@@ -44,8 +44,11 @@
 AC_CHECK_FUNCS([memset])
 
 AX_CXX_COMPILE_STDCXX_11(, optional)
+# Require libcrypto.
 AC_CHECK_LIB([crypto], [EVP_EncryptInit], [],
              [AC_MSG_FAILURE([can't find openssl crypto lib])])
+# Silently check for libsqlite3.
+AC_CHECK_LIB([sqlite3], [sqlite3_open], [], [])
 
 AC_MSG_CHECKING([for std::shared_ptr])
 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
diff --git a/ndn-cpp/security/identity/basic-identity-storage.cpp b/ndn-cpp/security/identity/basic-identity-storage.cpp
index 5215e5f..18320d3 100644
--- a/ndn-cpp/security/identity/basic-identity-storage.cpp
+++ b/ndn-cpp/security/identity/basic-identity-storage.cpp
@@ -7,8 +7,7 @@
 
 // Only compile if ndn-cpp-config.h defines NDN_CPP_HAVE_SQLITE3.
 #include "../../ndn-cpp-config.h"
-#if 0 // temporarily disable.
-//#ifdef NDN_CPP_HAVE_SQLITE3
+#ifdef NDN_CPP_HAVE_SQLITE3
 
 #include <stdlib.h>
 #include <sstream>
@@ -217,10 +216,10 @@
   return false;
 }
 
-#if 0
 Name 
 BasicIdentityStorage::getNewKeyName(const Name& identityName, bool useKsk)
 {
+#if 0
   TimeInterval ti = time::NowUnixTimestamp();
   ostringstream oss;
   oss << ti.total_seconds();
@@ -239,8 +238,10 @@
     throw SecurityException("Key name already exists");
 
   return keyName;
-}
+#else
+  throw logic_error("unimplemented");
 #endif
+}
 
 bool 
 BasicIdentityStorage::doesKeyExist(const Name& keyName)
@@ -387,10 +388,10 @@
   return certExist;
 }
 
-#if 0
 void
 BasicIdentityStorage::addAnyCertificate(const Certificate& certificate)
 {
+#if 0
   const Name& certificateName = certificate.getName();
   Name keyName = getKeyNameForCertificate(certificateName);
 
@@ -424,11 +425,15 @@
   int res = sqlite3_step(statement);
 
   sqlite3_finalize(statement);
+#else
+  throw logic_error("unimplemented");
+#endif
 }
 
 void 
 BasicIdentityStorage::addCertificate(const Certificate& certificate)
 {
+#if 0
   _LOG_DEBUG("1");
   const Name& certificateName = certificate.getName();
   Name keyName = getKeyNameForCertificate(certificateName);
@@ -483,11 +488,15 @@
   int res = sqlite3_step(statement);
 
   sqlite3_finalize(statement);
+#else
+  throw logic_error("unimplemented");
+#endif
 }
 
 shared_ptr<Certificate> 
 BasicIdentityStorage::getCertificate(const Name &certificateName, bool allowAny)
 {
+#if 0
   if (doesCertificateExist(certificateName)) {
     sqlite3_stmt *statement;
     if (!allowAny) {
@@ -521,8 +530,10 @@
     _LOG_DEBUG("Certificate does not exist!");
     return shared_ptr<Certificate>();
   }
-}
+#else
+  throw logic_error("unimplemented");
 #endif
+}
 
 Name 
 BasicIdentityStorage::getDefaultIdentity()
diff --git a/ndn-cpp/security/identity/basic-identity-storage.hpp b/ndn-cpp/security/identity/basic-identity-storage.hpp
index 5c61112..1cc2eb7 100644
--- a/ndn-cpp/security/identity/basic-identity-storage.hpp
+++ b/ndn-cpp/security/identity/basic-identity-storage.hpp
@@ -10,8 +10,7 @@
 
 // Only compile if ndn-cpp-config.h defines NDN_CPP_HAVE_SQLITE3.
 #include "../../ndn-cpp-config.h"
-#if 0 // temporarily disable.
-//#ifdef NDN_CPP_HAVE_SQLITE3
+#ifdef NDN_CPP_HAVE_SQLITE3
 
 #include <sqlite3.h>
 #include "../../common.hpp"
