1*6777b538SAndroid Build Coastguard Worker // Copyright 2013 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Worker // A set of common constants that are needed for the WebSocket handshake. 6*6777b538SAndroid Build Coastguard Worker // In general, you should prefer using these constants to literal strings, 7*6777b538SAndroid Build Coastguard Worker // except in tests. 8*6777b538SAndroid Build Coastguard Worker // 9*6777b538SAndroid Build Coastguard Worker // These constants cannot be used in files that are compiled on iOS, because 10*6777b538SAndroid Build Coastguard Worker // this file is not compiled on iOS. 11*6777b538SAndroid Build Coastguard Worker 12*6777b538SAndroid Build Coastguard Worker #ifndef NET_WEBSOCKETS_WEBSOCKET_HANDSHAKE_CONSTANTS_H_ 13*6777b538SAndroid Build Coastguard Worker #define NET_WEBSOCKETS_WEBSOCKET_HANDSHAKE_CONSTANTS_H_ 14*6777b538SAndroid Build Coastguard Worker 15*6777b538SAndroid Build Coastguard Worker #include <stddef.h> 16*6777b538SAndroid Build Coastguard Worker 17*6777b538SAndroid Build Coastguard Worker #include "net/base/net_export.h" 18*6777b538SAndroid Build Coastguard Worker 19*6777b538SAndroid Build Coastguard Worker // This file plases constants inside the ::net::websockets namespace to avoid 20*6777b538SAndroid Build Coastguard Worker // risk of collisions with other symbols in libnet. 21*6777b538SAndroid Build Coastguard Worker namespace net::websockets { 22*6777b538SAndroid Build Coastguard Worker 23*6777b538SAndroid Build Coastguard Worker // "HTTP/1.1" 24*6777b538SAndroid Build Coastguard Worker // RFC6455 only requires HTTP/1.1 "or better" but in practice an HTTP version 25*6777b538SAndroid Build Coastguard Worker // other than 1.1 should not occur in a WebSocket handshake. 26*6777b538SAndroid Build Coastguard Worker extern const char kHttpProtocolVersion[]; 27*6777b538SAndroid Build Coastguard Worker 28*6777b538SAndroid Build Coastguard Worker // The Sec-WebSockey-Key challenge is 16 random bytes, base64 encoded. 29*6777b538SAndroid Build Coastguard Worker inline constexpr size_t kRawChallengeLength = 16; 30*6777b538SAndroid Build Coastguard Worker 31*6777b538SAndroid Build Coastguard Worker // "Sec-WebSocket-Protocol" 32*6777b538SAndroid Build Coastguard Worker extern const char kSecWebSocketProtocol[]; 33*6777b538SAndroid Build Coastguard Worker 34*6777b538SAndroid Build Coastguard Worker // "Sec-WebSocket-Extensions" 35*6777b538SAndroid Build Coastguard Worker extern const char kSecWebSocketExtensions[]; 36*6777b538SAndroid Build Coastguard Worker 37*6777b538SAndroid Build Coastguard Worker // "Sec-WebSocket-Key" 38*6777b538SAndroid Build Coastguard Worker extern const char kSecWebSocketKey[]; 39*6777b538SAndroid Build Coastguard Worker 40*6777b538SAndroid Build Coastguard Worker // "Sec-WebSocket-Accept" 41*6777b538SAndroid Build Coastguard Worker extern const char kSecWebSocketAccept[]; 42*6777b538SAndroid Build Coastguard Worker 43*6777b538SAndroid Build Coastguard Worker // "Sec-WebSocket-Version" 44*6777b538SAndroid Build Coastguard Worker extern const char kSecWebSocketVersion[]; 45*6777b538SAndroid Build Coastguard Worker 46*6777b538SAndroid Build Coastguard Worker // This implementation only supports one version of the WebSocket protocol, 47*6777b538SAndroid Build Coastguard Worker // "13", as specified in RFC6455. If support for multiple versions is added in 48*6777b538SAndroid Build Coastguard Worker // future, it will probably no longer be worth having a constant for this. 49*6777b538SAndroid Build Coastguard Worker extern const char kSupportedVersion[]; 50*6777b538SAndroid Build Coastguard Worker 51*6777b538SAndroid Build Coastguard Worker // "Upgrade" 52*6777b538SAndroid Build Coastguard Worker extern const char kUpgrade[]; 53*6777b538SAndroid Build Coastguard Worker 54*6777b538SAndroid Build Coastguard Worker // "258EAFA5-E914-47DA-95CA-C5AB0DC85B11" as defined in section 4.1 of 55*6777b538SAndroid Build Coastguard Worker // RFC6455. 56*6777b538SAndroid Build Coastguard Worker extern const char NET_EXPORT kWebSocketGuid[]; 57*6777b538SAndroid Build Coastguard Worker 58*6777b538SAndroid Build Coastguard Worker // "websocket", as used in the "Upgrade:" header. This is always lowercase 59*6777b538SAndroid Build Coastguard Worker // (except in obsolete versions of the protocol). 60*6777b538SAndroid Build Coastguard Worker extern const char kWebSocketLowercase[]; 61*6777b538SAndroid Build Coastguard Worker 62*6777b538SAndroid Build Coastguard Worker } // namespace net::websockets 63*6777b538SAndroid Build Coastguard Worker 64*6777b538SAndroid Build Coastguard Worker #endif // NET_WEBSOCKETS_WEBSOCKET_HANDSHAKE_CONSTANTS_H_ 65