Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorr.kuznetsov <r.kuznetsov@corp.mail.ru>2017-09-21 13:03:48 +0300
committerIlya Grechuhin <i.grechuhin@gmail.com>2017-09-21 14:42:24 +0300
commit1ff28a74a919dcee1b947aff2fc987216fc486e2 (patch)
tree30130a5be6cd00cf9cf5ad2698f904308007fc59 /platform
parent87735e7050bc3f8e34eeb394964c7ba58cb175cc (diff)
Added secure storage interface
Diffstat (limited to 'platform')
-rw-r--r--platform/CMakeLists.txt5
-rw-r--r--platform/platform.hpp5
-rw-r--r--platform/platform.pro12
-rw-r--r--platform/secure_storage.hpp14
-rw-r--r--platform/secure_storage_dummy.cpp20
-rw-r--r--platform/secure_storage_ios.mm20
-rw-r--r--platform/secure_storage_qt.cpp21
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