make: conditionally link to libsqlite3.
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"