diff options
author | Maksym Ked <mked@luxoft.com> | 2019-06-06 14:33:33 +0300 |
---|---|---|
committer | mked-luxoft <mked@luxoft.com> | 2019-08-27 16:28:10 +0300 |
commit | 034d95330bd7a6b3f51e4874d1139e58ab6e6d55 (patch) | |
tree | d94cdb1cd7aaa61c74cb5e315173c433ea7be369 | |
parent | fc2603d4ddb8fbffcd78b2795e3c117c3c6f829c (diff) | |
download | sdl_core-034d95330bd7a6b3f51e4874d1139e58ab6e6d55.tar.gz |
Extended logic adding encryption flag in message helper
-rw-r--r-- | src/components/application_manager/src/message_helper/message_helper.cc | 43 | ||||
-rw-r--r-- | src/components/application_manager/src/policies/policy_handler.cc | 1 |
2 files changed, 41 insertions, 3 deletions
diff --git a/src/components/application_manager/src/message_helper/message_helper.cc b/src/components/application_manager/src/message_helper/message_helper.cc index 0355a5bc69..5a693b0951 100644 --- a/src/components/application_manager/src/message_helper/message_helper.cc +++ b/src/components/application_manager/src/message_helper/message_helper.cc @@ -2559,6 +2559,42 @@ void MessageHelper::SendOnPermissionsChangeNotification( policy::Permissions::const_iterator it_permissions = permissions.begin(); policy::Permissions::const_iterator it_permissions_end = permissions.end(); + using policy::EncryptionRequired; + auto permission_item_encryption_flag_state = + [](const EncryptionRequired& app_flag, + const EncryptionRequired& groups_flag) -> EncryptionRequired { + enum EncryptionFlagState { TRUE, FALSE, MISSING }; + auto enum_from_optional_bool = [](const EncryptionRequired& flag) { + if (!flag.is_initialized()) { + return MISSING; + } + return *flag ? TRUE : FALSE; + }; + + typedef std::pair<EncryptionFlagState, EncryptionFlagState> + EnctyptionStatePair; + typedef std::map<EnctyptionStatePair, EncryptionRequired> + PermissionItemEncryptionTable; + static PermissionItemEncryptionTable encryption_state_table = { + {{TRUE, TRUE}, EncryptionRequired(true)}, + {{TRUE, FALSE}, EncryptionRequired()}, + {{TRUE, MISSING}, EncryptionRequired()}, + {{FALSE, TRUE}, EncryptionRequired()}, + {{FALSE, FALSE}, EncryptionRequired()}, + {{FALSE, MISSING}, EncryptionRequired()}, + {{MISSING, TRUE}, EncryptionRequired(true)}, + {{MISSING, FALSE}, EncryptionRequired()}, + {{MISSING, MISSING}, EncryptionRequired()}, + }; + const auto app_flag_state = enum_from_optional_bool(app_flag); + const auto groups_flag_state = enum_from_optional_bool(groups_flag); + auto it = encryption_state_table.find( + EnctyptionStatePair(app_flag_state, groups_flag_state)); + DCHECK_OR_RETURN(it != encryption_state_table.end(), + EncryptionRequired()); + return it->second; + }; + for (size_t index_pi = 0; it_permissions != it_permissions_end; ++it_permissions, ++index_pi) { permissions_item_array[index_pi] = @@ -2569,9 +2605,10 @@ void MessageHelper::SendOnPermissionsChangeNotification( permission_item["rpcName"] = (*it_permissions).first; const policy::RpcPermissions& rpc_permissions = (*it_permissions).second; - - if (rpc_permissions.require_encryption.is_initialized()) { - const bool require_encryption = *rpc_permissions.require_encryption; + auto item_require_encryption = permission_item_encryption_flag_state( + encryprion_required, rpc_permissions.require_encryption); + if (item_require_encryption.is_initialized()) { + const bool require_encryption = *item_require_encryption; permission_item[strings::requireEncryption] = require_encryption; } diff --git a/src/components/application_manager/src/policies/policy_handler.cc b/src/components/application_manager/src/policies/policy_handler.cc index 438f36ad26..1bad50b34f 100644 --- a/src/components/application_manager/src/policies/policy_handler.cc +++ b/src/components/application_manager/src/policies/policy_handler.cc @@ -462,6 +462,7 @@ void PolicyHandler::OnAppPermissionConsent( void PolicyHandler::OnDeviceConsentChanged(const std::string& device_id, const bool is_allowed) { + LOG4CXX_AUTO_TRACE(logger_); POLICY_LIB_CHECK_VOID(); connection_handler::DeviceHandle device_handle; if (!application_manager_.connection_handler().GetDeviceID(device_id, |