From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1BA1325B08D for ; Thu, 9 Jul 2026 13:06:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783602371; cv=none; b=Yk7246srYc0E2gMmL1qeSX3JkAK3OVwDlfD2TZOefAw1hbVpUWLUoI0m1MlfpLckOtzeVTb3VRww+OhG9v4hPBhatr6OTiRj6u6ShEZJyxhWDh7RoO0d/PivqmDDigWjoaE+IAHaEBBzTpSyU9CyOp6oeYq6vifQyLc2uAKJF8E= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783602371; c=relaxed/simple; bh=LDysymO6z45BAwPxjT+9G6mfkoaNFOSQRLkjMgIQq8k=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=dIKpp/SgMB3/spM+0WNl1u1ZVBSckBrMjniSyo2Knn00jEdGS8QxBJgHTNnuvADamDC3pwa+qfJPSGKpQT7Xa6k0vkDKc8mUoge/3LwkI01eX+VP+LI5Ubn735js881u8RC3WgEYHcHP/Pc8yg3vGLTk6TsrV+1Cm0UVuOqleIs= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=Py6d+vdr; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=WTWIHNL4; arc=none smtp.client-ip=170.10.133.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="Py6d+vdr"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="WTWIHNL4" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783602369; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:autocrypt:autocrypt; bh=/ctGAGPnVJhK8C2yhWjcdu/Dfmm55UMOGakv3PCDE+A=; b=Py6d+vdrtnz6Vx3DaCv9A4o87juxq8io4UN6GKPRWVC5WXjNel2E6FhMVhYBfBJp8jDfGF FU3roeEdVYOdPCQzA9fHtS6pbDDwDlqtpkanwoY4+pfZfO1WiqW31fBb7rqlL9JODzQQ7h mw3E/hQ1ulbhsIhJKfx0JoIMVNhcavI= Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-556-kU9t3DC3MEyj8jRZY7GzUA-1; Thu, 09 Jul 2026 09:06:07 -0400 X-MC-Unique: kU9t3DC3MEyj8jRZY7GzUA-1 X-Mimecast-MFC-AGG-ID: kU9t3DC3MEyj8jRZY7GzUA_1783602367 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-493bb6a4336so15256155e9.3 for ; Thu, 09 Jul 2026 06:06:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783602366; x=1784207166; darn=vger.kernel.org; h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from :content-language:references:cc:to:subject:user-agent:mime-version :date:message-id:from:to:cc:subject:date:message-id:reply-to :content-type; bh=/ctGAGPnVJhK8C2yhWjcdu/Dfmm55UMOGakv3PCDE+A=; b=WTWIHNL4xD4e03FCSa1X16Iv8BA+AOEqJS0NRdHEi+9awddX5cFceuM6crkhSgSUOa UP18g14jtTsx1/3Dtdzhsm2xyuNjtwVvFXRIUPf9lrwbzC7WluUrtoG0TgZWWNIFbfUU mrmSBxod6FR6nK8NQP63QD9V+az9RsXGburPnnOn2CYqXt4v1DmcJWfvp+2JR0VGyOs6 +oOBl2IO8OvuVuApWm3xsmhfE0pz6QMaI9xn4pvqQy1meIJ8V/Y3/PTv/GNGnkyNNbiO VcflRSLzOIlGBaIZdv9y+pZ+MaDHPyY6RfOjnboivdqstBko/F/eHCxQoJJoCfY5AcJA kCyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783602366; x=1784207166; h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from :content-language:references:cc:to:subject:user-agent:mime-version :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=/ctGAGPnVJhK8C2yhWjcdu/Dfmm55UMOGakv3PCDE+A=; b=Cx/amm/Og47kLXif+K6dPGgHhCLXDSum7JW6wC1/yqsPAXwBJ4Ptg+6xuysPV98wfG WXtfVWMTqfsJwWRE1Vp3MDUEvnL9a7jhzLWAtsMwaxzVqU6BvTByB8mb98pJqdozp+9x tVeMwlJEoTsU3ZCL33RgEhc/TfwG383IpKsX1btez7beX18Gk9TgcjMYzx1yrHiyyyEt fuMz15bQF+Ua6401J8bBYUbBagSMs/BXwWoQMhG6MJ4VHSRHscd5heHGtt7afhna56P6 qim9yjQDnPwtFtTwPn144Qb9lNBeB/SzUpWPcST9/JuobdFC3ZpAAPjDqfwRDaZqn4VE 0m+A== X-Gm-Message-State: AOJu0YxnPbsybLXWXhTwochX/nFa2gYvCEwtAcq03+VGA3xt8e35fX/J Yx7vVQDpBzdh3eq5vPHetVlpeE0B2oxkqD01U0sbzZnW9cCoG+s6lpc2ZhKYlfNVkZxQJdR4gPS 1XSDkL61x39pJ0Ky+RU22CtJOv7HUc2m/BRdadFJCrRzIvJNPbCTo2W1l10/aUdbLTnrK+sSCDA == X-Gm-Gg: AfdE7cnvalHRkVqWz+yEjleSAXkBIvAbPQG51FYprQq1qpHJ2LCSk48SOb3owMEK6V2 ZZWss2a66SrJrnzPe/sMBHIDaKMbN57VYsAUg0qm6ZFxaOlDmSxvNvw6NmRoOXwIVz5aCivbD7J JplbX82Y1uBVIE9Zx1zPdpmJvJNQFA6kAh37V7QzfzF1jUJ6k/OVdOvqhrxcYZgNjM0Bqh7xBmG 9g4ebOuTI3aMCwtHVrO/Am+vXD5OdG6Xv+c0RvLZAIaEhniVjr1KWyLnTV68cDSgSlTVBTRkx4R Wa5pj2EuMAmdcwKq4ftHyVvk5uokvIYF7ljy4wR4zGD2QyrOZ+AWsDC3G4r1/pnsS3BpFrjJHQi p2O6wtIJn X-Received: by 2002:a05:600c:3548:b0:490:688b:f9f8 with SMTP id 5b1f17b1804b1-493e6874e06mr61958745e9.27.1783602366653; Thu, 09 Jul 2026 06:06:06 -0700 (PDT) X-Received: by 2002:a05:600c:3548:b0:490:688b:f9f8 with SMTP id 5b1f17b1804b1-493e6874e06mr61958365e9.27.1783602366177; Thu, 09 Jul 2026 06:06:06 -0700 (PDT) Received: from [192.168.0.9] ([47.64.114.244]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493e5a61135sm88929005e9.1.2026.07.09.06.06.04 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 09 Jul 2026 06:06:05 -0700 (PDT) Message-ID: <2bbc6563-3328-4153-97fb-2d0a10ceefaf@redhat.com> Date: Thu, 9 Jul 2026 15:06:03 +0200 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 03/33] lib/crypto: aes: Add CBC and CBC-CTS support To: Eric Biggers , linux-crypto@vger.kernel.org Cc: linux-kernel@vger.kernel.org References: <20260707053503.209874-1-ebiggers@kernel.org> <20260707053503.209874-4-ebiggers@kernel.org> Content-Language: en-US From: Thomas Huth Autocrypt: addr=thuth@redhat.com; keydata= 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 In-Reply-To: <20260707053503.209874-4-ebiggers@kernel.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 07/07/2026 07.34, Eric Biggers wrote: > Add support for AES-CBC and AES-CBC-CTS to the crypto library. > > These will be used to provide streamlined implementations of the > "cbc(aes)" and "cts(cbc(aes))" crypto_skcipher algorithms. Most users > of these crypto_skcipher algorithms will also be able to switch to the > library, which as usual will be simpler and faster, e.g.: > > - block/blk-crypto-fallback.c (for AES-128-CBC-ESSIV) > - fs/crypto/crypto.c (for AES-128-CBC-ESSIV) > - fs/crypto/fname.c (for AES-256-CTS and AES-128-CBC) > - kernel/bpf/crypto.c > - net/ceph/crypto.c > - security/keys/encrypted-keys/encrypted.c > > As usual, the architecture-optimized AES-CBC and AES-CBC-CTS code will > be migrated into the library as well (using the hooks provided in this > commit), eliminating lots of repetitive boilerplate code. > > Initial test coverage is provided by the crypto_skcipher support added > in a later commit. I'm planning a KUnit test suite as well. > > Signed-off-by: Eric Biggers > --- > .../crypto/libcrypto-unauth-encryption.rst | 7 + > include/crypto/aes-cbc.h | 77 ++++++++ > lib/crypto/Kconfig | 6 + > lib/crypto/aes.c | 174 ++++++++++++++++++ > lib/crypto/tests/Kconfig | 1 + > 5 files changed, 265 insertions(+) > create mode 100644 include/crypto/aes-cbc.h ... > +void aes_cbc_cts_decrypt(u8 *dst, const u8 *src, size_t len, > + u8 iv[AES_BLOCK_SIZE], const struct aes_key *key) > +{ > + /* Offset to P[n] and C[n] (last plaintext and ciphertext block) */ > + size_t pn_offset = round_down(len - 1, AES_BLOCK_SIZE); > + /* Length of P[n] and C[n], 1 <= pn_len <= AES_BLOCK_SIZE */ > + size_t pn_len = len - pn_offset; > + u8 *pad; > + > + if (WARN_ON_ONCE(len < AES_BLOCK_SIZE)) > + return; > + > + if (len == AES_BLOCK_SIZE) { > + aes_cbc_decrypt(dst, src, len, iv, key); > + return; > + } > + if (likely(aes_cbc_cts_decrypt_arch(dst, src, len, iv, key))) > + return; > + > + /* Compute P[0]..P[n - 2]. */ > + aes_cbc_decrypt(dst, src, pn_offset - AES_BLOCK_SIZE, iv, key); > + > + /* Compute P[n] and P[n - 1], considering that src may equal dst. */ > + pad = &dst[pn_offset - AES_BLOCK_SIZE]; > + aes_decrypt(key, pad, &src[pn_offset - AES_BLOCK_SIZE]); > + crypto_xor_cpy(&dst[pn_offset], &src[pn_offset], pad, > + pn_len); /* P[n] */ > + crypto_xor(pad, &dst[pn_offset], pn_len); Took me a while to understand why you'd use the above xor instead of a memcpy(pad, &src[pn_offset], pn_len) here, but that's because src and dst might point to the same buffer, right? Anyway, patch looks good to me, so: Reviewed-by: Thomas Huth > + aes_decrypt(key, pad, pad); > + crypto_xor(pad, iv, AES_BLOCK_SIZE); /* P[n - 1] */ > +} > +EXPORT_SYMBOL_GPL(aes_cbc_cts_decrypt); > +#endif /* CONFIG_CRYPTO_LIB_AES_CBC */ > +