diff mbox series

[PATCHv2] drivers: tee: sandbox: Fix SCP03 control emulator

Message ID 20230408153531.434909-1-jorge@foundries.io
State Accepted
Commit 7f1a4c9dd89b5bd5203988609fe3f9f9c0c0e4e8
Delegated to: Simon Glass
Headers show
Series [PATCHv2] drivers: tee: sandbox: Fix SCP03 control emulator | expand

Commit Message

Jorge Ramirez-Ortiz April 8, 2023, 3:35 p.m. UTC
Fix and document the Secure Channel Protocol03 emulator.

Fixes: 5a8783c80c39 ("drivers: tee: sandbox: SCP03 control emulator")

Signed-off-by: Jorge Ramirez-Ortiz <jorge@foundries.io>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>

---
 drivers/tee/sandbox.c | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)
diff mbox series

Patch

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: