Add openssl initialization in client library.
authorBartlomiej Grzelewski <b.grzelewski@samsung.com>
Mon, 30 Jun 2014 18:46:16 +0000 (20:46 +0200)
committerBartlomiej Grzelewski <b.grzelewski@samsung.com>
Fri, 12 Sep 2014 12:58:49 +0000 (14:58 +0200)
Change-Id: I1043801db5743d855902c85c16a9acb22c3ed3a0

src/manager/client/client-manager-impl.cpp
src/manager/client/client-manager-impl.h

index 6b5301d..8eb3049 100644 (file)
@@ -18,6 +18,8 @@
  * @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,
index 3d4154f..92ccab1 100644 (file)
@@ -29,9 +29,7 @@ namespace CKM {
 
 class Manager::ManagerImpl {
 public:
-    ManagerImpl()
-      : m_counter(0)
-    {}
+    ManagerImpl();
     virtual ~ManagerImpl(){}
 
     int saveKey(const Alias &alias, const Key &key, const Policy &policy);
@@ -48,7 +46,7 @@ public:
     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,
@@ -112,6 +110,7 @@ protected:
         AliasVector &aliasVector);
 
     int m_counter;
+    static bool s_isInit;
 };
 
 } // namespace CKM