brintos

brintos / linux-shallow public Read only

0
0
Text · 7.1 KiB · b66a800 Raw
207 lines · c
1/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR Linux-OpenIB) */2/*3 * Copyright (c) 2016-2017, Mellanox Technologies. All rights reserved.4 *5 * This software is available to you under a choice of one of two6 * licenses.  You may choose to be licensed under the terms of the GNU7 * General Public License (GPL) Version 2, available from the file8 * COPYING in the main directory of this source tree, or the9 * OpenIB.org BSD license below:10 *11 *     Redistribution and use in source and binary forms, with or12 *     without modification, are permitted provided that the following13 *     conditions are met:14 *15 *      - Redistributions of source code must retain the above16 *        copyright notice, this list of conditions and the following17 *        disclaimer.18 *19 *      - Redistributions in binary form must reproduce the above20 *        copyright notice, this list of conditions and the following21 *        disclaimer in the documentation and/or other materials22 *        provided with the distribution.23 *24 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,25 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF26 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND27 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS28 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN29 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN30 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE31 * SOFTWARE.32 */33 34#ifndef _UAPI_LINUX_TLS_H35#define _UAPI_LINUX_TLS_H36 37#include <linux/types.h>38 39/* TLS socket options */40#define TLS_TX			1	/* Set transmit parameters */41#define TLS_RX			2	/* Set receive parameters */42#define TLS_TX_ZEROCOPY_RO	3	/* TX zerocopy (only sendfile now) */43#define TLS_RX_EXPECT_NO_PAD	4	/* Attempt opportunistic zero-copy */44 45/* Supported versions */46#define TLS_VERSION_MINOR(ver)	((ver) & 0xFF)47#define TLS_VERSION_MAJOR(ver)	(((ver) >> 8) & 0xFF)48 49#define TLS_VERSION_NUMBER(id)	((((id##_VERSION_MAJOR) & 0xFF) << 8) |	\50				 ((id##_VERSION_MINOR) & 0xFF))51 52#define TLS_1_2_VERSION_MAJOR	0x353#define TLS_1_2_VERSION_MINOR	0x354#define TLS_1_2_VERSION		TLS_VERSION_NUMBER(TLS_1_2)55 56#define TLS_1_3_VERSION_MAJOR	0x357#define TLS_1_3_VERSION_MINOR	0x458#define TLS_1_3_VERSION		TLS_VERSION_NUMBER(TLS_1_3)59 60/* Supported ciphers */61#define TLS_CIPHER_AES_GCM_128				5162#define TLS_CIPHER_AES_GCM_128_IV_SIZE			863#define TLS_CIPHER_AES_GCM_128_KEY_SIZE		1664#define TLS_CIPHER_AES_GCM_128_SALT_SIZE		465#define TLS_CIPHER_AES_GCM_128_TAG_SIZE		1666#define TLS_CIPHER_AES_GCM_128_REC_SEQ_SIZE		867 68#define TLS_CIPHER_AES_GCM_256				5269#define TLS_CIPHER_AES_GCM_256_IV_SIZE			870#define TLS_CIPHER_AES_GCM_256_KEY_SIZE		3271#define TLS_CIPHER_AES_GCM_256_SALT_SIZE		472#define TLS_CIPHER_AES_GCM_256_TAG_SIZE		1673#define TLS_CIPHER_AES_GCM_256_REC_SEQ_SIZE		874 75#define TLS_CIPHER_AES_CCM_128				5376#define TLS_CIPHER_AES_CCM_128_IV_SIZE			877#define TLS_CIPHER_AES_CCM_128_KEY_SIZE		1678#define TLS_CIPHER_AES_CCM_128_SALT_SIZE		479#define TLS_CIPHER_AES_CCM_128_TAG_SIZE		1680#define TLS_CIPHER_AES_CCM_128_REC_SEQ_SIZE		881 82#define TLS_CIPHER_CHACHA20_POLY1305			5483#define TLS_CIPHER_CHACHA20_POLY1305_IV_SIZE		1284#define TLS_CIPHER_CHACHA20_POLY1305_KEY_SIZE	3285#define TLS_CIPHER_CHACHA20_POLY1305_SALT_SIZE		086#define TLS_CIPHER_CHACHA20_POLY1305_TAG_SIZE	1687#define TLS_CIPHER_CHACHA20_POLY1305_REC_SEQ_SIZE	888 89#define TLS_CIPHER_SM4_GCM				5590#define TLS_CIPHER_SM4_GCM_IV_SIZE			891#define TLS_CIPHER_SM4_GCM_KEY_SIZE		1692#define TLS_CIPHER_SM4_GCM_SALT_SIZE		493#define TLS_CIPHER_SM4_GCM_TAG_SIZE		1694#define TLS_CIPHER_SM4_GCM_REC_SEQ_SIZE		895 96#define TLS_CIPHER_SM4_CCM				5697#define TLS_CIPHER_SM4_CCM_IV_SIZE			898#define TLS_CIPHER_SM4_CCM_KEY_SIZE		1699#define TLS_CIPHER_SM4_CCM_SALT_SIZE		4100#define TLS_CIPHER_SM4_CCM_TAG_SIZE		16101#define TLS_CIPHER_SM4_CCM_REC_SEQ_SIZE		8102 103#define TLS_CIPHER_ARIA_GCM_128				57104#define TLS_CIPHER_ARIA_GCM_128_IV_SIZE			8105#define TLS_CIPHER_ARIA_GCM_128_KEY_SIZE		16106#define TLS_CIPHER_ARIA_GCM_128_SALT_SIZE		4107#define TLS_CIPHER_ARIA_GCM_128_TAG_SIZE		16108#define TLS_CIPHER_ARIA_GCM_128_REC_SEQ_SIZE		8109 110#define TLS_CIPHER_ARIA_GCM_256				58111#define TLS_CIPHER_ARIA_GCM_256_IV_SIZE			8112#define TLS_CIPHER_ARIA_GCM_256_KEY_SIZE		32113#define TLS_CIPHER_ARIA_GCM_256_SALT_SIZE		4114#define TLS_CIPHER_ARIA_GCM_256_TAG_SIZE		16115#define TLS_CIPHER_ARIA_GCM_256_REC_SEQ_SIZE		8116 117#define TLS_SET_RECORD_TYPE	1118#define TLS_GET_RECORD_TYPE	2119 120struct tls_crypto_info {121	__u16 version;122	__u16 cipher_type;123};124 125struct tls12_crypto_info_aes_gcm_128 {126	struct tls_crypto_info info;127	unsigned char iv[TLS_CIPHER_AES_GCM_128_IV_SIZE];128	unsigned char key[TLS_CIPHER_AES_GCM_128_KEY_SIZE];129	unsigned char salt[TLS_CIPHER_AES_GCM_128_SALT_SIZE];130	unsigned char rec_seq[TLS_CIPHER_AES_GCM_128_REC_SEQ_SIZE];131};132 133struct tls12_crypto_info_aes_gcm_256 {134	struct tls_crypto_info info;135	unsigned char iv[TLS_CIPHER_AES_GCM_256_IV_SIZE];136	unsigned char key[TLS_CIPHER_AES_GCM_256_KEY_SIZE];137	unsigned char salt[TLS_CIPHER_AES_GCM_256_SALT_SIZE];138	unsigned char rec_seq[TLS_CIPHER_AES_GCM_256_REC_SEQ_SIZE];139};140 141struct tls12_crypto_info_aes_ccm_128 {142	struct tls_crypto_info info;143	unsigned char iv[TLS_CIPHER_AES_CCM_128_IV_SIZE];144	unsigned char key[TLS_CIPHER_AES_CCM_128_KEY_SIZE];145	unsigned char salt[TLS_CIPHER_AES_CCM_128_SALT_SIZE];146	unsigned char rec_seq[TLS_CIPHER_AES_CCM_128_REC_SEQ_SIZE];147};148 149struct tls12_crypto_info_chacha20_poly1305 {150	struct tls_crypto_info info;151	unsigned char iv[TLS_CIPHER_CHACHA20_POLY1305_IV_SIZE];152	unsigned char key[TLS_CIPHER_CHACHA20_POLY1305_KEY_SIZE];153	unsigned char salt[TLS_CIPHER_CHACHA20_POLY1305_SALT_SIZE];154	unsigned char rec_seq[TLS_CIPHER_CHACHA20_POLY1305_REC_SEQ_SIZE];155};156 157struct tls12_crypto_info_sm4_gcm {158	struct tls_crypto_info info;159	unsigned char iv[TLS_CIPHER_SM4_GCM_IV_SIZE];160	unsigned char key[TLS_CIPHER_SM4_GCM_KEY_SIZE];161	unsigned char salt[TLS_CIPHER_SM4_GCM_SALT_SIZE];162	unsigned char rec_seq[TLS_CIPHER_SM4_GCM_REC_SEQ_SIZE];163};164 165struct tls12_crypto_info_sm4_ccm {166	struct tls_crypto_info info;167	unsigned char iv[TLS_CIPHER_SM4_CCM_IV_SIZE];168	unsigned char key[TLS_CIPHER_SM4_CCM_KEY_SIZE];169	unsigned char salt[TLS_CIPHER_SM4_CCM_SALT_SIZE];170	unsigned char rec_seq[TLS_CIPHER_SM4_CCM_REC_SEQ_SIZE];171};172 173struct tls12_crypto_info_aria_gcm_128 {174	struct tls_crypto_info info;175	unsigned char iv[TLS_CIPHER_ARIA_GCM_128_IV_SIZE];176	unsigned char key[TLS_CIPHER_ARIA_GCM_128_KEY_SIZE];177	unsigned char salt[TLS_CIPHER_ARIA_GCM_128_SALT_SIZE];178	unsigned char rec_seq[TLS_CIPHER_ARIA_GCM_128_REC_SEQ_SIZE];179};180 181struct tls12_crypto_info_aria_gcm_256 {182	struct tls_crypto_info info;183	unsigned char iv[TLS_CIPHER_ARIA_GCM_256_IV_SIZE];184	unsigned char key[TLS_CIPHER_ARIA_GCM_256_KEY_SIZE];185	unsigned char salt[TLS_CIPHER_ARIA_GCM_256_SALT_SIZE];186	unsigned char rec_seq[TLS_CIPHER_ARIA_GCM_256_REC_SEQ_SIZE];187};188 189enum {190	TLS_INFO_UNSPEC,191	TLS_INFO_VERSION,192	TLS_INFO_CIPHER,193	TLS_INFO_TXCONF,194	TLS_INFO_RXCONF,195	TLS_INFO_ZC_RO_TX,196	TLS_INFO_RX_NO_PAD,197	__TLS_INFO_MAX,198};199#define TLS_INFO_MAX (__TLS_INFO_MAX - 1)200 201#define TLS_CONF_BASE 1202#define TLS_CONF_SW 2203#define TLS_CONF_HW 3204#define TLS_CONF_HW_RECORD 4205 206#endif /* _UAPI_LINUX_TLS_H */207