diff --git a/src/group-manager-db.cpp b/src/group-manager-db.cpp
index 0f8640b..6b0eb2d 100644
--- a/src/group-manager-db.cpp
+++ b/src/group-manager-db.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2014-2015,  Regents of the University of California
+ * Copyright (c) 2014-2017,  Regents of the University of California
  *
  * This file is part of ndn-group-encrypt (Group-based Encryption Protocol for NDN).
  * See AUTHORS.md for complete list of ndn-group-encrypt authors and contributors.
@@ -61,8 +61,7 @@
   "  ekeys(                                           \n"
   "    ekey_id             INTEGER PRIMARY KEY,       \n"
   "    ekey_name           BLOB NOT NULL,             \n"
-  "    pub_key             BLOB NOT NULL,             \n"
-  "    pri_key             BLOB NOT NULL              \n"
+  "    pub_key             BLOB NOT NULL              \n"
   "  );                                               \n"
   "CREATE UNIQUE INDEX IF NOT EXISTS                  \n"
   "   ekeyNameIndex ON ekeys(ekey_name);              \n";
@@ -118,6 +117,7 @@
 
 public:
   sqlite3* m_database;
+  std::map<Name, Buffer> m_priKeyBase;
 };
 
 GroupManagerDB::GroupManagerDB(const std::string& dbPath)
@@ -342,12 +342,13 @@
 GroupManagerDB::addEKey(const Name& eKeyName, const Buffer& pubKey, const Buffer& priKey)
 {
   Sqlite3Statement statement(m_impl->m_database,
-                             "INSERT INTO ekeys(ekey_name, pub_key, pri_key) values (?, ?, ?)");
+                             "INSERT INTO ekeys(ekey_name, pub_key) values (?, ?)");
   statement.bind(1, eKeyName.wireEncode(), SQLITE_TRANSIENT);
   statement.bind(2, pubKey.buf(), pubKey.size(), SQLITE_TRANSIENT);
-  statement.bind(3, priKey.buf(), priKey.size(), SQLITE_TRANSIENT);
   if (statement.step() != SQLITE_DONE)
     BOOST_THROW_EXCEPTION(Error("Cannot add the EKey to database"));
+
+  m_impl->m_priKeyBase[eKeyName] = priKey;
 }
 
 std::tuple<Buffer, Buffer>
@@ -360,12 +361,11 @@
   Buffer pubKey, priKey;
   if (statement.step() == SQLITE_ROW) {
     pubKey = Buffer(statement.getBlob(2), statement.getSize(2));
-    priKey = Buffer(statement.getBlob(3), statement.getSize(3));
   }
   else {
     BOOST_THROW_EXCEPTION(Error("Cannot get the result from database"));
   }
-  return std::make_tuple(pubKey, priKey);
+  return std::make_tuple(pubKey, m_impl->m_priKeyBase[eKeyName]);
 }
 
 void
@@ -373,6 +373,7 @@
 {
   Sqlite3Statement statement(m_impl->m_database, "DELETE FROM ekeys");
   statement.step();
+  m_impl->m_priKeyBase.clear();
 }
 
 void
@@ -382,6 +383,9 @@
                              "DELETE FROM ekeys WHERE ekey_name=?");
   statement.bind(1, eKeyName.wireEncode(), SQLITE_TRANSIENT);
   statement.step();
+
+  auto search = m_impl->m_priKeyBase.find(eKeyName);
+  m_impl->m_priKeyBase.erase(search);
 }
 
 } // namespace gep
