summaryrefslogtreecommitdiffhomepage
path: root/libs/nixio/axTLS/bindings/vbnet/axTLSvb.vb
diff options
context:
space:
mode:
Diffstat (limited to 'libs/nixio/axTLS/bindings/vbnet/axTLSvb.vb')
-rw-r--r--libs/nixio/axTLS/bindings/vbnet/axTLSvb.vb200
1 files changed, 200 insertions, 0 deletions
diff --git a/libs/nixio/axTLS/bindings/vbnet/axTLSvb.vb b/libs/nixio/axTLS/bindings/vbnet/axTLSvb.vb
new file mode 100644
index 000000000..9388273ce
--- /dev/null
+++ b/libs/nixio/axTLS/bindings/vbnet/axTLSvb.vb
@@ -0,0 +1,200 @@
+'
+' Copyright (c) 2007, Cameron Rich
+'
+' All rights reserved.
+'
+' Redistribution and use in source and binary forms, with or without
+' modification, are permitted provided that the following conditions are met:
+'
+' * Redistributions of source code must retain the above copyright notice,
+' this list of conditions and the following disclaimer.
+' * Redistributions in binary form must reproduce the above copyright
+' notice, this list of conditions and the following disclaimer in the
+' documentation and/or other materials provided with the distribution.
+' * Neither the name of the axTLS project nor the names of its
+' contributors may be used to endorse or promote products derived
+' from this software without specific prior written permission.
+'
+' THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+' "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+' LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+' A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+' CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+' SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+' TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+' DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+' OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+' NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+' THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+'
+
+'
+' A wrapper around the unmanaged Integererface to give a semi-decent VB.NET API
+'
+
+Imports System
+Imports System.Runtime.InteropServices
+Imports System.Net.Sockets
+Imports axTLSvb
+
+Namespace axTLSvb
+ Public Class SSL
+ Public m_ssl As IntPtr
+
+ Public Sub New(ByRef ip As IntPtr)
+ m_ssl = ip
+ End Sub
+
+ Public Sub Dispose()
+ axtls.ssl_free(m_ssl)
+ End Sub
+
+ Public Function HandshakeStatus() As Integer
+ Return axtls.ssl_handshake_status(m_ssl)
+ End Function
+
+ Public Function GetCipherId() As Byte
+ Return axtls.ssl_get_cipher_id(m_ssl)
+ End Function
+
+ Public Function GetSessionId() As Byte()
+ Dim ptr As IntPtr = axtls.ssl_get_session_id(m_ssl)
+ Dim sess_id_size As Integer = axtls.ssl_get_session_id_size(m_ssl)
+ Dim result(sess_id_size-1) As Byte
+ Marshal.Copy(ptr, result, 0, sess_id_size)
+ Return result
+ End Function
+
+ Public Function GetCertificateDN(component As Integer) As String
+ Return axtls.ssl_get_cert_dn(m_ssl, component)
+ End Function
+ End Class
+
+ Public Class SSLUtil
+ Private dummy As Integer ' need something here
+
+ Public Shared Function BuildMode() As Integer
+ Return axtls.ssl_get_config(axtls.SSL_BUILD_MODE)
+ End Function
+
+ Public Shared Function MaxCerts() As Integer
+ Return axtls.ssl_get_config(axtls.SSL_MAX_CERT_CFG_OFFSET)
+ End Function
+
+ Public Shared Function MaxCACerts() As Integer
+ Return axtls.ssl_get_config(axtls.SSL_MAX_CA_CERT_CFG_OFFSET)
+ End Function
+
+ Public Shared Function HasPEM() As Boolean
+ If axtls.ssl_get_config(axtls.SSL_HAS_PEM) > 0 Then
+ Return True
+ Else
+ Return False
+ End If
+ End Function
+
+ Public Shared Sub DisplayError(ByVal error_code As Integer)
+ axtls.ssl_display_error(error_code)
+ End Sub
+
+ Public Shared Function Version() As String
+ Return axtls.ssl_version()
+ End Function
+ End Class
+
+ Public Class SSLCTX
+ Protected m_ctx As IntPtr
+
+ Protected Sub New(ByVal options As Integer, _
+ ByVal num_sessions As Integer)
+ m_ctx = axtls.ssl_ctx_new(options, num_sessions)
+ End Sub
+
+ Public Sub Dispose()
+ axtls.ssl_ctx_free(m_ctx)
+ End Sub
+
+ Public Function Read(ByVal ssl As SSL, ByRef in_data As Byte()) As Integer
+ Dim ptr As IntPtr = IntPtr.Zero
+ Dim ret as Integer = axtls.ssl_read(ssl.m_ssl, ptr)
+
+ If ret > axtls.SSL_OK Then
+ ReDim in_data(ret)
+ Marshal.Copy(ptr, in_data, 0, ret)
+ Else
+ in_data = Nothing
+ End If
+
+ Return ret
+ End Function
+
+ Public Function Write(ByVal ssl As SSL, _
+ ByVal data As Byte(), len As Integer) As Integer
+ Return axtls.ssl_write(ssl.m_ssl, data, len)
+ End Function
+
+ Public Function Find(ByVal s As Socket) As SSL
+ Dim client_fd As Integer = s.Handle.ToInt32()
+ Return New SSL(axtls.ssl_find(m_ctx, client_fd))
+ End Function
+
+ Public Function VerifyCert(ByVal ssl As SSL) As Integer
+ Return axtls.ssl_verify_cert(ssl.m_ssl)
+ End Function
+
+ Public Function Renegotiate(ByVal ssl As SSL) As Integer
+ Return axtls.ssl_renegotiate(ssl.m_ssl)
+ End Function
+
+ Public Function ObjLoad(ByVal obj_type As Integer, _
+ ByVal filename As String, _
+ password As String) As Integer
+ Return axtls.ssl_obj_load(m_ctx, obj_type, filename, password)
+ End Function
+
+ Public Function ObjLoad(ByVal obj_type As Integer, _
+ ByVal data As Byte(), ByVal len As Integer, _
+ password As String) As Integer
+ Return axtls.ssl_obj_memory_load( _
+ m_ctx, obj_type, data, len, password)
+ End Function
+ End Class
+
+ Public Class SSLServer
+ Inherits SSLCTX
+
+ Public Sub New(ByVal options As Integer, _
+ ByVal num_sessions As Integer)
+ MyBase.New(options, num_sessions)
+ End Sub
+
+ Public Function Connect(ByVal s As Socket) As SSL
+ Dim client_fd As Integer = s.Handle.ToInt32()
+ Return New SSL(axtls.ssl_server_new(m_ctx, client_fd))
+ End Function
+ End Class
+
+ Public Class SSLClient
+ Inherits SSLCTX
+
+ Public Sub New(ByVal options As Integer, _
+ ByVal num_sessions As Integer)
+ MyBase.New(options, num_sessions)
+ End Sub
+
+ Public Function Connect(ByVal s As Socket, _
+ ByVal session_id As Byte()) As SSL
+ Dim client_fd As Integer = s.Handle.ToInt32()
+ Dim sess_id_size As Byte
+ If session_id is Nothing Then
+ sess_id_size = 0
+ Else
+ sess_id_size = session_id.Length
+ End If
+
+ Return New SSL(axtls.ssl_client_new(m_ctx, client_fd, session_id, _
+ sess_id_size))
+ End Function
+
+ End Class
+End Namespace