public void UpdateCertificates(X509Certificate cert, X509Certificate[] ca) { if (_sslContext == -1) { throw new InvalidOperationException(); } SslNative.UpdateCertificates(_sslContext, cert, ca); }
protected override void Dispose(bool disposing) { if (!_disposed) { _disposed = true; if (_socket.m_Handle != -1) { SslNative.SecureCloseSocket(_socket); _socket.m_Handle = -1; } if (_sslContext != -1) { SslNative.ExitSecureContext(_sslContext); _sslContext = -1; } } }
internal void Authenticate(bool isServer, string targetHost, X509Certificate certificate, X509Certificate[] ca, SslVerification verify, params SslProtocols[] sslProtocols) { SslProtocols vers = (SslProtocols)0; if (-1 != _sslContext) { throw new InvalidOperationException(); } for (int i = sslProtocols.Length - 1; i >= 0; i--) { vers |= sslProtocols[i]; } _isServer = isServer; try { if (isServer) { _sslContext = SslNative.SecureServerInit((int)vers, (int)verify, certificate, ca); SslNative.SecureAccept(_sslContext, _socket); } else { _sslContext = SslNative.SecureClientInit((int)vers, (int)verify, certificate, ca); SslNative.SecureConnect(_sslContext, targetHost, _socket); } } catch { if (_sslContext != -1) { SslNative.ExitSecureContext(_sslContext); _sslContext = -1; } throw; } }
public override void Write(byte[] buffer, int offset, int size) { if (buffer == null) { throw new ArgumentNullException(); } if (_disposed) { throw new ObjectDisposedException(); } if (offset < 0 || offset > buffer.Length) { throw new ArgumentOutOfRangeException(); } if (size < 0 || size > buffer.Length - offset) { throw new ArgumentOutOfRangeException(); } SslNative.SecureWrite(_socket, buffer, offset, size, _socket.SendTimeout); }
public override int Read(byte[] buffer, int offset, int size) { if (buffer == null) { throw new ArgumentNullException(); } if (_disposed) { throw new ObjectDisposedException(); } if (offset < 0 || offset > buffer.Length) { throw new ArgumentOutOfRangeException(); } if (size < 0 || size > buffer.Length - offset) { throw new ArgumentOutOfRangeException(); } return(SslNative.SecureRead(_socket, buffer, offset, size, _socket.ReceiveTimeout)); }
public void Initialize() { SslNative.ParseCertificate(m_certificate, m_password, ref m_issuer, ref m_subject, ref m_effectiveDate, ref m_expirationDate); }