diff options
author | Mary Ruthven <mruthven@chromium.org> | 2021-05-26 17:07:52 -0500 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-06-09 16:16:22 +0000 |
commit | ed1f3afedbc9d48b0f5bc94fa3e3bdbb89bfe605 (patch) | |
tree | c4b26e217bb5578ca7c6115a2c2cbee8293da93c | |
parent | ac722759f58c5a4956a9cdaaa206de1d8808e1d2 (diff) | |
download | chrome-ec-ed1f3afedbc9d48b0f5bc94fa3e3bdbb89bfe605.tar.gz |
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 <mruthven@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2923241
Reviewed-by: Vadim Sukhomlinov <sukhomlinov@chromium.org>
Reviewed-by: Namyoon Woo <namyoon@chromium.org>
-rw-r--r-- | test/tpm_test/drbg_test.py | 13 |
1 files 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:] |