Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(16)

Side by Side Diff: sdk/lib/io/http.dart

Issue 11553027: Add client certificates to HttpsServer and HttpClient. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Remove two stray lines. Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « runtime/bin/secure_socket.cc ('k') | sdk/lib/io/http_impl.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 /** 5 /**
6 * HTTP status codes. 6 * HTTP status codes.
7 */ 7 */
8 abstract class HttpStatus { 8 abstract class HttpStatus {
9 static const int CONTINUE = 100; 9 static const int CONTINUE = 100;
10 static const int SWITCHING_PROTOCOLS = 101; 10 static const int SWITCHING_PROTOCOLS = 101;
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 * HTTP server. 56 * HTTP server.
57 */ 57 */
58 abstract class HttpServer { 58 abstract class HttpServer {
59 factory HttpServer() => new _HttpServer(); 59 factory HttpServer() => new _HttpServer();
60 60
61 /** 61 /**
62 * Start listening for HTTP requests on the specified [host] and 62 * Start listening for HTTP requests on the specified [host] and
63 * [port]. If a [port] of 0 is specified the server will choose an 63 * [port]. If a [port] of 0 is specified the server will choose an
64 * ephemeral port. The optional argument [backlog] can be used to 64 * ephemeral port. The optional argument [backlog] can be used to
65 * specify the listen backlog for the underlying OS listen. 65 * specify the listen backlog for the underlying OS listen.
66 * The optional argument [certificate_name] is used by the HttpsServer 66 * The optional arguments [certificate_name] and [requestClientCertificate]
67 * class, which shares the same interface. 67 * are used by the HttpsServer class, which shares the same interface.
68 * See [addRequestHandler] and [defaultRequestHandler] for 68 * See [addRequestHandler] and [defaultRequestHandler] for
69 * information on how incoming HTTP requests are handled. 69 * information on how incoming HTTP requests are handled.
70 */ 70 */
71 void listen(String host, 71 void listen(String host,
72 int port, 72 int port,
73 {int backlog: 128, 73 {int backlog: 128,
74 String certificate_name}); 74 String certificate_name,
75 bool requestClientCertificate: false});
75 76
76 /** 77 /**
77 * Attach the HTTP server to an existing [:ServerSocket:]. If the 78 * Attach the HTTP server to an existing [:ServerSocket:]. If the
78 * [HttpServer] is closed, the [HttpServer] will just detach itself, 79 * [HttpServer] is closed, the [HttpServer] will just detach itself,
79 * and not close [serverSocket]. 80 * and not close [serverSocket].
80 */ 81 */
81 void listenOn(ServerSocket serverSocket); 82 void listenOn(ServerSocket serverSocket);
82 83
83 /** 84 /**
84 * Adds a request handler to the list of request handlers. The 85 * Adds a request handler to the list of request handlers. The
(...skipping 545 matching lines...) Expand 10 before | Expand all | Expand 10 after
630 * Returns the request headers. 631 * Returns the request headers.
631 */ 632 */
632 HttpHeaders get headers; 633 HttpHeaders get headers;
633 634
634 /** 635 /**
635 * Returns the cookies in the request (from the Cookie headers). 636 * Returns the cookies in the request (from the Cookie headers).
636 */ 637 */
637 List<Cookie> get cookies; 638 List<Cookie> get cookies;
638 639
639 /** 640 /**
641 * Returns the client certificate of the client making the request.
642 * Returns null if the connection is not a secure TLS or SSL connection,
643 * or if the server does not request a client certificate, or if the client
644 * does not provide one.
645 */
646 X509Certificate get certificate;
647
648 /**
640 * Returns, or initialize, a session for the given request. If the session is 649 * Returns, or initialize, a session for the given request. If the session is
641 * being initialized by this call, [init] will be called with the 650 * being initialized by this call, [init] will be called with the
642 * newly create session. Here the [:HttpSession.data:] field can be set, if 651 * newly create session. Here the [:HttpSession.data:] field can be set, if
643 * needed. 652 * needed.
644 * See [:HttpServer.sessionTimeout:] on how to change default timeout. 653 * See [:HttpServer.sessionTimeout:] on how to change default timeout.
645 */ 654 */
646 HttpSession session([init(HttpSession session)]); 655 HttpSession session([init(HttpSession session)]);
647 656
648 /** 657 /**
649 * Returns the input stream for the request. This is used to read 658 * Returns the input stream for the request. This is used to read
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
814 * continue normally. 823 * continue normally.
815 */ 824 */
816 set authenticate(Future<bool> f(Uri url, String scheme, String realm)); 825 set authenticate(Future<bool> f(Uri url, String scheme, String realm));
817 826
818 /** 827 /**
819 * Add credentials to be used for authorizing HTTP requests. 828 * Add credentials to be used for authorizing HTTP requests.
820 */ 829 */
821 void addCredentials(Uri url, String realm, HttpClientCredentials credentials); 830 void addCredentials(Uri url, String realm, HttpClientCredentials credentials);
822 831
823 /** 832 /**
833 * If [sendClientCertificate] is set to true, authenticate with a client
834 * certificate when connecting with an HTTPS server that requests one.
835 * Select the certificate from the certificate database that matches
836 * the authorities listed by the HTTPS server as valid.
837 * If [clientCertificate] is set, send the certificate with that nickname
838 * instead.
839 */
840 set sendClientCertificate(bool send);
841
842 /**
843 * If [clientCertificate] is non-null and [sendClientCertificate] is true,
844 * use [clientCertificate] to select the certificate to send from the
845 * certificate database, looking it up by its nickname.
846 */
847 set clientCertificate(String nickname);
848
849 /**
824 * Sets the function used to resolve the proxy server to be used for 850 * Sets the function used to resolve the proxy server to be used for
825 * opening a HTTP connection to the specified [url]. If this 851 * opening a HTTP connection to the specified [url]. If this
826 * function is not set, direct connections will always be used. 852 * function is not set, direct connections will always be used.
827 * 853 *
828 * The string returned by [f] must be in the format used by browser 854 * The string returned by [f] must be in the format used by browser
829 * PAC (proxy auto-config) scripts. That is either 855 * PAC (proxy auto-config) scripts. That is either
830 * 856 *
831 * "DIRECT" 857 * "DIRECT"
832 * 858 *
833 * for using a direct connection or 859 * for using a direct connection or
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
1029 * Returns the response headers. 1055 * Returns the response headers.
1030 */ 1056 */
1031 HttpHeaders get headers; 1057 HttpHeaders get headers;
1032 1058
1033 /** 1059 /**
1034 * Cookies set by the server (from the Set-Cookie header). 1060 * Cookies set by the server (from the Set-Cookie header).
1035 */ 1061 */
1036 List<Cookie> get cookies; 1062 List<Cookie> get cookies;
1037 1063
1038 /** 1064 /**
1065 * Returns the certificate of the HTTPS server providing the response.
1066 * Returns null if the connection is not a secure TLS or SSL connection.
1067 */
1068 X509Certificate get certificate;
1069
1070 /**
1039 * Returns the input stream for the response. This is used to read 1071 * Returns the input stream for the response. This is used to read
1040 * the response data. 1072 * the response data.
1041 */ 1073 */
1042 InputStream get inputStream; 1074 InputStream get inputStream;
1043 } 1075 }
1044 1076
1045 1077
1046 abstract class HttpClientCredentials { } 1078 abstract class HttpClientCredentials { }
1047 1079
1048 1080
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
1125 class RedirectLimitExceededException extends RedirectException { 1157 class RedirectLimitExceededException extends RedirectException {
1126 const RedirectLimitExceededException(List<RedirectInfo> redirects) 1158 const RedirectLimitExceededException(List<RedirectInfo> redirects)
1127 : super("Redirect limit exceeded", redirects); 1159 : super("Redirect limit exceeded", redirects);
1128 } 1160 }
1129 1161
1130 1162
1131 class RedirectLoopException extends RedirectException { 1163 class RedirectLoopException extends RedirectException {
1132 const RedirectLoopException(List<RedirectInfo> redirects) 1164 const RedirectLoopException(List<RedirectInfo> redirects)
1133 : super("Redirect loop detected", redirects); 1165 : super("Redirect loop detected", redirects);
1134 } 1166 }
OLDNEW
« no previous file with comments | « runtime/bin/secure_socket.cc ('k') | sdk/lib/io/http_impl.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698