diff --git a/src/decrypt-key.hpp b/src/decrypt-key.hpp
new file mode 100644
index 0000000..fdccea7
--- /dev/null
+++ b/src/decrypt-key.hpp
@@ -0,0 +1,62 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/**
+ * Copyright (c) 2014-2015,  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.
+ *
+ * ndn-group-encrypt is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free Software
+ * Foundation, either version 3 of the License, or (at your option) any later version.
+ *
+ * ndn-group-encrypt is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+ * A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * ndn-group-encrypt, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef NDN_GEP_DECRYPT_KEY_HPP
+#define NDN_GEP_DECRYPT_KEY_HPP
+
+#include "encrypt-key.hpp"
+
+namespace ndn {
+namespace gep {
+
+template<class Algorithm>
+class DecryptKey
+{
+public:
+  DecryptKey(Buffer&& keyBits)
+    : m_keyBits(keyBits)
+  {
+  }
+
+  EncryptKey<Algorithm>
+  deriveEncryptKey()
+  {
+    return Algorithm::deriveEncryptKey(m_keyBits);
+  }
+
+  Buffer
+  decrypt(const Buffer& encryptedData)
+  {
+    return Algorithm::decrypt(m_keyBits, encryptedData);
+  }
+
+  const Buffer&
+  getKeyBits()
+  {
+    return m_keyBits;
+  }
+
+private:
+  Buffer m_keyBits;
+};
+
+} // namespace gep
+} // namespace ndn
+
+#endif // NDN_GEP_DECRYPT_KEY_HPP
