From ed1f3afedbc9d48b0f5bc94fa3e3bdbb89bfe605 Mon Sep 17 00:00:00 2001 From: Mary Ruthven Date: Wed, 26 May 2021 17:07:52 -0500 Subject: tpm_test: drbg_test: be explicit about output length For lab testing we won't get the response vectors just the output bit length. Add a way to specify the byte length in TEST_INPUTS. BUG=b:189376694 TEST=./tpmtest Change-Id: I1c4f6940b4ccfced9494eefce6867176c79fa06f Signed-off-by: Mary Ruthven Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2923241 Reviewed-by: Vadim Sukhomlinov Reviewed-by: Namyoon Woo --- test/tpm_test/drbg_test.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/test/tpm_test/drbg_test.py b/test/tpm_test/drbg_test.py index dba30a2473..cc41e36eb2 100644 --- a/test/tpm_test/drbg_test.py +++ b/test/tpm_test/drbg_test.py @@ -22,8 +22,10 @@ EMPTY_DRBG_RESPONSE = bytes([0x80, 0x01, DRBG_INIT = 0 DRBG_RESEED = 1 DRBG_GENERATE = 2 +DRBG_GROUP_INIT = 3 TEST_INPUTS = ( + (DRBG_GROUP_INIT, 32), (DRBG_INIT, ('C40894D0C37712140924115BF8A3110C7258532365BB598F81B127A5E4CB8EB0', 'FBB1EDAF92D0C2699F5C0A7418D308B09AC679FFBB0D8918C8E62D35091DD2B9', @@ -75,10 +77,7 @@ def _drbg_init_cmd(drbg_op, entropy, nonce, perso): # DRBG_GENERATE (p0_len, p0 - additional input 1, p1_len - size of output) # DRBG_GENERATE returns p1_len bytes of generated data -def _drbg_gen_cmd(inp, out): - outlen = len(out) - if outlen == 0: - outlen = 32 # if we don't care about output value, still need to have it +def _drbg_gen_cmd(inp, outlen): return DRBG_GENERATE.to_bytes(1, 'big') +\ len(inp).to_bytes(2, 'big') + inp +\ outlen.to_bytes(2, 'big') @@ -96,7 +95,9 @@ def drbg_test(tpm): for test in TEST_INPUTS: drbg_op, drbg_params = test - if drbg_op == DRBG_INIT: + if drbg_op == DRBG_GROUP_INIT: + outlen = drbg_params + elif drbg_op == DRBG_INIT: entropy, nonce, perso = drbg_params cmd = _drbg_init_cmd(drbg_op, a2b(entropy), a2b(nonce), a2b(perso)) response = tpm.command(tpm.wrap_ext_command(subcmd.DRBG_TEST, cmd)) @@ -114,7 +115,7 @@ def drbg_test(tpm): (utils.hex_dump(response))) elif drbg_op == DRBG_GENERATE: inp, expected = drbg_params - cmd = _drbg_gen_cmd(a2b(inp), a2b(expected)) + cmd = _drbg_gen_cmd(a2b(inp), outlen) response = tpm.command(tpm.wrap_ext_command(subcmd.DRBG_TEST, cmd)) if expected != '': result = response[12:] -- cgit v1.2.1