mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-10 04:43:33 +00:00
components/openssl: add SSL session function
1. add SSL session new and free function 2. add SSL session peer cert get and free operation 3. above all, change low-level cert object to be object point not object
This commit is contained in:
@@ -117,6 +117,38 @@ OSSL_HANDSHAKE_STATE SSL_get_state(const SSL *ssl)
|
||||
return state;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief create a new SSL session object
|
||||
*/
|
||||
SSL_SESSION* SSL_SESSION_new(void)
|
||||
{
|
||||
SSL_SESSION *session;
|
||||
|
||||
session = ssl_zalloc(sizeof(SSL_SESSION));
|
||||
if (!session)
|
||||
SSL_RET(failed1);
|
||||
|
||||
session->peer = X509_new();
|
||||
if (!session->peer)
|
||||
SSL_RET(failed2);
|
||||
|
||||
return session;
|
||||
|
||||
failed2:
|
||||
ssl_free(session);
|
||||
failed1:
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief free a new SSL session object
|
||||
*/
|
||||
void SSL_SESSION_free(SSL_SESSION *session)
|
||||
{
|
||||
X509_free(session->peer);
|
||||
ssl_free(session);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief create a SSL context
|
||||
*/
|
||||
@@ -210,6 +242,10 @@ SSL *SSL_new(SSL_CTX *ctx)
|
||||
if (!ssl)
|
||||
SSL_RET(failed1, "ssl_zalloc\n");
|
||||
|
||||
ssl->session = SSL_SESSION_new();
|
||||
if (!ssl->session)
|
||||
SSL_RET(failed2, "ssl_zalloc\n");
|
||||
|
||||
ssl->ctx = ctx;
|
||||
ssl->method = ctx->method;
|
||||
|
||||
@@ -222,12 +258,14 @@ SSL *SSL_new(SSL_CTX *ctx)
|
||||
|
||||
ret = SSL_METHOD_CALL(new, ssl);
|
||||
if (ret)
|
||||
SSL_RET(failed2, "ssl_new\n");
|
||||
SSL_RET(failed3, "ssl_new\n");
|
||||
|
||||
ssl->rwstate = SSL_NOTHING;
|
||||
|
||||
return ssl;
|
||||
|
||||
failed3:
|
||||
SSL_SESSION_free(ssl->session);
|
||||
failed2:
|
||||
ssl_free(ssl);
|
||||
failed1:
|
||||
@@ -243,6 +281,8 @@ void SSL_free(SSL *ssl)
|
||||
|
||||
SSL_METHOD_CALL(free, ssl);
|
||||
|
||||
SSL_SESSION_free(ssl->session);
|
||||
|
||||
if (ssl->ca_reload)
|
||||
X509_free(ssl->client_CA);
|
||||
|
||||
@@ -1369,7 +1409,7 @@ long SSL_set_time(SSL *ssl, long t)
|
||||
{
|
||||
SSL_ASSERT(ssl);
|
||||
|
||||
ssl->session.time = t;
|
||||
ssl->session->time = t;
|
||||
|
||||
return t;
|
||||
}
|
||||
@@ -1381,7 +1421,7 @@ long SSL_set_timeout(SSL *ssl, long t)
|
||||
{
|
||||
SSL_ASSERT(ssl);
|
||||
|
||||
ssl->session.timeout = t;
|
||||
ssl->session->timeout = t;
|
||||
|
||||
return t;
|
||||
}
|
||||
|
Reference in New Issue
Block a user