Skip to content

Commit 983610e

Browse files
committed
- Applied David's patch to get access to the missing sni callback (arg)
- removed tlsext callback (since it's a compatibility one) - updated testing examples and wrapper
1 parent 5d0b7e0 commit 983610e

4 files changed

Lines changed: 31 additions & 48 deletions

File tree

src/ssl.c

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -20156,16 +20156,9 @@ VerifyCallback wolfSSL_CTX_get_verify_callback(WOLFSSL_CTX* ctx)
2015620156
return NULL;
2015720157
}
2015820158

20159-
2016020159
#ifdef HAVE_SNI
20161-
20162-
void wolfSSL_CTX_set_servername_callback(WOLFSSL_CTX* ctx, CallbackSniRecv cb)
20163-
{
20164-
WOLFSSL_ENTER("wolfSSL_CTX_set_servername_callback");
20165-
if (ctx)
20166-
ctx->sniRecvCb = cb;
20167-
}
20168-
20160+
/* this is a compatibily function, consider using
20161+
* wolfSSL_CTX_set_servername_callback */
2016920162
int wolfSSL_CTX_set_tlsext_servername_callback(WOLFSSL_CTX* ctx,
2017020163
CallbackSniRecv cb)
2017120164
{
@@ -20177,19 +20170,8 @@ int wolfSSL_CTX_set_tlsext_servername_callback(WOLFSSL_CTX* ctx,
2017720170
return WOLFSSL_FAILURE;
2017820171
}
2017920172

20180-
int wolfSSL_CTX_set_servername_arg(WOLFSSL_CTX* ctx, void* arg)
20181-
{
20182-
WOLFSSL_ENTER("wolfSSL_CTX_set_servername_arg");
20183-
if (ctx) {
20184-
ctx->sniRecvCbArg = arg;
20185-
return WOLFSSL_SUCCESS;
20186-
}
20187-
return WOLFSSL_FAILURE;
20188-
}
20189-
2019020173
#endif /* HAVE_SNI */
2019120174

20192-
2019320175
#ifndef NO_BIO
2019420176
void wolfSSL_ERR_load_BIO_strings(void) {
2019520177
WOLFSSL_ENTER("wolfSSL_ERR_load_BIO_strings");
@@ -20224,6 +20206,27 @@ void wolfSSL_THREADID_set_numeric(void* id, unsigned long val)
2022420206
* HAVE_LIGHTY || WOLFSSL_HAPROXY || WOLFSSL_OPENSSH ||
2022520207
* HAVE_SBLIM_SFCB)) */
2022620208

20209+
#ifdef HAVE_SNI
20210+
20211+
void wolfSSL_CTX_set_servername_callback(WOLFSSL_CTX* ctx, CallbackSniRecv cb)
20212+
{
20213+
WOLFSSL_ENTER("wolfSSL_CTX_set_servername_callback");
20214+
if (ctx)
20215+
ctx->sniRecvCb = cb;
20216+
}
20217+
20218+
20219+
int wolfSSL_CTX_set_servername_arg(WOLFSSL_CTX* ctx, void* arg)
20220+
{
20221+
WOLFSSL_ENTER("wolfSSL_CTX_set_servername_arg");
20222+
if (ctx) {
20223+
ctx->sniRecvCbArg = arg;
20224+
return WOLFSSL_SUCCESS;
20225+
}
20226+
return WOLFSSL_FAILURE;
20227+
}
20228+
20229+
#endif /* HAVE_SNI */
2022720230

2022820231
#if defined(OPENSSL_EXTRA)
2022920232

wolfssl/ssl.h

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4872,14 +4872,17 @@ typedef int (*CallbackSniRecv)(WOLFSSL *ssl, int *ret, void* exArg);
48724872

48734873
WOLFSSL_API void wolfSSL_CTX_set_servername_callback(WOLFSSL_CTX* ctx,
48744874
CallbackSniRecv cb);
4875-
WOLFSSL_API int wolfSSL_CTX_set_tlsext_servername_callback(WOLFSSL_CTX* ctx,
4876-
CallbackSniRecv cb);
48774875

48784876
WOLFSSL_API int wolfSSL_CTX_set_servername_arg(WOLFSSL_CTX* ctx, void* arg);
48794877
#endif
48804878

