diff --git a/src/encrypt-key.hpp b/src/encrypt-key.hpp
new file mode 100644
index 0000000..ba0d778
--- /dev/null
+++ b/src/encrypt-key.hpp
@@ -0,0 +1,56 @@
+/* -*- 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_ENCRYPT_KEY_HPP
+#define NDN_GEP_ENCRYPT_KEY_HPP
+
+#include "common.hpp"
+
+namespace ndn {
+namespace gep {
+
+template<class Algorithm>
+class EncryptKey
+{
+public:
+  EncryptKey(Buffer&& keyBits)
+    : m_keyBits(keyBits)
+  {
+  }
+
+  Buffer
+  encrypt(const Buffer& plainData)
+  {
+    return Algorithm::encrypt(m_keyBits, plainData);
+  }
+
+  const Buffer&
+  getKeyBits() const
+  {
+    return m_keyBits;
+  }
+
+private:
+  Buffer m_keyBits;
+};
+
+} // namespace gep
+} // namespace ndn
+
+#endif // NDN_GEP_ENCRYPT_KEY_HPP
