private X509Certificate SelectLocalCertificate(object sender,
string targetHost,
X509CertificateCollection localCertificates,
X509Certificate remoteCertificate,
string[] acceptableIssuers)
{
Tracer.DebugFormat("Client is selecting a local certificate from {0} possibilities.", localCertificates.Count);
if(localCertificates.Count == 1)
{
Tracer.Debug("Client has selected certificate with Subject = " + localCertificates[0].Subject);
return localCertificates[0];
}
else if(localCertificates.Count > 1 && this.clientCertSubject != null)
{
foreach(X509Certificate2 certificate in localCertificates)
{
Tracer.Debug("Checking Client Certificate := " + certificate.ToString());
if(String.Compare(certificate.Subject, this.clientCertSubject, true) == 0)
{
Tracer.Debug("Client has selected certificate with Subject = " + certificate.Subject);
return certificate;
}
}
}
Tracer.Debug("Client did not select a Certificate, returning null.");
return null;
}