namespace ode {
-void KeyGenerator::init()
+namespace KeyGenerator {
+
+void init()
{
EVP_add_cipher(EVP_aes_256_cbc());
EVP_add_digest(EVP_sha256());
EVP_add_digest(EVP_sha512());
}
-void KeyGenerator::cleanup()
+void cleanup()
{
EVP_cleanup();
}
-const KeyGenerator::data KeyGenerator::PBKDF(const data& pass, const data& salt, size_t iteration, size_t resultSize)
+BinaryData PBKDF(const BinaryData& pass,
+ const BinaryData& salt,
+ size_t iteration,
+ size_t resultSize)
{
- data ret(resultSize, 0);
+ BinaryData ret(resultSize, 0);
::PKCS5_PBKDF2_HMAC((char *)pass.data(), pass.size(),
salt.data(), salt.size(), iteration,
return ret;
}
-const KeyGenerator::data KeyGenerator::AESEncrypt(const data& in, const data& key, const data& iv)
+BinaryData AESEncrypt(const BinaryData& in,
+ const BinaryData& key,
+ const BinaryData& iv)
{
- data ret(in.size(), 0);
+ BinaryData ret(in.size(), 0);
EVP_CIPHER_CTX* ctx;
int outLen, len;
return ret;
}
-const KeyGenerator::data KeyGenerator::AESDecrypt(const data& in, const data& key, const data& iv)
+BinaryData AESDecrypt(const BinaryData& in,
+ const BinaryData& key,
+ const BinaryData& iv)
{
- data ret(in.size(), 0);
+ BinaryData ret(in.size(), 0);
EVP_CIPHER_CTX* ctx;
int len, len1;
return ret;
}
-const KeyGenerator::data KeyGenerator::HMAC(const data& key, const data& in)
+BinaryData HMAC(const BinaryData& key, const BinaryData& in)
{
- data ret(256 / 8);
+ BinaryData ret(256 / 8);
unsigned int md_len;
::HMAC(EVP_sha256(), key.data(), key.size(), in.data(), in.size(),
return ret;
}
-const KeyGenerator::data KeyGenerator::RNG(size_t resultSize)
+BinaryData RNG(size_t resultSize)
{
- data ret(resultSize);
+ BinaryData ret(resultSize);
::RAND_bytes(ret.data(), resultSize);
return ret;
}
-const KeyGenerator::data KeyGenerator::SHA256(const data& in)
+BinaryData SHA256(const BinaryData& in)
{
- data ret(256 / 8);
+ BinaryData ret(256 / 8);
- ::SHA256(in.data(), in.size(), ret.data());
+ ::SHA256(in.data(), in.size(), ret.data());
- return ret;
+ return ret;
}
-const KeyGenerator::data KeyGenerator::SHA512(const data& in)
+BinaryData SHA512(const BinaryData& in)
{
- data ret(512 / 8);
+ BinaryData ret(512 / 8);
- ::SHA512(in.data(), in.size(), ret.data());
+ ::SHA512(in.data(), in.size(), ret.data());
- return ret;
+ return ret;
}
+} // namespace KeyManager
+
} // namespace ode
#ifndef __KEY_GENERATOR_H__
#define __KEY_GENERATOR_H__
-#include <vector>
+#include "rmi/common.h"
namespace ode {
-class KeyGenerator final {
-public:
- KeyGenerator() = delete;
- KeyGenerator(const KeyGenerator&) = delete;
- KeyGenerator(KeyGenerator&&) = delete;
-
- KeyGenerator& operator=(const KeyGenerator&) = delete;
- KeyGenerator& operator=(KeyGenerator&&) = delete;
-
- typedef std::vector<unsigned char> data;
-
- static void init();
- static void cleanup();
-
- static const data PBKDF(const data& pass, const data& salt, size_t iteration, size_t resultSize);
- static const data AESEncrypt(const data& in, const data& key, const data& iv);
- static const data AESDecrypt(const data& in, const data& key, const data& iv);
- static const data HMAC(const data& in, const data& key);
- static const data RNG(size_t resultSize);
- static const data SHA256(const data& in);
- static const data SHA512(const data& in);
-};
+namespace KeyGenerator {
+ void init();
+ void cleanup();
+
+ BinaryData PBKDF(const BinaryData& pass,
+ const BinaryData& salt,
+ size_t iteration,
+ size_t resultSize);
+ BinaryData AESEncrypt(const BinaryData& in,
+ const BinaryData& key,
+ const BinaryData& iv);
+ BinaryData AESDecrypt(const BinaryData& in,
+ const BinaryData& key,
+ const BinaryData& iv);
+ BinaryData HMAC(const BinaryData& in, const BinaryData& key);
+ BinaryData RNG(size_t resultSize);
+ BinaryData SHA256(const BinaryData& in);
+ BinaryData SHA512(const BinaryData& in);
+} // namespace KeyGenerator
} // namespace ode
#endif // __KEY_GENERATOR_H__