xref: /aosp_15_r20/external/cronet/net/websockets/websocket_handshake_constants.h (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
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