4881-
#if defined(OPENSSL_ALL) || defined(HAVE_STUNNEL) || defined(WOLFSSL_NGINX) \
4882-
|| defined(WOLFSSL_HAPROXY) || defined(OPENSSL_EXTRA) || defined(HAVE_LIGHTY)
4879+
#if defined(OPENSSL_ALL) || defined(HAVE_STUNNEL) || defined(WOLFSSL_NGINX) || \
4880+
defined(WOLFSSL_HAPROXY) || defined(OPENSSL_EXTRA) || defined(HAVE_LIGHTY)
4881+
4882+
#ifdef HAVE_SNI
4883+
WOLFSSL_API int wolfSSL_CTX_set_tlsext_servername_callback(WOLFSSL_CTX* ctx,
4884+
CallbackSniRecv cb);
4885+
#endif
48834886

48844887
WOLFSSL_API void wolfSSL_ERR_remove_thread_state(void* pid);
48854888

wrapper/CSharp/wolfSSL-TLS-Server/wolfSSL-TLS-Server.cs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ public static int my_sni_server_cb(IntPtr ssl, IntPtr ret, IntPtr exArg) {
7777
/* Trivial callback just for testing */
7878
Console.WriteLine("my sni server callback");
7979

80-
return wolfssl.SUCCESS;
80+
return 0;
8181
}
8282

8383
public static void Main(string[] args)
@@ -167,12 +167,6 @@ public static void Main(string[] args)
167167
// Setting SNI delegate
168168
wolfssl.sni_delegate sni_cb = new wolfssl.sni_delegate(my_sni_server_cb);
169169
wolfssl.CTX_set_servername_callback(ctx, sni_cb);
170-
171-
if (wolfssl.CTX_set_tlsext_servername_callback(ssl, sni_cb) == wolfssl.FAILURE) {
172-
Console.WriteLine("wolfssl.CTX_set_tlsext_servername_callback failed");
173-
wolfssl.CTX_free(ctx);
174-
return;
175-
}
176170
}
177171

178172
Console.WriteLine("Connection made wolfSSL_accept ");

wrapper/CSharp/wolfSSL_CSharp/wolfSSL.cs

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -325,8 +325,6 @@ public void free()
325325
[DllImport(wolfssl_dll, CallingConvention = CallingConvention.Cdecl)]
326326
private extern static void wolfSSL_CTX_set_servername_callback(IntPtr ctx, sni_delegate sni_cb);
327327
[DllImport(wolfssl_dll, CallingConvention = CallingConvention.Cdecl)]
328-
private extern static int wolfSSL_CTX_set_tlsext_servername_callback(IntPtr ctx, sni_delegate sni_cb);
329-
[DllImport(wolfssl_dll, CallingConvention = CallingConvention.Cdecl)]
330328
private extern static int wolfSSL_CTX_set_servername_arg(IntPtr ctx, IntPtr arg);
331329
[DllImport(wolfssl_dll, CallingConvention = CallingConvention.Cdecl)]
332330
private extern static int wolfSSL_CTX_UseSNI(IntPtr ctx, byte type, IntPtr data, ushort size);
@@ -1141,21 +1139,6 @@ public static void CTX_set_servername_callback(IntPtr ctx, sni_delegate sni_cb)
11411139
}
11421140
}
11431141

1144-
public static int CTX_set_tlsext_servername_callback(IntPtr ctx, sni_delegate sni_cb)
1145-
{
1146-
try {
1147-
GCHandle gch = GCHandle.FromIntPtr(ctx);
1148-
ctx_handle handles = (ctx_handle)gch.Target;
1149-
1150-
handles.set_sni(GCHandle.Alloc(sni_cb));
1151-
1152-
return wolfSSL_CTX_set_tlsext_servername_callback(handles.get_ctx(), sni_cb);
1153-
} catch (Exception e) {
1154-
log(ERROR_LOG, "wolfssl tlsext servername callback error: " + e.ToString());
1155-
return FAILURE;
1156-
}
1157-
}
1158-
11591142
public static int CTX_set_servername_arg(IntPtr ctx, IntPtr arg)
11601143
{
11611144
try {

0 commit comments

Comments
 (0)