summaryrefslogtreecommitdiff
path: root/src/components/security_manager/include
diff options
context:
space:
mode:
authorAlexandr Galiuzov <agaliuzov@luxoft.com>2015-08-03 14:21:46 +0300
committerAleksandr Galiuzov <AGaliuzov@luxoft.com>2015-10-04 18:33:21 +0300
commitf7496e763ed9de8d612e4bcf8578eda86a79fd62 (patch)
treeb4c7af585a615075a4bf9c8a4bc2b43452dcdb2c /src/components/security_manager/include
parent4fa9992398ccc40f34827ef77972067bb426a35b (diff)
downloadsdl_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.h30
-rw-r--r--src/components/security_manager/include/security_manager/security_manager_impl.h2
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