From 2a80a11f2af926102cad473784f087d78841610e Mon Sep 17 00:00:00 2001 From: chennian Date: Fri, 20 May 2022 17:05:05 +0800 Subject: [PATCH 1/8] Signed-off-by:chennian Signed-off-by: chennian --- frameworks/database/BUILD.gn | 41 +++++++++++++++++++ .../database/include}/field_const.h | 16 ++++++++ .../database/include}/generic_values.h | 0 .../database/include}/sqlite_helper.h | 1 + .../database/include}/statement.h | 3 +- .../database/include}/variant_value.h | 0 .../database/src}/generic_values.cpp | 0 .../database/src}/sqlite_helper.cpp | 0 .../database/src}/statement.cpp | 13 +++++- .../database/src}/variant_value.cpp | 0 services/accesstokenmanager/BUILD.gn | 6 +-- .../main/cpp/src/database/sqlite_storage.cpp | 2 +- 12 files changed, 74 insertions(+), 8 deletions(-) create mode 100644 frameworks/database/BUILD.gn rename {services/accesstokenmanager/main/cpp/include/database => frameworks/database/include}/field_const.h (76%) rename {services/accesstokenmanager/main/cpp/include/database => frameworks/database/include}/generic_values.h (100%) rename {services/accesstokenmanager/main/cpp/include/database => frameworks/database/include}/sqlite_helper.h (98%) rename {services/accesstokenmanager/main/cpp/include/database => frameworks/database/include}/statement.h (92%) rename {services/accesstokenmanager/main/cpp/include/database => frameworks/database/include}/variant_value.h (100%) rename {services/accesstokenmanager/main/cpp/src/database => frameworks/database/src}/generic_values.cpp (100%) rename {services/accesstokenmanager/main/cpp/src/database => frameworks/database/src}/sqlite_helper.cpp (100%) rename {services/accesstokenmanager/main/cpp/src/database => frameworks/database/src}/statement.cpp (90%) rename {services/accesstokenmanager/main/cpp/src/database => frameworks/database/src}/variant_value.cpp (100%) diff --git a/frameworks/database/BUILD.gn b/frameworks/database/BUILD.gn new file mode 100644 index 000000000..9ac898cfa --- /dev/null +++ b/frameworks/database/BUILD.gn @@ -0,0 +1,41 @@ +# Copyright (c) 2021-2022 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import("//build/ohos.gni") + +ohos_shared_library("accesstoken_database_cxx") { + subsystem_name = "security" + part_name = "access_token" + + include_dirs = [ + "include", + ] + + sources = [ + "src/generic_values.cpp", + "src/sqlite_helper.cpp", + "src/statement.cpp", + "src/variant_value.cpp", + ] + + cflags_cc = [ "-DHILOG_ENABLE" ] + + deps = [ + "//base/security/access_token/frameworks/common:accesstoken_common_cxx", + "//third_party/sqlite:sqlite", + ] + + external_deps = [ + "hiviewdfx_hilog_native:libhilog", + ] +} diff --git a/services/accesstokenmanager/main/cpp/include/database/field_const.h b/frameworks/database/include/field_const.h similarity index 76% rename from services/accesstokenmanager/main/cpp/include/database/field_const.h rename to frameworks/database/include/field_const.h index 880a0b7c3..f918157f5 100644 --- a/services/accesstokenmanager/main/cpp/include/database/field_const.h +++ b/frameworks/database/include/field_const.h @@ -46,6 +46,22 @@ const std::string FIELD_DESCRIPTION_ID = "description_id"; const std::string FIELD_GRANT_STATE = "grant_state"; const std::string FIELD_GRANT_FLAG = "grant_flag"; const std::string FIELD_GRANT_IS_GENERAL = "is_general"; + +/* permission visitor */ +const std::string FIELD_ID = "id"; +const std::string FIELD_IS_REMOTE_DEVICE = "is_remote_device"; + +const std::string FIELD_VISITOR_ID = "visitor_id"; +const std::string FIELD_OP_CODE = "op_code"; +const std::string FIELD_IS_FOREGROUND = "is_foreground"; +const std::string FIELD_IS_LOCKSCREEN = "is_lockscreen"; +const std::string FIELD_TIMESTAMP = "timestamp"; +const std::string FIELD_DURATION = "duration"; +const std::string FIELD_ACCESS_COUNT = "access_count"; +const std::string FIELD_REJECT_COUNT = "reject_count"; + +const std::string FIELD_TIMESTAMP_BEGIN = "timestamp_begin"; +const std::string FIELD_TIMESTAMP_END = "timestamp_begin"; } // namespace AccessToken } // namespace Security } // namespace OHOS diff --git a/services/accesstokenmanager/main/cpp/include/database/generic_values.h b/frameworks/database/include/generic_values.h similarity index 100% rename from services/accesstokenmanager/main/cpp/include/database/generic_values.h rename to frameworks/database/include/generic_values.h diff --git a/services/accesstokenmanager/main/cpp/include/database/sqlite_helper.h b/frameworks/database/include/sqlite_helper.h similarity index 98% rename from services/accesstokenmanager/main/cpp/include/database/sqlite_helper.h rename to frameworks/database/include/sqlite_helper.h index 0f0979ab4..2ff686924 100644 --- a/services/accesstokenmanager/main/cpp/include/database/sqlite_helper.h +++ b/frameworks/database/include/sqlite_helper.h @@ -17,6 +17,7 @@ #define SQLITE_HELPER_H #include +#include #include "statement.h" diff --git a/services/accesstokenmanager/main/cpp/include/database/statement.h b/frameworks/database/include/statement.h similarity index 92% rename from services/accesstokenmanager/main/cpp/include/database/statement.h rename to frameworks/database/include/statement.h index 1f2f5c092..ba40602d8 100644 --- a/services/accesstokenmanager/main/cpp/include/database/statement.h +++ b/frameworks/database/include/statement.h @@ -41,10 +41,11 @@ public: std::string GetColumnString(const int column) const; int GetColumnInt(const int column) const; + int GetColumnInt64(const int column) const; std::string GetColumnName(const int column) const; int GetParameterIndex(const std::string& name) const; int GetColumnCount() const; - VariantValue GetValue(const int column) const; + VariantValue GetValue(const int column, const bool flagInt64) const; private: sqlite3* db_; diff --git a/services/accesstokenmanager/main/cpp/include/database/variant_value.h b/frameworks/database/include/variant_value.h similarity index 100% rename from services/accesstokenmanager/main/cpp/include/database/variant_value.h rename to frameworks/database/include/variant_value.h diff --git a/services/accesstokenmanager/main/cpp/src/database/generic_values.cpp b/frameworks/database/src/generic_values.cpp similarity index 100% rename from services/accesstokenmanager/main/cpp/src/database/generic_values.cpp rename to frameworks/database/src/generic_values.cpp diff --git a/services/accesstokenmanager/main/cpp/src/database/sqlite_helper.cpp b/frameworks/database/src/sqlite_helper.cpp similarity index 100% rename from services/accesstokenmanager/main/cpp/src/database/sqlite_helper.cpp rename to frameworks/database/src/sqlite_helper.cpp diff --git a/services/accesstokenmanager/main/cpp/src/database/statement.cpp b/frameworks/database/src/statement.cpp similarity index 90% rename from services/accesstokenmanager/main/cpp/src/database/statement.cpp rename to frameworks/database/src/statement.cpp index 02b605afd..b59758867 100644 --- a/services/accesstokenmanager/main/cpp/src/database/statement.cpp +++ b/frameworks/database/src/statement.cpp @@ -56,6 +56,11 @@ int Statement::GetColumnInt(const int column) const return sqlite3_column_int(statement_, column); } +int Statement::GetColumnInt64(const int column) const +{ + return sqlite3_column_int64(statement_, column); +} + std::string Statement::GetColumnString(const int column) const { return std::string(reinterpret_cast(sqlite3_column_text(statement_, column))); @@ -108,12 +113,16 @@ int Statement::GetColumnCount() const return sqlite3_column_count(statement_); } -VariantValue Statement::GetValue(const int column) const +VariantValue Statement::GetValue(const int column, const bool flagInt64) const { int type = sqlite3_column_type(statement_, column); switch (type) { case SQLITE_INTEGER: - return VariantValue(GetColumnInt(column)); + if (flagInt64) { + return VariantValue(GetColumnInt64(column)); + } else { + return VariantValue(GetColumnInt(column)); + } case SQLITE_TEXT: return VariantValue(GetColumnString(column)); default: diff --git a/services/accesstokenmanager/main/cpp/src/database/variant_value.cpp b/frameworks/database/src/variant_value.cpp similarity index 100% rename from services/accesstokenmanager/main/cpp/src/database/variant_value.cpp rename to frameworks/database/src/variant_value.cpp diff --git a/services/accesstokenmanager/BUILD.gn b/services/accesstokenmanager/BUILD.gn index 8d620f191..a9e4ae2dd 100644 --- a/services/accesstokenmanager/BUILD.gn +++ b/services/accesstokenmanager/BUILD.gn @@ -32,6 +32,7 @@ ohos_shared_library("accesstoken_manager_service") { "main/cpp/include/database", "//base/security/access_token/frameworks/common/include", "//base/security/access_token/frameworks/accesstoken/include", + "//base/security/access_token/frameworks/database/include", "//base/security/access_token/interfaces/innerkits/accesstoken/include", "//third_party/json/include", ] @@ -39,11 +40,7 @@ ohos_shared_library("accesstoken_manager_service") { sources = [ "main/cpp/src/database/data_storage.cpp", "main/cpp/src/database/data_translator.cpp", - "main/cpp/src/database/generic_values.cpp", - "main/cpp/src/database/sqlite_helper.cpp", "main/cpp/src/database/sqlite_storage.cpp", - "main/cpp/src/database/statement.cpp", - "main/cpp/src/database/variant_value.cpp", "main/cpp/src/permission/permission_definition_cache.cpp", "main/cpp/src/permission/permission_manager.cpp", "main/cpp/src/permission/permission_policy_set.cpp", @@ -62,6 +59,7 @@ ohos_shared_library("accesstoken_manager_service") { deps = [ "//base/security/access_token/frameworks/accesstoken:accesstoken_communication_adapter_cxx", "//base/security/access_token/frameworks/common:accesstoken_common_cxx", + "//base/security/access_token/frameworks/database:accesstoken_database_cxx", "//base/security/access_token/services/accesstokenmanager:access_token.rc", "//third_party/sqlite:sqlite", "//utils/native/base:utils", diff --git a/services/accesstokenmanager/main/cpp/src/database/sqlite_storage.cpp b/services/accesstokenmanager/main/cpp/src/database/sqlite_storage.cpp index 5b35c186c..79c4e40b7 100644 --- a/services/accesstokenmanager/main/cpp/src/database/sqlite_storage.cpp +++ b/services/accesstokenmanager/main/cpp/src/database/sqlite_storage.cpp @@ -166,7 +166,7 @@ int SqliteStorage::Find(const DataType type, std::vector& results int columnCount = statement.GetColumnCount(); GenericValues value; for (int i = 0; i < columnCount; i++) { - value.Put(statement.GetColumnName(i), statement.GetValue(i)); + value.Put(statement.GetColumnName(i), statement.GetValue(i, false)); } results.emplace_back(value); } -- Gitee From d18d9c6ff8d855ef0752db6f9c0332524d433295 Mon Sep 17 00:00:00 2001 From: chennian Date: Fri, 20 May 2022 17:30:42 +0800 Subject: [PATCH 2/8] Signed-off-by:chennian Signed-off-by: chennian --- frameworks/database/include/sqlite_helper.h | 1 - 1 file changed, 1 deletion(-) diff --git a/frameworks/database/include/sqlite_helper.h b/frameworks/database/include/sqlite_helper.h index 2ff686924..0f0979ab4 100644 --- a/frameworks/database/include/sqlite_helper.h +++ b/frameworks/database/include/sqlite_helper.h @@ -17,7 +17,6 @@ #define SQLITE_HELPER_H #include -#include #include "statement.h" -- Gitee From 1dce402d0f4903a5bb0ee3be0e9a5e68f6a67396 Mon Sep 17 00:00:00 2001 From: chennian Date: Fri, 20 May 2022 17:50:23 +0800 Subject: [PATCH 3/8] Signed-off-by:chennian Signed-off-by: chennian --- frameworks/database/BUILD.gn | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/frameworks/database/BUILD.gn b/frameworks/database/BUILD.gn index 9ac898cfa..01ba9871f 100644 --- a/frameworks/database/BUILD.gn +++ b/frameworks/database/BUILD.gn @@ -17,9 +17,7 @@ ohos_shared_library("accesstoken_database_cxx") { subsystem_name = "security" part_name = "access_token" - include_dirs = [ - "include", - ] + include_dirs = [ "include" ] sources = [ "src/generic_values.cpp", @@ -35,7 +33,5 @@ ohos_shared_library("accesstoken_database_cxx") { "//third_party/sqlite:sqlite", ] - external_deps = [ - "hiviewdfx_hilog_native:libhilog", - ] + external_deps = [ "hiviewdfx_hilog_native:libhilog" ] } -- Gitee From f56c42fce491b6217205ba4523dada82c6ec328e Mon Sep 17 00:00:00 2001 From: chennian Date: Sun, 22 May 2022 09:40:38 +0800 Subject: [PATCH 4/8] Signed-off-by:chennian Signed-off-by: chennian --- services/accesstokenmanager/test/BUILD.gn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/services/accesstokenmanager/test/BUILD.gn b/services/accesstokenmanager/test/BUILD.gn index 37397abcd..9f0894c73 100644 --- a/services/accesstokenmanager/test/BUILD.gn +++ b/services/accesstokenmanager/test/BUILD.gn @@ -27,6 +27,7 @@ ohos_unittest("libaccesstoken_manager_service_standard_test") { "//base/security/access_token/services/accesstokenmanager/main/cpp/include/database", "//base/security/access_token/frameworks/common/include", "//base/security/access_token/frameworks/accesstoken/include", + "//base/security/access_token/frameworks/database/include", "//base/security/access_token/interfaces/innerkits/accesstoken/main/cpp/include", "//base/security/access_token/interfaces/innerkits/nativetoken/include", "//third_party/json/include", @@ -42,6 +43,7 @@ ohos_unittest("libaccesstoken_manager_service_standard_test") { deps = [ "//base/security/access_token/frameworks/accesstoken:accesstoken_communication_adapter_cxx", "//base/security/access_token/frameworks/common:accesstoken_common_cxx", + "//base/security/access_token/frameworks/database:accesstoken_database_cxx", "//base/security/access_token/interfaces/innerkits/accesstoken:libaccesstoken_sdk", "//base/security/access_token/interfaces/innerkits/nativetoken:libnativetoken", "//base/security/access_token/services/accesstokenmanager/:accesstoken_manager_service", -- Gitee From 44a0090be3da811ea941577ee50b8da3a510bb20 Mon Sep 17 00:00:00 2001 From: chennian Date: Sun, 22 May 2022 14:09:18 +0800 Subject: [PATCH 5/8] Signed-off-by:chennian Signed-off-by: chennian --- frameworks/database/include/field_const.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frameworks/database/include/field_const.h b/frameworks/database/include/field_const.h index f918157f5..21510f327 100644 --- a/frameworks/database/include/field_const.h +++ b/frameworks/database/include/field_const.h @@ -54,14 +54,14 @@ const std::string FIELD_IS_REMOTE_DEVICE = "is_remote_device"; const std::string FIELD_VISITOR_ID = "visitor_id"; const std::string FIELD_OP_CODE = "op_code"; const std::string FIELD_IS_FOREGROUND = "is_foreground"; -const std::string FIELD_IS_LOCKSCREEN = "is_lockscreen"; const std::string FIELD_TIMESTAMP = "timestamp"; -const std::string FIELD_DURATION = "duration"; +const std::string FIELD_ACCESS_DURATION = "access_duration"; const std::string FIELD_ACCESS_COUNT = "access_count"; const std::string FIELD_REJECT_COUNT = "reject_count"; const std::string FIELD_TIMESTAMP_BEGIN = "timestamp_begin"; const std::string FIELD_TIMESTAMP_END = "timestamp_begin"; +const std::string FIELD_FLAG = "flag"; } // namespace AccessToken } // namespace Security } // namespace OHOS -- Gitee From f5998af4534868c5edd841fb5102596e06e046fc Mon Sep 17 00:00:00 2001 From: chennian Date: Sun, 22 May 2022 14:37:02 +0800 Subject: [PATCH 6/8] Signed-off-by:chennian Signed-off-by: chennian --- frameworks/database/include/generic_values.h | 2 ++ frameworks/database/include/variant_value.h | 2 ++ frameworks/database/src/generic_values.cpp | 9 +++++++++ frameworks/database/src/variant_value.cpp | 9 +++++++++ 4 files changed, 22 insertions(+) diff --git a/frameworks/database/include/generic_values.h b/frameworks/database/include/generic_values.h index 6886d3c68..f1dad9746 100644 --- a/frameworks/database/include/generic_values.h +++ b/frameworks/database/include/generic_values.h @@ -42,6 +42,8 @@ public: int GetInt(const std::string& key) const; + int64_t GetInt64(const std::string& key) const; + std::string GetString(const std::string& key) const; private: diff --git a/frameworks/database/include/variant_value.h b/frameworks/database/include/variant_value.h index 00a1e2a90..9726a2d1a 100644 --- a/frameworks/database/include/variant_value.h +++ b/frameworks/database/include/variant_value.h @@ -25,6 +25,7 @@ namespace AccessToken { enum class ValueType { TYPE_NULL, TYPE_INT, + TYPE_INT64, TYPE_STRING, }; @@ -38,6 +39,7 @@ public: ValueType GetType() const; int GetInt() const; + int64_t GetInt64() const; std::string GetString() const; static const int DEFAULT_VALUE = -1; diff --git a/frameworks/database/src/generic_values.cpp b/frameworks/database/src/generic_values.cpp index 8ae83624a..66e9a5cc4 100644 --- a/frameworks/database/src/generic_values.cpp +++ b/frameworks/database/src/generic_values.cpp @@ -51,6 +51,15 @@ int GenericValues::GetInt(const std::string& key) const return it->second.GetInt(); } +int64_t GenericValues::GetInt64(const std::string& key) const +{ + auto it = map_.find(key); + if (it == map_.end()) { + return VariantValue::DEFAULT_VALUE; + } + return it->second.GetInt64(); +} + std::string GenericValues::GetString(const std::string& key) const { auto it = map_.find(key); diff --git a/frameworks/database/src/variant_value.cpp b/frameworks/database/src/variant_value.cpp index 77f5c906e..5028dd83f 100644 --- a/frameworks/database/src/variant_value.cpp +++ b/frameworks/database/src/variant_value.cpp @@ -48,6 +48,15 @@ int VariantValue::GetInt() const return std::get(value_); } +int64_t VariantValue::GetInt64() const +{ + if (type_ != ValueType::TYPE_INT64) { + return DEFAULT_VALUE; + } + + return std::get(value_); +} + std::string VariantValue::GetString() const { if (type_ != ValueType::TYPE_STRING) { -- Gitee From 12664ece55739a40259f6e44ff246e63f5c33108 Mon Sep 17 00:00:00 2001 From: chennian Date: Sun, 22 May 2022 14:53:07 +0800 Subject: [PATCH 7/8] Signed-off-by:chennian Signed-off-by: chennian --- frameworks/database/include/variant_value.h | 3 ++- frameworks/database/src/variant_value.cpp | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/frameworks/database/include/variant_value.h b/frameworks/database/include/variant_value.h index 9726a2d1a..f5afced0a 100644 --- a/frameworks/database/include/variant_value.h +++ b/frameworks/database/include/variant_value.h @@ -35,6 +35,7 @@ public: virtual ~VariantValue(); explicit VariantValue(int value); + explicit VariantValue(int64_t value); explicit VariantValue(const std::string& value); ValueType GetType() const; @@ -46,7 +47,7 @@ public: private: ValueType type_; - std::variant value_; + std::variant value_; }; } // namespace AccessToken } // namespace Security diff --git a/frameworks/database/src/variant_value.cpp b/frameworks/database/src/variant_value.cpp index 5028dd83f..180254791 100644 --- a/frameworks/database/src/variant_value.cpp +++ b/frameworks/database/src/variant_value.cpp @@ -29,6 +29,11 @@ VariantValue::VariantValue(int value) : type_(ValueType::TYPE_INT) value_ = value; } +VariantValue::VariantValue(int64_t value) : type_(ValueType::TYPE_INT64) +{ + value_ = value; +} + VariantValue::VariantValue(const std::string& value) : type_(ValueType::TYPE_STRING) { value_ = value; -- Gitee From 3dd0117cb5c8e419cb99a1aea82377fa8fce3e16 Mon Sep 17 00:00:00 2001 From: chennian Date: Sun, 22 May 2022 17:33:57 +0800 Subject: [PATCH 8/8] Signed-off-by:chennian Signed-off-by: chennian --- frameworks/database/include/field_const.h | 1 - frameworks/database/include/generic_values.h | 1 + frameworks/database/src/generic_values.cpp | 7 +++++++ frameworks/database/src/statement.cpp | 2 ++ 4 files changed, 10 insertions(+), 1 deletion(-) diff --git a/frameworks/database/include/field_const.h b/frameworks/database/include/field_const.h index 21510f327..88f935d11 100644 --- a/frameworks/database/include/field_const.h +++ b/frameworks/database/include/field_const.h @@ -47,7 +47,6 @@ const std::string FIELD_GRANT_STATE = "grant_state"; const std::string FIELD_GRANT_FLAG = "grant_flag"; const std::string FIELD_GRANT_IS_GENERAL = "is_general"; -/* permission visitor */ const std::string FIELD_ID = "id"; const std::string FIELD_IS_REMOTE_DEVICE = "is_remote_device"; diff --git a/frameworks/database/include/generic_values.h b/frameworks/database/include/generic_values.h index f1dad9746..20e9934ad 100644 --- a/frameworks/database/include/generic_values.h +++ b/frameworks/database/include/generic_values.h @@ -46,6 +46,7 @@ public: std::string GetString(const std::string& key) const; + void Remove(const std::string& key); private: std::map map_; }; diff --git a/frameworks/database/src/generic_values.cpp b/frameworks/database/src/generic_values.cpp index 66e9a5cc4..f46ac39ce 100644 --- a/frameworks/database/src/generic_values.cpp +++ b/frameworks/database/src/generic_values.cpp @@ -77,6 +77,13 @@ std::vector GenericValues::GetAllKeys() const } return keys; } + +void GenericValues::Remove(const std::string& key) +{ + if (map_.count(key) > 0) { + map_.erase(key); + } +} } // namespace AccessToken } // namespace Security } // namespace OHOS diff --git a/frameworks/database/src/statement.cpp b/frameworks/database/src/statement.cpp index b59758867..14bd59057 100644 --- a/frameworks/database/src/statement.cpp +++ b/frameworks/database/src/statement.cpp @@ -100,6 +100,8 @@ void Statement::Bind(const std::string& tableColumnName, const VariantValue& val Bind(index, value.GetString()); } else if (value.GetType() == ValueType::TYPE_INT) { Bind(index, value.GetInt()); + } else if (value.GetType() == ValueType::TYPE_INT64) { + Bind(index, value.GetInt64()); } } -- Gitee