net/tls: add CHACHA20-POLY1305 specific defines and structures
authorVadim Fedorenko <vfedorenko@novek.ru>
Tue, 24 Nov 2020 15:24:47 +0000 (18:24 +0300)
committerJakub Kicinski <kuba@kernel.org>
Fri, 27 Nov 2020 22:32:37 +0000 (14:32 -0800)
To provide support for ChaCha-Poly cipher we need to define
specific constants and structures.

Signed-off-by: Vadim Fedorenko <vfedorenko@novek.ru>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
include/net/tls.h
include/uapi/linux/tls.h

index d04ce73..e4e9c2a 100644 (file)
@@ -211,6 +211,7 @@ union tls_crypto_context {
        union {
                struct tls12_crypto_info_aes_gcm_128 aes_gcm_128;
                struct tls12_crypto_info_aes_gcm_256 aes_gcm_256;
+               struct tls12_crypto_info_chacha20_poly1305 chacha20_poly1305;
        };
 };
 
index bcd2869..0d54bae 100644 (file)
 #define TLS_CIPHER_AES_CCM_128_TAG_SIZE                16
 #define TLS_CIPHER_AES_CCM_128_REC_SEQ_SIZE            8
 
+#define TLS_CIPHER_CHACHA20_POLY1305                   54
+#define TLS_CIPHER_CHACHA20_POLY1305_IV_SIZE           12
+#define TLS_CIPHER_CHACHA20_POLY1305_KEY_SIZE  32
+#define TLS_CIPHER_CHACHA20_POLY1305_SALT_SIZE         0
+#define TLS_CIPHER_CHACHA20_POLY1305_TAG_SIZE  16
+#define TLS_CIPHER_CHACHA20_POLY1305_REC_SEQ_SIZE      8
+
 #define TLS_SET_RECORD_TYPE    1
 #define TLS_GET_RECORD_TYPE    2
 
@@ -109,6 +116,14 @@ struct tls12_crypto_info_aes_ccm_128 {
        unsigned char rec_seq[TLS_CIPHER_AES_CCM_128_REC_SEQ_SIZE];
 };
 
+struct tls12_crypto_info_chacha20_poly1305 {
+       struct tls_crypto_info info;
+       unsigned char iv[TLS_CIPHER_CHACHA20_POLY1305_IV_SIZE];
+       unsigned char key[TLS_CIPHER_CHACHA20_POLY1305_KEY_SIZE];
+       unsigned char salt[TLS_CIPHER_CHACHA20_POLY1305_SALT_SIZE];
+       unsigned char rec_seq[TLS_CIPHER_CHACHA20_POLY1305_REC_SEQ_SIZE];
+};
+
 enum {
        TLS_INFO_UNSPEC,
        TLS_INFO_VERSION,