Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZoltan Varga <vargaz@gmail.com>2016-10-22 00:29:13 +0300
committerGitHub <noreply@github.com>2016-10-22 00:29:13 +0300
commit2fb07d6c6d5b3915ef4665391febbb7b8be09fb5 (patch)
tree6c5e0315011a1f707c844a3ae171ca71db5b0ebf
parent20acd5895c2f0d661a4a9971f979f33384f6066e (diff)
[btls] Convert BTLS icalls to pinvokes by invoking them using [DllImp… (#3799)
* [btls] Convert BTLS icalls to pinvokes by invoking them using [DllImport("__Internal")], which will make it easier to redirect them to a separate dylib in the future. * [btls] Add a --enable-dynamic-btls configure flag to enable compiling btls into a separate shared library instead of embedding it into the runtime.
-rw-r--r--configure.ac10
-rw-r--r--data/config.in1
-rw-r--r--mcs/class/System/Makefile4
-rw-r--r--mcs/class/System/Mono.Btls/MonoBtlsBio.cs22
-rw-r--r--mcs/class/System/Mono.Btls/MonoBtlsError.cs12
-rw-r--r--mcs/class/System/Mono.Btls/MonoBtlsKey.cs10
-rw-r--r--mcs/class/System/Mono.Btls/MonoBtlsObject.cs8
-rw-r--r--mcs/class/System/Mono.Btls/MonoBtlsPkcs12.cs16
-rw-r--r--mcs/class/System/Mono.Btls/MonoBtlsSsl.cs46
-rw-r--r--mcs/class/System/Mono.Btls/MonoBtlsSslCtx.cs24
-rw-r--r--mcs/class/System/Mono.Btls/MonoBtlsX509.cs50
-rw-r--r--mcs/class/System/Mono.Btls/MonoBtlsX509Chain.cs12
-rw-r--r--mcs/class/System/Mono.Btls/MonoBtlsX509Crl.cs22
-rw-r--r--mcs/class/System/Mono.Btls/MonoBtlsX509Lookup.cs22
-rw-r--r--mcs/class/System/Mono.Btls/MonoBtlsX509LookupMono.cs6
-rw-r--r--mcs/class/System/Mono.Btls/MonoBtlsX509Name.cs24
-rw-r--r--mcs/class/System/Mono.Btls/MonoBtlsX509NameList.cs10
-rw-r--r--mcs/class/System/Mono.Btls/MonoBtlsX509Revoked.cs10
-rw-r--r--mcs/class/System/Mono.Btls/MonoBtlsX509Store.cs16
-rw-r--r--mcs/class/System/Mono.Btls/MonoBtlsX509StoreCtx.cs30
-rw-r--r--mcs/class/System/Mono.Btls/MonoBtlsX509VerifyParam.cs34
-rw-r--r--mono/btls/CMakeLists.txt6
-rw-r--r--mono/btls/Makefile.am6
-rw-r--r--mono/btls/btls-bio.c22
-rw-r--r--mono/btls/btls-error.c9
-rw-r--r--mono/btls/btls-key.c10
-rw-r--r--mono/btls/btls-pkcs12.c20
-rw-r--r--mono/btls/btls-ssl-ctx.c32
-rw-r--r--mono/btls/btls-ssl.c46
-rw-r--r--mono/btls/btls-util.c2
-rw-r--r--mono/btls/btls-util.h16
-rw-r--r--mono/btls/btls-x509-chain.c18
-rw-r--r--mono/btls/btls-x509-crl.c22
-rw-r--r--mono/btls/btls-x509-lookup-mono.c10
-rw-r--r--mono/btls/btls-x509-lookup.c22
-rw-r--r--mono/btls/btls-x509-name.c30
-rw-r--r--mono/btls/btls-x509-revoked.c12
-rw-r--r--mono/btls/btls-x509-store-ctx.c34
-rw-r--r--mono/btls/btls-x509-store.c22
-rw-r--r--mono/btls/btls-x509-verify-param.c38
-rw-r--r--mono/btls/btls-x509.c52
-rw-r--r--mono/metadata/Makefile.am2
-rw-r--r--mono/metadata/icall-def.h2
-rw-r--r--mono/metadata/icall.c2
-rw-r--r--runtime/Makefile.am9
45 files changed, 442 insertions, 391 deletions
diff --git a/configure.ac b/configure.ac
index c644a7c4202..aed6989394d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3930,7 +3930,10 @@ dnl **************
AC_ARG_ENABLE(btls, [ --disable-btls Disable the BoringTls provider], enable_btls=$enableval, enable_btls=$BTLS_SUPPORTED)
AC_ARG_WITH(btls_android_ndk, [ --with-btls-android-ndk Android NDK for BoringTls])
+AC_ARG_ENABLE(dynamic-btls, [ --enable-dynamic-btls Place the BTLS provider into a separate shared library/archive.], enable_dynamic_btls=$enableval, enable_dynamic_btls=no)
+
AM_CONDITIONAL(BTLS, test x$enable_btls = xyes)
+AM_CONDITIONAL(DYNAMIC_BTLS, test x$enable_dynamic_btls = xyes)
btls_android=no
if test "x$enable_btls" = "xyes"; then
@@ -3999,6 +4002,10 @@ if test "x$enable_btls" = "xyes"; then
AC_SUBST(BTLS_CMAKE_ARGS)
AC_DEFINE(HAVE_BTLS, 1, [BoringTls is supported])
+
+ if test "x$enable_dynamic_btls" = "xyes"; then
+ AC_DEFINE(HAVE_DYNAMIC_BTLS, 1, [BTLS in a shared libraty])
+ fi
else
enable_btls=no
fi
@@ -4407,6 +4414,9 @@ fi
echo "AOT_BUILD_FLAGS=$AOT_BUILD_FLAGS" >> $srcdir/$mcsdir/build/config.make
fi
+ if test "x$enable_dynamic_btls" = "xyes"; then
+ echo "DYNAMIC_BTLS=1" >> $srcdir/$mcsdir/build/config.make
+ fi
fi
)
diff --git a/data/config.in b/data/config.in
index b4b7243ecfd..be831514293 100644
--- a/data/config.in
+++ b/data/config.in
@@ -11,6 +11,7 @@
<dllmap dll="oci" target="libclntsh@libsuffix@" os="!windows"/>
<dllmap dll="db2cli" target="libdb2_36@libsuffix@" os="!windows"/>
<dllmap dll="MonoPosixHelper" target="$mono_libdir/libMonoPosixHelper@libsuffix@" os="!windows" />
+ <dllmap dll="libmono-btls-shared" target="$mono_libdir/libmono-btls-shared@libsuffix@" os="!windows" />
<dllmap dll="i:msvcrt" target="@LIBC@" os="!windows"/>
<dllmap dll="i:msvcrt.dll" target="@LIBC@" os="!windows"/>
<dllmap dll="sqlite" target="@SQLITE@" os="!windows"/>
diff --git a/mcs/class/System/Makefile b/mcs/class/System/Makefile
index fdfb7c293a4..29eace8a1ff 100644
--- a/mcs/class/System/Makefile
+++ b/mcs/class/System/Makefile
@@ -42,6 +42,10 @@ endif
LIB_MCS_FLAGS = -nowarn:618 -d:CONFIGURATION_2_0 $(REFERENCE_SOURCES_FLAGS) -unsafe $(RESOURCE_FILES:%=-resource:%)
+ifdef DYNAMIC_BTLS
+LIB_MCS_FLAGS += -d:DYNAMIC_BTLS
+endif
+
ifndef NO_THREAD_ABORT
REFERENCE_SOURCES_FLAGS += -d:MONO_FEATURE_THREAD_ABORT
TEST_MCS_FLAGS += -d:MONO_FEATURE_THREAD_ABORT
diff --git a/mcs/class/System/Mono.Btls/MonoBtlsBio.cs b/mcs/class/System/Mono.Btls/MonoBtlsBio.cs
index 1fbe47117d1..ca62c8e4a29 100644
--- a/mcs/class/System/Mono.Btls/MonoBtlsBio.cs
+++ b/mcs/class/System/Mono.Btls/MonoBtlsBio.cs
@@ -70,25 +70,25 @@ namespace Mono.Btls
return MonoBtlsBioMono.CreateStream (stream, false);
}
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_bio_read (IntPtr bio, IntPtr data, int len);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_bio_write (IntPtr bio, IntPtr data, int len);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_bio_flush (IntPtr bio);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_bio_indent (IntPtr bio, uint indent, uint max_indent);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_bio_hexdump (IntPtr bio, IntPtr data, int len, uint indent);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static void mono_btls_bio_print_errors (IntPtr bio);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static void mono_btls_bio_free (IntPtr handle);
public int Read (byte[] buffer, int offset, int size)
@@ -192,10 +192,10 @@ namespace Mono.Btls
class MonoBtlsBioMemory : MonoBtlsBio
{
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_bio_mem_new ();
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_bio_mem_get_data (IntPtr handle, out IntPtr data);
public MonoBtlsBioMemory ()
@@ -278,10 +278,10 @@ namespace Mono.Btls
delegate int BioWriteFunc (IntPtr bio, IntPtr data, int dataLength);
delegate long BioControlFunc (IntPtr bio, ControlCommand command, long arg);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_bio_mono_new ();
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static void mono_btls_bio_mono_initialize (IntPtr handle, IntPtr instance, IntPtr readFunc, IntPtr writeFunc, IntPtr controlFunc);
long Control (ControlCommand command, long arg)
diff --git a/mcs/class/System/Mono.Btls/MonoBtlsError.cs b/mcs/class/System/Mono.Btls/MonoBtlsError.cs
index 2645a926bc3..bbfee5ef897 100644
--- a/mcs/class/System/Mono.Btls/MonoBtlsError.cs
+++ b/mcs/class/System/Mono.Btls/MonoBtlsError.cs
@@ -23,7 +23,7 @@
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
-// #if SECURITY_DEP
+#if SECURITY_DEP
using System;
using System.IO;
using System.Text;
@@ -38,16 +38,16 @@ namespace Mono.Btls
{
static class MonoBtlsError
{
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (MonoBtlsObject.BTLS_DYLIB)]
extern static int mono_btls_error_peek_error ();
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (MonoBtlsObject.BTLS_DYLIB)]
extern static int mono_btls_error_get_error ();
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (MonoBtlsObject.BTLS_DYLIB)]
extern static void mono_btls_error_clear_error ();
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (MonoBtlsObject.BTLS_DYLIB)]
extern static void mono_btls_error_get_error_string_n (int error, IntPtr buf, int len);
public static int PeekError ()
@@ -80,4 +80,4 @@ namespace Mono.Btls
}
}
}
-// #endif
+#endif
diff --git a/mcs/class/System/Mono.Btls/MonoBtlsKey.cs b/mcs/class/System/Mono.Btls/MonoBtlsKey.cs
index 81280b54ece..04ccb467a95 100644
--- a/mcs/class/System/Mono.Btls/MonoBtlsKey.cs
+++ b/mcs/class/System/Mono.Btls/MonoBtlsKey.cs
@@ -48,19 +48,19 @@ namespace Mono.Btls
}
}
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static void mono_btls_key_free (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_key_up_ref (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_key_get_bytes (IntPtr handle, out IntPtr data, out int size, int include_private_bits);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_key_get_bits (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_key_is_rsa (IntPtr handle);
new internal BoringKeyHandle Handle {
diff --git a/mcs/class/System/Mono.Btls/MonoBtlsObject.cs b/mcs/class/System/Mono.Btls/MonoBtlsObject.cs
index 8f3054318fe..9731e1deb44 100644
--- a/mcs/class/System/Mono.Btls/MonoBtlsObject.cs
+++ b/mcs/class/System/Mono.Btls/MonoBtlsObject.cs
@@ -33,6 +33,12 @@ namespace Mono.Btls
{
abstract class MonoBtlsObject : IDisposable
{
+#if DYNAMIC_BTLS
+ internal const string BTLS_DYLIB = "libmono-btls-shared";
+#else
+ internal const string BTLS_DYLIB = "__Internal";
+#endif
+
internal MonoBtlsObject (MonoBtlsHandle handle)
{
this.handle = handle;
@@ -100,7 +106,7 @@ namespace Mono.Btls
CheckError (ret == 1, callerName);
}
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static void mono_btls_free (IntPtr data);
protected void FreeDataPtr (IntPtr data)
diff --git a/mcs/class/System/Mono.Btls/MonoBtlsPkcs12.cs b/mcs/class/System/Mono.Btls/MonoBtlsPkcs12.cs
index a7d42a190b4..2f97cb87474 100644
--- a/mcs/class/System/Mono.Btls/MonoBtlsPkcs12.cs
+++ b/mcs/class/System/Mono.Btls/MonoBtlsPkcs12.cs
@@ -52,28 +52,28 @@ namespace Mono.Btls
get { return (BoringPkcs12Handle)base.Handle; }
}
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static void mono_btls_pkcs12_free (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_pkcs12_new ();
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_pkcs12_get_count (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_pkcs12_get_cert (IntPtr Handle, int index);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_pkcs12_add_cert (IntPtr chain, IntPtr x509);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern unsafe static int mono_btls_pkcs12_import (IntPtr chain, void* data, int len, IntPtr password);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_pkcs12_has_private_key (IntPtr pkcs12);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_pkcs12_get_private_key (IntPtr pkcs12);
internal MonoBtlsPkcs12 ()
diff --git a/mcs/class/System/Mono.Btls/MonoBtlsSsl.cs b/mcs/class/System/Mono.Btls/MonoBtlsSsl.cs
index b24ed079ab1..d04a15a1a66 100644
--- a/mcs/class/System/Mono.Btls/MonoBtlsSsl.cs
+++ b/mcs/class/System/Mono.Btls/MonoBtlsSsl.cs
@@ -55,73 +55,73 @@ namespace Mono.Btls
}
}
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static void mono_btls_ssl_destroy (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_ssl_new (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_ssl_use_certificate (IntPtr handle, IntPtr x509);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_ssl_use_private_key (IntPtr handle, IntPtr key);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_ssl_add_chain_certificate (IntPtr handle, IntPtr x509);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_ssl_accept (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_ssl_connect (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_ssl_handshake (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static void mono_btls_ssl_close (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static void mono_btls_ssl_set_bio (IntPtr handle, IntPtr bio);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_ssl_read (IntPtr handle, IntPtr data, int len);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_ssl_write (IntPtr handle, IntPtr data, int len);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_ssl_get_error (IntPtr handle, int ret_code);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_ssl_get_version (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static void mono_btls_ssl_set_min_version (IntPtr handle, int version);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static void mono_btls_ssl_set_max_version (IntPtr handle, int version);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_ssl_get_cipher (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_ssl_get_ciphers (IntPtr handle, out IntPtr data);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_ssl_get_peer_certificate (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_ssl_set_cipher_list (IntPtr handle, IntPtr str);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static void mono_btls_ssl_print_errors_cb (IntPtr func, IntPtr ctx);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_ssl_set_verify_param (IntPtr handle, IntPtr param);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_ssl_set_server_name (IntPtr handle, IntPtr name);
static BoringSslHandle Create_internal (MonoBtlsSslCtx ctx)
diff --git a/mcs/class/System/Mono.Btls/MonoBtlsSslCtx.cs b/mcs/class/System/Mono.Btls/MonoBtlsSslCtx.cs
index 517b158b8e0..7fac0f33821 100644
--- a/mcs/class/System/Mono.Btls/MonoBtlsSslCtx.cs
+++ b/mcs/class/System/Mono.Btls/MonoBtlsSslCtx.cs
@@ -54,40 +54,40 @@ namespace Mono.Btls
get { return (BoringSslCtxHandle)base.Handle; }
}
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_ssl_ctx_new ();
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_ssl_ctx_free (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_ssl_ctx_up_ref (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static void mono_btls_ssl_ctx_initialize (IntPtr handle, IntPtr instance);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static void mono_btls_ssl_ctx_set_debug_bio (IntPtr handle, IntPtr bio);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static void mono_btls_ssl_ctx_set_cert_verify_callback (IntPtr handle, IntPtr func, int cert_required);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static void mono_btls_ssl_ctx_set_cert_select_callback (IntPtr handle, IntPtr func);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static void mono_btls_ssl_ctx_set_min_version (IntPtr handle, int version);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static void mono_btls_ssl_ctx_set_max_version (IntPtr handle, int version);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_ssl_ctx_is_cipher_supported (IntPtr handle, short value);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_ssl_ctx_set_ciphers (IntPtr handle, int count, IntPtr data, int allow_unsupported);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_ssl_ctx_set_verify_param (IntPtr handle, IntPtr param);
delegate int NativeVerifyFunc (IntPtr instance, int preverify_ok, IntPtr ctx);
diff --git a/mcs/class/System/Mono.Btls/MonoBtlsX509.cs b/mcs/class/System/Mono.Btls/MonoBtlsX509.cs
index 31ec4581052..b35c0c14225 100644
--- a/mcs/class/System/Mono.Btls/MonoBtlsX509.cs
+++ b/mcs/class/System/Mono.Btls/MonoBtlsX509.cs
@@ -67,79 +67,79 @@ namespace Mono.Btls
{
}
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_x509_up_ref (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_x509_from_data (IntPtr data, int len, MonoBtlsX509Format format);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_x509_get_subject_name (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_x509_get_issuer_name (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_get_subject_name_string (IntPtr handle, IntPtr buffer, int size);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_get_issuer_name_string (IntPtr handle, IntPtr buffer, int size);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_get_raw_data (IntPtr handle, IntPtr bio, MonoBtlsX509Format format);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_cmp (IntPtr a, IntPtr b);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_get_hash (IntPtr handle, out IntPtr data);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static long mono_btls_x509_get_not_before (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static long mono_btls_x509_get_not_after (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_get_public_key (IntPtr handle, IntPtr bio);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_get_serial_number (IntPtr handle, IntPtr data, int size, int mono_style);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_get_version (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_get_signature_algorithm (IntPtr handle, IntPtr buffer, int size);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_get_public_key_asn1 (IntPtr handle, IntPtr oid, int oid_size, out IntPtr data, out int size);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_get_public_key_parameters (IntPtr handle, IntPtr oid, int oid_size, out IntPtr data, out int size);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_x509_get_pubkey (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_get_subject_key_identifier (IntPtr handle, out IntPtr data, out int size);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_print (IntPtr handle, IntPtr bio);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static void mono_btls_x509_free (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_x509_dup (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_add_trust_object (IntPtr handle, MonoBtlsX509Purpose purpose);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_add_reject_object (IntPtr handle, MonoBtlsX509Purpose purpose);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_add_explicit_trust (IntPtr handle, MonoBtlsX509TrustKind kind);
internal MonoBtlsX509 Copy ()
diff --git a/mcs/class/System/Mono.Btls/MonoBtlsX509Chain.cs b/mcs/class/System/Mono.Btls/MonoBtlsX509Chain.cs
index 6926ae7e65b..853e3bb60c5 100644
--- a/mcs/class/System/Mono.Btls/MonoBtlsX509Chain.cs
+++ b/mcs/class/System/Mono.Btls/MonoBtlsX509Chain.cs
@@ -52,22 +52,22 @@ namespace Mono.Btls
get { return (BoringX509ChainHandle)base.Handle; }
}
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_x509_chain_new ();
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_chain_get_count (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_x509_chain_get_cert (IntPtr Handle, int index);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_chain_add_cert (IntPtr chain, IntPtr x509);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_x509_chain_up_ref (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static void mono_btls_x509_chain_free (IntPtr handle);
public MonoBtlsX509Chain ()
diff --git a/mcs/class/System/Mono.Btls/MonoBtlsX509Crl.cs b/mcs/class/System/Mono.Btls/MonoBtlsX509Crl.cs
index 9d1868337d6..004a29abc1f 100644
--- a/mcs/class/System/Mono.Btls/MonoBtlsX509Crl.cs
+++ b/mcs/class/System/Mono.Btls/MonoBtlsX509Crl.cs
@@ -67,37 +67,37 @@ namespace Mono.Btls
{
}
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_x509_crl_ref (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_x509_crl_from_data (IntPtr data, int len, MonoBtlsX509Format format);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_x509_crl_get_by_cert (IntPtr handle, IntPtr x509);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
unsafe extern static IntPtr mono_btls_x509_crl_get_by_serial (IntPtr handle, void *serial, int len);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_crl_get_revoked_count (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_x509_crl_get_revoked (IntPtr handle, int index);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static long mono_btls_x509_crl_get_last_update (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static long mono_btls_x509_crl_get_next_update (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static long mono_btls_x509_crl_get_version (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_x509_crl_get_issuer (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static void mono_btls_x509_crl_free (IntPtr handle);
public static MonoBtlsX509Crl LoadFromData (byte[] buffer, MonoBtlsX509Format format)
diff --git a/mcs/class/System/Mono.Btls/MonoBtlsX509Lookup.cs b/mcs/class/System/Mono.Btls/MonoBtlsX509Lookup.cs
index 3e8fb299768..fc24dc79d0c 100644
--- a/mcs/class/System/Mono.Btls/MonoBtlsX509Lookup.cs
+++ b/mcs/class/System/Mono.Btls/MonoBtlsX509Lookup.cs
@@ -52,38 +52,38 @@ namespace Mono.Btls
get { return (BoringX509LookupHandle)base.Handle; }
}
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_x509_lookup_new (IntPtr store, MonoBtlsX509LookupType type);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_lookup_load_file (IntPtr handle, IntPtr file, MonoBtlsX509FileType type);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_lookup_add_dir (IntPtr handle, IntPtr dir, MonoBtlsX509FileType type);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_lookup_add_mono (IntPtr handle, IntPtr monoLookup);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static void mono_btls_x509_lookup_method_mono_init (
IntPtr handle, IntPtr instance, IntPtr by_subject_func);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_lookup_init (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_lookup_shutdown (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_x509_lookup_by_subject (IntPtr handle, IntPtr name);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_x509_lookup_by_fingerprint (IntPtr handle, IntPtr bytes, int len);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static void mono_btls_x509_lookup_free (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_x509_lookup_peek_lookup (IntPtr handle);
MonoBtlsX509LookupType type;
diff --git a/mcs/class/System/Mono.Btls/MonoBtlsX509LookupMono.cs b/mcs/class/System/Mono.Btls/MonoBtlsX509LookupMono.cs
index 30b2ee3876e..73d16a3bb5d 100644
--- a/mcs/class/System/Mono.Btls/MonoBtlsX509LookupMono.cs
+++ b/mcs/class/System/Mono.Btls/MonoBtlsX509LookupMono.cs
@@ -51,14 +51,14 @@ namespace Mono.Btls
get { return (BoringX509LookupMonoHandle)base.Handle; }
}
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_x509_lookup_mono_new ();
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static void mono_btls_x509_lookup_mono_init (
IntPtr handle, IntPtr instance, IntPtr by_subject_func);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_lookup_mono_free (IntPtr handle);
delegate int BySubjectFunc (IntPtr instance, IntPtr name, out IntPtr x509_ptr);
diff --git a/mcs/class/System/Mono.Btls/MonoBtlsX509Name.cs b/mcs/class/System/Mono.Btls/MonoBtlsX509Name.cs
index 80a322caaf3..88e1bb427d7 100644
--- a/mcs/class/System/Mono.Btls/MonoBtlsX509Name.cs
+++ b/mcs/class/System/Mono.Btls/MonoBtlsX509Name.cs
@@ -52,40 +52,40 @@ namespace Mono.Btls
}
}
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_name_print_bio (IntPtr handle, IntPtr bio);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_name_print_string (IntPtr handle, IntPtr buffer, int size);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_name_get_raw_data (IntPtr handle, out IntPtr buffer, int use_canon_enc);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static long mono_btls_x509_name_hash (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static long mono_btls_x509_name_hash_old (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_name_get_entry_count (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static MonoBtlsX509NameEntryType mono_btls_x509_name_get_entry_type (IntPtr name, int index);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_name_get_entry_oid (IntPtr name, int index, IntPtr buffer, int size);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_name_get_entry_oid_data (IntPtr name, int index, out IntPtr data);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_name_get_entry_value (IntPtr name, int index, out int tag, out IntPtr str);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern unsafe static IntPtr mono_btls_x509_name_from_data (void* data, int len, int use_canon_enc);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static void mono_btls_x509_name_free (IntPtr handle);
new internal BoringX509NameHandle Handle {
diff --git a/mcs/class/System/Mono.Btls/MonoBtlsX509NameList.cs b/mcs/class/System/Mono.Btls/MonoBtlsX509NameList.cs
index cccc005f8d9..ab3a7bba62c 100644
--- a/mcs/class/System/Mono.Btls/MonoBtlsX509NameList.cs
+++ b/mcs/class/System/Mono.Btls/MonoBtlsX509NameList.cs
@@ -52,19 +52,19 @@ namespace Mono.Btls
}
}
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_x509_name_list_new ();
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_name_list_get_count (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_name_list_add (IntPtr handle, IntPtr name);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_x509_name_list_get_item (IntPtr handle, int index);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static void mono_btls_x509_name_list_free (IntPtr handle);
new internal BoringX509NameListHandle Handle {
diff --git a/mcs/class/System/Mono.Btls/MonoBtlsX509Revoked.cs b/mcs/class/System/Mono.Btls/MonoBtlsX509Revoked.cs
index 4f5d79b67b4..583a6d01517 100644
--- a/mcs/class/System/Mono.Btls/MonoBtlsX509Revoked.cs
+++ b/mcs/class/System/Mono.Btls/MonoBtlsX509Revoked.cs
@@ -67,19 +67,19 @@ namespace Mono.Btls
{
}
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_revoked_get_serial_number (IntPtr handle, IntPtr data, int size);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static long mono_btls_x509_revoked_get_revocation_date (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_revoked_get_reason (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_revoked_get_sequence (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static void mono_btls_x509_revoked_free (IntPtr handle);
public byte[] GetSerialNumber ()
diff --git a/mcs/class/System/Mono.Btls/MonoBtlsX509Store.cs b/mcs/class/System/Mono.Btls/MonoBtlsX509Store.cs
index 2e03715ce34..76db62bb9f8 100644
--- a/mcs/class/System/Mono.Btls/MonoBtlsX509Store.cs
+++ b/mcs/class/System/Mono.Btls/MonoBtlsX509Store.cs
@@ -53,28 +53,28 @@ namespace Mono.Btls
get { return (BoringX509StoreHandle)base.Handle; }
}
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_x509_store_new ();
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_x509_store_from_ctx (IntPtr ctx);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_x509_store_from_ssl_ctx (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_store_load_locations (IntPtr handle, IntPtr file, IntPtr path);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_store_set_default_paths (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_store_add_cert (IntPtr handle, IntPtr x509);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_store_get_count (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static void mono_btls_x509_store_free (IntPtr handle);
Dictionary<IntPtr,MonoBtlsX509Lookup> lookupHash;
diff --git a/mcs/class/System/Mono.Btls/MonoBtlsX509StoreCtx.cs b/mcs/class/System/Mono.Btls/MonoBtlsX509StoreCtx.cs
index 41df1298f9c..f197a66bc3d 100644
--- a/mcs/class/System/Mono.Btls/MonoBtlsX509StoreCtx.cs
+++ b/mcs/class/System/Mono.Btls/MonoBtlsX509StoreCtx.cs
@@ -66,49 +66,49 @@ namespace Mono.Btls
get { return (BoringX509StoreCtxHandle)base.Handle; }
}
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_x509_store_ctx_new ();
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_x509_store_ctx_from_ptr (IntPtr ctx);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static MonoBtlsX509Error mono_btls_x509_store_ctx_get_error (IntPtr handle, out IntPtr error_string);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_store_ctx_get_error_depth (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_x509_store_ctx_get_chain (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_store_ctx_init (IntPtr handle, IntPtr store, IntPtr chain);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_store_ctx_set_param (IntPtr handle, IntPtr param);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_store_ctx_verify_cert (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_x509_store_ctx_get_by_subject (IntPtr handle, IntPtr name);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_x509_store_ctx_get_current_cert (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_x509_store_ctx_get_current_issuer (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_x509_store_ctx_get_verify_param (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_x509_store_ctx_get_untrusted (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_x509_store_ctx_up_ref (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static void mono_btls_x509_store_ctx_free (IntPtr handle);
internal MonoBtlsX509StoreCtx ()
diff --git a/mcs/class/System/Mono.Btls/MonoBtlsX509VerifyParam.cs b/mcs/class/System/Mono.Btls/MonoBtlsX509VerifyParam.cs
index 5c012389fdc..d95610a92da 100644
--- a/mcs/class/System/Mono.Btls/MonoBtlsX509VerifyParam.cs
+++ b/mcs/class/System/Mono.Btls/MonoBtlsX509VerifyParam.cs
@@ -51,55 +51,55 @@ namespace Mono.Btls
get { return (BoringX509VerifyParamHandle)base.Handle; }
}
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_x509_verify_param_new ();
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_x509_verify_param_copy (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_x509_verify_param_lookup (IntPtr name);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_verify_param_can_modify (IntPtr param);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_verify_param_set_name (IntPtr handle, IntPtr name);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_verify_param_set_host (IntPtr handle, IntPtr name, int namelen);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_verify_param_add_host (IntPtr handle, IntPtr name, int namelen);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static ulong mono_btls_x509_verify_param_get_flags (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_verify_param_set_flags (IntPtr handle, ulong flags);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static MonoBtlsX509VerifyFlags mono_btls_x509_verify_param_get_mono_flags (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_verify_param_set_mono_flags (IntPtr handle, MonoBtlsX509VerifyFlags flags);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_verify_param_set_purpose (IntPtr handle, MonoBtlsX509Purpose purpose);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_verify_param_get_depth (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_verify_param_set_depth (IntPtr handle, int depth);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static int mono_btls_x509_verify_param_set_time (IntPtr handle, long time);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static IntPtr mono_btls_x509_verify_param_get_peername (IntPtr handle);
- [MethodImpl (MethodImplOptions.InternalCall)]
+ [DllImport (BTLS_DYLIB)]
extern static void mono_btls_x509_verify_param_free (IntPtr handle);
internal MonoBtlsX509VerifyParam ()
diff --git a/mono/btls/CMakeLists.txt b/mono/btls/CMakeLists.txt
index aba7440e505..0e01496e9fa 100644
--- a/mono/btls/CMakeLists.txt
+++ b/mono/btls/CMakeLists.txt
@@ -79,10 +79,12 @@ set (
${BORINGSSL_OBJECTS}
)
-if (BUILD_SHARED_LIBS)
+if (BUILD_DYNAMIC_BTLS)
+ add_library (mono-btls-shared SHARED ${MONO_BTLS_SOURCES})
+elseif (BUILD_SHARED_LIBS)
add_library (mono-btls-shared SHARED ${MONO_BTLS_SOURCES})
set_target_properties (mono-btls-shared PROPERTIES RULE_LAUNCH_LINK
- "${PROJECT_SOURCE_DIR}/create-object-library.sh ${CMAKE_BINARY_DIR} mono-btls-shared.txt mono-btls-shared-lo.txt libmono-btls-shared.a shared ${CMAKE_AR} ${CMAKE_RANLIB} <OBJECTS> --"
+ "${PROJECT_SOURCE_DIR}/create-object-library.sh ${CMAKE_BINARY_DIR} mono-btls-shared.txt mono-btls-shared-lo.txt libmono-btls-shared.a shared ${CMAKE_AR} ${CMAKE_RANLIB} <OBJECTS> --"
)
else ()
add_library (mono-btls-static STATIC ${MONO_BTLS_SOURCES})
diff --git a/mono/btls/Makefile.am b/mono/btls/Makefile.am
index 0bb00bf184e..25d742b1097 100644
--- a/mono/btls/Makefile.am
+++ b/mono/btls/Makefile.am
@@ -46,9 +46,15 @@ CMAKE_ARGS = -D CMAKE_INSTALL_PREFIX:PATH=$(prefix) -D BTLS_ROOT:PATH=$(BTLS_ROO
all-local: $(BTLS_STATIC_LIST) $(BTLS_SHARED_LIST)
+if DYNAMIC_BTLS
+build-shared/Makefile:
+ -mkdir -p build-shared
+ (cd build-shared && $(CMAKE) $(CMAKE_ARGS) $(BTLS_CMAKE_ARGS) -DBUILD_DYNAMIC_BTLS=1 $(abs_top_srcdir)/mono/btls)
+else
build-shared/Makefile:
-mkdir -p build-shared
(cd build-shared && $(CMAKE) $(CMAKE_ARGS) $(BTLS_CMAKE_ARGS) -DBUILD_SHARED_LIBS=1 $(abs_top_srcdir)/mono/btls)
+endif
build-static/Makefile:
-mkdir -p build-static
diff --git a/mono/btls/btls-bio.c b/mono/btls/btls-bio.c
index 5af2d86ecd6..ea8fda67dc3 100644
--- a/mono/btls/btls-bio.c
+++ b/mono/btls/btls-bio.c
@@ -114,7 +114,7 @@ static const BIO_METHOD mono_method = {
NULL, NULL, mono_ctrl, mono_new, mono_free, NULL
};
-BIO *
+MONO_API BIO *
mono_btls_bio_mono_new (void)
{
BIO *bio;
@@ -136,7 +136,7 @@ mono_btls_bio_mono_new (void)
return bio;
}
-void
+MONO_API void
mono_btls_bio_mono_initialize (BIO *bio, const void *instance,
MonoBtlsReadFunc read_func, MonoBtlsWriteFunc write_func,
MonoBtlsControlFunc control_func)
@@ -151,55 +151,55 @@ mono_btls_bio_mono_initialize (BIO *bio, const void *instance,
bio->init = 1;
}
-int
+MONO_API int
mono_btls_bio_read (BIO *bio, void *data, int len)
{
return BIO_read (bio, data, len);
}
-int
+MONO_API int
mono_btls_bio_write (BIO *bio, const void *data, int len)
{
return BIO_write (bio, data, len);
}
-int
+MONO_API int
mono_btls_bio_flush (BIO *bio)
{
return BIO_flush (bio);
}
-int
+MONO_API int
mono_btls_bio_indent (BIO *bio, unsigned indent, unsigned max_indent)
{
return BIO_indent (bio, indent, max_indent);
}
-int
+MONO_API int
mono_btls_bio_hexdump (BIO *bio, const uint8_t *data, int len, unsigned indent)
{
return BIO_hexdump (bio, data, len, indent);
}
-void
+MONO_API void
mono_btls_bio_print_errors (BIO *bio)
{
BIO_print_errors (bio);
}
-void
+MONO_API void
mono_btls_bio_free (BIO *bio)
{
BIO_free (bio);
}
-BIO *
+MONO_API BIO *
mono_btls_bio_mem_new (void)
{
return BIO_new (BIO_s_mem ());
}
-int
+MONO_API int
mono_btls_bio_mem_get_data (BIO *bio, void **data)
{
return (int)BIO_get_mem_data (bio, (char**)data);
diff --git a/mono/btls/btls-error.c b/mono/btls/btls-error.c
index 8ed950c7e66..75252162a2a 100644
--- a/mono/btls/btls-error.c
+++ b/mono/btls/btls-error.c
@@ -7,27 +7,28 @@
//
#include <btls-error.h>
+#include <btls-util.h>
#include <assert.h>
-int
+MONO_API int
mono_btls_error_peek_error (void)
{
return ERR_peek_error ();
}
-int
+MONO_API int
mono_btls_error_get_error (void)
{
return ERR_get_error ();
}
-void
+MONO_API void
mono_btls_error_clear_error (void)
{
ERR_clear_error ();
}
-void
+MONO_API void
mono_btls_error_get_error_string_n (int error, char *buf, int len)
{
ERR_error_string_n (error, buf, len);
diff --git a/mono/btls/btls-key.c b/mono/btls/btls-key.c
index 756f9c75649..65909a527d9 100644
--- a/mono/btls/btls-key.c
+++ b/mono/btls/btls-key.c
@@ -8,31 +8,31 @@
#include <btls-key.h>
-void
+MONO_API void
mono_btls_key_free (EVP_PKEY *pkey)
{
EVP_PKEY_free (pkey);
}
-EVP_PKEY *
+MONO_API EVP_PKEY *
mono_btls_key_up_ref (EVP_PKEY *pkey)
{
return EVP_PKEY_up_ref (pkey);
}
-int
+MONO_API int
mono_btls_key_get_bits (EVP_PKEY *pkey)
{
return EVP_PKEY_bits (pkey);
}
-int
+MONO_API int
mono_btls_key_is_rsa (EVP_PKEY *pkey)
{
return pkey->type == EVP_PKEY_RSA;
}
-int
+MONO_API int
mono_btls_key_get_bytes (EVP_PKEY *pkey, uint8_t **buffer, int *size, int include_private_bits)
{
size_t len;
diff --git a/mono/btls/btls-pkcs12.c b/mono/btls/btls-pkcs12.c
index d037ddb8910..6e1a79e60bd 100644
--- a/mono/btls/btls-pkcs12.c
+++ b/mono/btls/btls-pkcs12.c
@@ -15,7 +15,7 @@ struct MonoBtlsPkcs12 {
CRYPTO_refcount_t references;
};
-MonoBtlsPkcs12 *
+MONO_API MonoBtlsPkcs12 *
mono_btls_pkcs12_new (void)
{
MonoBtlsPkcs12 *pkcs12 = (MonoBtlsPkcs12 *)OPENSSL_malloc (sizeof (MonoBtlsPkcs12));
@@ -28,13 +28,13 @@ mono_btls_pkcs12_new (void)
return pkcs12;
}
-int
+MONO_API int
mono_btls_pkcs12_get_count (MonoBtlsPkcs12 *pkcs12)
{
return (int)sk_X509_num (pkcs12->certs);
}
-X509 *
+MONO_API X509 *
mono_btls_pkcs12_get_cert (MonoBtlsPkcs12 *pkcs12, int index)
{
X509 *cert;
@@ -47,13 +47,13 @@ mono_btls_pkcs12_get_cert (MonoBtlsPkcs12 *pkcs12, int index)
return cert;
}
-STACK_OF(X509) *
+MONO_API STACK_OF(X509) *
mono_btls_pkcs12_get_certs (MonoBtlsPkcs12 *pkcs12)
{
return pkcs12->certs;
}
-int
+MONO_API int
mono_btls_pkcs12_free (MonoBtlsPkcs12 *pkcs12)
{
if (!CRYPTO_refcount_dec_and_test_zero (&pkcs12->references))
@@ -64,21 +64,21 @@ mono_btls_pkcs12_free (MonoBtlsPkcs12 *pkcs12)
return 1;
}
-MonoBtlsPkcs12 *
+MONO_API MonoBtlsPkcs12 *
mono_btls_pkcs12_up_ref (MonoBtlsPkcs12 *pkcs12)
{
CRYPTO_refcount_inc (&pkcs12->references);
return pkcs12;
}
-void
+MONO_API void
mono_btls_pkcs12_add_cert (MonoBtlsPkcs12 *pkcs12, X509 *x509)
{
X509_up_ref (x509);
sk_X509_push (pkcs12->certs, x509);
}
-int
+MONO_API int
mono_btls_pkcs12_import (MonoBtlsPkcs12 *pkcs12, const void *data, int len, const void *password)
{
CBS cbs;
@@ -86,13 +86,13 @@ mono_btls_pkcs12_import (MonoBtlsPkcs12 *pkcs12, const void *data, int len, cons
return PKCS12_get_key_and_certs (&pkcs12->private_key, pkcs12->certs, &cbs, password);
}
-int
+MONO_API int
mono_btls_pkcs12_has_private_key (MonoBtlsPkcs12 *pkcs12)
{
return pkcs12->private_key != NULL;
}
-EVP_PKEY *
+MONO_API EVP_PKEY *
mono_btls_pkcs12_get_private_key (MonoBtlsPkcs12 *pkcs12)
{
if (!pkcs12->private_key)
diff --git a/mono/btls/btls-ssl-ctx.c b/mono/btls/btls-ssl-ctx.c
index ddbb02f5517..1f9d43c536e 100644
--- a/mono/btls/btls-ssl-ctx.c
+++ b/mono/btls/btls-ssl-ctx.c
@@ -31,13 +31,13 @@ mono_btls_ssl_ctx_debug_printf (ptr, "%s:%d:%s(): " fmt, __FILE__, __LINE__, \
void ssl_cipher_preference_list_free (struct ssl_cipher_preference_list_st *cipher_list);
-int
+MONO_API int
mono_btls_ssl_ctx_is_debug_enabled (MonoBtlsSslCtx *ctx)
{
return ctx->debug_bio != NULL;
}
-int
+MONO_API int
mono_btls_ssl_ctx_debug_printf (MonoBtlsSslCtx *ctx, const char *format, ...)
{
va_list args;
@@ -52,7 +52,7 @@ mono_btls_ssl_ctx_debug_printf (MonoBtlsSslCtx *ctx, const char *format, ...)
return ret;
}
-MonoBtlsSslCtx *
+MONO_API MonoBtlsSslCtx *
mono_btls_ssl_ctx_new (void)
{
MonoBtlsSslCtx *ctx;
@@ -67,14 +67,14 @@ mono_btls_ssl_ctx_new (void)
return ctx;
}
-MonoBtlsSslCtx *
+MONO_API MonoBtlsSslCtx *
mono_btls_ssl_ctx_up_ref (MonoBtlsSslCtx *ctx)
{
CRYPTO_refcount_inc (&ctx->references);
return ctx;
}
-int
+MONO_API int
mono_btls_ssl_ctx_free (MonoBtlsSslCtx *ctx)
{
if (!CRYPTO_refcount_dec_and_test_zero (&ctx->references))
@@ -85,13 +85,13 @@ mono_btls_ssl_ctx_free (MonoBtlsSslCtx *ctx)
return 1;
}
-SSL_CTX *
+MONO_API SSL_CTX *
mono_btls_ssl_ctx_get_ctx (MonoBtlsSslCtx *ctx)
{
return ctx->ctx;
}
-void
+MONO_API void
mono_btls_ssl_ctx_set_debug_bio (MonoBtlsSslCtx *ctx, BIO *debug_bio)
{
if (debug_bio)
@@ -100,7 +100,7 @@ mono_btls_ssl_ctx_set_debug_bio (MonoBtlsSslCtx *ctx, BIO *debug_bio)
ctx->debug_bio = NULL;
}
-void
+MONO_API void
mono_btls_ssl_ctx_initialize (MonoBtlsSslCtx *ctx, void *instance)
{
ctx->instance = instance;
@@ -122,7 +122,7 @@ cert_verify_callback (X509_STORE_CTX *storeCtx, void *arg)
return ret;
}
-void
+MONO_API void
mono_btls_ssl_ctx_set_cert_verify_callback (MonoBtlsSslCtx *ptr, MonoBtlsVerifyFunc func, int cert_required)
{
int mode;
@@ -151,32 +151,32 @@ cert_select_callback (SSL *ssl, void *arg)
return ret;
}
-void
+MONO_API void
mono_btls_ssl_ctx_set_cert_select_callback (MonoBtlsSslCtx *ptr, MonoBtlsSelectFunc func)
{
ptr->select_func = func;
SSL_CTX_set_cert_cb (ptr->ctx, cert_select_callback, ptr);
}
-X509_STORE *
+MONO_API X509_STORE *
mono_btls_ssl_ctx_peek_store (MonoBtlsSslCtx *ctx)
{
return SSL_CTX_get_cert_store (ctx->ctx);
}
-void
+MONO_API void
mono_btls_ssl_ctx_set_min_version (MonoBtlsSslCtx *ctx, int version)
{
SSL_CTX_set_min_version (ctx->ctx, version);
}
-void
+MONO_API void
mono_btls_ssl_ctx_set_max_version (MonoBtlsSslCtx *ctx, int version)
{
SSL_CTX_set_max_version (ctx->ctx, version);
}
-int
+MONO_API int
mono_btls_ssl_ctx_is_cipher_supported (MonoBtlsSslCtx *ctx, uint16_t value)
{
const SSL_CIPHER *cipher;
@@ -185,7 +185,7 @@ mono_btls_ssl_ctx_is_cipher_supported (MonoBtlsSslCtx *ctx, uint16_t value)
return cipher != NULL;
}
-int
+MONO_API int
mono_btls_ssl_ctx_set_ciphers (MonoBtlsSslCtx *ctx, int count, const uint16_t *data,
int allow_unsupported)
{
@@ -247,7 +247,7 @@ err:
return 0;
}
-int
+MONO_API int
mono_btls_ssl_ctx_set_verify_param (MonoBtlsSslCtx *ctx, const MonoBtlsX509VerifyParam *param)
{
return SSL_CTX_set1_param (ctx->ctx, mono_btls_x509_verify_param_peek_param (param));
diff --git a/mono/btls/btls-ssl.c b/mono/btls/btls-ssl.c
index fa3e53d4cdf..f18d6c19247 100644
--- a/mono/btls/btls-ssl.c
+++ b/mono/btls/btls-ssl.c
@@ -26,7 +26,7 @@ __func__, __VA_ARGS__); } while (0)
STACK_OF(SSL_CIPHER) *ssl_bytes_to_cipher_list (SSL *s, const CBS *cbs);
-MonoBtlsSsl *
+MONO_API MonoBtlsSsl *
mono_btls_ssl_new (MonoBtlsSslCtx *ctx)
{
MonoBtlsSsl *ptr;
@@ -41,7 +41,7 @@ mono_btls_ssl_new (MonoBtlsSslCtx *ctx)
return ptr;
}
-void
+MONO_API void
mono_btls_ssl_destroy (MonoBtlsSsl *ptr)
{
mono_btls_ssl_close (ptr);
@@ -56,92 +56,92 @@ mono_btls_ssl_destroy (MonoBtlsSsl *ptr)
free (ptr);
}
-void
+MONO_API void
mono_btls_ssl_close (MonoBtlsSsl *ptr)
{
;
}
-void
+MONO_API void
mono_btls_ssl_set_bio (MonoBtlsSsl *ptr, BIO *bio)
{
BIO_up_ref (bio);
SSL_set_bio (ptr->ssl, bio, bio);
}
-void
+MONO_API void
mono_btls_ssl_print_errors_cb (ERR_print_errors_callback_t callback, void *ctx)
{
ERR_print_errors_cb (callback, ctx);
}
-int
+MONO_API int
mono_btls_ssl_use_certificate (MonoBtlsSsl *ptr, X509 *x509)
{
return SSL_use_certificate (ptr->ssl, x509);
}
-int
+MONO_API int
mono_btls_ssl_use_private_key (MonoBtlsSsl *ptr, EVP_PKEY *key)
{
return SSL_use_PrivateKey (ptr->ssl, key);
}
-int
+MONO_API int
mono_btls_ssl_add_chain_certificate (MonoBtlsSsl *ptr, X509 *x509)
{
return SSL_add1_chain_cert (ptr->ssl, x509);
}
-int
+MONO_API int
mono_btls_ssl_accept (MonoBtlsSsl *ptr)
{
return SSL_accept (ptr->ssl);
}
-int
+MONO_API int
mono_btls_ssl_connect (MonoBtlsSsl *ptr)
{
return SSL_connect (ptr->ssl);
}
-int
+MONO_API int
mono_btls_ssl_handshake (MonoBtlsSsl *ptr)
{
return SSL_do_handshake (ptr->ssl);
}
-int
+MONO_API int
mono_btls_ssl_read (MonoBtlsSsl *ptr, void *buf, int count)
{
return SSL_read (ptr->ssl, buf, count);
}
-int
+MONO_API int
mono_btls_ssl_write (MonoBtlsSsl *ptr, void *buf, int count)
{
return SSL_write (ptr->ssl, buf, count);
}
-int
+MONO_API int
mono_btls_ssl_get_version (MonoBtlsSsl *ptr)
{
return SSL_version (ptr->ssl);
}
-void
+MONO_API void
mono_btls_ssl_set_min_version (MonoBtlsSsl *ptr, int version)
{
SSL_set_min_version (ptr->ssl, version);
}
-void
+MONO_API void
mono_btls_ssl_set_max_version (MonoBtlsSsl *ptr, int version)
{
SSL_set_max_version (ptr->ssl, version);
}
-int
+MONO_API int
mono_btls_ssl_get_cipher (MonoBtlsSsl *ptr)
{
const SSL_CIPHER *cipher;
@@ -152,13 +152,13 @@ mono_btls_ssl_get_cipher (MonoBtlsSsl *ptr)
return (uint16_t)SSL_CIPHER_get_id (cipher);
}
-int
+MONO_API int
mono_btls_ssl_set_cipher_list (MonoBtlsSsl *ptr, const char *str)
{
return SSL_set_cipher_list(ptr->ssl, str);
}
-int
+MONO_API int
mono_btls_ssl_get_ciphers (MonoBtlsSsl *ptr, uint16_t **data)
{
STACK_OF(SSL_CIPHER) *ciphers;
@@ -184,25 +184,25 @@ mono_btls_ssl_get_ciphers (MonoBtlsSsl *ptr, uint16_t **data)
return count;
}
-X509 *
+MONO_API X509 *
mono_btls_ssl_get_peer_certificate (MonoBtlsSsl *ptr)
{
return SSL_get_peer_certificate (ptr->ssl);
}
-int
+MONO_API int
mono_btls_ssl_get_error (MonoBtlsSsl *ptr, int ret_code)
{
return SSL_get_error (ptr->ssl, ret_code);
}
-int
+MONO_API int
mono_btls_ssl_set_verify_param (MonoBtlsSsl *ptr, const MonoBtlsX509VerifyParam *param)
{
return SSL_set1_param (ptr->ssl, mono_btls_x509_verify_param_peek_param (param));
}
-int
+MONO_API int
mono_btls_ssl_set_server_name (MonoBtlsSsl *ptr, const char *name)
{
return SSL_set_tlsext_host_name (ptr->ssl, name);
diff --git a/mono/btls/btls-util.c b/mono/btls/btls-util.c
index d28763a0fd1..824b101f34c 100644
--- a/mono/btls/btls-util.c
+++ b/mono/btls/btls-util.c
@@ -17,7 +17,7 @@ extern time_t timegm (struct tm* const t);
extern int asn1_generalizedtime_to_tm (struct tm *tm, const ASN1_GENERALIZEDTIME *d);
-void
+MONO_API void
mono_btls_free (void *data)
{
OPENSSL_free (data);
diff --git a/mono/btls/btls-util.h b/mono/btls/btls-util.h
index a77bfcd61d0..525e6199750 100644
--- a/mono/btls/btls-util.h
+++ b/mono/btls/btls-util.h
@@ -14,6 +14,22 @@
#include <string.h>
#include <openssl/ssl.h>
+#ifndef MONO_API
+#if defined(_MSC_VER)
+
+#define MONO_API __declspec(dllexport)
+
+#else
+
+#ifdef __GNUC__
+#define MONO_API __attribute__ ((visibility ("default")))
+#else
+#define MONO_API
+#endif
+
+#endif
+#endif
+
void
mono_btls_free (void *data);
diff --git a/mono/btls/btls-x509-chain.c b/mono/btls/btls-x509-chain.c
index 0584791dedf..5b7082ddb13 100644
--- a/mono/btls/btls-x509-chain.c
+++ b/mono/btls/btls-x509-chain.c
@@ -13,7 +13,7 @@ struct MonoBtlsX509Chain {
CRYPTO_refcount_t references;
};
-MonoBtlsX509Chain *
+MONO_API MonoBtlsX509Chain *
mono_btls_x509_chain_new (void)
{
MonoBtlsX509Chain *chain = (MonoBtlsX509Chain *)OPENSSL_malloc (sizeof (MonoBtlsX509Chain));
@@ -26,7 +26,7 @@ mono_btls_x509_chain_new (void)
return chain;
}
-MonoBtlsX509Chain *
+MONO_API MonoBtlsX509Chain *
mono_btls_x509_chain_from_certs (STACK_OF(X509) *certs)
{
MonoBtlsX509Chain *chain = (MonoBtlsX509Chain *)OPENSSL_malloc (sizeof (MonoBtlsX509Chain));
@@ -39,19 +39,19 @@ mono_btls_x509_chain_from_certs (STACK_OF(X509) *certs)
return chain;
}
-STACK_OF(X509) *
+MONO_API STACK_OF(X509) *
mono_btls_x509_chain_peek_certs (MonoBtlsX509Chain *chain)
{
return chain->certs;
}
-int
+MONO_API int
mono_btls_x509_chain_get_count (MonoBtlsX509Chain *chain)
{
return (int)sk_X509_num(chain->certs);
}
-X509 *
+MONO_API X509 *
mono_btls_x509_chain_get_cert (MonoBtlsX509Chain *chain, int index)
{
X509 *cert;
@@ -64,13 +64,13 @@ mono_btls_x509_chain_get_cert (MonoBtlsX509Chain *chain, int index)
return cert;
}
-STACK_OF(X509) *
+MONO_API STACK_OF(X509) *
mono_btls_x509_chain_get_certs (MonoBtlsX509Chain *chain)
{
return chain->certs;
}
-int
+MONO_API int
mono_btls_x509_chain_free (MonoBtlsX509Chain *chain)
{
if (!CRYPTO_refcount_dec_and_test_zero(&chain->references))
@@ -81,14 +81,14 @@ mono_btls_x509_chain_free (MonoBtlsX509Chain *chain)
return 1;
}
-MonoBtlsX509Chain *
+MONO_API MonoBtlsX509Chain *
mono_btls_x509_chain_up_ref (MonoBtlsX509Chain *chain)
{
CRYPTO_refcount_inc(&chain->references);
return chain;
}
-void
+MONO_API void
mono_btls_x509_chain_add_cert (MonoBtlsX509Chain *chain, X509 *x509)
{
X509_up_ref(x509);
diff --git a/mono/btls/btls-x509-crl.c b/mono/btls/btls-x509-crl.c
index ccd3e287314..b4e861234ca 100644
--- a/mono/btls/btls-x509-crl.c
+++ b/mono/btls/btls-x509-crl.c
@@ -14,7 +14,7 @@ struct MonoBtlsX509Crl {
CRYPTO_refcount_t references;
};
-MonoBtlsX509Crl *
+MONO_API MonoBtlsX509Crl *
mono_btls_x509_crl_from_data (const void *buf, int len, MonoBtlsX509Format format)
{
MonoBtlsX509Crl *crl;
@@ -43,14 +43,14 @@ mono_btls_x509_crl_from_data (const void *buf, int len, MonoBtlsX509Format forma
return crl;
}
-MonoBtlsX509Crl *
+MONO_API MonoBtlsX509Crl *
mono_btls_x509_crl_ref (MonoBtlsX509Crl *crl)
{
CRYPTO_refcount_inc (&crl->references);
return crl;
}
-int
+MONO_API int
mono_btls_x509_crl_free (MonoBtlsX509Crl *crl)
{
if (!CRYPTO_refcount_dec_and_test_zero (&crl->references))
@@ -61,7 +61,7 @@ mono_btls_x509_crl_free (MonoBtlsX509Crl *crl)
return 1;
}
-MonoBtlsX509Revoked *
+MONO_API MonoBtlsX509Revoked *
mono_btls_x509_crl_get_by_cert (MonoBtlsX509Crl *crl, X509 *x509)
{
X509_REVOKED *revoked;
@@ -77,7 +77,7 @@ mono_btls_x509_crl_get_by_cert (MonoBtlsX509Crl *crl, X509 *x509)
return mono_btls_x509_revoked_new (crl, revoked);
}
-MonoBtlsX509Revoked *
+MONO_API MonoBtlsX509Revoked *
mono_btls_x509_crl_get_by_serial (MonoBtlsX509Crl *crl, void *serial, int len)
{
ASN1_INTEGER si;
@@ -98,7 +98,7 @@ mono_btls_x509_crl_get_by_serial (MonoBtlsX509Crl *crl, void *serial, int len)
return mono_btls_x509_revoked_new (crl, revoked);
}
-int
+MONO_API int
mono_btls_x509_crl_get_revoked_count (MonoBtlsX509Crl *crl)
{
STACK_OF(X509_REVOKED) *stack;
@@ -107,7 +107,7 @@ mono_btls_x509_crl_get_revoked_count (MonoBtlsX509Crl *crl)
return (int)sk_X509_REVOKED_num (stack);
}
-MonoBtlsX509Revoked *
+MONO_API MonoBtlsX509Revoked *
mono_btls_x509_crl_get_revoked (MonoBtlsX509Crl *crl, int index)
{
STACK_OF(X509_REVOKED) *stack;
@@ -124,25 +124,25 @@ mono_btls_x509_crl_get_revoked (MonoBtlsX509Crl *crl, int index)
return mono_btls_x509_revoked_new (crl, revoked);
}
-long
+MONO_API long
mono_btls_x509_crl_get_last_update (MonoBtlsX509Crl *crl)
{
return mono_btls_util_asn1_time_to_ticks (X509_CRL_get_lastUpdate (crl->crl));
}
-long
+MONO_API long
mono_btls_x509_crl_get_next_update (MonoBtlsX509Crl *crl)
{
return mono_btls_util_asn1_time_to_ticks (X509_CRL_get_nextUpdate (crl->crl));
}
-long
+MONO_API long
mono_btls_x509_crl_get_version (MonoBtlsX509Crl *crl)
{
return X509_CRL_get_version (crl->crl);
}
-MonoBtlsX509Name *
+MONO_API MonoBtlsX509Name *
mono_btls_x509_crl_get_issuer (MonoBtlsX509Crl *crl)
{
return mono_btls_x509_name_copy (X509_CRL_get_issuer (crl->crl));
diff --git a/mono/btls/btls-x509-lookup-mono.c b/mono/btls/btls-x509-lookup-mono.c
index cce73689469..1d8f7d3ee51 100644
--- a/mono/btls/btls-x509-lookup-mono.c
+++ b/mono/btls/btls-x509-lookup-mono.c
@@ -29,7 +29,7 @@ struct MonoBtlsX509LookupMono {
MonoLookup *lookup;
};
-MonoBtlsX509LookupMono *
+MONO_API MonoBtlsX509LookupMono *
mono_btls_x509_lookup_mono_new (void)
{
MonoBtlsX509LookupMono *mono;
@@ -42,7 +42,7 @@ mono_btls_x509_lookup_mono_new (void)
return mono;
}
-void
+MONO_API void
mono_btls_x509_lookup_mono_init (MonoBtlsX509LookupMono *mono, const void *instance,
MonoBtlsX509LookupMono_BySubject by_subject_func)
{
@@ -85,7 +85,7 @@ mono_lookup_uninstall (MonoBtlsX509LookupMono *mono)
return 0;
}
-int
+MONO_API int
mono_btls_x509_lookup_mono_free (MonoBtlsX509LookupMono *mono)
{
mono->instance = NULL;
@@ -211,13 +211,13 @@ static X509_LOOKUP_METHOD mono_lookup_method = {
NULL, /* get_by_alias */
};
-X509_LOOKUP_METHOD *
+MONO_API X509_LOOKUP_METHOD *
mono_btls_x509_lookup_mono_method (void)
{
return &mono_lookup_method;
}
-int
+MONO_API int
mono_btls_x509_lookup_add_mono (MonoBtlsX509Lookup *lookup, MonoBtlsX509LookupMono *mono)
{
if (mono_btls_x509_lookup_get_type (lookup) != MONO_BTLS_X509_LOOKUP_TYPE_MONO)
diff --git a/mono/btls/btls-x509-lookup.c b/mono/btls/btls-x509-lookup.c
index 1cfc1741a36..567d19c237a 100644
--- a/mono/btls/btls-x509-lookup.c
+++ b/mono/btls/btls-x509-lookup.c
@@ -32,7 +32,7 @@ get_lookup_method (MonoBtlsX509LookupType type)
}
}
-MonoBtlsX509Lookup *
+MONO_API MonoBtlsX509Lookup *
mono_btls_x509_lookup_new (MonoBtlsX509Store *store, MonoBtlsX509LookupType type)
{
MonoBtlsX509Lookup *lookup;
@@ -61,26 +61,26 @@ mono_btls_x509_lookup_new (MonoBtlsX509Store *store, MonoBtlsX509LookupType type
return lookup;
}
-int
+MONO_API int
mono_btls_x509_lookup_load_file (MonoBtlsX509Lookup *lookup, const char *file, MonoBtlsX509FileType type)
{
return X509_LOOKUP_load_file (lookup->lookup, file, type);
}
-int
+MONO_API int
mono_btls_x509_lookup_add_dir (MonoBtlsX509Lookup *lookup, const char *dir, MonoBtlsX509FileType type)
{
return X509_LOOKUP_add_dir (lookup->lookup, dir, type);
}
-MonoBtlsX509Lookup *
+MONO_API MonoBtlsX509Lookup *
mono_btls_x509_lookup_up_ref (MonoBtlsX509Lookup *lookup)
{
CRYPTO_refcount_inc (&lookup->references);
return lookup;
}
-int
+MONO_API int
mono_btls_x509_lookup_free (MonoBtlsX509Lookup *lookup)
{
if (!CRYPTO_refcount_dec_and_test_zero (&lookup->references))
@@ -101,31 +101,31 @@ mono_btls_x509_lookup_free (MonoBtlsX509Lookup *lookup)
return 1;
}
-int
+MONO_API int
mono_btls_x509_lookup_init (MonoBtlsX509Lookup *lookup)
{
return X509_LOOKUP_init (lookup->lookup);
}
-int
+MONO_API int
mono_btls_x509_lookup_shutdown (MonoBtlsX509Lookup *lookup)
{
return X509_LOOKUP_shutdown (lookup->lookup);
}
-MonoBtlsX509LookupType
+MONO_API MonoBtlsX509LookupType
mono_btls_x509_lookup_get_type (MonoBtlsX509Lookup *lookup)
{
return lookup->type;
}
-X509_LOOKUP *
+MONO_API X509_LOOKUP *
mono_btls_x509_lookup_peek_lookup (MonoBtlsX509Lookup *lookup)
{
return lookup->lookup;
}
-X509 *
+MONO_API X509 *
mono_btls_x509_lookup_by_subject (MonoBtlsX509Lookup *lookup, MonoBtlsX509Name *name)
{
X509_OBJECT obj;
@@ -142,7 +142,7 @@ mono_btls_x509_lookup_by_subject (MonoBtlsX509Lookup *lookup, MonoBtlsX509Name *
return x509;
}
-X509 *
+MONO_API X509 *
mono_btls_x509_lookup_by_fingerprint (MonoBtlsX509Lookup *lookup, unsigned char *bytes, int len)
{
X509_OBJECT obj;
diff --git a/mono/btls/btls-x509-name.c b/mono/btls/btls-x509-name.c
index 7a40f75b53b..782743f8752 100644
--- a/mono/btls/btls-x509-name.c
+++ b/mono/btls/btls-x509-name.c
@@ -13,7 +13,7 @@ struct MonoBtlsX509Name {
X509_NAME *name;
};
-MonoBtlsX509Name *
+MONO_API MonoBtlsX509Name *
mono_btls_x509_name_from_name (X509_NAME *xn)
{
MonoBtlsX509Name *name;
@@ -27,7 +27,7 @@ mono_btls_x509_name_from_name (X509_NAME *xn)
return name;
}
-MonoBtlsX509Name *
+MONO_API MonoBtlsX509Name *
mono_btls_x509_name_copy (X509_NAME *xn)
{
MonoBtlsX509Name *name;
@@ -42,7 +42,7 @@ mono_btls_x509_name_copy (X509_NAME *xn)
return name;
}
-void
+MONO_API void
mono_btls_x509_name_free (MonoBtlsX509Name *name)
{
if (name->owns) {
@@ -54,19 +54,19 @@ mono_btls_x509_name_free (MonoBtlsX509Name *name)
OPENSSL_free(name);
}
-X509_NAME *
+MONO_API X509_NAME *
mono_btls_x509_name_peek_name (MonoBtlsX509Name *name)
{
return name->name;
}
-int
+MONO_API int
mono_btls_x509_name_print_bio (MonoBtlsX509Name *name, BIO *bio)
{
return X509_NAME_print_ex (bio, name->name, 0, ASN1_STRFLGS_RFC2253 | XN_FLAG_FN_SN | XN_FLAG_SEP_CPLUS_SPC | XN_FLAG_DN_REV);
}
-int
+MONO_API int
mono_btls_x509_name_get_raw_data (MonoBtlsX509Name *name, void **buffer, int use_canon_enc)
{
int len;
@@ -91,7 +91,7 @@ mono_btls_x509_name_get_raw_data (MonoBtlsX509Name *name, void **buffer, int use
return len;
}
-MonoBtlsX509Name *
+MONO_API MonoBtlsX509Name *
mono_btls_x509_name_from_data (const void *data, int len, int use_canon_enc)
{
MonoBtlsX509Name *name;
@@ -146,26 +146,26 @@ mono_btls_x509_name_from_data (const void *data, int len, int use_canon_enc)
return name;
}
-int
+MONO_API int
mono_btls_x509_name_print_string (MonoBtlsX509Name *name, char *buffer, int size)
{
*buffer = 0;
return X509_NAME_oneline (name->name, buffer, size) != NULL;
}
-long
+MONO_API long
mono_btls_x509_name_hash (MonoBtlsX509Name *name)
{
return X509_NAME_hash (name->name);
}
-long
+MONO_API long
mono_btls_x509_name_hash_old (MonoBtlsX509Name *name)
{
return X509_NAME_hash_old (name->name);
}
-int
+MONO_API int
mono_btls_x509_name_get_entry_count (MonoBtlsX509Name *name)
{
return X509_NAME_entry_count (name->name);
@@ -210,7 +210,7 @@ nid2mono (int nid)
}
}
-MonoBtlsX509NameEntryType
+MONO_API MonoBtlsX509NameEntryType
mono_btls_x509_name_get_entry_type (MonoBtlsX509Name *name, int index)
{
X509_NAME_ENTRY *entry;
@@ -230,7 +230,7 @@ mono_btls_x509_name_get_entry_type (MonoBtlsX509Name *name, int index)
return nid2mono (OBJ_obj2nid (obj));
}
-int
+MONO_API int
mono_btls_x509_name_get_entry_oid (MonoBtlsX509Name *name, int index, char *buffer, int size)
{
X509_NAME_ENTRY *entry;
@@ -250,7 +250,7 @@ mono_btls_x509_name_get_entry_oid (MonoBtlsX509Name *name, int index, char *buff
return OBJ_obj2txt (buffer, size, obj, 1);
}
-int
+MONO_API int
mono_btls_x509_name_get_entry_oid_data (MonoBtlsX509Name *name, int index, const void **data)
{
X509_NAME_ENTRY *entry;
@@ -271,7 +271,7 @@ mono_btls_x509_name_get_entry_oid_data (MonoBtlsX509Name *name, int index, const
return obj->length;
}
-int
+MONO_API int
mono_btls_x509_name_get_entry_value (MonoBtlsX509Name *name, int index, int *tag, unsigned char **str)
{
X509_NAME_ENTRY *entry;
diff --git a/mono/btls/btls-x509-revoked.c b/mono/btls/btls-x509-revoked.c
index e6fb4b0035f..d0540e6ca10 100644
--- a/mono/btls/btls-x509-revoked.c
+++ b/mono/btls/btls-x509-revoked.c
@@ -13,7 +13,7 @@ struct MonoBtlsX509Revoked {
X509_REVOKED *revoked;
};
-MonoBtlsX509Revoked *
+MONO_API MonoBtlsX509Revoked *
mono_btls_x509_revoked_new (MonoBtlsX509Crl *owner, X509_REVOKED *revoked)
{
MonoBtlsX509Revoked *instance;
@@ -26,14 +26,14 @@ mono_btls_x509_revoked_new (MonoBtlsX509Crl *owner, X509_REVOKED *revoked)
return instance;
}
-void
+MONO_API void
mono_btls_x509_revoked_free (MonoBtlsX509Revoked *revoked)
{
mono_btls_x509_crl_free (revoked->owner);
OPENSSL_free (revoked);
}
-int
+MONO_API int
mono_btls_x509_revoked_get_serial_number (MonoBtlsX509Revoked *revoked, char *buffer, int size)
{
ASN1_INTEGER *serial;
@@ -46,7 +46,7 @@ mono_btls_x509_revoked_get_serial_number (MonoBtlsX509Revoked *revoked, char *bu
return serial->length;
}
-long
+MONO_API long
mono_btls_x509_revoked_get_revocation_date (MonoBtlsX509Revoked *revoked)
{
ASN1_TIME *date;
@@ -58,13 +58,13 @@ mono_btls_x509_revoked_get_revocation_date (MonoBtlsX509Revoked *revoked)
return mono_btls_util_asn1_time_to_ticks (date);
}
-int
+MONO_API int
mono_btls_x509_revoked_get_reason (MonoBtlsX509Revoked *revoked)
{
return revoked->revoked->reason;
}
-int
+MONO_API int
mono_btls_x509_revoked_get_sequence (MonoBtlsX509Revoked *revoked)
{
return revoked->revoked->sequence;
diff --git a/mono/btls/btls-x509-store-ctx.c b/mono/btls/btls-x509-store-ctx.c
index f023e31a848..8bbb732ac73 100644
--- a/mono/btls/btls-x509-store-ctx.c
+++ b/mono/btls/btls-x509-store-ctx.c
@@ -16,7 +16,7 @@ struct MonoBtlsX509StoreCtx {
MonoBtlsX509Chain *chain;
};
-MonoBtlsX509StoreCtx *
+MONO_API MonoBtlsX509StoreCtx *
mono_btls_x509_store_ctx_from_ptr (X509_STORE_CTX *ptr)
{
MonoBtlsX509StoreCtx *ctx;
@@ -31,7 +31,7 @@ mono_btls_x509_store_ctx_from_ptr (X509_STORE_CTX *ptr)
return ctx;
}
-MonoBtlsX509StoreCtx *
+MONO_API MonoBtlsX509StoreCtx *
mono_btls_x509_store_ctx_new (void)
{
MonoBtlsX509StoreCtx *ctx;
@@ -47,14 +47,14 @@ mono_btls_x509_store_ctx_new (void)
return ctx;
}
-MonoBtlsX509StoreCtx *
+MONO_API MonoBtlsX509StoreCtx *
mono_btls_x509_store_ctx_up_ref (MonoBtlsX509StoreCtx *ctx)
{
CRYPTO_refcount_inc (&ctx->references);
return ctx;
}
-int
+MONO_API int
mono_btls_x509_store_ctx_free (MonoBtlsX509StoreCtx *ctx)
{
if (!CRYPTO_refcount_dec_and_test_zero (&ctx->references))
@@ -77,7 +77,7 @@ mono_btls_x509_store_ctx_free (MonoBtlsX509StoreCtx *ctx)
return 1;
}
-int
+MONO_API int
mono_btls_x509_store_ctx_get_error (MonoBtlsX509StoreCtx *ctx, const char **error_string)
{
int error;
@@ -88,13 +88,13 @@ mono_btls_x509_store_ctx_get_error (MonoBtlsX509StoreCtx *ctx, const char **erro
return error;
}
-int
+MONO_API int
mono_btls_x509_store_ctx_get_error_depth (MonoBtlsX509StoreCtx *ctx)
{
return X509_STORE_CTX_get_error_depth (ctx->ctx);
}
-MonoBtlsX509Chain *
+MONO_API MonoBtlsX509Chain *
mono_btls_x509_store_ctx_get_chain (MonoBtlsX509StoreCtx *ctx)
{
STACK_OF(X509) *certs;
@@ -106,7 +106,7 @@ mono_btls_x509_store_ctx_get_chain (MonoBtlsX509StoreCtx *ctx)
return mono_btls_x509_chain_from_certs (certs);
}
-MonoBtlsX509Chain *
+MONO_API MonoBtlsX509Chain *
mono_btls_x509_store_ctx_get_untrusted (MonoBtlsX509StoreCtx *ctx)
{
STACK_OF(X509) *untrusted;
@@ -124,7 +124,7 @@ mono_btls_x509_store_ctx_get_untrusted (MonoBtlsX509StoreCtx *ctx)
return mono_btls_x509_chain_from_certs (untrusted);
}
-int
+MONO_API int
mono_btls_x509_store_ctx_init (MonoBtlsX509StoreCtx *ctx,
MonoBtlsX509Store *store, MonoBtlsX509Chain *chain)
{
@@ -151,19 +151,19 @@ mono_btls_x509_store_ctx_init (MonoBtlsX509StoreCtx *ctx,
return 1;
}
-int
+MONO_API int
mono_btls_x509_store_ctx_set_param (MonoBtlsX509StoreCtx *ctx, MonoBtlsX509VerifyParam *param)
{
return X509_VERIFY_PARAM_set1 (X509_STORE_CTX_get0_param (ctx->ctx), mono_btls_x509_verify_param_peek_param (param));
}
-int
+MONO_API int
mono_btls_x509_store_ctx_verify_cert (MonoBtlsX509StoreCtx *ctx)
{
return X509_verify_cert (ctx->ctx);
}
-X509 *
+MONO_API X509 *
mono_btls_x509_store_ctx_get_by_subject (MonoBtlsX509StoreCtx *ctx, MonoBtlsX509Name *name)
{
X509_OBJECT obj;
@@ -180,7 +180,7 @@ mono_btls_x509_store_ctx_get_by_subject (MonoBtlsX509StoreCtx *ctx, MonoBtlsX509
return x509;
}
-X509 *
+MONO_API X509 *
mono_btls_x509_store_ctx_get_current_cert (MonoBtlsX509StoreCtx *ctx)
{
X509 *x509 = X509_STORE_CTX_get_current_cert (ctx->ctx);
@@ -189,7 +189,7 @@ mono_btls_x509_store_ctx_get_current_cert (MonoBtlsX509StoreCtx *ctx)
return X509_up_ref (x509);
}
-X509 *
+MONO_API X509 *
mono_btls_x509_store_ctx_get_current_issuer (MonoBtlsX509StoreCtx *ctx)
{
X509 *x509 = X509_STORE_CTX_get0_current_issuer (ctx->ctx);
@@ -198,7 +198,7 @@ mono_btls_x509_store_ctx_get_current_issuer (MonoBtlsX509StoreCtx *ctx)
return X509_up_ref (x509);
}
-MonoBtlsX509VerifyParam *
+MONO_API MonoBtlsX509VerifyParam *
mono_btls_x509_store_ctx_get_verify_param (MonoBtlsX509StoreCtx *ctx)
{
X509_VERIFY_PARAM *param;
@@ -210,8 +210,8 @@ mono_btls_x509_store_ctx_get_verify_param (MonoBtlsX509StoreCtx *ctx)
return mono_btls_x509_verify_param_from_store_ctx (ctx, param);
}
-int
+MONO_API int
mono_btls_x509_store_ctx_get_foo (MonoBtlsX509StoreCtx *ctx)
{
return 0;
-} \ No newline at end of file
+}
diff --git a/mono/btls/btls-x509-store.c b/mono/btls/btls-x509-store.c
index f2c826e11f4..3534739a6ee 100644
--- a/mono/btls/btls-x509-store.c
+++ b/mono/btls/btls-x509-store.c
@@ -13,7 +13,7 @@ struct MonoBtlsX509Store {
CRYPTO_refcount_t references;
};
-MonoBtlsX509Store *
+MONO_API MonoBtlsX509Store *
mono_btls_x509_store_from_store (X509_STORE *ctx)
{
MonoBtlsX509Store *store;
@@ -29,13 +29,13 @@ mono_btls_x509_store_from_store (X509_STORE *ctx)
return store;
}
-MonoBtlsX509Store *
+MONO_API MonoBtlsX509Store *
mono_btls_x509_store_from_ctx (X509_STORE_CTX *ctx)
{
return mono_btls_x509_store_from_store (ctx->ctx);
}
-MonoBtlsX509Store *
+MONO_API MonoBtlsX509Store *
mono_btls_x509_store_new (void)
{
MonoBtlsX509Store *store;
@@ -50,20 +50,20 @@ mono_btls_x509_store_new (void)
return store;
}
-X509_STORE *
+MONO_API X509_STORE *
mono_btls_x509_store_peek_store (MonoBtlsX509Store *store)
{
return store->store;
}
-MonoBtlsX509Store *
+MONO_API MonoBtlsX509Store *
mono_btls_x509_store_from_ssl_ctx (MonoBtlsSslCtx *ctx)
{
X509_STORE *store = mono_btls_ssl_ctx_peek_store (ctx);
return mono_btls_x509_store_from_store (store);
}
-int
+MONO_API int
mono_btls_x509_store_free (MonoBtlsX509Store *store)
{
if (!CRYPTO_refcount_dec_and_test_zero(&store->references))
@@ -77,32 +77,32 @@ mono_btls_x509_store_free (MonoBtlsX509Store *store)
return 1;
}
-MonoBtlsX509Store *
+MONO_API MonoBtlsX509Store *
mono_btls_x509_store_up_ref (MonoBtlsX509Store *store)
{
CRYPTO_refcount_inc (&store->references);
return store;
}
-int
+MONO_API int
mono_btls_x509_store_add_cert (MonoBtlsX509Store *store, X509 *cert)
{
return X509_STORE_add_cert (store->store, cert);
}
-int
+MONO_API int
mono_btls_x509_store_load_locations (MonoBtlsX509Store *store, const char *file, const char *path)
{
return X509_STORE_load_locations (store->store, file, path);
}
-int
+MONO_API int
mono_btls_x509_store_set_default_paths (MonoBtlsX509Store *store)
{
return X509_STORE_set_default_paths (store->store);
}
-int
+MONO_API int
mono_btls_x509_store_get_count (MonoBtlsX509Store *store)
{
return (int)sk_X509_OBJECT_num (store->store->objs);
diff --git a/mono/btls/btls-x509-verify-param.c b/mono/btls/btls-x509-verify-param.c
index 643fdcd43d2..5ac8bdbb099 100644
--- a/mono/btls/btls-x509-verify-param.c
+++ b/mono/btls/btls-x509-verify-param.c
@@ -15,7 +15,7 @@ struct MonoBtlsX509VerifyParam {
X509_VERIFY_PARAM *param;
};
-MonoBtlsX509VerifyParam *
+MONO_API MonoBtlsX509VerifyParam *
mono_btls_x509_verify_param_new (void)
{
MonoBtlsX509VerifyParam *param;
@@ -29,7 +29,7 @@ mono_btls_x509_verify_param_new (void)
return param;
}
-MonoBtlsX509VerifyParam *
+MONO_API MonoBtlsX509VerifyParam *
mono_btls_x509_verify_param_from_store_ctx (MonoBtlsX509StoreCtx *ctx, X509_VERIFY_PARAM *param)
{
MonoBtlsX509VerifyParam *instance;
@@ -43,7 +43,7 @@ mono_btls_x509_verify_param_from_store_ctx (MonoBtlsX509StoreCtx *ctx, X509_VERI
return instance;
}
-MonoBtlsX509VerifyParam *
+MONO_API MonoBtlsX509VerifyParam *
mono_btls_x509_verify_param_copy (const MonoBtlsX509VerifyParam *from)
{
MonoBtlsX509VerifyParam *param;
@@ -56,19 +56,19 @@ mono_btls_x509_verify_param_copy (const MonoBtlsX509VerifyParam *from)
return param;
}
-const X509_VERIFY_PARAM *
+MONO_API const X509_VERIFY_PARAM *
mono_btls_x509_verify_param_peek_param (const MonoBtlsX509VerifyParam *param)
{
return param->param;
}
-int
+MONO_API int
mono_btls_x509_verify_param_can_modify (MonoBtlsX509VerifyParam *param)
{
return param->owns;
}
-MonoBtlsX509VerifyParam *
+MONO_API MonoBtlsX509VerifyParam *
mono_btls_x509_verify_param_lookup (const char *name)
{
MonoBtlsX509VerifyParam *param;
@@ -86,7 +86,7 @@ mono_btls_x509_verify_param_lookup (const char *name)
return param;
}
-void
+MONO_API void
mono_btls_x509_verify_param_free (MonoBtlsX509VerifyParam *param)
{
if (param->owns) {
@@ -102,7 +102,7 @@ mono_btls_x509_verify_param_free (MonoBtlsX509VerifyParam *param)
OPENSSL_free (param);
}
-int
+MONO_API int
mono_btls_x509_verify_param_set_name (MonoBtlsX509VerifyParam *param, const char *name)
{
if (!param->owns)
@@ -110,7 +110,7 @@ mono_btls_x509_verify_param_set_name (MonoBtlsX509VerifyParam *param, const char
return X509_VERIFY_PARAM_set1_name (param->param, name);
}
-int
+MONO_API int
mono_btls_x509_verify_param_set_host (MonoBtlsX509VerifyParam *param, const char *host, int namelen)
{
if (!param->owns)
@@ -118,7 +118,7 @@ mono_btls_x509_verify_param_set_host (MonoBtlsX509VerifyParam *param, const char
return X509_VERIFY_PARAM_set1_host (param->param, host, namelen);
}
-int
+MONO_API int
mono_btls_x509_verify_param_add_host (MonoBtlsX509VerifyParam *param, const char *host, int namelen)
{
if (!param->owns)
@@ -126,13 +126,13 @@ mono_btls_x509_verify_param_add_host (MonoBtlsX509VerifyParam *param, const char
return X509_VERIFY_PARAM_set1_host (param->param, host, namelen);
}
-unsigned long
+MONO_API unsigned long
mono_btls_x509_verify_param_get_flags (MonoBtlsX509VerifyParam *param)
{
return X509_VERIFY_PARAM_get_flags (param->param);
}
-int
+MONO_API int
mono_btls_x509_verify_param_set_flags (MonoBtlsX509VerifyParam *param, unsigned long flags)
{
if (!param->owns)
@@ -140,7 +140,7 @@ mono_btls_x509_verify_param_set_flags (MonoBtlsX509VerifyParam *param, unsigned
return X509_VERIFY_PARAM_set_flags (param->param, flags);
}
-MonoBtlsX509VerifyFlags
+MONO_API MonoBtlsX509VerifyFlags
mono_btls_x509_verify_param_get_mono_flags (MonoBtlsX509VerifyParam *param)
{
MonoBtlsX509VerifyFlags current;
@@ -162,7 +162,7 @@ mono_btls_x509_verify_param_get_mono_flags (MonoBtlsX509VerifyParam *param)
return current;
}
-int
+MONO_API int
mono_btls_x509_verify_param_set_mono_flags (MonoBtlsX509VerifyParam *param, MonoBtlsX509VerifyFlags flags)
{
unsigned long current;
@@ -181,7 +181,7 @@ mono_btls_x509_verify_param_set_mono_flags (MonoBtlsX509VerifyParam *param, Mono
return X509_VERIFY_PARAM_set_flags (param->param, current);
}
-int
+MONO_API int
mono_btls_x509_verify_param_set_purpose (MonoBtlsX509VerifyParam *param, MonoBtlsX509Purpose purpose)
{
if (!param->owns)
@@ -189,13 +189,13 @@ mono_btls_x509_verify_param_set_purpose (MonoBtlsX509VerifyParam *param, MonoBtl
return X509_VERIFY_PARAM_set_purpose (param->param, purpose);
}
-int
+MONO_API int
mono_btls_x509_verify_param_get_depth (MonoBtlsX509VerifyParam *param)
{
return X509_VERIFY_PARAM_get_depth (param->param);
}
-int
+MONO_API int
mono_btls_x509_verify_param_set_depth (MonoBtlsX509VerifyParam *param, int depth)
{
if (!param->owns)
@@ -204,7 +204,7 @@ mono_btls_x509_verify_param_set_depth (MonoBtlsX509VerifyParam *param, int depth
return 1;
}
-int
+MONO_API int
mono_btls_x509_verify_param_set_time (MonoBtlsX509VerifyParam *param, long time)
{
if (!param->owns)
@@ -213,7 +213,7 @@ mono_btls_x509_verify_param_set_time (MonoBtlsX509VerifyParam *param, long time)
return 1;
}
-char *
+MONO_API char *
mono_btls_x509_verify_param_get_peername (MonoBtlsX509VerifyParam *param)
{
char *peer = X509_VERIFY_PARAM_get0_peername (param->param);
diff --git a/mono/btls/btls-x509.c b/mono/btls/btls-x509.c
index bd3100885cc..ae75f3ce912 100644
--- a/mono/btls/btls-x509.c
+++ b/mono/btls/btls-x509.c
@@ -10,7 +10,7 @@
#include <openssl/x509v3.h>
#include <openssl/pkcs12.h>
-X509 *
+MONO_API X509 *
mono_btls_x509_from_data (const void *buf, int len, MonoBtlsX509Format format)
{
BIO *bio;
@@ -29,52 +29,52 @@ mono_btls_x509_from_data (const void *buf, int len, MonoBtlsX509Format format)
return cert;
}
-X509 *
+MONO_API X509 *
mono_btls_x509_up_ref (X509 *x509)
{
X509_up_ref (x509);
return x509;
}
-void
+MONO_API void
mono_btls_x509_free (X509 *x509)
{
X509_free (x509);
}
-X509 *
+MONO_API X509 *
mono_btls_x509_dup (X509 *x509)
{
return X509_dup (x509);
}
-MonoBtlsX509Name *
+MONO_API MonoBtlsX509Name *
mono_btls_x509_get_subject_name (X509 *x509)
{
return mono_btls_x509_name_copy (X509_get_subject_name (x509));
}
-MonoBtlsX509Name *
+MONO_API MonoBtlsX509Name *
mono_btls_x509_get_issuer_name (X509 *x509)
{
return mono_btls_x509_name_copy (X509_get_issuer_name (x509));
}
-int
+MONO_API int
mono_btls_x509_get_subject_name_string (X509 *name, char *buffer, int size)
{
*buffer = 0;
return X509_NAME_oneline (X509_get_subject_name (name), buffer, size) != NULL;
}
-int
+MONO_API int
mono_btls_x509_get_issuer_name_string (X509 *name, char *buffer, int size)
{
*buffer = 0;
return X509_NAME_oneline (X509_get_issuer_name (name), buffer, size) != NULL;
}
-int
+MONO_API int
mono_btls_x509_get_raw_data (X509 *x509, BIO *bio, MonoBtlsX509Format format)
{
switch (format) {
@@ -87,13 +87,13 @@ mono_btls_x509_get_raw_data (X509 *x509, BIO *bio, MonoBtlsX509Format format)
}
}
-int
+MONO_API int
mono_btls_x509_cmp (const X509 *a, const X509 *b)
{
return X509_cmp (a, b);
}
-int
+MONO_API int
mono_btls_x509_get_hash (X509 *x509, const void **data)
{
X509_check_purpose (x509, -1, 0);
@@ -101,19 +101,19 @@ mono_btls_x509_get_hash (X509 *x509, const void **data)
return SHA_DIGEST_LENGTH;
}
-long
+MONO_API long
mono_btls_x509_get_not_before (X509 *x509)
{
return mono_btls_util_asn1_time_to_ticks (X509_get_notBefore (x509));
}
-long
+MONO_API long
mono_btls_x509_get_not_after (X509 *x509)
{
return mono_btls_util_asn1_time_to_ticks (X509_get_notAfter (x509));
}
-int
+MONO_API int
mono_btls_x509_get_public_key (X509 *x509, BIO *bio)
{
EVP_PKEY *pkey;
@@ -135,7 +135,7 @@ mono_btls_x509_get_public_key (X509 *x509, BIO *bio)
return ret;
}
-int
+MONO_API int
mono_btls_x509_get_serial_number (X509 *x509, char *buffer, int size, int mono_style)
{
ASN1_INTEGER *serial;
@@ -172,7 +172,7 @@ mono_btls_x509_get_serial_number (X509 *x509, char *buffer, int size, int mono_s
return len;
}
-int
+MONO_API int
mono_btls_x509_get_public_key_algorithm (X509 *x509, char *buffer, int size)
{
X509_PUBKEY *pkey;
@@ -191,13 +191,13 @@ mono_btls_x509_get_public_key_algorithm (X509 *x509, char *buffer, int size)
return OBJ_obj2txt (buffer, size, ppkalg, 1);
}
-int
+MONO_API int
mono_btls_x509_get_version (X509 *x509)
{
return (int)X509_get_version (x509) + 1;
}
-int
+MONO_API int
mono_btls_x509_get_signature_algorithm (X509 *x509, char *buffer, int size)
{
const ASN1_OBJECT *obj;
@@ -214,7 +214,7 @@ mono_btls_x509_get_signature_algorithm (X509 *x509, char *buffer, int size)
return OBJ_obj2txt (buffer, size, obj, 1);
}
-int
+MONO_API int
mono_btls_x509_get_public_key_asn1 (X509 *x509, char *out_oid, int oid_len, uint8_t **buffer, int *size)
{
X509_PUBKEY *pkey;
@@ -251,7 +251,7 @@ mono_btls_x509_get_public_key_asn1 (X509 *x509, char *out_oid, int oid_len, uint
}
-int
+MONO_API int
mono_btls_x509_get_public_key_parameters (X509 *x509, char *out_oid, int oid_len, uint8_t **buffer, int *size)
{
X509_PUBKEY *pkey;
@@ -310,13 +310,13 @@ mono_btls_x509_get_public_key_parameters (X509 *x509, char *out_oid, int oid_len
}
}
-EVP_PKEY *
+MONO_API EVP_PKEY *
mono_btls_x509_get_pubkey (X509 *x509)
{
return X509_get_pubkey (x509);
}
-int
+MONO_API int
mono_btls_x509_get_subject_key_identifier (X509 *x509, uint8_t **buffer, int *size)
{
ASN1_OCTET_STRING *skid;
@@ -340,7 +340,7 @@ mono_btls_x509_get_subject_key_identifier (X509 *x509, uint8_t **buffer, int *si
return 1;
}
-int
+MONO_API int
mono_btls_x509_print (X509 *x509, BIO *bio)
{
return X509_print_ex (bio, x509, XN_FLAG_COMPAT, X509_FLAG_COMPAT);
@@ -359,7 +359,7 @@ get_trust_nid (MonoBtlsX509Purpose purpose)
}
}
-int
+MONO_API int
mono_btls_x509_add_trust_object (X509 *x509, MonoBtlsX509Purpose purpose)
{
ASN1_OBJECT *trust;
@@ -377,7 +377,7 @@ mono_btls_x509_add_trust_object (X509 *x509, MonoBtlsX509Purpose purpose)
return X509_add1_trust_object (x509, trust);
}
-int
+MONO_API int
mono_btls_x509_add_reject_object (X509 *x509, MonoBtlsX509Purpose purpose)
{
ASN1_OBJECT *reject;
@@ -395,7 +395,7 @@ mono_btls_x509_add_reject_object (X509 *x509, MonoBtlsX509Purpose purpose)
return X509_add1_reject_object (x509, reject);
}
-int
+MONO_API int
mono_btls_x509_add_explicit_trust (X509 *x509, MonoBtlsX509TrustKind kind)
{
int ret = 0;
diff --git a/mono/metadata/Makefile.am b/mono/metadata/Makefile.am
index 3f754d04f3f..b3fd6121b2d 100644
--- a/mono/metadata/Makefile.am
+++ b/mono/metadata/Makefile.am
@@ -50,6 +50,7 @@ if PLATFORM_ANDROID
platform_sources += ../../support/libm/complex.c
endif
+if !DYNAMIC_BTLS
if BTLS
btls_file_list := $(shell cat ../btls/build-shared/mono-btls-shared-lo.txt)
btls_static_file_list := $(shell cat ../btls/build-static/mono-btls-static-lo.txt)
@@ -57,6 +58,7 @@ btls_libs = $(btls_file_list)
btls_static_libs = $(btls_static_file_list)
btls_cflags = -I$(top_srcdir)/external/boringssl/include -I$(top_srcdir)/mono/btls
endif
+endif
#
# libtool is not capable of creating static/shared versions of the same
diff --git a/mono/metadata/icall-def.h b/mono/metadata/icall-def.h
index 185487662b6..11ba22a6e61 100644
--- a/mono/metadata/icall-def.h
+++ b/mono/metadata/icall-def.h
@@ -78,7 +78,7 @@ ICALL(NATIVEMETHODS_10, "TerminateProcess", ves_icall_Microsoft_Win32_NativeMeth
ICALL(NATIVEMETHODS_11, "WaitForInputIdle", ves_icall_Microsoft_Win32_NativeMethods_WaitForInputIdle)
#endif /* !DISABLE_PROCESS_HANDLING */
-#if HAVE_BTLS
+#if defined(HAVE_BTLS) && !defined(HAVE_DYNAMIC_BTLS)
ICALL_TYPE(BTLS_BIO, "Mono.Btls.MonoBtlsBio", BTLS_BIO_1)
ICALL(BTLS_BIO_1, "mono_btls_bio_flush", mono_btls_bio_flush)
ICALL(BTLS_BIO_2, "mono_btls_bio_free", mono_btls_bio_free)
diff --git a/mono/metadata/icall.c b/mono/metadata/icall.c
index 4debd7bf102..116a44fa837 100644
--- a/mono/metadata/icall.c
+++ b/mono/metadata/icall.c
@@ -105,7 +105,7 @@
#include <sys/utsname.h>
#endif
-#if HAVE_BTLS
+#if defined(HAVE_BTLS) && !defined(HAVE_DYNAMIC_BTLS)
#include <btls/btls-ssl.h>
#include <btls/btls-bio.h>
#include <btls/btls-error.h>
diff --git a/runtime/Makefile.am b/runtime/Makefile.am
index 068bb1d3dc0..9ca31834655 100644
--- a/runtime/Makefile.am
+++ b/runtime/Makefile.am
@@ -165,10 +165,13 @@ CLEANFILES = etc/mono/config
etc/mono/config: ../data/config Makefile $(symlinks)
d=`cd ../support && pwd`; \
sed 's,target="$$mono_libdir/libMonoPosixHelper$(libsuffix)",target="'$$d'/libMonoPosixHelper.la",' ../data/config > $@t
+ d=`cd ../mono/btls/build-shared && pwd`; \
+ sed 's,target="$$mono_libdir/libmono-btls-shared$(libsuffix)",target="'$$d'/libmono-btls-shared$(libsuffix)",' $@t > $@tt
if test -z "$(libgdiplus_loc)"; then :; else \
- sed 's,target="$(libgdiplus_install_loc)",target="$(libgdiplus_loc)",' $@t > $@tt; \
- mv -f $@tt $@t; fi
- mv -f $@t $@
+ sed 's,target="$(libgdiplus_install_loc)",target="$(libgdiplus_loc)",' $@tt > $@ttt; \
+ mv -f $@ttt $@tt; fi
+ mv -f $@tt $@
+ rm -f $@t
$(tmpinst)/bin/mono: mono-wrapper etc/mono/config
$(mkinstalldirs) $(tmpinst)/bin