crypto: ccp - Fix sample application signature passing
authorMario Limonciello <mario.limonciello@amd.com>
Tue, 29 Aug 2023 15:07:58 +0000 (10:07 -0500)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 15 Sep 2023 10:29:45 +0000 (18:29 +0800)
When parameters are sent the PSP returns back it's own signature
for the application to verify the authenticity of the result.

Display this signature to the caller instead of the one the caller
sent.

Fixes: f40d42f116cf ("crypto: ccp - Add a sample python script for Dynamic Boost Control")
Fixes: febe3ed3222f ("crypto: ccp - Add a sample library for ioctl use")
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
tools/crypto/ccp/dbc.c
tools/crypto/ccp/dbc.py

index 7774e981849fa63ffc8c694c800140aa8a6461ec..a807df0f059740350f79926d226604479f95cb11 100644 (file)
@@ -68,5 +68,6 @@ int process_param(int fd, int msg_index, __u8 *signature, int *data)
                return errno;
 
        *data = tmp.param;
+       memcpy(signature, tmp.signature, sizeof(tmp.signature));
        return 0;
 }
index 3956efe7537ac8381c7350860b9331d8ad36ad86..2b91415b19407402e1997230e7d781a31ccdf5ec 100644 (file)
@@ -57,7 +57,8 @@ def process_param(device, message, signature, data=None):
     if type(message) != tuple:
         raise ValueError("Expected message tuple")
     arg = ctypes.c_int(data if data else 0)
-    ret = lib.process_param(device.fileno(), message[0], signature, ctypes.pointer(arg))
+    sig = ctypes.create_string_buffer(signature, len(signature))
+    ret = lib.process_param(device.fileno(), message[0], ctypes.pointer(sig), ctypes.pointer(arg))
     if ret:
         handle_error(ret)
-    return arg, signature
+    return arg.value, sig.value