diff options
author | r.kuznetsov <r.kuznetsov@corp.mail.ru> | 2017-09-21 13:03:48 +0300 |
---|---|---|
committer | Ilya Grechuhin <i.grechuhin@gmail.com> | 2017-09-21 14:42:24 +0300 |
commit | 1ff28a74a919dcee1b947aff2fc987216fc486e2 (patch) | |
tree | 30130a5be6cd00cf9cf5ad2698f904308007fc59 /platform | |
parent | 87735e7050bc3f8e34eeb394964c7ba58cb175cc (diff) |
Added secure storage interface
Diffstat (limited to 'platform')
-rw-r--r-- | platform/CMakeLists.txt | 5 | ||||
-rw-r--r-- | platform/platform.hpp | 5 | ||||
-rw-r--r-- | platform/platform.pro | 12 | ||||
-rw-r--r-- | platform/secure_storage.hpp | 14 | ||||
-rw-r--r-- | platform/secure_storage_dummy.cpp | 20 | ||||
-rw-r--r-- | platform/secure_storage_ios.mm | 20 | ||||
-rw-r--r-- | platform/secure_storage_qt.cpp | 21 |
7 files changed, 94 insertions, 3 deletions
diff --git a/platform/CMakeLists.txt b/platform/CMakeLists.txt index 569c8e9021..ee7ee539bb 100644 --- a/platform/CMakeLists.txt +++ b/platform/CMakeLists.txt @@ -40,6 +40,7 @@ set( platform.hpp preferred_languages.cpp preferred_languages.hpp + secure_storage.hpp servers_list.cpp servers_list.hpp settings.cpp @@ -60,6 +61,7 @@ if(${PLATFORM_IPHONE}) platform_ios.mm platform_unix_impl.cpp platform_unix_impl.hpp + secure_storage_ios.mm socket_apple.mm ) elseif(${PLATFORM_ANDROID}) @@ -88,6 +90,7 @@ else() # neither iPhone nor Android http_thread_qt.hpp marketing_service_dummy.cpp platform_win.cpp + secure_storage_dummy.cpp wifi_info_windows.cpp ) elseif(${PLATFORM_MAC}) @@ -102,6 +105,7 @@ else() # neither iPhone nor Android platform_mac.mm platform_unix_impl.cpp platform_unix_impl.hpp + secure_storage_qt.cpp socket_apple.mm ) elseif(${PLATFORM_LINUX}) @@ -115,6 +119,7 @@ else() # neither iPhone nor Android platform_linux.cpp platform_unix_impl.cpp platform_unix_impl.hpp + secure_storage_qt.cpp ) endif() endif() diff --git a/platform/platform.hpp b/platform/platform.hpp index 3b64c0bdd6..86b9b1ecfa 100644 --- a/platform/platform.hpp +++ b/platform/platform.hpp @@ -3,6 +3,7 @@ #include "platform/country_defines.hpp" #include "platform/gui_thread.hpp" #include "platform/marketing_service.hpp" +#include "platform/secure_storage.hpp" #include "coding/reader.hpp" @@ -95,6 +96,9 @@ protected: /// Platform-dependent marketing services. MarketingService m_marketingService; + /// Platform-dependent secure storage. + platform::SecureStorage m_secureStorage; + unique_ptr<base::TaskLoop> m_guiThread; base::WorkerThread m_networkThread; @@ -254,6 +258,7 @@ public: void SetupMeasurementSystem() const; MarketingService & GetMarketingService() { return m_marketingService; } + platform::SecureStorage & GetSecureStorage() { return m_secureStorage; } // Use this method for testing purposes only. void SetGuiThread(unique_ptr<base::TaskLoop> guiThread); diff --git a/platform/platform.pro b/platform/platform.pro index e5781f82b3..3dcb58833d 100644 --- a/platform/platform.pro +++ b/platform/platform.pro @@ -27,19 +27,23 @@ INCLUDEPATH += $$ROOT_DIR/3party/jansson/src win32* { SOURCES += platform_win.cpp \ + secure_storage_dummy.cpp \ wifi_info_windows.cpp } else:macx-* { OBJECTIVE_SOURCES += apple_location_service.mm \ gui_thread_apple.mm \ - platform_mac.mm + platform_mac.mm \ + secure_storage_qt.cpp } else:linux* { SOURCES += gui_thread_linux.cpp \ - platform_linux.cpp + platform_linux.cpp \ + secure_storage_qt.cpp } } else:iphone* { OBJECTIVE_SOURCES += marketing_service_ios.mm \ platform_ios.mm \ - gui_thread_apple.mm + gui_thread_apple.mm \ + secure_storage_ios.mm } else:android* { SOURCES += platform_android.cpp } else:tizen* { @@ -48,6 +52,7 @@ INCLUDEPATH += $$ROOT_DIR/3party/jansson/src SOURCES += http_thread_tizen.cpp \ marketing_service_dummy.cpp \ platform_tizen.cpp \ + secure_storage_dummy.cpp \ tizen_utils.cpp } @@ -93,6 +98,7 @@ HEADERS += \ network_policy.hpp \ platform.hpp \ preferred_languages.hpp \ + secure_storage.hpp \ safe_callback.hpp \ servers_list.hpp \ settings.hpp \ diff --git a/platform/secure_storage.hpp b/platform/secure_storage.hpp new file mode 100644 index 0000000000..35d9410c3b --- /dev/null +++ b/platform/secure_storage.hpp @@ -0,0 +1,14 @@ +#pragma once + +#include <string> + +namespace platform +{ +class SecureStorage +{ +public: + void Save(std::string const & key, std::string const & value); + bool Load(std::string const & key, std::string & value); + void Remove(std::string const & key); +}; +} // namespace platform diff --git a/platform/secure_storage_dummy.cpp b/platform/secure_storage_dummy.cpp new file mode 100644 index 0000000000..9a185dfd93 --- /dev/null +++ b/platform/secure_storage_dummy.cpp @@ -0,0 +1,20 @@ +#include "platform/secure_storage.hpp" + +namespace platform +{ +void SecureStorage::Save(std::string const & key, std::string const & value) +{ + // Unimplemented on this platform. +} + +bool SecureStorage::Load(std::string const & key, std::string & value) +{ + // Unimplemented on this platform. + return false; +} + +void SecureStorage::Remove(std::string const & key) +{ + // Unimplemented on this platform. +} +} // namespace platform diff --git a/platform/secure_storage_ios.mm b/platform/secure_storage_ios.mm new file mode 100644 index 0000000000..e738590b14 --- /dev/null +++ b/platform/secure_storage_ios.mm @@ -0,0 +1,20 @@ +#include "platform/secure_storage.hpp" + +namespace platform +{ +void SecureStorage::Save(std::string const & key, std::string const & value) +{ + // TODO: implement @igrechuhin +} + +bool SecureStorage::Load(std::string const & key, std::string & value) +{ + // TODO: implement @igrechuhin + return false; +} + +void SecureStorage::Remove(std::string const & key) +{ + // TODO: implement @igrechuhin +} +} // namespace platform diff --git a/platform/secure_storage_qt.cpp b/platform/secure_storage_qt.cpp new file mode 100644 index 0000000000..089edb0db1 --- /dev/null +++ b/platform/secure_storage_qt.cpp @@ -0,0 +1,21 @@ +#include "platform/secure_storage.hpp" +#include "platform/settings.hpp" + +namespace platform +{ +void SecureStorage::Save(std::string const & key, std::string const & value) +{ + settings::Set(key, value); +} + +bool SecureStorage::Load(std::string const & key, std::string & value) +{ + bool const result = settings::Get(key, value); + return result && !value.empty(); +} + +void SecureStorage::Remove(std::string const & key) +{ + settings::Set(key, std::string()); +} +} // namespace platform |