Changeset View
Changeset View
Standalone View
Standalone View
sys/kern/uipc_ktls.c
| Show First 20 Lines • Show All 650 Lines • ▼ Show 20 Lines | case TLS_MINOR_VER_THREE: | ||||
| if (en->iv_len != TLS_1_3_GCM_IV_LEN) | if (en->iv_len != TLS_1_3_GCM_IV_LEN) | ||||
| return (EINVAL); | return (EINVAL); | ||||
| break; | break; | ||||
| default: | default: | ||||
| return (EINVAL); | return (EINVAL); | ||||
| } | } | ||||
| break; | break; | ||||
| case CRYPTO_AES_CBC: | case CRYPTO_AES_CBC: | ||||
| if (!ktls_cbc_enable) | |||||
| return (EOPNOTSUPP); | |||||
| switch (en->auth_algorithm) { | switch (en->auth_algorithm) { | ||||
| case CRYPTO_SHA1_HMAC: | case CRYPTO_SHA1_HMAC: | ||||
| break; | break; | ||||
| case CRYPTO_SHA2_256_HMAC: | case CRYPTO_SHA2_256_HMAC: | ||||
| case CRYPTO_SHA2_384_HMAC: | case CRYPTO_SHA2_384_HMAC: | ||||
| if (en->tls_vminor != TLS_MINOR_VER_TWO) | if (en->tls_vminor != TLS_MINOR_VER_TWO) | ||||
| return (EINVAL); | return (EINVAL); | ||||
| break; | break; | ||||
| ▲ Show 20 Lines • Show All 629 Lines • ▼ Show 20 Lines | ktls_enable_rx(struct socket *so, struct tls_enable *en) | ||||
| /* | /* | ||||
| * XXX: Don't overwrite existing sessions. We should permit | * XXX: Don't overwrite existing sessions. We should permit | ||||
| * this to support rekeying in the future. | * this to support rekeying in the future. | ||||
| */ | */ | ||||
| if (so->so_rcv.sb_tls_info != NULL) | if (so->so_rcv.sb_tls_info != NULL) | ||||
| return (EALREADY); | return (EALREADY); | ||||
| if (en->cipher_algorithm == CRYPTO_AES_CBC && !ktls_cbc_enable) | |||||
| return (ENOTSUP); | |||||
| error = ktls_create_session(so, en, &tls, KTLS_RX); | error = ktls_create_session(so, en, &tls, KTLS_RX); | ||||
| if (error) | if (error) | ||||
| return (error); | return (error); | ||||
| error = ktls_ocf_try(tls, KTLS_RX); | error = ktls_ocf_try(tls, KTLS_RX); | ||||
| if (error) { | if (error) { | ||||
| ktls_free(tls); | ktls_free(tls); | ||||
| return (error); | return (error); | ||||
| ▲ Show 20 Lines • Show All 66 Lines • ▼ Show 20 Lines | if (so->so_proto->pr_protocol != IPPROTO_TCP) | ||||
| return (EINVAL); | return (EINVAL); | ||||
| /* | /* | ||||
| * XXX: Don't overwrite existing sessions. We should permit | * XXX: Don't overwrite existing sessions. We should permit | ||||
| * this to support rekeying in the future. | * this to support rekeying in the future. | ||||
| */ | */ | ||||
| if (so->so_snd.sb_tls_info != NULL) | if (so->so_snd.sb_tls_info != NULL) | ||||
| return (EALREADY); | return (EALREADY); | ||||
| if (en->cipher_algorithm == CRYPTO_AES_CBC && !ktls_cbc_enable) | |||||
| return (ENOTSUP); | |||||
| /* TLS requires ext pgs */ | /* TLS requires ext pgs */ | ||||
| if (mb_use_ext_pgs == 0) | if (mb_use_ext_pgs == 0) | ||||
| return (ENXIO); | return (ENXIO); | ||||
| error = ktls_create_session(so, en, &tls, KTLS_TX); | error = ktls_create_session(so, en, &tls, KTLS_TX); | ||||
| if (error) | if (error) | ||||
| return (error); | return (error); | ||||
| ▲ Show 20 Lines • Show All 2,079 Lines • Show Last 20 Lines | |||||