public async Task EndGetClientCertificate_AlreadyCalled_ThrowsInvalidOperationException() { HttpListenerRequest request = await GetRequest("POST", null, null); IAsyncResult beginGetClientCertificateResult = request.BeginGetClientCertificate(null, null); request.EndGetClientCertificate(beginGetClientCertificateResult); Assert.Throws <InvalidOperationException>(() => request.EndGetClientCertificate(beginGetClientCertificateResult)); }
public async Task EndGetClientCertificate_InvalidAsyncResult_ThrowsArgumentException() { HttpListenerRequest request1 = await GetRequest("POST", null, null); using (var requestTests = new HttpListenerRequestTests()) { HttpListenerRequest request2 = await requestTests.GetRequest("POST", null, null); IAsyncResult beginGetClientCertificateResult1 = request1.BeginGetClientCertificate(null, null); AssertExtensions.Throws <ArgumentException>("asyncResult", () => request2.EndGetClientCertificate(new CustomAsyncResult())); AssertExtensions.Throws <ArgumentException>("asyncResult", () => request2.EndGetClientCertificate(beginGetClientCertificateResult1)); } }
public static void GetClientCertificate(HttpListenerRequest request, Action <Exception, X509Certificate2> callback) { try { request.BeginGetClientCertificate((result) => { try { var certificate = request.EndGetClientCertificate(result); Loop.Post(() => { callback(null, certificate); }); } catch (Exception exception) { Loop.Post(() => { callback(exception, null); }); } }, null); } catch (Exception exception) { callback(exception, null); } }
private Request ConvertRequestToNancyRequest(HttpListenerRequest request) { var asyncResult = request.BeginGetClientCertificate(null, null); var baseUri = baseUriList.FirstOrDefault(uri => uri.IsCaseInsensitiveBaseOf(request.Url)); if (baseUri == null) { throw new InvalidOperationException(String.Format("Unable to locate base URI for request: {0}", request.Url)); } var expectedRequestLength = GetExpectedRequestLength(request.Headers.ToDictionary()); var relativeUrl = baseUri.MakeAppLocalPath(request.Url); var nancyUrl = new Url { Scheme = request.Url.Scheme, HostName = request.Url.Host, Port = request.Url.IsDefaultPort ? null : (int?)request.Url.Port, BasePath = baseUri.AbsolutePath.TrimEnd('/'), Path = HttpUtility.UrlDecode(relativeUrl), Query = request.Url.Query, Fragment = request.Url.Fragment, }; byte[] certificate = null; var x509Certificate = request.EndGetClientCertificate(asyncResult); if (x509Certificate != null) { certificate = x509Certificate.RawData; } return(new Request( request.HttpMethod, nancyUrl, RequestStream.FromStream(request.InputStream, expectedRequestLength, false), request.Headers.ToDictionary(), (request.RemoteEndPoint != null) ? request.RemoteEndPoint.Address.ToString() : null, certificate)); }
public async Task EndGetClientCertificate_NullAsyncResult_ThrowsArgumentException() { HttpListenerRequest request = await GetRequest("POST", null, null); AssertExtensions.Throws <ArgumentNullException>("asyncResult", () => request.EndGetClientCertificate(null)); }
public X509Certificate2 EndGetClientCertificate(IAsyncResult asyncResult) { return(Request.EndGetClientCertificate(asyncResult)); }
/// <summary> /// See interface docs. /// </summary> /// <param name="asyncResult"></param> /// <returns></returns> public X509Certificate2 EndGetClientCertificate(IAsyncResult asyncResult) => _Wrapped.EndGetClientCertificate(asyncResult);