LocalCertificateSelectionCallback Delegat
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Wählt das für die Authentifizierung verwendete SSL (Secure Sockets Layer)-Remotezertifikat aus.
public delegate System::Security::Cryptography::X509Certificates::X509Certificate ^ LocalCertificateSelectionCallback(System::Object ^ sender, System::String ^ targetHost, X509CertificateCollection ^ localCertificates, X509Certificate ^ remoteCertificate, cli::array <System::String ^> ^ acceptableIssuers);
public delegate System.Security.Cryptography.X509Certificates.X509Certificate LocalCertificateSelectionCallback(object sender, string targetHost, X509CertificateCollection localCertificates, X509Certificate? remoteCertificate, string[] acceptableIssuers);
public delegate System.Security.Cryptography.X509Certificates.X509Certificate LocalCertificateSelectionCallback(object sender, string targetHost, X509CertificateCollection localCertificates, X509Certificate remoteCertificate, string[] acceptableIssuers);
type LocalCertificateSelectionCallback = delegate of obj * string * X509CertificateCollection * X509Certificate * string[] -> X509Certificate
Public Delegate Function LocalCertificateSelectionCallback(sender As Object, targetHost As String, localCertificates As X509CertificateCollection, remoteCertificate As X509Certificate, acceptableIssuers As String()) As X509Certificate
Parameter
- sender
- Object
Ein Objekt mit Zustandsinformationen für diese Validierung.
- targetHost
- String
Der vom Client angegebene Hostserver.
- localCertificates
- X509CertificateCollection
Eine X509CertificateCollection mit lokalen Zertifikaten.
- remoteCertificate
- X509Certificate
Das zum Authentifizieren der Remoteseite verwendete Zertifikat.
- acceptableIssuers
- String[]
Ein String-Array der Zertifikatsaussteller, die von der Remoteseite akzeptiert werden können.
Rückgabewert
Ein X509Certificate, das zum Herstellen einer SSL-Verbindung verwendet wird.
Beispiele
Im folgenden Codebeispiel wird eine Methodenimplementierung für diesen Delegaten veranschaulicht.
static X509Certificate^ SelectLocalCertificate(
Object^ sender,
String^ targetHost,
X509CertificateCollection^ localCertificates,
X509Certificate^ remoteCertificate,
array<String^>^ acceptableIssuers
)
{
Console::WriteLine("Client is selecting a local certificate.");
if (acceptableIssuers != nullptr &&
acceptableIssuers->Length > 0 &&
localCertificates != nullptr &&
localCertificates->Count > 0)
{
// Use the first certificate that is from an acceptable issuer.
IEnumerator^ myEnum1 = localCertificates->GetEnumerator();
while ( myEnum1->MoveNext() )
{
X509Certificate^ certificate = safe_cast<X509Certificate^>(myEnum1->Current);
String^ issuer = certificate->Issuer;
if ( Array::IndexOf( acceptableIssuers, issuer ) != -1 )
return certificate;
}
}
if (localCertificates != nullptr &&
localCertificates->Count > 0)
return localCertificates[0];
return nullptr;
}
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;
}
Im folgenden Codebeispiel wird das Erstellen einer instance dieses Delegaten veranschaulicht.
// Server name must match the host name and the name on the host's certificate.
serverName = args[ 1 ];
// Create a TCP/IP client socket.
TcpClient^ client = gcnew TcpClient( serverName,5000 );
Console::WriteLine( L"Client connected." );
// Create an SSL stream that will close the client's stream.
SslStream^ sslStream = gcnew SslStream(
client->GetStream(),
false,
gcnew RemoteCertificateValidationCallback( ValidateServerCertificate ),
gcnew LocalCertificateSelectionCallback( SelectLocalCertificate ) );
// 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,5000);
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)
);
Hinweise
Dieser Delegat wird verwendet, um Instanzen der SslStream -Klasse zu erstellen. Die SslStream -Klasse wird verwendet, um informationen zu schützen, die zwischen einem Client und einem Server ausgetauscht werden. Client und Server verwenden diesen Delegat, um ein Zertifikat auszuwählen, das für die Authentifizierung verwendet werden soll.
Erweiterungsmethoden
GetMethodInfo(Delegate) |
Ruft ein Objekt ab, das die Methode darstellt, die vom angegebenen Delegaten dargestellt wird. |