From 7f1a4c9dd89b5bd5203988609fe3f9f9c0c0e4e8 Mon Sep 17 00:00:00 2001 From: Jorge Ramirez-Ortiz Date: Sat, 8 Apr 2023 17:35:31 +0200 Subject: [PATCH] drivers: tee: sandbox: Fix SCP03 control emulator Fix and document the Secure Channel Protocol03 emulator. Fixes: 5a8783c80c39 ("drivers: tee: sandbox: SCP03 control emulator") Signed-off-by: Jorge Ramirez-Ortiz Reviewed-by: Simon Glass Reviewed-by: Ilias Apalodimas --- drivers/tee/sandbox.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/drivers/tee/sandbox.c b/drivers/tee/sandbox.c index 35e8542fa3..86219a9bb1 100644 --- a/drivers/tee/sandbox.c +++ b/drivers/tee/sandbox.c @@ -119,6 +119,7 @@ static u32 pta_scp03_invoke_func(struct udevice *dev, u32 func, uint num_params, { u32 res; static bool enabled; + static bool provisioned; switch (func) { case PTA_CMD_ENABLE_SCP03: @@ -130,12 +131,18 @@ static u32 pta_scp03_invoke_func(struct udevice *dev, u32 func, uint num_params, if (res) return res; - if (!enabled) { + /* If SCP03 was not enabled, enable it */ + if (!enabled) enabled = true; - } else { - } - if (params[0].u.value.a) + /* If SCP03 was not provisioned, provision new keys */ + if (params[0].u.value.a && !provisioned) + provisioned = true; + + /* + * Either way, we asume both operations succeeded and that + * the communication channel has now been stablished + */ return TEE_SUCCESS; default: -- 2.39.5