From 6e0309ffa9019680bb9294d5b154fe14bebc5f22 Mon Sep 17 00:00:00 2001 From: nagendra modadugu Date: Mon, 7 Mar 2016 10:09:42 -0800 Subject: [PATCH] CR50: set result size in _cpri__GenerateKeyEcc, _cpri__GetEphemeralEcc _cpri__GenerateKeyEcc, and _cpri__GetEphemeralEcc are expected to set the size of the result in accordance with the curve being used. BRANCH=none BUG=chrome-os-partner:43025,chrome-os-partner:47524 TEST=tests in test/tpm/tpmtest.py, test CPCTPM_TC2_2_14_02_05 passes Change-Id: I558cc56f689c2d33c12876ddbfde7e9659613d2c Signed-off-by: nagendra modadugu Reviewed-on: https://chromium-review.googlesource.com/331210 Commit-Ready: Nagendra Modadugu Tested-by: Nagendra Modadugu Reviewed-by: Vadim Bendebury --- board/cr50/tpm2/ecc.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/board/cr50/tpm2/ecc.c b/board/cr50/tpm2/ecc.c index d3ca3069f8..79687244df 100644 --- a/board/cr50/tpm2/ecc.c +++ b/board/cr50/tpm2/ecc.c @@ -114,8 +114,12 @@ CRYPT_RESULT _cpri__GenerateKeyEcc( if (DCRYPTO_p256_key_from_bytes( (p256_int *) q->x.b.buffer, (p256_int *) q->y.b.buffer, - (p256_int *) d->b.buffer, key_bytes)) + (p256_int *) d->b.buffer, key_bytes)) { + q->x.b.size = sizeof(p256_int); + q->y.b.size = sizeof(p256_int); + d->b.size = sizeof(p256_int); break; + } } if (count == 0) @@ -203,10 +207,14 @@ CRYPT_RESULT _cpri__GetEphemeralEcc(TPMS_ECC_POINT *q, TPM2B_ECC_PARAMETER *d, if (DCRYPTO_p256_key_from_bytes((p256_int *) q->x.b.buffer, (p256_int *) q->y.b.buffer, (p256_int *) d->b.buffer, - key_bytes)) + key_bytes)) { + q->x.b.size = sizeof(p256_int); + q->y.b.size = sizeof(p256_int); + d->b.size = sizeof(p256_int); return CRYPT_SUCCESS; - else + } else { return CRYPT_FAIL; + } } #ifdef CRYPTO_TEST_SETUP