[btls] Convert BTLS icalls to pinvokes by invoking them using [DllImp… (#3799)
authorZoltan Varga <vargaz@gmail.com>
Fri, 21 Oct 2016 21:29:13 +0000 (17:29 -0400)
committerGitHub <noreply@github.com>
Fri, 21 Oct 2016 21:29:13 +0000 (17:29 -0400)
* [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.

45 files changed:
configure.ac
data/config.in
mcs/class/System/Makefile
mcs/class/System/Mono.Btls/MonoBtlsBio.cs
mcs/class/System/Mono.Btls/MonoBtlsError.cs
mcs/class/System/Mono.Btls/MonoBtlsKey.cs
mcs/class/System/Mono.Btls/MonoBtlsObject.cs
mcs/class/System/Mono.Btls/MonoBtlsPkcs12.cs
mcs/class/System/Mono.Btls/MonoBtlsSsl.cs
mcs/class/System/Mono.Btls/MonoBtlsSslCtx.cs
mcs/class/System/Mono.Btls/MonoBtlsX509.cs
mcs/class/System/Mono.Btls/MonoBtlsX509Chain.cs
mcs/class/System/Mono.Btls/MonoBtlsX509Crl.cs
mcs/class/System/Mono.Btls/MonoBtlsX509Lookup.cs
mcs/class/System/Mono.Btls/MonoBtlsX509LookupMono.cs
mcs/class/System/Mono.Btls/MonoBtlsX509Name.cs
mcs/class/System/Mono.Btls/MonoBtlsX509NameList.cs
mcs/class/System/Mono.Btls/MonoBtlsX509Revoked.cs
mcs/class/System/Mono.Btls/MonoBtlsX509Store.cs
mcs/class/System/Mono.Btls/MonoBtlsX509StoreCtx.cs
mcs/class/System/Mono.Btls/MonoBtlsX509VerifyParam.cs
mono/btls/CMakeLists.txt
mono/btls/Makefile.am
mono/btls/btls-bio.c
mono/btls/btls-error.c
mono/btls/btls-key.c
mono/btls/btls-pkcs12.c
mono/btls/btls-ssl-ctx.c
mono/btls/btls-ssl.c
mono/btls/btls-util.c
mono/btls/btls-util.h
mono/btls/btls-x509-chain.c
mono/btls/btls-x509-crl.c
mono/btls/btls-x509-lookup-mono.c
mono/btls/btls-x509-lookup.c
mono/btls/btls-x509-name.c
mono/btls/btls-x509-revoked.c
mono/btls/btls-x509-store-ctx.c
mono/btls/btls-x509-store.c
mono/btls/btls-x509-verify-param.c
mono/btls/btls-x509.c
mono/metadata/Makefile.am
mono/metadata/icall-def.h
mono/metadata/icall.c
runtime/Makefile.am

index c644a7c42026990778fd1b78c7f4d5877d5ef1c7..aed6989394d68d9d335703a8cb403d908dcf88c3 100644 (file)
@@ -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
 
 )
index b4b7243ecfd001bb60aeb9b0979840a8cd170c28..be83151429311d44e1c6d5aaa5c82df050a1aa74 100644 (file)
@@ -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"/>
index fdfb7c293a4ecd9d2bff6567df57c55c2a693683..29eace8a1ff7c66b451fd4ab2197116fb5d79df9 100644 (file)
@@ -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
index 1fbe47117d17a3ad8f1a273c9d47069e61379cf1..ca62c8e4a2921712170cd47d5027f6e95a26ed65 100644 (file)
@@ -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)
index 2645a926bc396c0f58d422a2a7cd984872f073cb..bbfee5ef89788b5113df5203f731d44cdfc1b95b 100644 (file)
@@ -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
index 81280b54ece80f8580681a88adee175a04727daa..04ccb467a95ba0950eec2adc07ae05948f9ecc0a 100644 (file)
@@ -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 {
index 8f3054318fe03c3b4f7a8b0efd16569028a0a1aa..9731e1deb442c8b074b3a1eb9d8b2a28ac67ade0 100644 (file)
@@ -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)
index a7d42a190b441406430c5635015b200217dd2c35..2f97cb87474d8b97fd109c51c0ccd4bcffe7d29a 100644 (file)
@@ -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 ()
index b24ed079ab1c8fa243c266f3b481bc7c3b4d2065..d04a15a1a668c8ce2291423a9511c6e7b4c62877 100644 (file)
@@ -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)
index 517b158b8e0d1582d78637b9f20ddafc592574ea..7fac0f3382129c1f58821dcda938fe229c54f5b5 100644 (file)
@@ -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);
index 31ec45810529027bb14b9d15920eaf0e2e98efee..b35c0c1422595f6c20fb1029b6c0bdbbfabcb8cc 100644 (file)
@@ -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 ()
index 6926ae7e65b15343fde55c1c17491f67c662aa0f..853e3bb60c55158d42755fed4c7282ecb6c8dbf5 100644 (file)
@@ -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 ()
index 9d1868337d6f8bb114463d233e6113d02dd83d6c..004a29abc1fc6dcb9ff4b50708a01a818b219670 100644 (file)
@@ -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)
index 3e8fb29976820169fb5ed24cd57bd64c057e60c2..fc24dc79d0c4d761a339c371f2a87be40b8f0a41 100644 (file)
@@ -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;
index 30b2ee3876e4480e4c66d3499bae0158c800da06..73d16a3bb5d3ee0a8e3a10e3bbcecfb78e088170 100644 (file)
@@ -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);
index 80a322caaf3f6882df62c1005af52248341afcd6..88e1bb427d7c3c4e43c384f9c2895aebaef02cd4 100644 (file)
@@ -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 {
index cccc005f8d99083ed55b8c5f64305333c8315bac..ab3a7bba62c69bf042d0236c6bf661646d4e570a 100644 (file)
@@ -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 {
index 4f5d79b67b41278c6a7c3d0281bcf95847fc93b9..583a6d01517fac62e3e8f746ae48c6fcbe3b7df9 100644 (file)
@@ -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 ()
index 2e03715ce3461757c67c6f3491d3a5313d748f42..76db62bb9f83fb03cc7d59132e836b1a1402130d 100644 (file)
@@ -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;
index 41df1298f9cb8758fb96a75471de876dfc65b5ec..f197a66bc3da7725c4fcf681ec80df53923d54d3 100644 (file)
@@ -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 ()
index 5c012389fdc4b92ab9f8382cdefc6e425583777f..d95610a92da22a64fb10fe839d786a4a7a9dc1ec 100644 (file)
@@ -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 ()
index aba7440e5058120c4c82cc779bc23d4582236425..0e01496e9fa75e6b56c8e01140b564279673b79b 100644 (file)
@@ -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})
index 0bb00bf184e34924b76ab1d5e6c7d545f38d1116..25d742b10972ff9fb99def67d1146d4bac5d12ef 100644 (file)
@@ -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
index 5af2d86ecd6346a6ed26dff03076b2360a0c1baf..ea8fda67dc35096689e0e580561e7e4b68b38577 100644 (file)
@@ -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);
index 8ed950c7e66b7c2229dd24c0cc8bf8ec6b17e266..75252162a2a24392761f5ae7ec98ea0ce43a713a 100644 (file)
@@ -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);
index 756f9c75649a4b1c0fbb8f2ddd5d7398004f97ce..65909a527d9944e0aa27ca42b05505552ca4584d 100644 (file)
@@ -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;
index d037ddb89107733b14fed9b897122a821364c3e0..6e1a79e60bd26fbdded10fab416ddd2a9e51318d 100644 (file)
@@ -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)
index ddbb02f5517e13d2b34416d485b82df69e0a8077..1f9d43c536e790af0c3c5840bd1e5037b468d913 100644 (file)
@@ -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));
index fa3e53d4cdf86cfa6de30b1c15802ca3c4ce2105..f18d6c19247d968557f054379b1a22e1d54b2571 100644 (file)
@@ -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);
index d28763a0fd1277cef7cca4b6c9126481593d5f9d..824b101f34c50ed68b88fd0e804a050ed7add745 100644 (file)
@@ -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);
index a77bfcd61d06e1a3c1528b7fb0d06388a97c55b2..525e619975075b353cf87ca15b5669e87cb2f06a 100644 (file)
 #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);
 
