You've already forked linux-packaging-mono
Imported Upstream version 6.4.0.137
Former-commit-id: 943baa9f16a098c33e129777827f3a9d20da00d6
This commit is contained in:
parent
e9207cf623
commit
ef583813eb
@@ -90,15 +90,22 @@ namespace Mono.Btls
|
||||
[DllImport (BTLS_DYLIB)]
|
||||
extern static int mono_btls_ssl_ctx_set_client_ca_list (IntPtr handle, int count, IntPtr sizes, IntPtr data);
|
||||
|
||||
[DllImport (BTLS_DYLIB)]
|
||||
extern static void mono_btls_ssl_ctx_set_server_name_callback (IntPtr handle, IntPtr func);
|
||||
|
||||
delegate int NativeVerifyFunc (IntPtr instance, int preverify_ok, IntPtr ctx);
|
||||
delegate int NativeSelectFunc (IntPtr instance, int count, IntPtr sizes, IntPtr data);
|
||||
delegate int NativeServerNameFunc (IntPtr instance);
|
||||
|
||||
NativeVerifyFunc verifyFunc;
|
||||
NativeSelectFunc selectFunc;
|
||||
NativeServerNameFunc serverNameFunc;
|
||||
IntPtr verifyFuncPtr;
|
||||
IntPtr selectFuncPtr;
|
||||
IntPtr serverNameFuncPtr;
|
||||
MonoBtlsVerifyCallback verifyCallback;
|
||||
MonoBtlsSelectCallback selectCallback;
|
||||
MonoBtlsServerNameCallback serverNameCallback;
|
||||
MonoBtlsX509Store store;
|
||||
GCHandle instance;
|
||||
IntPtr instancePtr;
|
||||
@@ -118,8 +125,10 @@ namespace Mono.Btls
|
||||
|
||||
verifyFunc = NativeVerifyCallback;
|
||||
selectFunc = NativeSelectCallback;
|
||||
serverNameFunc = NativeServerNameCallback;
|
||||
verifyFuncPtr = Marshal.GetFunctionPointerForDelegate (verifyFunc);
|
||||
selectFuncPtr = Marshal.GetFunctionPointerForDelegate (selectFunc);
|
||||
serverNameFuncPtr = Marshal.GetFunctionPointerForDelegate (serverNameFunc);
|
||||
|
||||
store = new MonoBtlsX509Store (Handle);
|
||||
}
|
||||
@@ -300,6 +309,27 @@ namespace Mono.Btls
|
||||
}
|
||||
}
|
||||
|
||||
public void SetServerNameCallback (MonoBtlsServerNameCallback callback)
|
||||
{
|
||||
CheckThrow ();
|
||||
|
||||
serverNameCallback = callback;
|
||||
mono_btls_ssl_ctx_set_server_name_callback (
|
||||
Handle.DangerousGetHandle (), serverNameFuncPtr);
|
||||
}
|
||||
|
||||
[Mono.Util.MonoPInvokeCallback (typeof (NativeServerNameFunc))]
|
||||
static int NativeServerNameCallback (IntPtr instance)
|
||||
{
|
||||
var c = (MonoBtlsSslCtx)GCHandle.FromIntPtr (instance).Target;
|
||||
try {
|
||||
return c.serverNameCallback ();
|
||||
} catch (Exception ex) {
|
||||
c.SetException (ex);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
protected override void Close ()
|
||||
{
|
||||
if (store != null) {
|
||||
|
||||
Reference in New Issue
Block a user