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

Unified Diff: net/http/http_network_transaction.h

Issue 1378613004: Set Token-Binding HTTP header (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@tb-tls-ext-new
Patch Set: Remove sequence numbers from mock reads Created 4 years, 11 months 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 side-by-side diff with in-line comments
Download patch
Index: net/http/http_network_transaction.h
diff --git a/net/http/http_network_transaction.h b/net/http/http_network_transaction.h
index f8584b842d850ddaf2808358247a41c3155bb55c..5b554afd8e8805ae16a931134ba3d7dd52fbc6d0 100644
--- a/net/http/http_network_transaction.h
+++ b/net/http/http_network_transaction.h
@@ -14,6 +14,7 @@
#include "base/memory/ref_counted.h"
#include "base/memory/scoped_ptr.h"
#include "base/time/time.h"
+#include "crypto/ec_private_key.h"
#include "net/base/net_error_details.h"
#include "net/base/request_priority.h"
#include "net/http/http_auth.h"
@@ -24,10 +25,15 @@
#include "net/log/net_log.h"
#include "net/proxy/proxy_service.h"
#include "net/socket/connection_attempts.h"
+#include "net/ssl/channel_id_service.h"
#include "net/ssl/ssl_config_service.h"
#include "net/ssl/ssl_failure_state.h"
#include "net/websockets/websocket_handshake_stream_base.h"
+namespace crypto {
+class ECPrivateKey;
+}
+
namespace net {
class BidirectionalStreamJob;
@@ -149,6 +155,8 @@ class NET_EXPORT_PRIVATE HttpNetworkTransaction
STATE_GENERATE_PROXY_AUTH_TOKEN_COMPLETE,
STATE_GENERATE_SERVER_AUTH_TOKEN,
STATE_GENERATE_SERVER_AUTH_TOKEN_COMPLETE,
+ STATE_GET_TOKEN_BINDING_KEY,
+ STATE_GET_TOKEN_BINDING_KEY_COMPLETE,
STATE_INIT_REQUEST_BODY,
STATE_INIT_REQUEST_BODY_COMPLETE,
STATE_BUILD_REQUEST,
@@ -165,6 +173,8 @@ class NET_EXPORT_PRIVATE HttpNetworkTransaction
};
bool IsSecureRequest() const;
+ bool IsTokenBindingEnabled() const;
+ void RecordTokenBindingSupport() const;
// Returns true if the request is using an HTTP(S) proxy without being
// tunneled via the CONNECT method.
@@ -189,6 +199,8 @@ class NET_EXPORT_PRIVATE HttpNetworkTransaction
int DoGenerateProxyAuthTokenComplete(int result);
int DoGenerateServerAuthToken();
int DoGenerateServerAuthTokenComplete(int result);
+ int DoGetTokenBindingKey();
+ int DoGetTokenBindingKeyComplete(int result);
int DoInitRequestBody();
int DoInitRequestBodyComplete(int result);
int DoBuildRequest();
@@ -202,7 +214,8 @@ class NET_EXPORT_PRIVATE HttpNetworkTransaction
int DoDrainBodyForAuthRestart();
int DoDrainBodyForAuthRestartComplete(int result);
- void BuildRequestHeaders(bool using_http_proxy_without_tunnel);
+ int BuildRequestHeaders(bool using_http_proxy_without_tunnel);
+ int BuildTokenBindingHeader(std::string* out);
// Writes a log message to help debugging in the field when we block a proxy
// response to a CONNECT request.
@@ -328,6 +341,11 @@ class NET_EXPORT_PRIVATE HttpNetworkTransaction
// The SSLFailureState which caused the last TLS version fallback.
SSLFailureState fallback_failure_state_;
+ // Key to use for signing message in Token Binding header.
+ scoped_ptr<crypto::ECPrivateKey> token_binding_key_;
+ // Object to manage lookup of |token_binding_key_|.
+ ChannelIDService::Request token_binding_request_;
+
HttpRequestHeaders request_headers_;
// The size in bytes of the buffer we use to drain the response body that

Powered by Google App Engine
This is Rietveld 408576698