return NoReflectionHelper.CreateHttpsRequest (requestUri, provider, settings);
}
- public static HttpListener CreateHttpListener (X509Certificate2 certificate, MonoTlsProvider provider = null, MonoTlsSettings settings = null)
+ public static HttpListener CreateHttpListener (X509Certificate certificate, MonoTlsProvider provider = null, MonoTlsSettings settings = null)
{
return (HttpListener)NoReflectionHelper.CreateHttpListener (certificate, provider, settings);
}
var certs = new XX509CertificateCollection ();
certs.Add (new X509Certificate2 (certificate.GetRawCertData ()));
- var result = ValidateChain (string.Empty, false, certs, (SslPolicyErrors)errors);
+ var result = ValidateChain (string.Empty, true, certs, (SslPolicyErrors)errors);
if (result == null)
return false;
public ValidationResult ValidateClientCertificate (XX509CertificateCollection certs)
{
- return ValidateChain (string.Empty, false, certs, 0);
+ return ValidateChain (string.Empty, true, certs, 0);
}
public ValidationResult ValidateChain (string host, XX509CertificateCollection certs)
{
try {
- var result = ValidateChain (host, true, certs, 0);
+ var result = ValidateChain (host, false, certs, 0);
if (tlsStream != null)
tlsStream.CertificateValidationFailed = result == null || !result.Trusted || result.UserDenied;
return result;
}
}
- internal static HttpListener CreateHttpListener (X509Certificate2 certificate, MSI.MonoTlsProvider provider, MSI.MonoTlsSettings settings)
+ internal static HttpListener CreateHttpListener (X509Certificate certificate, MSI.MonoTlsProvider provider, MSI.MonoTlsSettings settings)
{
lock (locker) {
var internalProvider = provider != null ? new Private.MonoTlsProviderWrapper (provider) : null;
internal static object CreateHttpListener (object certificate, object provider, object settings)
{
#if SECURITY_DEP
- return MonoTlsProviderFactory.CreateHttpListener ((X509Certificate2)certificate, (MSI.MonoTlsProvider)provider, (MSI.MonoTlsSettings)settings);
+ return MonoTlsProviderFactory.CreateHttpListener ((X509Certificate)certificate, (MSI.MonoTlsProvider)provider, (MSI.MonoTlsSettings)settings);
#else
throw new NotSupportedException ();
#endif
Hashtable prefixes; // Dictionary <ListenerPrefix, HttpListener>
ArrayList unhandled; // List<ListenerPrefix> unhandled; host = '*'
ArrayList all; // List<ListenerPrefix> all; host = '+'
- X509Certificate2 cert;
+ X509Certificate cert;
bool secure;
Dictionary<HttpConnection, HttpConnection> unregistered;
if (accepted == null)
return;
- if (epl.secure && (epl.cert == null || !epl.cert.HasPrivateKey)) {
+ if (epl.secure && epl.cert == null) {
accepted.Close ();
return;
}
int reuses;
bool context_bound;
bool secure;
- X509Certificate2 cert;
+ X509Certificate cert;
int s_timeout = 90000; // 90k ms for first request, 15k ms from then on
Timer timer;
IPEndPoint local_ep;
X509Certificate2 client_cert;
IMonoSslStream ssl_stream;
- public HttpConnection (Socket sock, EndPointListener epl, bool secure, X509Certificate2 cert)
+ public HttpConnection (Socket sock, EndPointListener epl, bool secure, X509Certificate cert)
{
this.sock = sock;
this.epl = epl;
IMonoTlsProvider tlsProvider;
MSI.MonoTlsSettings tlsSettings;
- X509Certificate2 certificate;
+ X509Certificate certificate;
Hashtable registry; // Dictionary<HttpListenerContext,HttpListenerContext>
ArrayList ctx_queue; // List<HttpListenerContext> ctx_queue;
auth_schemes = AuthenticationSchemes.Anonymous;
}
- internal HttpListener (X509Certificate2 certificate, IMonoTlsProvider tlsProvider, MSI.MonoTlsSettings tlsSettings)
+ internal HttpListener (X509Certificate certificate, IMonoTlsProvider tlsProvider, MSI.MonoTlsSettings tlsSettings)
: this ()
{
this.certificate = certificate;
this.tlsSettings = tlsSettings;
}
- internal X509Certificate2 LoadCertificateAndKey (IPAddress addr, int port)
+ internal X509Certificate LoadCertificateAndKey (IPAddress addr, int port)
{
lock (registry) {
if (certificate != null)
string pvk_file = Path.Combine (path, String.Format ("{0}.pvk", port));
if (!File.Exists (pvk_file))
return null;
- certificate = new X509Certificate2 (cert_file);
- certificate.PrivateKey = PrivateKey.CreateFromFile (pvk_file).RSA;
+ var cert = new X509Certificate2 (cert_file);
+ cert.PrivateKey = PrivateKey.CreateFromFile (pvk_file).RSA;
+ certificate = cert;
return certificate;
} catch {
// ignore errors