MobileAuthenticatedStream parent;
bool serverMode;
string targetHost;
+ string serverName;
SslProtocols enabledProtocols;
X509Certificate serverCertificate;
X509CertificateCollection clientCertificates;
this.clientCertificates = clientCertificates;
this.askForClientCert = askForClientCert;
+ serverName = targetHost;
+ if (!string.IsNullOrEmpty (serverName)) {
+ var pos = serverName.IndexOf (':');
+ if (pos > 0)
+ serverName = serverName.Substring (0, pos);
+ }
+
certificateValidator = CertificateValidationHelper.GetInternalValidator (
parent.Settings, parent.Provider);
}
get { return targetHost; }
}
+ protected string ServerName {
+ get { return serverName; }
+ }
+
protected bool AskForClientCertificate {
get { return askForClientCert; }
}
public abstract int Write (byte[] buffer, int offset, int count, out bool wantMore);
- public abstract void Close ();
+ public abstract void Shutdown ();
+
+ protected bool ValidateCertificate (X509Certificate leaf, X509Chain chain)
+ {
+ var result = certificateValidator.ValidateCertificate (TargetHost, IsServer, leaf, chain);
+ return result != null && result.Trusted && !result.UserDenied;
+ }
- protected ValidationResult ValidateCertificate (X509Certificate leaf, X509Chain chain)
+ protected bool ValidateCertificate (X509CertificateCollection certificates)
{
- return certificateValidator.ValidateCertificate (
- targetHost, serverMode, leaf, chain);
+ var result = certificateValidator.ValidateCertificate (TargetHost, IsServer, certificates);
+ return result != null && result.Trusted && !result.UserDenied;
}
- protected X509Certificate SelectClientCertificate (string[] acceptableIssuers)
- {
- X509Certificate certificate;
- var selected = certificateValidator.SelectClientCertificate (
- targetHost, clientCertificates, serverCertificate,
- null, out certificate);
- if (selected)
- return certificate;
+ protected X509Certificate SelectClientCertificate (X509Certificate serverCertificate, string[] acceptableIssuers)
+ {
+ X509Certificate certificate;
+ var selected = certificateValidator.SelectClientCertificate (
+ TargetHost, ClientCertificates, serverCertificate, acceptableIssuers, out certificate);
+ if (selected)
+ return certificate;
- if (clientCertificates == null || clientCertificates.Count == 0)
- return null;
+ if (clientCertificates == null || clientCertificates.Count == 0)
+ return null;
- if (clientCertificates.Count == 1)
- return clientCertificates [0];
+ if (clientCertificates.Count == 1)
+ return clientCertificates [0];
- // FIXME: select one.
- throw new NotImplementedException ();
- }
+ // FIXME: select onne.
+ throw new NotImplementedException ();
+ }
public void Dispose ()
{