Move JPAKE state machine logic from driver to core
- Add `alg` and `computation_stage` to `psa_pake_operation_s`.
Now when logic is moved to core information about `alg` is required.
`computation_stage` is a structure that provides a union of computation stages for pake algorithms.
- Move the jpake operation logic from driver to core. This requires changing driver entry points for `psa_pake_output`/`psa_pake_input` functions and adding a `computation_stage` parameter. I'm not sure if this solution is correct. Now the driver can check the current computation stage and perform some action. For jpake drivers `step` parameter is now not used, but I think it needs to stay as it might be needed for other pake algorithms.
- Removed test that seems to be redundant as we can't be sure that operation is aborted after failure.
Signed-off-by: Przemek Stekiel <przemyslaw.stekiel@mobica.com>
diff --git a/tests/src/drivers/test_driver_pake.c b/tests/src/drivers/test_driver_pake.c
index 437c499..21719e6 100644
--- a/tests/src/drivers/test_driver_pake.c
+++ b/tests/src/drivers/test_driver_pake.c
@@ -65,6 +65,7 @@
psa_status_t mbedtls_test_transparent_pake_output(
mbedtls_transparent_test_driver_pake_operation_t *operation,
psa_pake_step_t step,
+ const psa_pake_computation_stage_t *computation_stage,
uint8_t *output,
size_t output_size,
size_t *output_length)
@@ -92,14 +93,20 @@
defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_PAKE)
mbedtls_test_driver_pake_hooks.driver_status =
libtestdriver1_mbedtls_psa_pake_output(
- operation, step, output, output_size, output_length);
+ operation,
+ step,
+ (libtestdriver1_psa_pake_computation_stage_t *) computation_stage,
+ output,
+ output_size,
+ output_length);
#elif defined(MBEDTLS_PSA_BUILTIN_PAKE)
mbedtls_test_driver_pake_hooks.driver_status =
mbedtls_psa_pake_output(
- operation, step, output, output_size, output_length);
+ operation, step, computation_stage, output, output_size, output_length);
#else
(void) operation;
(void) step;
+ (void) computation_stage;
(void) output;
(void) output_size;
(void) output_length;
@@ -113,6 +120,7 @@
psa_status_t mbedtls_test_transparent_pake_input(
mbedtls_transparent_test_driver_pake_operation_t *operation,
psa_pake_step_t step,
+ const psa_pake_computation_stage_t *computation_stage,
const uint8_t *input,
size_t input_length)
{
@@ -126,14 +134,19 @@
defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_PAKE)
mbedtls_test_driver_pake_hooks.driver_status =
libtestdriver1_mbedtls_psa_pake_input(
- operation, step, input, input_length);
+ operation,
+ step,
+ (libtestdriver1_psa_pake_computation_stage_t *) computation_stage,
+ input,
+ input_length);
#elif defined(MBEDTLS_PSA_BUILTIN_PAKE)
mbedtls_test_driver_pake_hooks.driver_status =
mbedtls_psa_pake_input(
- operation, step, input, input_length);
+ operation, step, computation_stage, input, input_length);
#else
(void) operation;
(void) step;
+ (void) computation_stage;
(void) input;
(void) input_length;
mbedtls_test_driver_pake_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
@@ -258,12 +271,14 @@
psa_status_t mbedtls_test_opaque_pake_output(
mbedtls_opaque_test_driver_pake_operation_t *operation,
psa_pake_step_t step,
+ const psa_pake_computation_stage_t *computation_stage,
uint8_t *output,
size_t output_size,
size_t *output_length)
{
(void) operation;
(void) step;
+ (void) computation_stage;
(void) output;
(void) output_size;
(void) output_length;
@@ -274,11 +289,13 @@
psa_status_t mbedtls_test_opaque_pake_input(
mbedtls_opaque_test_driver_pake_operation_t *operation,
psa_pake_step_t step,
+ const psa_pake_computation_stage_t *computation_stage,
const uint8_t *input,
size_t input_length)
{
(void) operation;
(void) step;
+ (void) computation_stage;
(void) input;
(void) input_length;
return PSA_ERROR_NOT_SUPPORTED;