RSA/AES algorithm

Refs: #2799, #2800

Change-Id: I6aeb1ea2d7b3431d4569fb5b2cc3ce214ee6fca3
diff --git a/src/algo/encrypt-params.hpp b/src/algo/encrypt-params.hpp
new file mode 100644
index 0000000..2be5d99
--- /dev/null
+++ b/src/algo/encrypt-params.hpp
@@ -0,0 +1,61 @@
+#ifndef NDN_GEP_ENCRYPT_PARAMS_HPP
+#define NDN_GEP_ENCRYPT_PARAMS_HPP
+
+#include <ndn-cxx/encoding/buffer-stream.hpp>
+
+namespace ndn {
+namespace gep {
+
+enum EncryptionMode {
+  ENCRYPT_MODE_ECB_AES,
+  ENCRYPT_MODE_CBC_AES,
+  ENCRYPT_MODE_RSA
+};
+
+enum PaddingScheme {
+  PADDING_SCHEME_PKCS7,
+  PADDING_SCHEME_PKCS1v15,
+  PADDING_SCHEME_OAEP_SHA
+};
+
+namespace algo {
+
+class EncryptParams
+{
+public:
+  EncryptParams(EncryptionMode encryptMode, PaddingScheme paddingScheme, uint8_t ivLength);
+
+  virtual
+  ~EncryptParams()
+  {
+  }
+
+  void
+  setIV(const Buffer& iv);
+
+  void
+  setEncryptMode(const EncryptionMode& encryptMode);
+
+  void
+  setPaddingScheme(const PaddingScheme& paddingScheme);
+
+  Buffer
+  getIV() const;
+
+  EncryptionMode
+  getEncryptMode() const;
+
+  PaddingScheme
+  getPaddingScheme() const;
+
+private:
+  EncryptionMode m_encryptMode;
+  PaddingScheme m_paddingScheme;
+  Buffer m_iv;
+};
+
+} // namespace algo
+} // namespace gep
+} // namespace ndn
+
+#endif // NDN_GEP_ENCRYPT_PARAMS_HPP