1 /* 2 * This file is auto-generated. Modifications will be lost. 3 * 4 * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/ 5 * for more information. 6 */ 7 #ifndef _UAPI_LINUX_TLS_H 8 #define _UAPI_LINUX_TLS_H 9 #include <linux/types.h> 10 #define TLS_TX 1 11 #define TLS_RX 2 12 #define TLS_TX_ZEROCOPY_RO 3 13 #define TLS_RX_EXPECT_NO_PAD 4 14 #define TLS_VERSION_MINOR(ver) ((ver) & 0xFF) 15 #define TLS_VERSION_MAJOR(ver) (((ver) >> 8) & 0xFF) 16 #define TLS_VERSION_NUMBER(id) ((((id ##_VERSION_MAJOR) & 0xFF) << 8) | ((id ##_VERSION_MINOR) & 0xFF)) 17 #define TLS_1_2_VERSION_MAJOR 0x3 18 #define TLS_1_2_VERSION_MINOR 0x3 19 #define TLS_1_2_VERSION TLS_VERSION_NUMBER(TLS_1_2) 20 #define TLS_1_3_VERSION_MAJOR 0x3 21 #define TLS_1_3_VERSION_MINOR 0x4 22 #define TLS_1_3_VERSION TLS_VERSION_NUMBER(TLS_1_3) 23 #define TLS_CIPHER_AES_GCM_128 51 24 #define TLS_CIPHER_AES_GCM_128_IV_SIZE 8 25 #define TLS_CIPHER_AES_GCM_128_KEY_SIZE 16 26 #define TLS_CIPHER_AES_GCM_128_SALT_SIZE 4 27 #define TLS_CIPHER_AES_GCM_128_TAG_SIZE 16 28 #define TLS_CIPHER_AES_GCM_128_REC_SEQ_SIZE 8 29 #define TLS_CIPHER_AES_GCM_256 52 30 #define TLS_CIPHER_AES_GCM_256_IV_SIZE 8 31 #define TLS_CIPHER_AES_GCM_256_KEY_SIZE 32 32 #define TLS_CIPHER_AES_GCM_256_SALT_SIZE 4 33 #define TLS_CIPHER_AES_GCM_256_TAG_SIZE 16 34 #define TLS_CIPHER_AES_GCM_256_REC_SEQ_SIZE 8 35 #define TLS_CIPHER_AES_CCM_128 53 36 #define TLS_CIPHER_AES_CCM_128_IV_SIZE 8 37 #define TLS_CIPHER_AES_CCM_128_KEY_SIZE 16 38 #define TLS_CIPHER_AES_CCM_128_SALT_SIZE 4 39 #define TLS_CIPHER_AES_CCM_128_TAG_SIZE 16 40 #define TLS_CIPHER_AES_CCM_128_REC_SEQ_SIZE 8 41 #define TLS_CIPHER_CHACHA20_POLY1305 54 42 #define TLS_CIPHER_CHACHA20_POLY1305_IV_SIZE 12 43 #define TLS_CIPHER_CHACHA20_POLY1305_KEY_SIZE 32 44 #define TLS_CIPHER_CHACHA20_POLY1305_SALT_SIZE 0 45 #define TLS_CIPHER_CHACHA20_POLY1305_TAG_SIZE 16 46 #define TLS_CIPHER_CHACHA20_POLY1305_REC_SEQ_SIZE 8 47 #define TLS_CIPHER_SM4_GCM 55 48 #define TLS_CIPHER_SM4_GCM_IV_SIZE 8 49 #define TLS_CIPHER_SM4_GCM_KEY_SIZE 16 50 #define TLS_CIPHER_SM4_GCM_SALT_SIZE 4 51 #define TLS_CIPHER_SM4_GCM_TAG_SIZE 16 52 #define TLS_CIPHER_SM4_GCM_REC_SEQ_SIZE 8 53 #define TLS_CIPHER_SM4_CCM 56 54 #define TLS_CIPHER_SM4_CCM_IV_SIZE 8 55 #define TLS_CIPHER_SM4_CCM_KEY_SIZE 16 56 #define TLS_CIPHER_SM4_CCM_SALT_SIZE 4 57 #define TLS_CIPHER_SM4_CCM_TAG_SIZE 16 58 #define TLS_CIPHER_SM4_CCM_REC_SEQ_SIZE 8 59 #define TLS_CIPHER_ARIA_GCM_128 57 60 #define TLS_CIPHER_ARIA_GCM_128_IV_SIZE 8 61 #define TLS_CIPHER_ARIA_GCM_128_KEY_SIZE 16 62 #define TLS_CIPHER_ARIA_GCM_128_SALT_SIZE 4 63 #define TLS_CIPHER_ARIA_GCM_128_TAG_SIZE 16 64 #define TLS_CIPHER_ARIA_GCM_128_REC_SEQ_SIZE 8 65 #define TLS_CIPHER_ARIA_GCM_256 58 66 #define TLS_CIPHER_ARIA_GCM_256_IV_SIZE 8 67 #define TLS_CIPHER_ARIA_GCM_256_KEY_SIZE 32 68 #define TLS_CIPHER_ARIA_GCM_256_SALT_SIZE 4 69 #define TLS_CIPHER_ARIA_GCM_256_TAG_SIZE 16 70 #define TLS_CIPHER_ARIA_GCM_256_REC_SEQ_SIZE 8 71 #define TLS_SET_RECORD_TYPE 1 72 #define TLS_GET_RECORD_TYPE 2 73 struct tls_crypto_info { 74 __u16 version; 75 __u16 cipher_type; 76 }; 77 struct tls12_crypto_info_aes_gcm_128 { 78 struct tls_crypto_info info; 79 unsigned char iv[TLS_CIPHER_AES_GCM_128_IV_SIZE]; 80 unsigned char key[TLS_CIPHER_AES_GCM_128_KEY_SIZE]; 81 unsigned char salt[TLS_CIPHER_AES_GCM_128_SALT_SIZE]; 82 unsigned char rec_seq[TLS_CIPHER_AES_GCM_128_REC_SEQ_SIZE]; 83 }; 84 struct tls12_crypto_info_aes_gcm_256 { 85 struct tls_crypto_info info; 86 unsigned char iv[TLS_CIPHER_AES_GCM_256_IV_SIZE]; 87 unsigned char key[TLS_CIPHER_AES_GCM_256_KEY_SIZE]; 88 unsigned char salt[TLS_CIPHER_AES_GCM_256_SALT_SIZE]; 89 unsigned char rec_seq[TLS_CIPHER_AES_GCM_256_REC_SEQ_SIZE]; 90 }; 91 struct tls12_crypto_info_aes_ccm_128 { 92 struct tls_crypto_info info; 93 unsigned char iv[TLS_CIPHER_AES_CCM_128_IV_SIZE]; 94 unsigned char key[TLS_CIPHER_AES_CCM_128_KEY_SIZE]; 95 unsigned char salt[TLS_CIPHER_AES_CCM_128_SALT_SIZE]; 96 unsigned char rec_seq[TLS_CIPHER_AES_CCM_128_REC_SEQ_SIZE]; 97 }; 98 struct tls12_crypto_info_chacha20_poly1305 { 99 struct tls_crypto_info info; 100 unsigned char iv[TLS_CIPHER_CHACHA20_POLY1305_IV_SIZE]; 101 unsigned char key[TLS_CIPHER_CHACHA20_POLY1305_KEY_SIZE]; 102 unsigned char salt[TLS_CIPHER_CHACHA20_POLY1305_SALT_SIZE]; 103 unsigned char rec_seq[TLS_CIPHER_CHACHA20_POLY1305_REC_SEQ_SIZE]; 104 }; 105 struct tls12_crypto_info_sm4_gcm { 106 struct tls_crypto_info info; 107 unsigned char iv[TLS_CIPHER_SM4_GCM_IV_SIZE]; 108 unsigned char key[TLS_CIPHER_SM4_GCM_KEY_SIZE]; 109 unsigned char salt[TLS_CIPHER_SM4_GCM_SALT_SIZE]; 110 unsigned char rec_seq[TLS_CIPHER_SM4_GCM_REC_SEQ_SIZE]; 111 }; 112 struct tls12_crypto_info_sm4_ccm { 113 struct tls_crypto_info info; 114 unsigned char iv[TLS_CIPHER_SM4_CCM_IV_SIZE]; 115 unsigned char key[TLS_CIPHER_SM4_CCM_KEY_SIZE]; 116 unsigned char salt[TLS_CIPHER_SM4_CCM_SALT_SIZE]; 117 unsigned char rec_seq[TLS_CIPHER_SM4_CCM_REC_SEQ_SIZE]; 118 }; 119 struct tls12_crypto_info_aria_gcm_128 { 120 struct tls_crypto_info info; 121 unsigned char iv[TLS_CIPHER_ARIA_GCM_128_IV_SIZE]; 122 unsigned char key[TLS_CIPHER_ARIA_GCM_128_KEY_SIZE]; 123 unsigned char salt[TLS_CIPHER_ARIA_GCM_128_SALT_SIZE]; 124 unsigned char rec_seq[TLS_CIPHER_ARIA_GCM_128_REC_SEQ_SIZE]; 125 }; 126 struct tls12_crypto_info_aria_gcm_256 { 127 struct tls_crypto_info info; 128 unsigned char iv[TLS_CIPHER_ARIA_GCM_256_IV_SIZE]; 129 unsigned char key[TLS_CIPHER_ARIA_GCM_256_KEY_SIZE]; 130 unsigned char salt[TLS_CIPHER_ARIA_GCM_256_SALT_SIZE]; 131 unsigned char rec_seq[TLS_CIPHER_ARIA_GCM_256_REC_SEQ_SIZE]; 132 }; 133 enum { 134 TLS_INFO_UNSPEC, 135 TLS_INFO_VERSION, 136 TLS_INFO_CIPHER, 137 TLS_INFO_TXCONF, 138 TLS_INFO_RXCONF, 139 TLS_INFO_ZC_RO_TX, 140 TLS_INFO_RX_NO_PAD, 141 __TLS_INFO_MAX, 142 }; 143 #define TLS_INFO_MAX (__TLS_INFO_MAX - 1) 144 #define TLS_CONF_BASE 1 145 #define TLS_CONF_SW 2 146 #define TLS_CONF_HW 3 147 #define TLS_CONF_HW_RECORD 4 148 #endif 149