* @version 1.0
* @brief Manager implementation.
*/
+#include <openssl/evp.h>
+
#include <dpl/serialization.h>
#include <dpl/log/log.h>
#include <message-buffer.h>
#include <protocols.h>
+
+namespace {
+
+void clientInitialize(void) {
+ OpenSSL_add_all_ciphers();
+ OpenSSL_add_all_algorithms();
+ OpenSSL_add_all_digests();
+}
+
+} // namespace anonymous
+
namespace CKM {
+bool Manager::ManagerImpl::s_isInit = false;
+
+Manager::ManagerImpl::ManagerImpl()
+ : m_counter(0)
+{
+ // TODO secure with mutex
+ if (!s_isInit) {
+ s_isInit = true;
+ clientInitialize();
+ }
+
+}
+
+
int Manager::ManagerImpl::saveBinaryData(
const Alias &alias,
DBDataType dataType,
class Manager::ManagerImpl {
public:
- ManagerImpl()
- : m_counter(0)
- {}
+ ManagerImpl();
virtual ~ManagerImpl(){}
int saveKey(const Alias &alias, const Key &key, const Policy &policy);
int removeData(const Alias &alias);
int getData(const Alias &alias, const std::string &password, RawBuffer &cert);
int getDataAliasVector(AliasVector &aliasVector);
-
+
int createKeyPairRSA(
const int size, // size in bits [1024, 2048, 4096]
const Alias &privateKeyAlias,
AliasVector &aliasVector);
int m_counter;
+ static bool s_isInit;
};
} // namespace CKM