index 0584791dedf5f37d7c6c5feadfeec4fc1e9af7cd..5b7082ddb135f645fc74dd3a05197f70c7b1468a 100644 (file)
@@ -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);
index ccd3e2873145e4f613327cafa3ceac68b0b8822a..b4e861234cac0ed758b794fd3089de0f08689056 100644 (file)
@@ -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));
index cce736894696f50e2ed0b24d789c447890994c75..1d8f7d3ee51f081d4674000fc9160995939a80c3 100644 (file)
@@ -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)
index 1cfc1741a363736559a345dee6b04cbb2db9b8b3..567d19c237aef062c42788196b7b6aed81941f1c 100644 (file)
@@ -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;
index 7a40f75b53bd2b8a720d51886a72fb146323afb8..782743f875259bfe50b4c4d3a8a6e91ea36d2f19 100644 (file)
@@ -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;
index e6fb4b0035fcc2a2b4128e13c3b600152971c281..d0540e6ca10f872f868719aee9007e493739a325 100644 (file)
@@ -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;
index f023e31a8485464cbb7139fe3e4e5795a873126b..8bbb732ac7325b95550c0d1521d33500705cc003 100644 (file)
@@ -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
+}
index f2c826e11f4be867c81ef1c49940733bc79867ea..3534739a6ee72b352b48c063646413dbb4fd59c6 100644 (file)
@@ -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);
index 643fdcd43d2ce569385310db48bee7f2604fea7f..5ac8bdbb099c574de77c2cef4c7831829a107271 100644 (file)
@@ -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);
index bd3100885ccad1dfb4890f10f140ec29468a0e58..ae75f3ce9128b95cb9d53d34b7292a84b06b1e15 100644 (file)
@@ -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;
index 3f754d04f3f26b85edc3d982fa69080c81d79737..b3fd6121b2d826269f4b82551f934bcb343b3231 100644 (file)
@@ -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
index 185487662b6451c85567183b01797a04e1d15b97..11ba22a6e617dc706d2dcd2d0701dcf7047dd54e 100644 (file)
@@ -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)
index 4debd7bf1027f4766f31f8697ac16aa19f21e4a5..116a44fa837339ec5c74482052b421c40b379fb8 100644 (file)
 #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>
index 068bb1d3dc0269bc87633813b76bae786ca0ac63..9ca318346557b586ab6b35914619cfa8fbe249dc 100644 (file)
@@ -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