net/tls: add CHACHA20-POLY1305 configuration
Add ChaCha-Poly specific configuration code. Signed-off-by: Vadim Fedorenko <vfedorenko@novek.ru> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
a6acbe6235
commit
74ea610602
|
@ -521,6 +521,9 @@ static int do_tls_setsockopt_conf(struct sock *sk, sockptr_t optval,
|
||||||
case TLS_CIPHER_AES_CCM_128:
|
case TLS_CIPHER_AES_CCM_128:
|
||||||
optsize = sizeof(struct tls12_crypto_info_aes_ccm_128);
|
optsize = sizeof(struct tls12_crypto_info_aes_ccm_128);
|
||||||
break;
|
break;
|
||||||
|
case TLS_CIPHER_CHACHA20_POLY1305:
|
||||||
|
optsize = sizeof(struct tls12_crypto_info_chacha20_poly1305);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
goto err_crypto_info;
|
goto err_crypto_info;
|
||||||
|
|
|
@ -2290,6 +2290,7 @@ int tls_set_sw_offload(struct sock *sk, struct tls_context *ctx, int tx)
|
||||||
struct tls12_crypto_info_aes_gcm_128 *gcm_128_info;
|
struct tls12_crypto_info_aes_gcm_128 *gcm_128_info;
|
||||||
struct tls12_crypto_info_aes_gcm_256 *gcm_256_info;
|
struct tls12_crypto_info_aes_gcm_256 *gcm_256_info;
|
||||||
struct tls12_crypto_info_aes_ccm_128 *ccm_128_info;
|
struct tls12_crypto_info_aes_ccm_128 *ccm_128_info;
|
||||||
|
struct tls12_crypto_info_chacha20_poly1305 *chacha20_poly1305_info;
|
||||||
struct tls_sw_context_tx *sw_ctx_tx = NULL;
|
struct tls_sw_context_tx *sw_ctx_tx = NULL;
|
||||||
struct tls_sw_context_rx *sw_ctx_rx = NULL;
|
struct tls_sw_context_rx *sw_ctx_rx = NULL;
|
||||||
struct cipher_context *cctx;
|
struct cipher_context *cctx;
|
||||||
|
@ -2402,6 +2403,21 @@ int tls_set_sw_offload(struct sock *sk, struct tls_context *ctx, int tx)
|
||||||
cipher_name = "ccm(aes)";
|
cipher_name = "ccm(aes)";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case TLS_CIPHER_CHACHA20_POLY1305: {
|
||||||
|
chacha20_poly1305_info = (void *)crypto_info;
|
||||||
|
nonce_size = 0;
|
||||||
|
tag_size = TLS_CIPHER_CHACHA20_POLY1305_TAG_SIZE;
|
||||||
|
iv_size = TLS_CIPHER_CHACHA20_POLY1305_IV_SIZE;
|
||||||
|
iv = chacha20_poly1305_info->iv;
|
||||||
|
rec_seq_size = TLS_CIPHER_CHACHA20_POLY1305_REC_SEQ_SIZE;
|
||||||
|
rec_seq = chacha20_poly1305_info->rec_seq;
|
||||||
|
keysize = TLS_CIPHER_CHACHA20_POLY1305_KEY_SIZE;
|
||||||
|
key = chacha20_poly1305_info->key;
|
||||||
|
salt = chacha20_poly1305_info->salt;
|
||||||
|
salt_size = TLS_CIPHER_CHACHA20_POLY1305_SALT_SIZE;
|
||||||
|
cipher_name = "rfc7539(chacha20,poly1305)";
|
||||||
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
goto free_priv;
|
goto free_priv;
|
||||||
|
|
Loading…
Reference in New Issue