public static MonoNewTlsStream CreateClient ( Stream innerStream, bool leaveOpen, ICertificateValidator certificateValidator, TlsSettings settings, string targetHost, PSSCX.X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, bool checkCertificateRevocation) { var stream = new MonoNewTlsStream (innerStream, leaveOpen, certificateValidator, settings); try { stream.AuthenticateAsClient (targetHost, clientCertificates, enabledSslProtocols, checkCertificateRevocation); } catch (Exception ex) { var tlsEx = stream.LastError; if (tlsEx != null) throw new AggregateException (ex, tlsEx); throw; } return stream; }
public override MSI.IMonoTlsContext CreateTlsContext ( string hostname, bool serverMode, MSI.TlsProtocols protocolFlags, SSCX.X509Certificate serverCertificate, PSSCX.X509CertificateCollection clientCertificates, bool remoteCertRequired, MSI.MonoEncryptionPolicy encryptionPolicy, MSI.MonoTlsSettings settings) { TlsConfiguration config; if (serverMode) { var cert = (PSSCX.X509Certificate2)serverCertificate; var monoCert = new MX.X509Certificate (cert.RawData); config = new TlsConfiguration ((TlsProtocols)protocolFlags, (MSI.MonoTlsSettings)settings, monoCert, cert.PrivateKey); if (remoteCertRequired) config.AskForClientCertificate = true; } else { config = new TlsConfiguration ((TlsProtocols)protocolFlags, (MSI.MonoTlsSettings)settings, hostname); } return new TlsContextWrapper (config, serverMode); }
public SSCX.X509Certificate GetRemoteCertificate (out PSSCX.X509CertificateCollection remoteCertificateStore) { MX.X509CertificateCollection monoCollection; var remoteCert = Context.GetRemoteCertificate (out monoCollection); if (remoteCert == null) { remoteCertificateStore = null; return null; } remoteCertificateStore = new PSSCX.X509CertificateCollection (); foreach (var cert in monoCollection) { remoteCertificateStore.Add (new PSSCX.X509Certificate2 (cert.RawData)); } return new PSSCX.X509Certificate2 (remoteCert.RawData); }