diff options
author | Alexandr Galiuzov <agaliuzov@luxoft.com> | 2015-08-03 14:21:46 +0300 |
---|---|---|
committer | Aleksandr Galiuzov <AGaliuzov@luxoft.com> | 2015-10-04 18:33:21 +0300 |
commit | f7496e763ed9de8d612e4bcf8578eda86a79fd62 (patch) | |
tree | b4c7af585a615075a4bf9c8a4bc2b43452dcdb2c /src/components/security_manager/include | |
parent | 4fa9992398ccc40f34827ef77972067bb426a35b (diff) | |
download | sdl_core-f7496e763ed9de8d612e4bcf8578eda86a79fd62.tar.gz |
Implement getting additional counters for handshake
Add additional counter to policy for handshake procedure.
In case something wrong with handshake this counter will be incremented.
Implement: APPLINK-12596
Closes-Issue: APPLINK-12598
Diffstat (limited to 'src/components/security_manager/include')
-rw-r--r-- | src/components/security_manager/include/security_manager/crypto_manager_impl.h | 30 | ||||
-rw-r--r-- | src/components/security_manager/include/security_manager/security_manager_impl.h | 2 |
2 files changed, 20 insertions, 12 deletions
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 6641050d40..881aefbe81 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 @@ -56,20 +56,26 @@ class CryptoManagerImpl : public CryptoManager { virtual HandshakeResult DoHandshakeStep(const uint8_t *const in_data, size_t in_data_size, const uint8_t** const out_data, - size_t *out_data_size); - virtual bool Encrypt(const uint8_t *const in_data, size_t in_data_size, - const uint8_t ** const out_data, size_t *out_data_size); - virtual bool Decrypt(const uint8_t *const in_data, size_t in_data_size, - const uint8_t ** const out_data, size_t *out_data_size); - virtual bool IsInitCompleted() const; - virtual bool IsHandshakePending() const; - virtual size_t get_max_block_size(size_t mtu) const; - virtual std::string LastError() const; - virtual ~SSLContextImpl(); - + size_t *out_data_size) OVERRIDE; + bool Encrypt(const uint8_t *const in_data, size_t in_data_size, + const uint8_t ** const out_data, size_t *out_data_size) OVERRIDE; + bool Decrypt(const uint8_t *const in_data, size_t in_data_size, + const uint8_t ** const out_data, size_t *out_data_size) OVERRIDE; + bool IsInitCompleted() const OVERRIDE; + bool IsHandshakePending() const OVERRIDE; + size_t get_max_block_size(size_t mtu) const OVERRIDE; + std::string LastError() const OVERRIDE; + void ResetConnection() OVERRIDE; + void SetHandshakeContext(const HandshakeContext& hsh_ctx) OVERRIDE; + ~SSLContextImpl(); private: typedef size_t(*BlockSizeGetter)(size_t); void EnsureBufferSizeEnough(size_t size); + void SetHandshakeError(const int error); + HandshakeResult openssl_error_convert_to_internal(const long error); + + std::string GetTextBy(X509_NAME* name, int object) const; + SSL *connection_; BIO *bioIn_; BIO *bioOut_; @@ -79,9 +85,11 @@ class CryptoManagerImpl : public CryptoManager { uint8_t *buffer_; bool is_handshake_pending_; Mode mode_; + mutable std::string last_error_; BlockSizeGetter max_block_size_; static std::map<std::string, BlockSizeGetter> max_block_sizes; static std::map<std::string, BlockSizeGetter> create_max_block_sizes(); + HandshakeContext hsh_context_; DISALLOW_COPY_AND_ASSIGN(SSLContextImpl); }; 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 2aa03087eb..37efcf5a5f 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 @@ -148,7 +148,7 @@ class SecurityManagerImpl * \param success result of connection protection */ void NotifyListenersOnHandshakeDone(const uint32_t &connection_key, - const bool success); + SSLContext::HandshakeResult error); /** * @brief SecurityConfigSection * @return Session name in config file |