blob: 23eb7d2c96bda84956f5f3c4312afe02a2ba536d [file] [log] [blame]
Karl Zhang3de5ab12021-05-31 11:45:48 +08001/*
2 * Copyright (c) 2019-2020, Arm Limited. All rights reserved.
3 *
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{
49 switch (rand() % 44) {
50 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";
60 case 10: return "PSA_ALG_HASH_MASK";
61 case 11: return "PSA_ALG_MD2";
62 case 12: return "PSA_ALG_MD4";
63 case 13: return "PSA_ALG_MD5";
64 case 14: return "PSA_ALG_RIPEMD160";
65 case 15: return "PSA_ALG_SHA_1";
66 case 16: return "PSA_ALG_SHA_224";
67 case 17: return "PSA_ALG_SHA_256";
68 case 18: return "PSA_ALG_SHA_384";
69 case 19: return "PSA_ALG_SHA_512";
70 case 20: return "PSA_ALG_SHA_512_224";
71 case 21: return "PSA_ALG_SHA_512_256";
72 case 22: return "PSA_ALG_SHA3_224";
73 case 23: return "PSA_ALG_SHA3_256";
74 case 24: return "PSA_ALG_SHA3_384";
75 case 25: return "PSA_ALG_SHA3_512";
76 case 26: return "PSA_ALG_ANY_HASH";
77 case 27: return "PSA_ALG_MAC_SUBCATEGORY_MASK";
78 case 28: return "PSA_ALG_HMAC_BASE";
79 case 29: return "PSA_ALG_MAC_TRUNCATION_MASK";
80 case 30: return "PSA_ALG_CIPHER_MAC_BASE";
81 case 31: return "PSA_ALG_CBC_MAC";
82 case 32: return "PSA_ALG_CMAC";
83 case 33: return "PSA_ALG_CIPHER_STREAM_FLAG";
84 case 34: return "PSA_ALG_CIPHER_FROM_BLOCK_FLAG";
85 case 35: return "PSA_ALG_ARC4";
86 case 36: return "PSA_ALG_CTR";
87 case 37: return "PSA_ALG_CFB";
88 case 38: return "PSA_ALG_OFB";
89 case 39: return "PSA_ALG_XTS";
90 case 40: return "PSA_ALG_CBC_NO_PADDING";
91 case 41: return "PSA_ALG_CBC_PKCS7";
92 case 42: return "PSA_ALG_CCM";
93 case 43: return "PSA_ALG_GCM";
94 }
95 return ""; /* placate compiler */
96}
97
98
99/**
100 * \brief Selects and returns a random psa_key_type_t value.
101 *
102 * \details
103 *
104 * \note
105 *
106 */
107string rand_key_type (void)
108{
109 switch (rand() % 24) {
110 case 0: return "PSA_KEY_TYPE_NONE";
111 case 1: return "PSA_KEY_TYPE_VENDOR_FLAG";
112 case 2: return "PSA_KEY_TYPE_CATEGORY_MASK";
113 case 3: return "PSA_KEY_TYPE_CATEGORY_SYMMETRIC";
114 case 4: return "PSA_KEY_TYPE_CATEGORY_RAW";
115 case 5: return "PSA_KEY_TYPE_CATEGORY_PUBLIC_KEY";
116 case 6: return "PSA_KEY_TYPE_CATEGORY_KEY_PAIR";
117 case 7: return "PSA_KEY_TYPE_CATEGORY_FLAG_PAIR";
118 case 8: return "PSA_KEY_TYPE_RAW_DATA";
119 case 9: return "PSA_KEY_TYPE_HMAC";
120 case 10: return "PSA_KEY_TYPE_DERIVE";
121 case 11: return "PSA_KEY_TYPE_AES";
122 case 12: return "PSA_KEY_TYPE_DES";
123 case 13: return "PSA_KEY_TYPE_CAMELLIA";
124 case 14: return "PSA_KEY_TYPE_ARC4";
125 case 15: return "PSA_KEY_TYPE_CHACHA20";
126 case 16: return "PSA_KEY_TYPE_RSA_PUBLIC_KEY";
127 case 17: return "PSA_KEY_TYPE_RSA_KEY_PAIR";
128 case 18: return "PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE";
129 case 19: return "PSA_KEY_TYPE_ECC_KEY_PAIR_BASE";
130 case 20: return "PSA_KEY_TYPE_ECC_CURVE_MASK";
131 case 21: return "PSA_KEY_TYPE_DH_PUBLIC_KEY_BASE";
132 case 22: return "PSA_KEY_TYPE_DH_KEY_PAIR_BASE";
133 case 23: return "PSA_KEY_TYPE_DH_GROUP_MASK";
134 default: return "";
135 }
136 return ""; /* placate compiler */
137}
138
139
140