From: Jorge Ramirez-Ortiz Date: Sat, 8 Apr 2023 15:35:31 +0000 (+0200) Subject: drivers: tee: sandbox: Fix SCP03 control emulator X-Git-Tag: v2025.01-rc5-pxa1908~1024^2~13 X-Git-Url: http://git.dujemihanovic.xyz/img/%22http:/www.sics.se/static/gitweb.css?a=commitdiff_plain;h=7f1a4c9dd89b5bd5203988609fe3f9f9c0c0e4e8;p=u-boot.git 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 --- 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: