Index: sdk/lib/io/http.dart |
diff --git a/sdk/lib/io/http.dart b/sdk/lib/io/http.dart |
index 24cb85b8c54418e922a1f740d3c08ce18a4b927f..4a0fbef6907ca8f2c8ab464ad1689702fbecaf1a 100644 |
--- a/sdk/lib/io/http.dart |
+++ b/sdk/lib/io/http.dart |
@@ -63,15 +63,16 @@ abstract class HttpServer { |
* [port]. If a [port] of 0 is specified the server will choose an |
* ephemeral port. The optional argument [backlog] can be used to |
* specify the listen backlog for the underlying OS listen. |
- * The optional argument [certificate_name] is used by the HttpsServer |
- * class, which shares the same interface. |
+ * The optional arguments [certificate_name] and [requestClientCertificate] |
+ * are used by the HttpsServer class, which shares the same interface. |
* See [addRequestHandler] and [defaultRequestHandler] for |
* information on how incoming HTTP requests are handled. |
*/ |
void listen(String host, |
int port, |
{int backlog: 128, |
- String certificate_name}); |
+ String certificate_name, |
+ bool requestClientCertificate: false}); |
/** |
* Attach the HTTP server to an existing [:ServerSocket:]. If the |
@@ -637,6 +638,14 @@ abstract class HttpRequest { |
List<Cookie> get cookies; |
/** |
+ * Returns the client certificate of the client making the request. |
+ * Returns null if the connection is not a secure TLS or SSL connection, |
+ * or if the server does not request a client certificate, or if the client |
+ * does not provide one. |
+ */ |
+ X509Certificate get certificate; |
+ |
+ /** |
* Returns, or initialize, a session for the given request. If the session is |
* being initialized by this call, [init] will be called with the |
* newly create session. Here the [:HttpSession.data:] field can be set, if |
@@ -821,6 +830,23 @@ abstract class HttpClient { |
void addCredentials(Uri url, String realm, HttpClientCredentials credentials); |
/** |
+ * If [sendClientCertificate] is set to true, authenticate with a client |
+ * certificate when connecting with an HTTPS server that requests one. |
+ * Select the certificate from the certificate database that matches |
+ * the authorities listed by the HTTPS server as valid. |
+ * If [clientCertificate] is set, send the certificate with that nickname |
+ * instead. |
+ */ |
+ set sendClientCertificate(bool send); |
+ |
+ /** |
+ * If [clientCertificate] is non-null and [sendClientCertificate] is true, |
+ * use [clientCertificate] to select the certificate to send from the |
+ * certificate database, looking it up by its nickname. |
+ */ |
+ set clientCertificate(String nickname); |
+ |
+ /** |
* Sets the function used to resolve the proxy server to be used for |
* opening a HTTP connection to the specified [url]. If this |
* function is not set, direct connections will always be used. |
@@ -1036,6 +1062,12 @@ abstract class HttpClientResponse { |
List<Cookie> get cookies; |
/** |
+ * Returns the certificate of the HTTPS server providing the response. |
+ * Returns null if the connection is not a secure TLS or SSL connection. |
+ */ |
+ X509Certificate get certificate; |
+ |
+ /** |
* Returns the input stream for the response. This is used to read |
* the response data. |
*/ |