LocalCertificateSelectionCallback Delegate
.NET Framework (current version)
Selects the local Secure Sockets Layer (SSL) certificate used for authentication.
Assembly: System (in System.dll)
public delegate X509Certificate LocalCertificateSelectionCallback( object sender, string targetHost, X509CertificateCollection localCertificates, X509Certificate remoteCertificate, string[] acceptableIssuers )
Parameters
- sender
-
Type:
System.Object
An object that contains state information for this validation.
- targetHost
-
Type:
System.String
The host server specified by the client.
- localCertificates
-
Type:
System.Security.Cryptography.X509Certificates.X509CertificateCollection
An X509CertificateCollection containing local certificates.
- remoteCertificate
-
Type:
System.Security.Cryptography.X509Certificates.X509Certificate
The certificate used to authenticate the remote party.
- acceptableIssuers
-
Type:
System.String[]
A String array of certificate issuers acceptable to the remote party.
Return Value
Type: System.Security.Cryptography.X509Certificates.X509CertificateAn X509Certificate used for establishing an SSL connection.
The following code example demonstrates a method implementation for this delegate.
public static X509Certificate SelectLocalCertificate( object sender, string targetHost, X509CertificateCollection localCertificates, X509Certificate remoteCertificate, string[] acceptableIssuers) { Console.WriteLine("Client is selecting a local certificate."); if (acceptableIssuers != null && acceptableIssuers.Length > 0 && localCertificates != null && localCertificates.Count > 0) { // Use the first certificate that is from an acceptable issuer. foreach (X509Certificate certificate in localCertificates) { string issuer = certificate.Issuer; if (Array.IndexOf(acceptableIssuers, issuer) != -1) return certificate; } } if (localCertificates != null && localCertificates.Count > 0) return localCertificates[0]; return null; }
The following code example demonstrates creating an instance of this delegate.
// Server name must match the host name and the name on the host's certificate. serverName = args[0]; // Create a TCP/IP client socket. TcpClient client = new TcpClient(serverName,80); Console.WriteLine("Client connected."); // Create an SSL stream that will close the client's stream. SslStream sslStream = new SslStream( client.GetStream(), false, new RemoteCertificateValidationCallback (ValidateServerCertificate), new LocalCertificateSelectionCallback(SelectLocalCertificate) );
.NET Framework
Available since 2.0
Available since 2.0
Show: