blob: c8cdd3842ee74a00cde5d8e9994e2312c748c353 [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
18/**
19 * \brief Selects and returns a random key_usage_t value.
20 *
21 * \details
22 *
23 * \note
24 *
25 */
26string rand_key_usage (void)
27{
28 switch (rand() % 6) {
29 case 0: return "PSA_KEY_USAGE_EXPORT";
30 case 1: return "PSA_KEY_USAGE_ENCRYPT";
31 case 2: return "PSA_KEY_USAGE_DECRYPT";
Nik Dewallyc7985db2024-07-10 17:55:08 +010032 case 3: return "PSA_KEY_USAGE_SIGN_HASH";
33 case 4: return "PSA_KEY_USAGE_VERIFY_HASH";
Karl Zhang3de5ab12021-05-31 11:45:48 +080034 case 5: return "PSA_KEY_USAGE_DERIVE";
35 }
36 return ""; /* placate compiler */
37}
38
39/**
40 * \brief Selects and returns a random psa_algorithm_t value.
41 *
42 * \details
43 *
44 * \note
45 *
46 */
47/* TODO: Likely want to make additional versions of these specific for TLS,
48 asymmetric, symmetric... */
49string rand_key_algorithm (void)
50{
Nik Dewallyc7985db2024-07-10 17:55:08 +010051 switch (rand() % 24) {
52 case 0: return "PSA_ALG_MD5";
53 case 1: return "PSA_ALG_RIPEMD160";
54 case 2: return "PSA_ALG_SHA_1";
55 case 3: return "PSA_ALG_SHA_224";
56 case 4: return "PSA_ALG_SHA_256";
57 case 5: return "PSA_ALG_SHA_384";
58 case 6: return "PSA_ALG_SHA_512";
59 case 7: return "PSA_ALG_SHA_512_224";
60 case 8: return "PSA_ALG_SHA_512_256";
61 case 9: return "PSA_ALG_SHA3_224";
62 case 10: return "PSA_ALG_SHA3_256";
63 case 11: return "PSA_ALG_SHA3_384";
64 case 12: return "PSA_ALG_SHA3_512";
65 case 13: return "PSA_ALG_ANY_HASH";
66 case 14: return "PSA_ALG_CBC_MAC";
67 case 15: return "PSA_ALG_CMAC";
68 case 16: return "PSA_ALG_CTR";
69 case 17: return "PSA_ALG_CFB";
70 case 18: return "PSA_ALG_OFB";
71 case 19: return "PSA_ALG_XTS";
72 case 20: return "PSA_ALG_CBC_NO_PADDING";
73 case 21: return "PSA_ALG_CBC_PKCS7";
74 case 22: return "PSA_ALG_CCM";
75 case 23: return "PSA_ALG_GCM";
Karl Zhang3de5ab12021-05-31 11:45:48 +080076 }
77 return ""; /* placate compiler */
78}
79
80
81/**
82 * \brief Selects and returns a random psa_key_type_t value.
83 *
84 * \details
85 *
86 * \note
87 *
88 */
89string rand_key_type (void)
90{
Nik Dewallyc7985db2024-07-10 17:55:08 +010091 switch (rand() % 9) {
Karl Zhang3de5ab12021-05-31 11:45:48 +080092 case 0: return "PSA_KEY_TYPE_NONE";
Nik Dewallyc7985db2024-07-10 17:55:08 +010093 case 1: return "PSA_KEY_TYPE_RAW_DATA";
94 case 2: return "PSA_KEY_TYPE_HMAC";
95 case 3: return "PSA_KEY_TYPE_DERIVE";
96 case 4: return "PSA_KEY_TYPE_AES";
97 case 5: return "PSA_KEY_TYPE_DES";
98 case 6: return "PSA_KEY_TYPE_CAMELLIA";
99 case 7: return "PSA_KEY_TYPE_RSA_PUBLIC_KEY";
100 case 8: return "PSA_KEY_TYPE_RSA_KEY_PAIR";
Karl Zhang3de5ab12021-05-31 11:45:48 +0800101 }
102 return ""; /* placate compiler */
103}