Skip to content

Commit

Permalink
tls-openssl: set psk callbacks directly
Browse files Browse the repository at this point in the history
  • Loading branch information
franku committed Aug 16, 2018
1 parent 9cfd805 commit 22635e3
Showing 1 changed file with 16 additions and 19 deletions.
35 changes: 16 additions & 19 deletions core/src/lib/tls_openssl.cc
Expand Up @@ -50,6 +50,18 @@
static std::map<SSL_CTX *, sharedPskCredentials> psk_server_credentials;
static std::map<SSL_CTX *, sharedPskCredentials> psk_client_credentials;

static unsigned int psk_client_cb(SSL *ssl,
const char * /*hint*/,
char *identity,
unsigned int max_identity_len,
unsigned char *psk,
unsigned int max_psk_len);

static unsigned int psk_server_cb(SSL *ssl,
const char *identity,
unsigned char *psk,
unsigned int max_psk_len);

class TlsImplementationOpenSsl
{
public:
Expand Down Expand Up @@ -81,18 +93,6 @@ class TlsImplementationOpenSsl
}
};

typedef unsigned int (*psk_client_callback_t)(SSL *ssl,
const char *hint,
char *identity,
unsigned int max_identity_len,
unsigned char *psk,
unsigned int max_psk_len);

typedef unsigned int (*psk_server_callback_t)(SSL *ssl,
const char *identity,
unsigned char *psk,
unsigned int max_psk_len);

class TlsConnectionContextOpenSsl
{
std::shared_ptr<TlsImplementationOpenSsl> tls_ctx_;
Expand All @@ -102,10 +102,7 @@ class TlsConnectionContextOpenSsl
std::shared_ptr<TlsImplementationOpenSsl> GetTls() { return tls_ctx_; }
SSL *GetSsl() { return openssl_; }

TlsConnectionContextOpenSsl(std::shared_ptr<TlsImplementationOpenSsl> tls_implementation,
int fd,
psk_client_callback_t psk_client_callback,
psk_server_callback_t psk_server_callback )
TlsConnectionContextOpenSsl(std::shared_ptr<TlsImplementationOpenSsl> tls_implementation, int fd)
: tls_ctx_(tls_implementation)
, openssl_(nullptr)
{
Expand All @@ -130,8 +127,8 @@ class TlsConnectionContextOpenSsl
throw;
}

SSL_CTX_set_psk_client_callback(tls_ctx_->openssl, psk_client_callback);
SSL_CTX_set_psk_server_callback(tls_ctx_->openssl, psk_server_callback);
SSL_CTX_set_psk_client_callback(tls_ctx_->openssl, psk_client_cb);
SSL_CTX_set_psk_server_callback(tls_ctx_->openssl, psk_server_cb);

SSL_set_bio(openssl_, bio, bio);

Expand Down Expand Up @@ -716,7 +713,7 @@ TlsConnectionContextOpenSsl *new_tls_connection(std::shared_ptr<TlsImplementatio
int fd,
bool server)
{
return new TlsConnectionContextOpenSsl(tls_implementation, fd, psk_client_cb, psk_server_cb);
return new TlsConnectionContextOpenSsl(tls_implementation, fd);
// return make_shared<TlsConnectionContextOpenSsl>(tls_implementation, fd, psk_client_cb, psk_server_cb);
}

Expand Down

0 comments on commit 22635e3

Please sign in to comment.