summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrii Kalinich <AKalinich@luxoft.com>2018-06-12 14:34:31 +0300
committerAKalinich-Luxoft <AKalinich@luxoft.com>2018-06-15 17:09:13 +0300
commit6346012c541fab2875681fbd6a5fcae7b19be6fa (patch)
tree12a3e1fe2747983ee88690defacb37b90f0618b5
parent4d46517eebee2128b89a3eacd510df17d2f96478 (diff)
downloadsdl_core-6346012c541fab2875681fbd6a5fcae7b19be6fa.tar.gz
Updates after Livio review
-rw-r--r--src/components/connection_handler/test/connection_handler_impl_test.cc10
-rw-r--r--src/components/include/test/utils/mock_system_time_handler.h2
-rw-r--r--src/components/interfaces/HMI_API.xml5
-rw-r--r--src/components/policy/policy_regular/src/policy_manager_impl.cc7
-rw-r--r--src/components/security_manager/include/security_manager/crypto_manager_impl.h7
-rw-r--r--src/components/security_manager/include/security_manager/security_manager_impl.h2
-rw-r--r--src/components/security_manager/src/crypto_manager_impl.cc15
-rw-r--r--src/components/security_manager/src/security_manager_impl.cc10
-rw-r--r--src/components/security_manager/src/ssl_context_impl.cc10
-rw-r--r--src/components/security_manager/test/ssl_certificate_handshake_test.cc3
-rw-r--r--src/components/utils/include/utils/system_time_handler.h4
-rw-r--r--src/components/utils/src/system_time_handler.cc3
12 files changed, 41 insertions, 37 deletions
diff --git a/src/components/connection_handler/test/connection_handler_impl_test.cc b/src/components/connection_handler/test/connection_handler_impl_test.cc
index 56dbf6b9de..b231ee625f 100644
--- a/src/components/connection_handler/test/connection_handler_impl_test.cc
+++ b/src/components/connection_handler/test/connection_handler_impl_test.cc
@@ -1273,6 +1273,9 @@ TEST_F(ConnectionHandlerTest, SessionStarted_WithRpc) {
true,
ByRef(empty)));
+ EXPECT_CALL(mock_connection_handler_observer, CheckAppIsNavi(_))
+ .WillOnce(Return(true));
+
connection_handler_->set_protocol_handler(&mock_protocol_handler_);
EXPECT_CALL(mock_protocol_handler_, NotifySessionStarted(_, _))
.WillOnce(SaveArg<0>(&out_context_));
@@ -1309,6 +1312,8 @@ TEST_F(ConnectionHandlerTest, ServiceStarted_Video_SUCCESS) {
session_key,
true,
ByRef(empty)));
+ EXPECT_CALL(mock_connection_handler_observer, CheckAppIsNavi(_))
+ .WillOnce(Return(true));
// confirm that NotifySessionStarted() is called
connection_handler_->set_protocol_handler(&mock_protocol_handler_);
@@ -1349,6 +1354,8 @@ TEST_F(ConnectionHandlerTest, ServiceStarted_Video_FAILURE) {
session_key,
false,
ByRef(empty)));
+ EXPECT_CALL(mock_connection_handler_observer, CheckAppIsNavi(_))
+ .WillOnce(Return(true));
// confirm that NotifySessionStarted() is called
connection_handler_->set_protocol_handler(&mock_protocol_handler_);
@@ -1439,6 +1446,9 @@ TEST_F(ConnectionHandlerTest, ServiceStarted_Video_Multiple) {
session_key1,
true,
ByRef(empty))));
+ EXPECT_CALL(mock_connection_handler_observer, CheckAppIsNavi(_))
+ .Times(2)
+ .WillOnce(Return(true));
// verify that connection handler will not mix up the two results
SessionContext new_context_first, new_context_second;
diff --git a/src/components/include/test/utils/mock_system_time_handler.h b/src/components/include/test/utils/mock_system_time_handler.h
index ef80e698f5..7bb2a7f0a5 100644
--- a/src/components/include/test/utils/mock_system_time_handler.h
+++ b/src/components/include/test/utils/mock_system_time_handler.h
@@ -46,7 +46,7 @@ class MockSystemTimeHandler : public ::utils::SystemTimeHandler {
MOCK_METHOD0(QuerySystemTime, void());
MOCK_METHOD1(SubscribeOnSystemTime,
void(utils::SystemTimeListener* listener));
- MOCK_METHOD1(UnSubscribeFromSystemTime,
+ MOCK_METHOD1(UnsubscribeFromSystemTime,
void(utils::SystemTimeListener* listener));
MOCK_METHOD0(GetUTCTime, time_t());
MOCK_CONST_METHOD0(system_time_can_be_received, bool());
diff --git a/src/components/interfaces/HMI_API.xml b/src/components/interfaces/HMI_API.xml
index ac623ee021..65cc9bea5b 100644
--- a/src/components/interfaces/HMI_API.xml
+++ b/src/components/interfaces/HMI_API.xml
@@ -2855,14 +2855,15 @@
<interface name="BasicCommunication" version="1.2.1" date="2017-08-02">
<function name="GetSystemTime" messagetype="request">
- <description> Allows to obtain current sytem time</description>
+ <description>Request from SDL to HMI to obtain current UTC time.</description>
</function>
<function name="GetSystemTime" messagetype="response">
<param name="systemTime" type="Common.DateTime" mandatory="true">
+ <description>Current UTC system time</description>
</param>
</function>
<function name="OnSystemTimeReady" messagetype="notification">
- <description>HMI notifies SDL with this notification that NAVI module is ready to provide system time.</description>
+ <description>HMI must notify SDL about readiness to provide system time.</description>
</function>
<function name="OnReady" messagetype="notification">
<description>HMI must notify SDL about its readiness to start communication. In fact, this has to be the first message between SDL and HMI.</description>
diff --git a/src/components/policy/policy_regular/src/policy_manager_impl.cc b/src/components/policy/policy_regular/src/policy_manager_impl.cc
index 42276e8bc5..3ab6a3e75a 100644
--- a/src/components/policy/policy_regular/src/policy_manager_impl.cc
+++ b/src/components/policy/policy_regular/src/policy_manager_impl.cc
@@ -1080,6 +1080,13 @@ StatusNotifier PolicyManagerImpl::AddApplication(
device_consent);
} else {
PromoteExistedApplication(application_id, device_consent);
+ const policy_table::AppHMIType type = policy_table::AHT_NAVIGATION;
+ if (helpers::in_range(hmi_types,
+ (rpc::Enum<policy_table::AppHMIType>)type) &&
+ !HasCertificate()) {
+ LOG4CXX_DEBUG(logger_, "Certificate does not exist, scheduling update.");
+ update_status_manager_.ScheduleUpdate();
+ }
return utils::MakeShared<utils::CallNothing>();
}
}
diff --git a/src/components/security_manager/include/security_manager/crypto_manager_impl.h b/src/components/security_manager/include/security_manager/crypto_manager_impl.h
index c31e02cf48..228666d22f 100644
--- a/src/components/security_manager/include/security_manager/crypto_manager_impl.h
+++ b/src/components/security_manager/include/security_manager/crypto_manager_impl.h
@@ -152,15 +152,8 @@ class CryptoManagerImpl : public CryptoManager {
private:
bool set_certificate(const std::string& cert_data);
-
- /**
- * @brief Sets initial certificate datetime
- */
- void InitCertExpTime();
-
const utils::SharedPtr<const CryptoManagerSettings> settings_;
SSL_CTX* context_;
- mutable struct tm expiration_time_;
static uint32_t instance_count_;
static sync_primitives::Lock instance_lock_;
DISALLOW_COPY_AND_ASSIGN(CryptoManagerImpl);
diff --git a/src/components/security_manager/include/security_manager/security_manager_impl.h b/src/components/security_manager/include/security_manager/security_manager_impl.h
index dc0284c128..70b87de0ef 100644
--- a/src/components/security_manager/include/security_manager/security_manager_impl.h
+++ b/src/components/security_manager/include/security_manager/security_manager_impl.h
@@ -143,6 +143,7 @@ class SecurityManagerImpl : public SecurityManager,
* Do not notify listeners, send security error on occure
* \param connection_key Unique key used by other components as session
* identifier
+ * @param cc_strategy - SSL context creation strategy
* @return new \c SSLContext or \c NULL on any error
*/
SSLContext* CreateSSLContext(const uint32_t& connection_key,
@@ -163,6 +164,7 @@ class SecurityManagerImpl : public SecurityManager,
/**
* @brief Checks whether certificate should be updated
+ * @param connection_key the connection identifier to check certificate for.
* @return true if certificate should be updated otherwise false
*/
bool IsCertificateUpdateRequired(const uint32_t connection_key) OVERRIDE;
diff --git a/src/components/security_manager/src/crypto_manager_impl.cc b/src/components/security_manager/src/crypto_manager_impl.cc
index bdf266fda8..1e1b4ef44a 100644
--- a/src/components/security_manager/src/crypto_manager_impl.cc
+++ b/src/components/security_manager/src/crypto_manager_impl.cc
@@ -98,7 +98,6 @@ CryptoManagerImpl::CryptoManagerImpl(
OpenSSL_add_all_algorithms();
SSL_library_init();
}
- InitCertExpTime();
}
CryptoManagerImpl::~CryptoManagerImpl() {
@@ -360,18 +359,4 @@ bool CryptoManagerImpl::set_certificate(const std::string& cert_data) {
return true;
}
-int CryptoManagerImpl::SSLContextImpl::get_number_from_char_buf(
- char* buf, int* idx) const {
- if (!idx) {
- return 0;
- }
- const int val = ((buf[*idx] - '0') * 10) + buf[(*idx) + 1] - '0';
- *idx = *idx + 2;
- return val;
-}
-
-void CryptoManagerImpl::InitCertExpTime() {
- strptime("1 Jan 1970 00:00:00", "%d %b %Y %H:%M:%S", &expiration_time_);
-}
-
} // namespace security_manager
diff --git a/src/components/security_manager/src/security_manager_impl.cc b/src/components/security_manager/src/security_manager_impl.cc
index 66a85956a5..401491c5dc 100644
--- a/src/components/security_manager/src/security_manager_impl.cc
+++ b/src/components/security_manager/src/security_manager_impl.cc
@@ -60,7 +60,7 @@ SecurityManagerImpl::SecurityManagerImpl(
}
SecurityManagerImpl::~SecurityManagerImpl() {
- system_time_handler_->UnSubscribeFromSystemTime(this);
+ system_time_handler_->UnsubscribeFromSystemTime(this);
}
void SecurityManagerImpl::OnMessageReceived(
@@ -242,7 +242,7 @@ void SecurityManagerImpl::StartHandshake(uint32_t connection_key) {
LOG4CXX_ERROR(logger_, "Security certificate is absent");
sync_primitives::AutoLock lock(waiters_lock_);
waiting_for_certificate_ = true;
- NotifyOnCertififcateUpdateRequired();
+ NotifyOnCertificateUpdateRequired();
}
{
@@ -293,7 +293,7 @@ void SecurityManagerImpl::ProceedHandshake(
waiting_for_certificate_ = true;
}
PostponeHandshake(connection_key);
- NotifyOnCertififcateUpdateRequired();
+ NotifyOnCertificateUpdateRequired();
return;
}
@@ -369,7 +369,7 @@ bool SecurityManagerImpl::OnCertificateUpdated(const std::string& data) {
awaiting_certificate_connections_.end(),
std::bind1st(std::mem_fun(&SecurityManagerImpl::ResumeHandshake), this));
- std::set<uint32_t>().swap(awaiting_certificate_connections_);
+ awaiting_certificate_connections_.clear();
return true;
}
@@ -385,7 +385,7 @@ void SecurityManagerImpl::OnSystemTimeArrived(const time_t utc_time) {
awaiting_time_connections_.end(),
std::bind1st(std::mem_fun(&SecurityManagerImpl::ResumeHandshake), this));
- std::set<uint32_t>().swap(awaiting_time_connections_);
+ awaiting_time_connections_.clear();
}
void SecurityManagerImpl::NotifyListenersOnHandshakeDone(
diff --git a/src/components/security_manager/src/ssl_context_impl.cc b/src/components/security_manager/src/ssl_context_impl.cc
index bccb885511..866e825e0b 100644
--- a/src/components/security_manager/src/ssl_context_impl.cc
+++ b/src/components/security_manager/src/ssl_context_impl.cc
@@ -280,6 +280,16 @@ CryptoManagerImpl::SSLContextImpl::CheckCertContext() {
return Handshake_Result_Success;
}
+int CryptoManagerImpl::SSLContextImpl::get_number_from_char_buf(
+ char* buf, int* idx) const {
+ if (!idx) {
+ return 0;
+ }
+ const int val = ((buf[*idx] - '0') * 10) + buf[(*idx) + 1] - '0';
+ *idx = *idx + 2;
+ return val;
+}
+
time_t CryptoManagerImpl::SSLContextImpl::convert_asn1_time_to_time_t(
ASN1_TIME* time_to_convert) const {
struct tm cert_time;
diff --git a/src/components/security_manager/test/ssl_certificate_handshake_test.cc b/src/components/security_manager/test/ssl_certificate_handshake_test.cc
index f6521c253a..dc335c8da2 100644
--- a/src/components/security_manager/test/ssl_certificate_handshake_test.cc
+++ b/src/components/security_manager/test/ssl_certificate_handshake_test.cc
@@ -335,9 +335,6 @@ class SSLHandshakeTest : public testing::Test {
std::string client_certificate_;
std::string client_ciphers_list_;
std::string client_ca_certificate_path_;
-
- std::vector<int> forced_protected_services_;
- std::vector<int> forced_unprotected_services_;
};
TEST_F(SSLHandshakeTest, NoVerification) {
diff --git a/src/components/utils/include/utils/system_time_handler.h b/src/components/utils/include/utils/system_time_handler.h
index 99bbfa39e5..15b2dd0cca 100644
--- a/src/components/utils/include/utils/system_time_handler.h
+++ b/src/components/utils/include/utils/system_time_handler.h
@@ -82,12 +82,12 @@ class SystemTimeHandler {
void SubscribeOnSystemTime(SystemTimeListener* listener);
/**
- * @brief UnSubscribeFromSystemTime allows to unsubscribe listener
+ * @brief UnsubscribeFromSystemTime allows to unsubscribe listener
* from the certain event. This class does not manipulate with storage.
* It rather uses private pure virtual function. So the final behaviour
* should be defined within the descendant class
*/
- void UnSubscribeFromSystemTime(SystemTimeListener* listener);
+ void UnsubscribeFromSystemTime(SystemTimeListener* listener);
/**
* @brief GetUTCTime allows to obtain cached result for the
diff --git a/src/components/utils/src/system_time_handler.cc b/src/components/utils/src/system_time_handler.cc
index ea04d1c0b9..0c3c62cc53 100644
--- a/src/components/utils/src/system_time_handler.cc
+++ b/src/components/utils/src/system_time_handler.cc
@@ -31,7 +31,6 @@
*/
#include "utils/system_time_handler.h"
-//#include <algorithm>
namespace utils {
@@ -47,7 +46,7 @@ void SystemTimeHandler::SubscribeOnSystemTime(SystemTimeListener* listener) {
DoSubscribe(listener);
}
-void SystemTimeHandler::UnSubscribeFromSystemTime(
+void SystemTimeHandler::UnsubscribeFromSystemTime(
SystemTimeListener* listener) {
DoUnsubscribe(listener);
}