mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-08-01 03:34:39 +02:00
add SSL_CTX_set_alpn_protos
This commit is contained in:
33
src/ssl.c
33
src/ssl.c
@@ -21215,6 +21215,10 @@ void wolfSSL_OPENSSL_free(void* p)
|
||||
XFREE(p, NULL, DYNAMIC_TYPE_OPENSSL);
|
||||
}
|
||||
|
||||
void *wolfSSL_OPENSSL_malloc(size_t a)
|
||||
{
|
||||
return XMALLOC(a, NULL, DYNAMIC_TYPE_OPENSSL);
|
||||
}
|
||||
#if defined(WOLFSSL_KEY_GEN)
|
||||
|
||||
static int EncryptDerKey(byte *der, int *derSz, const EVP_CIPHER* cipher,
|
||||
@@ -26404,6 +26408,35 @@ int wolfSSL_set_msg_callback_arg(WOLFSSL *ssl, void* arg)
|
||||
return SSL_SUCCESS;
|
||||
}
|
||||
|
||||
void *wolfSSL_OPENSSL_memdup(const void *data, size_t siz, const char* file, int line)
|
||||
{
|
||||
(void)file;
|
||||
(void)line;
|
||||
void *ret;
|
||||
|
||||
if (data == NULL || siz >= INT_MAX)
|
||||
return NULL;
|
||||
|
||||
ret = OPENSSL_malloc(siz);
|
||||
if (ret == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
return XMEMCPY(ret, data, siz);
|
||||
}
|
||||
|
||||
int wolfSSL_CTX_set_alpn_protos(WOLFSSL_CTX *ctx, const unsigned char *p,
|
||||
unsigned int p_len)
|
||||
{
|
||||
wolfSSL_OPENSSL_free((void *)ctx->alpn_cli_protos);
|
||||
ctx->alpn_cli_protos = wolfSSL_OPENSSL_memdup(p, p_len, NULL, 0);
|
||||
if (ctx->alpn_cli_protos == NULL) {
|
||||
return 1;
|
||||
}
|
||||
ctx->alpn_cli_protos_len = p_len;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* WOLFCRYPT_ONLY */
|
||||
|
@@ -2316,6 +2316,8 @@ struct WOLFSSL_CTX {
|
||||
word32 disabledCurves; /* curves disabled by user */
|
||||
byte verifyDepth; /* maximum verification depth */
|
||||
unsigned long mask; /* store SSL_OP_ flags */
|
||||
const unsigned char *alpn_cli_protos;/* ALPN client protocol list */
|
||||
unsigned int alpn_cli_protos_len;
|
||||
#endif
|
||||
CallbackIORecv CBIORecv;
|
||||
CallbackIOSend CBIOSend;
|
||||
|
@@ -42,9 +42,6 @@ typedef void (CRYPTO_free_func)(void*parent, void*ptr, CRYPTO_EX_DATA *ad, int i
|
||||
#define CRYPTO_THREAD_r_lock wc_LockMutex
|
||||
#define CRYPTO_THREAD_unlock wc_UnLockMutex
|
||||
|
||||
#define OPENSSL_malloc(a) XMALLOC(a, NULL, DYNAMIC_TYPE_OPENSSL)
|
||||
|
||||
#endif /* HAVE_STUNNEL || WOLFSSL_NGINX || WOLFSSL_HAPROXY */
|
||||
|
||||
#endif /* header */
|
||||
|
||||
|
@@ -220,6 +220,7 @@ typedef WOLFSSL_X509_STORE_CTX X509_STORE_CTX;
|
||||
#define X509_digest wolfSSL_X509_digest
|
||||
#define X509_free wolfSSL_X509_free
|
||||
#define OPENSSL_free wolfSSL_OPENSSL_free
|
||||
#define OPENSSL_malloc wolfSSL_OPENSSL_malloc
|
||||
|
||||
#define OCSP_parse_url wolfSSL_OCSP_parse_url
|
||||
#define SSLv23_client_method wolfSSLv23_client_method
|
||||
@@ -776,6 +777,7 @@ typedef WOLFSSL_ASN1_BIT_STRING ASN1_BIT_STRING;
|
||||
#endif
|
||||
|
||||
#define OPENSSL_config wolfSSL_OPENSSL_config
|
||||
#define OPENSSL_memdup wolfSSL_OPENSSL_memdup
|
||||
#define X509_get_ex_new_index wolfSSL_X509_get_ex_new_index
|
||||
#define X509_get_ex_data wolfSSL_X509_get_ex_data
|
||||
#define X509_set_ex_data wolfSSL_X509_set_ex_data
|
||||
|
@@ -632,6 +632,7 @@ WOLFSSL_API WOLFSSL_SESSION* wolfSSL_get1_session(WOLFSSL* ssl);
|
||||
|
||||
WOLFSSL_API void wolfSSL_X509_free(WOLFSSL_X509*);
|
||||
WOLFSSL_API void wolfSSL_OPENSSL_free(void*);
|
||||
WOLFSSL_API void *wolfSSL_OPENSSL_malloc(size_t a);
|
||||
|
||||
WOLFSSL_API int wolfSSL_OCSP_parse_url(char* url, char** host, char** port,
|
||||
char** path, int* ssl);
|
||||
@@ -2507,6 +2508,10 @@ WOLFSSL_API int wolfSSL_set_msg_callback_arg(WOLFSSL *ssl, void* arg);
|
||||
#ifdef OPENSSL_EXTRA
|
||||
WOLFSSL_API unsigned long wolfSSL_ERR_peek_error_line_data(const char **file,
|
||||
int *line, const char **data, int *flags);
|
||||
WOLFSSL_API int wolfSSL_CTX_set_alpn_protos(WOLFSSL_CTX *ctx,
|
||||
const unsigned char *protos, unsigned int protos_len);
|
||||
WOLFSSL_API void *wolfSSL_OPENSSL_memdup(const void *data,
|
||||
size_t siz, const char* file, int line);
|
||||
#endif
|
||||
|
||||
#if defined WOLFSSL_NGINX || defined WOLFSSL_HAPROXY
|
||||
|
Reference in New Issue
Block a user