1 /*
2  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License").
5  * You may not use this file except in compliance with the License.
6  * A copy of the License is located at
7  *
8  *  http://aws.amazon.com/apache2.0
9  *
10  * or in the "license" file accompanying this file. This file is distributed
11  * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
12  * express or implied. See the License for the specific language governing
13  * permissions and limitations under the License.
14  */
15 
16 #pragma once
17 
18 #define S2N_TLS_SECRET_LEN             48
19 #define S2N_TLS_RANDOM_DATA_LEN        32
20 #define S2N_TLS_SEQUENCE_NUM_LEN        8
21 #define S2N_TLS_CIPHER_SUITE_LEN        2
22 #define S2N_SSLv2_CIPHER_SUITE_LEN      3
23 #define S2N_TLS_FINISHED_LEN           12
24 #define S2N_SSL_FINISHED_LEN           36
25 #define S2N_TLS_MAX_IV_LEN             16
26 
27 /* From RFC 5246 6.2.3.3 */
28 #define S2N_TLS12_AAD_LEN              13
29 #define S2N_TLS_MAX_AAD_LEN            S2N_TLS12_AAD_LEN
30 #define S2N_TLS_GCM_FIXED_IV_LEN        4
31 #define S2N_TLS_GCM_EXPLICIT_IV_LEN     8
32 #define S2N_TLS_GCM_IV_LEN            (S2N_TLS_GCM_FIXED_IV_LEN + S2N_TLS_GCM_EXPLICIT_IV_LEN)
33 #define S2N_TLS_GCM_TAG_LEN            16
34 #define S2N_TLS_AES_128_GCM_KEY_LEN     16
35 #define S2N_TLS_AES_256_GCM_KEY_LEN     32
36 
37 /* TLS 1.3 uses only implicit IVs - RFC 8446 5.3 */
38 #define S2N_TLS13_AAD_LEN               5
39 #define S2N_TLS13_RECORD_IV_LEN         0
40 #define S2N_TLS13_FIXED_IV_LEN         12
41 
42 /* From RFC 7905 */
43 #define S2N_TLS_CHACHA20_POLY1305_FIXED_IV_LEN    12
44 #define S2N_TLS_CHACHA20_POLY1305_EXPLICIT_IV_LEN  0
45 #define S2N_TLS_CHACHA20_POLY1305_IV_LEN          12
46 #define S2N_TLS_CHACHA20_POLY1305_KEY_LEN         32
47 #define S2N_TLS_CHACHA20_POLY1305_TAG_LEN         16
48 
49 /* RFC 5246 7.4.1.2 */
50 #define S2N_TLS_SESSION_ID_MAX_LEN     32
51