blob: ad8ecbcaf4a315c03eb363dbca440bc481b11fd0 [file] [log] [blame]
Karl Zhang3de5ab12021-05-31 11:45:48 +08001/*
Mate Toth-Palffba10e2021-09-22 21:38:03 +02002 * Copyright (c) 2019-2022, 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
14#include "randomization.hpp"
15
16/**
17 * \brief Selects and returns a random key_usage_t value.
18 *
19 * \details
20 *
21 * \note
22 *
23 */
24string rand_key_usage (void)
25{
26 switch (rand() % 6) {
27 case 0: return "PSA_KEY_USAGE_EXPORT";
28 case 1: return "PSA_KEY_USAGE_ENCRYPT";
29 case 2: return "PSA_KEY_USAGE_DECRYPT";
30 case 3: return "PSA_KEY_USAGE_SIGN";
31 case 4: return "PSA_KEY_USAGE_VERIFY";
32 case 5: return "PSA_KEY_USAGE_DERIVE";
33 }
34 return ""; /* placate compiler */
35}
36
37/**
38 * \brief Selects and returns a random psa_algorithm_t value.
39 *
40 * \details
41 *
42 * \note
43 *
44 */
45/* TODO: Likely want to make additional versions of these specific for TLS,
46 asymmetric, symmetric... */
47string rand_key_algorithm (void)
48{
Mate Toth-Palffba10e2021-09-22 21:38:03 +020049 switch (rand() % 47) {
Karl Zhang3de5ab12021-05-31 11:45:48 +080050 case 0: return "PSA_ALG_VENDOR_FLAG";
51 case 1: return "PSA_ALG_CATEGORY_MASK";
52 case 2: return "PSA_ALG_CATEGORY_HASH";
53 case 3: return "PSA_ALG_CATEGORY_MAC";
54 case 4: return "PSA_ALG_CATEGORY_CIPHER";
55 case 5: return "PSA_ALG_CATEGORY_AEAD";
56 case 6: return "PSA_ALG_CATEGORY_SIGN";
57 case 7: return "PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION";
58 case 8: return "PSA_ALG_CATEGORY_KEY_AGREEMENT";
59 case 9: return "PSA_ALG_CATEGORY_KEY_DERIVATION";
Mate Toth-Palffba10e2021-09-22 21:38:03 +020060 case 10: return "PSA_ALG_CATEGORY_KEY_SELECTION";
61 case 11: return "PSA_ALG_KEY_SELECTION_FLAG";
62 case 12: return "PSA_ALG_HASH_MASK";
63 case 13: return "PSA_ALG_MD2";
64 case 14: return "PSA_ALG_MD4";
65 case 15: return "PSA_ALG_MD5";
66 case 16: return "PSA_ALG_RIPEMD160";
67 case 17: return "PSA_ALG_SHA_1";
68 case 18: return "PSA_ALG_SHA_224";
69 case 19: return "PSA_ALG_SHA_256";
70 case 20: return "PSA_ALG_SHA_384";
71 case 21: return "PSA_ALG_SHA_512";
72 case 22: return "PSA_ALG_SHA_512_224";
73 case 23: return "PSA_ALG_SHA_512_256";
74 case 24: return "PSA_ALG_SHA3_224";
75 case 25: return "PSA_ALG_SHA3_256";
76 case 26: return "PSA_ALG_SHA3_384";
77 case 27: return "PSA_ALG_SHA3_512";
78 case 28: return "PSA_ALG_ANY_HASH";
79 case 29: return "PSA_ALG_MAC_SUBCATEGORY_MASK";
80 case 30: return "PSA_ALG_HMAC_BASE";
81 case 31: return "PSA_ALG_MAC_TRUNCATION_MASK";
82 case 32: return "PSA_ALG_CIPHER_MAC_BASE";
83 case 33: return "PSA_ALG_CBC_MAC";
84 case 34: return "PSA_ALG_CMAC";
85 case 35: return "PSA_ALG_GMAC";
86 case 36: return "PSA_ALG_CIPHER_STREAM_FLAG";
87 case 37: return "PSA_ALG_CIPHER_FROM_BLOCK_FLAG";
88 case 38: return "PSA_ALG_ARC4";
89 case 39: return "PSA_ALG_CTR";
90 case 40: return "PSA_ALG_CFB";
91 case 41: return "PSA_ALG_OFB";
92 case 42: return "PSA_ALG_XTS";
93 case 43: return "PSA_ALG_CBC_NO_PADDING";
94 case 44: return "PSA_ALG_CBC_PKCS7";
95 case 45: return "PSA_ALG_CCM";
96 case 46: return "PSA_ALG_GCM";
Karl Zhang3de5ab12021-05-31 11:45:48 +080097 }
98 return ""; /* placate compiler */
99}
100
101
102/**
103 * \brief Selects and returns a random psa_key_type_t value.
104 *
105 * \details
106 *
107 * \note
108 *
109 */
110string rand_key_type (void)
111{
Mate Toth-Palffba10e2021-09-22 21:38:03 +0200112 switch (rand() % 22) {
Karl Zhang3de5ab12021-05-31 11:45:48 +0800113 case 0: return "PSA_KEY_TYPE_NONE";
114 case 1: return "PSA_KEY_TYPE_VENDOR_FLAG";
115 case 2: return "PSA_KEY_TYPE_CATEGORY_MASK";
116 case 3: return "PSA_KEY_TYPE_CATEGORY_SYMMETRIC";
117 case 4: return "PSA_KEY_TYPE_CATEGORY_RAW";
118 case 5: return "PSA_KEY_TYPE_CATEGORY_PUBLIC_KEY";
119 case 6: return "PSA_KEY_TYPE_CATEGORY_KEY_PAIR";
120 case 7: return "PSA_KEY_TYPE_CATEGORY_FLAG_PAIR";
121 case 8: return "PSA_KEY_TYPE_RAW_DATA";
122 case 9: return "PSA_KEY_TYPE_HMAC";
123 case 10: return "PSA_KEY_TYPE_DERIVE";
124 case 11: return "PSA_KEY_TYPE_AES";
125 case 12: return "PSA_KEY_TYPE_DES";
126 case 13: return "PSA_KEY_TYPE_CAMELLIA";
127 case 14: return "PSA_KEY_TYPE_ARC4";
Mate Toth-Palffba10e2021-09-22 21:38:03 +0200128 case 15: return "PSA_KEY_TYPE_RSA_PUBLIC_KEY";
129 case 16: return "PSA_KEY_TYPE_RSA_KEYPAIR";
130 case 17: return "PSA_KEY_TYPE_DSA_PUBLIC_KEY";
131 case 18: return "PSA_KEY_TYPE_DSA_KEYPAIR";
132 case 19: return "PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE";
133 case 20: return "PSA_KEY_TYPE_ECC_KEYPAIR_BASE";
134 case 21: return "PSA_KEY_TYPE_ECC_CURVE_MASK";
Karl Zhang3de5ab12021-05-31 11:45:48 +0800135 default: return "";
136 }
137 return ""; /* placate compiler */
138}
139