blob: 3c61120a1123f88a3ba62711e1cfa2a0f0968efb [file] [log] [blame]
Valerio Setti4f4ade92024-05-03 17:28:04 +02001/* psasim test client */
2
3/*
4 * Copyright The Mbed TLS Contributors
5 * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
6 */
7
Valerio Setti4362aae2024-05-09 09:15:39 +02008#include <stdio.h>
9#include <unistd.h>
10
Valerio Setti4f4ade92024-05-03 17:28:04 +020011#include <psa/client.h>
12#include <psa/util.h>
13#include "psa_manifest/sid.h"
Valerio Setti4362aae2024-05-09 09:15:39 +020014
15#include "mbedtls/version.h"
Valerio Setti4f4ade92024-05-03 17:28:04 +020016
17#define CLIENT_PRINT(fmt, ...) \
18 PRINT("Client: " fmt, ##__VA_ARGS__)
19
20int main()
21{
Valerio Setti4362aae2024-05-09 09:15:39 +020022 char mbedtls_version[18];
Valerio Setti4f4ade92024-05-03 17:28:04 +020023 const char *text = "FOOBARCOOL!!";
24 char output[100] = { 0 };
Valerio Setti4362aae2024-05-09 09:15:39 +020025
26 mbedtls_version_get_string_full(mbedtls_version);
27 CLIENT_PRINT("%s", mbedtls_version);
28
Valerio Setti4f4ade92024-05-03 17:28:04 +020029 CLIENT_PRINT("My PID: %d", getpid());
30
31 CLIENT_PRINT("PSA version: %u", psa_version(PSA_SID_SHA256_SID));
32 psa_handle_t h = psa_connect(PSA_SID_SHA256_SID, 1);
33
34 if (h < 0) {
35 CLIENT_PRINT("Couldn't connect %d", h);
36 return 1;
37 } else {
38 int type = 2;
39 CLIENT_PRINT("psa_call() w/o invec returned: %d", psa_call(h, type, NULL, 0, NULL, 0));
40 psa_invec invecs[1];
41 psa_outvec outvecs[1];
42 invecs[0].base = text;
43 invecs[0].len = sizeof(text);
44 outvecs[0].base = output;
45 outvecs[0].len = sizeof(output);
46
47 CLIENT_PRINT("invec len: %lu", invecs[0].len);
48 CLIENT_PRINT("psa_call() w/ invec returned: %d", psa_call(h, type, invecs, 1, outvecs, 1));
49 CLIENT_PRINT("Received payload len: %ld", outvecs[0].len);
50 CLIENT_PRINT("Received payload content: %s", output);
51 CLIENT_PRINT("Closing handle");
52 psa_close(h);
53 }
54
55 return 0;
56}