lkml.org 
[lkml]   [2022]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.4 081/320] crypto: stm32/cryp - fix lrw chaining mode
    Date
    From: Nicolas Toromanoff <nicolas.toromanoff@foss.st.com>

    [ Upstream commit fa97dc2d48b476ea98199d808d3248d285987e99 ]

    This fixes the lrw autotest if lrw uses the CRYP as the AES block cipher
    provider (as ecb(aes)). At end of request, CRYP should not update the IV
    in case of ECB chaining mode. Indeed the ECB chaining mode never uses
    the IV, but the software LRW chaining mode uses the IV field as
    a counter and due to the (unexpected) update done by CRYP while the AES
    block process, the counter get a wrong value when the IV overflow.

    Fixes: 5f49f18d27cd ("crypto: stm32/cryp - update to return iv_out")

    Signed-off-by: Nicolas Toromanoff <nicolas.toromanoff@foss.st.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/crypto/stm32/stm32-cryp.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/drivers/crypto/stm32/stm32-cryp.c b/drivers/crypto/stm32/stm32-cryp.c
    index c41e66211c5b4..69c2468f1053d 100644
    --- a/drivers/crypto/stm32/stm32-cryp.c
    +++ b/drivers/crypto/stm32/stm32-cryp.c
    @@ -639,7 +639,7 @@ static void stm32_cryp_finish_req(struct stm32_cryp *cryp, int err)
    /* Phase 4 : output tag */
    err = stm32_cryp_read_auth_tag(cryp);

    - if (!err && (!(is_gcm(cryp) || is_ccm(cryp))))
    + if (!err && (!(is_gcm(cryp) || is_ccm(cryp) || is_ecb(cryp))))
    stm32_cryp_get_iv(cryp);

    if (cryp->sgs_copied) {
    --
    2.34.1


    \
     
     \ /
      Last update: 2022-01-24 21:40    [W:13.187 / U:0.000 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site