internal TlsClientPipeline(IPipeConnection inputPipe, SSL_CTX context, ClientOptions clientOptions) { _innerConnection = inputPipe; _readInnerPipe = new Pipe(new PipeOptions(System.Buffers.MemoryPool.Default)); _writeInnerPipe = new Pipe(new PipeOptions(System.Buffers.MemoryPool.Default)); _context = context; _ssl = SSL_new(_context); _clientOptions = clientOptions; _readBio = s_ReadBio.New(); _writeBio = s_WriteBio.New(); SSL_set0_rbio(_ssl, _readBio); SSL_set0_wbio(_ssl, _writeBio); SSL_set_connect_state(_ssl); }
public List <string> GetCipherList() { List <string> ret = new List <string>(); SSL_CTX raw = (SSL_CTX)Marshal.PtrToStructure(ptr, typeof(SSL_CTX)); Core.Stack <SslCipher> stack = new Core.Stack <SslCipher>(raw.cipher_list, false); foreach (SslCipher cipher in stack) { IntPtr cipher_ptr = Native.SSL_CIPHER_description(cipher.Handle, null, 0); if (cipher_ptr != IntPtr.Zero) { string strCipher = Marshal.PtrToStringAnsi(cipher_ptr); ret.Add(strCipher); Native.OPENSSL_free(cipher_ptr); } } return(ret); }
public static void SSL_CTX_use_certificate(SSL_CTX ctx, X509 cert) { var result = Internal_SSL_CTX_use_certificate(ctx, cert); ThrowOnErrorReturnCode(result); }
private unsafe extern static int Internal_SSL_CTX_use_certificate(SSL_CTX ctx, X509 cert);
private unsafe extern static int Internal_SSL_CTX_use_PrivateKey(SSL_CTX ctx, EVP_PKEY pkey);
public static void SSL_CTX_use_PrivateKey(SSL_CTX ctx, EVP_PKEY key) { var result = Internal_SSL_CTX_use_PrivateKey(ctx, key); ThrowOnErrorReturnCode(result); }
public unsafe static void SSL_CTX_set_max_proto_version(SSL_CTX ctx, TLS_VERSION version) { var result = SSL_CTX_ctrl(ctx, SSL_CTRL.SSL_CTRL_SET_MAX_PROTO_VERSION, (int)version, null); ThrowOnErrorReturnCode(result); }
public static extern SSL SSL_new(SSL_CTX ctx);
private unsafe extern static int SSL_CTX_ctrl(SSL_CTX ctx, SSL_CTRL cmd, int larg, void *ptr);