/// <summary> /// Constructor. /// </summary> /// <param name="transport"> /// an AdtsLdapSslTlsSecurityLayer object that provides the security layer. /// </param> /// <exception cref="ArgumentNullException"> /// thrown when security is null. /// </exception> public AdtsLdapSecurityStream(AdtsLdapSslTlsSecurityLayer security) { if (security == null) { throw new ArgumentNullException("security"); } this.security = security; this.receivedBuffer = new AdtsLdapSecurityBuffer(); this.sentBuffer = new AdtsLdapSecurityBuffer(); this.receivedEvent = new ManualResetEvent(false); this.lockObjectForReadWriteThread = new object(); this.lockObjectForReadThreads = new object(); }
/// <summary> /// server authenticate over SSL/TLS with client. /// </summary> /// <param name="context"> /// an AdtsLdapContext object that indicates the context of LDAP. /// </param> /// <param name="certificate"> /// a X509Certificate that specifies the certificate used to authenticate the server. /// </param> /// <param name="enableMessageSecurity"> /// a bool value that indicates whether enable message security. /// </param> /// <exception cref="ArgumentNullException"> /// thrown when context is null. /// </exception> /// <exception cref="ArgumentNullException"> /// thrown when certificate is null. /// </exception> public void SslAuthenticate( AdtsLdapContext context, X509Certificate certificate, bool enableMessageSecurity) { if (context == null) { throw new ArgumentNullException("context"); } if (certificate == null) { throw new ArgumentNullException("certificate"); } this.SslStartup(context); AdtsLdapSslTlsSecurityLayer sslSecurity = context.Security as AdtsLdapSslTlsSecurityLayer; context.UsingMessageSecurity = enableMessageSecurity; sslSecurity.AuthenticateAsServer(certificate); }