blob: ded87bbec4d1c1d372d84943cb48ba8270851f6c [file] [log] [blame]
Karl Zhang3de5ab12021-05-31 11:45:48 +08001/*
Nik Dewally298a8042024-07-23 15:03:13 +01002 * Copyright (c) 2019-2024, Arm Limited. All rights reserved.
Karl Zhang3de5ab12021-05-31 11:45:48 +08003 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 *
6 */
7
8/**********************************************************************************
9 Functions in this file are exactly that: functions, not methods of any class.
10 That is, they are stand-alone, utility functions linked in to the executable,
11 and available to whomever needs them.
12**********************************************************************************/
13
Nik Dewallyc7985db2024-07-10 17:55:08 +010014// TODO: the key usages, algorithms, and types are currently incomplete.
15
Karl Zhang3de5ab12021-05-31 11:45:48 +080016#include "randomization.hpp"
17
Nik Dewallybacae6c2024-07-30 16:58:14 +010018#include <stdlib.h>
19
Karl Zhang3de5ab12021-05-31 11:45:48 +080020/**
21 * \brief Selects and returns a random key_usage_t value.
22 *
23 * \details
24 *
25 * \note
26 *
27 */
28string rand_key_usage (void)
29{
30 switch (rand() % 6) {
31 case 0: return "PSA_KEY_USAGE_EXPORT";
32 case 1: return "PSA_KEY_USAGE_ENCRYPT";
33 case 2: return "PSA_KEY_USAGE_DECRYPT";
Nik Dewallyc7985db2024-07-10 17:55:08 +010034 case 3: return "PSA_KEY_USAGE_SIGN_HASH";
35 case 4: return "PSA_KEY_USAGE_VERIFY_HASH";
Karl Zhang3de5ab12021-05-31 11:45:48 +080036 case 5: return "PSA_KEY_USAGE_DERIVE";
37 }
38 return ""; /* placate compiler */
39}
40
41/**
42 * \brief Selects and returns a random psa_algorithm_t value.
43 *
44 * \details
45 *
46 * \note
47 *
48 */
49/* TODO: Likely want to make additional versions of these specific for TLS,
50 asymmetric, symmetric... */
51string rand_key_algorithm (void)
52{
Nik Dewallyc7985db2024-07-10 17:55:08 +010053 switch (rand() % 24) {
54 case 0: return "PSA_ALG_MD5";
55 case 1: return "PSA_ALG_RIPEMD160";
56 case 2: return "PSA_ALG_SHA_1";
57 case 3: return "PSA_ALG_SHA_224";
58 case 4: return "PSA_ALG_SHA_256";
59 case 5: return "PSA_ALG_SHA_384";
60 case 6: return "PSA_ALG_SHA_512";
61 case 7: return "PSA_ALG_SHA_512_224";
62 case 8: return "PSA_ALG_SHA_512_256";
63 case 9: return "PSA_ALG_SHA3_224";
64 case 10: return "PSA_ALG_SHA3_256";
65 case 11: return "PSA_ALG_SHA3_384";
66 case 12: return "PSA_ALG_SHA3_512";
67 case 13: return "PSA_ALG_ANY_HASH";
68 case 14: return "PSA_ALG_CBC_MAC";
69 case 15: return "PSA_ALG_CMAC";
70 case 16: return "PSA_ALG_CTR";
71 case 17: return "PSA_ALG_CFB";
72 case 18: return "PSA_ALG_OFB";
73 case 19: return "PSA_ALG_XTS";
74 case 20: return "PSA_ALG_CBC_NO_PADDING";
75 case 21: return "PSA_ALG_CBC_PKCS7";
76 case 22: return "PSA_ALG_CCM";
77 case 23: return "PSA_ALG_GCM";
Karl Zhang3de5ab12021-05-31 11:45:48 +080078 }
79 return ""; /* placate compiler */
80}
81
82
83/**
84 * \brief Selects and returns a random psa_key_type_t value.
85 *
86 * \details
87 *
88 * \note
89 *
90 */
91string rand_key_type (void)
92{
Nik Dewallyc7985db2024-07-10 17:55:08 +010093 switch (rand() % 9) {
Karl Zhang3de5ab12021-05-31 11:45:48 +080094 case 0: return "PSA_KEY_TYPE_NONE";
Nik Dewallyc7985db2024-07-10 17:55:08 +010095 case 1: return "PSA_KEY_TYPE_RAW_DATA";
96 case 2: return "PSA_KEY_TYPE_HMAC";
97 case 3: return "PSA_KEY_TYPE_DERIVE";
98 case 4: return "PSA_KEY_TYPE_AES";
99 case 5: return "PSA_KEY_TYPE_DES";
100 case 6: return "PSA_KEY_TYPE_CAMELLIA";
101 case 7: return "PSA_KEY_TYPE_RSA_PUBLIC_KEY";
102 case 8: return "PSA_KEY_TYPE_RSA_KEY_PAIR";
Karl Zhang3de5ab12021-05-31 11:45:48 +0800103 }
104 return ""; /* placate compiler */
105}