1 /* 2 * This header was generated from the Linux kernel headers by update_headers.py, 3 * to provide necessary information from kernel to userspace, such as constants, 4 * structures, and macros, and thus, contains no copyrightable information. 5 */ 6 #ifndef _UAPI_LINUX_TLS_H 7 #define _UAPI_LINUX_TLS_H 8 #include <linux/types.h> 9 #define TLS_TX 1 10 #define TLS_RX 2 11 #define TLS_VERSION_MINOR(ver) ((ver) & 0xFF) 12 #define TLS_VERSION_MAJOR(ver) (((ver) >> 8) & 0xFF) 13 #define TLS_VERSION_NUMBER(id) ((((id##_VERSION_MAJOR) & 0xFF) << 8) | \ 14 ((id##_VERSION_MINOR) & 0xFF)) 15 #define TLS_1_2_VERSION_MAJOR 0x3 16 #define TLS_1_2_VERSION_MINOR 0x3 17 #define TLS_1_2_VERSION TLS_VERSION_NUMBER(TLS_1_2) 18 #define TLS_CIPHER_AES_GCM_128 51 19 #define TLS_CIPHER_AES_GCM_128_IV_SIZE 8 20 #define TLS_CIPHER_AES_GCM_128_KEY_SIZE 16 21 #define TLS_CIPHER_AES_GCM_128_SALT_SIZE 4 22 #define TLS_CIPHER_AES_GCM_128_TAG_SIZE 16 23 #define TLS_CIPHER_AES_GCM_128_REC_SEQ_SIZE 8 24 #define TLS_SET_RECORD_TYPE 1 25 #define TLS_GET_RECORD_TYPE 2 26 struct tls_crypto_info { 27 __u16 version; 28 __u16 cipher_type; 29 }; 30 struct tls12_crypto_info_aes_gcm_128 { 31 struct tls_crypto_info info; 32 unsigned char iv[TLS_CIPHER_AES_GCM_128_IV_SIZE]; 33 unsigned char key[TLS_CIPHER_AES_GCM_128_KEY_SIZE]; 34 unsigned char salt[TLS_CIPHER_AES_GCM_128_SALT_SIZE]; 35 unsigned char rec_seq[TLS_CIPHER_AES_GCM_128_REC_SEQ_SIZE]; 36 }; 37 #endif 38