FAILED: patch "[PATCH] net/tls: Fix authentication failure in CCM mode" failed to apply to 5.10-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 5.10-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 5961060692f8b17cd2080620a3d27b95d2ae05ca Mon Sep 17 00:00:00 2001
From: Tianjia Zhang <[email protected]>
Date: Mon, 29 Nov 2021 17:32:12 +0800
Subject: [PATCH] net/tls: Fix authentication failure in CCM mode
When the TLS cipher suite uses CCM mode, including AES CCM and SM4 CCM, the first byte of the B0 block is flags, and the real IV starts from the second byte. The XOR operation of the IV and rec_seq should be skip this byte, that is, add the iv_offset.
net/tls/tls_sw.c +2 -2
@@ -521,7 +521,7 @@ static int tls_do_encryption(struct sock *sk,memcpy (&rec->iv_data[iv_offset], tls_ctx->tx.iv, prot->iv_size + prot->salt_size); -xor_iv_with_seq (prot, rec->iv_data, tls_ctx->tx.rec_seq); +xor_iv_with_seq (prot, rec->iv_data + iv_offset, tls_ctx->tx.rec_seq); sge->offset += prot->prepend_size; sge->length -= prot->prepend_size;
@@ -1499,7 +1499,7 @@ static int decrypt_internal(struct sock *sk, struct sk_buff *skb,else memcpy (iv + iv_offset, tls_ctx->rx.iv, prot->salt_size); -xor_iv_with_seq (prot, iv, tls_ctx->rx.rec_seq); +xor_iv_with_seq (prot, iv + iv_offset, tls_ctx->rx.rec_seq);/* Prepare AAD */ tls_make_aad(aad, rxm->full_len - prot->overhead_size +
PATCH 1/1 net/tls: Fix authentication failure in CCM mode
commit 5961060692f8b17cd2080620a3d27b95d2ae05ca upstream.
When the TLS cipher suite uses CCM mode, including AES CCM and SM4 CCM, the first byte of the B0 block is flags, and the real IV starts from the second byte. The XOR operation of the IV and rec_seq should be skip this byte, that is, add the iv_offset.
--- net/tls/tls_sw.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
net/tls/tls_sw.c +2 -2
@@ -515,7 +515,7 @@ static int tls_do_encryption(struct sock *sk,memcpy (&rec->iv_data[iv_offset], tls_ctx->tx.iv, prot->iv_size + prot->salt_size); -xor_iv_with_seq (prot->version, rec->iv_data, tls_ctx->tx.rec_seq); +xor_iv_with_seq (prot->version, rec->iv_data + iv_offset, tls_ctx->tx.rec_seq); sge->offset += prot->prepend_size; sge->length -= prot->prepend_size;
@@ -1487,7 +1487,7 @@ static int decrypt_internal(struct sock *sk, struct sk_buff *skb,else memcpy (iv + iv_offset, tls_ctx->rx.iv, prot->salt_size); -xor_iv_with_seq (prot->version, iv, tls_ctx->rx.rec_seq); +xor_iv_with_seq (prot->version, iv + iv_offset, tls_ctx->rx.rec_seq);/* Prepare AAD */ tls_make_aad(aad, rxm->full_len - prot->overhead_size +
Signature · 1 line
2.19.1.3.ge56e4f7
Greg Kroah-Hartman
maintainerRe: [PATCH stable 5.10] net/tls: Fix authentication failure in CCM mode
Quoted 41 lines · Tianjia Zhang
commit
5961060692f8b17cd2080620a3d27b95d2ae05caupstream.When the TLS cipher suite uses CCM mode, including AES CCM and SM4 CCM, the first byte of the B0 block is flags, and the real IV starts from the second byte. The XOR operation of the IV and
rec_seqshould be skip this byte, that is, add theiv_offset.Fixes f295b3ae9f59 ("net/tls: Add support of AES128-CCM based ciphers")Signed-off-by Tianjia Zhang <[email protected]>Cc Vakul Garg <[email protected]>Cc [email protected] # v5.2+Signed-off-by David S. Miller <[email protected]>--- net/tls/tls_sw.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)net/tls/tls_sw.c +2
-2@@ -515,7 +515,7 @@ static int tls_do_encryption(struct sock *sk,memcpy (&rec->iv_data[iv_offset], tls_ctx->tx.iv, prot->iv_size + prot->salt_size); -xor_iv_with_seq (prot->version, rec->iv_data, tls_ctx->tx.rec_seq); +xor_iv_with_seq (prot->version, rec->iv_data + iv_offset, tls_ctx->tx.rec_seq); sge->offset += prot->prepend_size; sge->length -= prot->prepend_size;@@ -1487,7 +1487,7 @@ static int decrypt_internal(struct sock *sk, struct sk_buff *skb,else memcpy (iv + iv_offset, tls_ctx->rx.iv, prot->salt_size); -xor_iv_with_seq (prot->version, iv, tls_ctx->rx.rec_seq); +xor_iv_with_seq (prot->version, iv + iv_offset, tls_ctx->rx.rec_seq);/* Prepare AAD */ tls_make_aad(aad, rxm->full_len - prot->overhead_size +Signature · 1 line
2.19.1.3.ge56e4f7
Both backports now queued up, thanks.
greg k-h