From 3e73320f4dd9da2d693cbeded3c48f59f058adb0 Mon Sep 17 00:00:00 2001 From: Vadim Bendebury Date: Fri, 27 Nov 2015 07:16:01 -0800 Subject: [PATCH] cr50: fix cryptography problems A couple of issues were uncovered when testing hash implementation more extensively (with multiple overlapping streams of data). This patch fixes the problems. BRANCH=none BUG=chrome-os-partner:43025 TEST=the previously failing hash tests got not fail any more: $ ./test/tpm_test/tpmtest.py Starting MPSSE at 800 kHz Connected to device vid:did:rid of 1ae0:0028:00 [...] SUCCESS: sha1:single 0 SUCCESS: sha256:single 0 SUCCESS: sha256:finish 1 SUCCESS: sha1:finish 3 SUCCESS: sha256:finish 2 Change-Id: I7ee857eec2dac2d9312df7db3b27e5a69ac55ad9 Signed-off-by: Vadim Bendebury Reviewed-on: https://chromium-review.googlesource.com/314694 Reviewed-by: Nagendra Modadugu --- chip/g/dcrypto/sha256.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/chip/g/dcrypto/sha256.c b/chip/g/dcrypto/sha256.c index 19025f3503..20d813bc9d 100644 --- a/chip/g/dcrypto/sha256.c +++ b/chip/g/dcrypto/sha256.c @@ -187,7 +187,7 @@ void DCRYPTO_SHA256_init(SHA256_CTX *ctx, uint32_t sw_required) { if (!sw_required && dcrypto_grab_sha_hw()) { ctx->vtab = &HW_SHA256_VTAB; - dcrypto_sha_init(SHA1_MODE); + dcrypto_sha_init(SHA256_MODE); } #ifndef SECTION_IS_RO else @@ -198,7 +198,6 @@ void DCRYPTO_SHA256_init(SHA256_CTX *ctx, uint32_t sw_required) static const uint8_t *dcrypto_sha256_final(SHA256_CTX *ctx) { dcrypto_sha_wait(SHA256_MODE, (uint32_t *) ctx->u.buf); - dcrypto_release_sha_hw(); return ctx->u.buf; }