1a8e1175bSopenharmony_ci/* Automatically generated by generate_psa_constant.py. DO NOT EDIT. */
2a8e1175bSopenharmony_ci
3a8e1175bSopenharmony_cistatic const char *psa_strerror(psa_status_t status)
4a8e1175bSopenharmony_ci{
5a8e1175bSopenharmony_ci    switch (status) {
6a8e1175bSopenharmony_ci    case PSA_ERROR_ALREADY_EXISTS: return "PSA_ERROR_ALREADY_EXISTS";
7a8e1175bSopenharmony_ci    case PSA_ERROR_BAD_STATE: return "PSA_ERROR_BAD_STATE";
8a8e1175bSopenharmony_ci    case PSA_ERROR_BUFFER_TOO_SMALL: return "PSA_ERROR_BUFFER_TOO_SMALL";
9a8e1175bSopenharmony_ci    case PSA_ERROR_COMMUNICATION_FAILURE: return "PSA_ERROR_COMMUNICATION_FAILURE";
10a8e1175bSopenharmony_ci    case PSA_ERROR_CORRUPTION_DETECTED: return "PSA_ERROR_CORRUPTION_DETECTED";
11a8e1175bSopenharmony_ci    case PSA_ERROR_DATA_CORRUPT: return "PSA_ERROR_DATA_CORRUPT";
12a8e1175bSopenharmony_ci    case PSA_ERROR_DATA_INVALID: return "PSA_ERROR_DATA_INVALID";
13a8e1175bSopenharmony_ci    case PSA_ERROR_DOES_NOT_EXIST: return "PSA_ERROR_DOES_NOT_EXIST";
14a8e1175bSopenharmony_ci    case PSA_ERROR_GENERIC_ERROR: return "PSA_ERROR_GENERIC_ERROR";
15a8e1175bSopenharmony_ci    case PSA_ERROR_HARDWARE_FAILURE: return "PSA_ERROR_HARDWARE_FAILURE";
16a8e1175bSopenharmony_ci    case PSA_ERROR_INSUFFICIENT_DATA: return "PSA_ERROR_INSUFFICIENT_DATA";
17a8e1175bSopenharmony_ci    case PSA_ERROR_INSUFFICIENT_ENTROPY: return "PSA_ERROR_INSUFFICIENT_ENTROPY";
18a8e1175bSopenharmony_ci    case PSA_ERROR_INSUFFICIENT_MEMORY: return "PSA_ERROR_INSUFFICIENT_MEMORY";
19a8e1175bSopenharmony_ci    case PSA_ERROR_INSUFFICIENT_STORAGE: return "PSA_ERROR_INSUFFICIENT_STORAGE";
20a8e1175bSopenharmony_ci    case PSA_ERROR_INVALID_ARGUMENT: return "PSA_ERROR_INVALID_ARGUMENT";
21a8e1175bSopenharmony_ci    case PSA_ERROR_INVALID_HANDLE: return "PSA_ERROR_INVALID_HANDLE";
22a8e1175bSopenharmony_ci    case PSA_ERROR_INVALID_PADDING: return "PSA_ERROR_INVALID_PADDING";
23a8e1175bSopenharmony_ci    case PSA_ERROR_INVALID_SIGNATURE: return "PSA_ERROR_INVALID_SIGNATURE";
24a8e1175bSopenharmony_ci    case PSA_ERROR_NOT_PERMITTED: return "PSA_ERROR_NOT_PERMITTED";
25a8e1175bSopenharmony_ci    case PSA_ERROR_NOT_SUPPORTED: return "PSA_ERROR_NOT_SUPPORTED";
26a8e1175bSopenharmony_ci    case PSA_ERROR_SERVICE_FAILURE: return "PSA_ERROR_SERVICE_FAILURE";
27a8e1175bSopenharmony_ci    case PSA_ERROR_STORAGE_FAILURE: return "PSA_ERROR_STORAGE_FAILURE";
28a8e1175bSopenharmony_ci    case PSA_SUCCESS: return "PSA_SUCCESS";
29a8e1175bSopenharmony_ci    default: return NULL;
30a8e1175bSopenharmony_ci    }
31a8e1175bSopenharmony_ci}
32a8e1175bSopenharmony_ci
33a8e1175bSopenharmony_cistatic const char *psa_ecc_family_name(psa_ecc_family_t curve)
34a8e1175bSopenharmony_ci{
35a8e1175bSopenharmony_ci    switch (curve) {
36a8e1175bSopenharmony_ci    case PSA_ECC_FAMILY_BRAINPOOL_P_R1: return "PSA_ECC_FAMILY_BRAINPOOL_P_R1";
37a8e1175bSopenharmony_ci    case PSA_ECC_FAMILY_MONTGOMERY: return "PSA_ECC_FAMILY_MONTGOMERY";
38a8e1175bSopenharmony_ci    case PSA_ECC_FAMILY_SECP_K1: return "PSA_ECC_FAMILY_SECP_K1";
39a8e1175bSopenharmony_ci    case PSA_ECC_FAMILY_SECP_R1: return "PSA_ECC_FAMILY_SECP_R1";
40a8e1175bSopenharmony_ci    case PSA_ECC_FAMILY_SECP_R2: return "PSA_ECC_FAMILY_SECP_R2";
41a8e1175bSopenharmony_ci    case PSA_ECC_FAMILY_SECT_K1: return "PSA_ECC_FAMILY_SECT_K1";
42a8e1175bSopenharmony_ci    case PSA_ECC_FAMILY_SECT_R1: return "PSA_ECC_FAMILY_SECT_R1";
43a8e1175bSopenharmony_ci    case PSA_ECC_FAMILY_SECT_R2: return "PSA_ECC_FAMILY_SECT_R2";
44a8e1175bSopenharmony_ci    case PSA_ECC_FAMILY_TWISTED_EDWARDS: return "PSA_ECC_FAMILY_TWISTED_EDWARDS";
45a8e1175bSopenharmony_ci    default: return NULL;
46a8e1175bSopenharmony_ci    }
47a8e1175bSopenharmony_ci}
48a8e1175bSopenharmony_ci
49a8e1175bSopenharmony_cistatic const char *psa_dh_family_name(psa_dh_family_t group)
50a8e1175bSopenharmony_ci{
51a8e1175bSopenharmony_ci    switch (group) {
52a8e1175bSopenharmony_ci    case PSA_DH_FAMILY_RFC7919: return "PSA_DH_FAMILY_RFC7919";
53a8e1175bSopenharmony_ci    default: return NULL;
54a8e1175bSopenharmony_ci    }
55a8e1175bSopenharmony_ci}
56a8e1175bSopenharmony_ci
57a8e1175bSopenharmony_cistatic const char *psa_hash_algorithm_name(psa_algorithm_t hash_alg)
58a8e1175bSopenharmony_ci{
59a8e1175bSopenharmony_ci    switch (hash_alg) {
60a8e1175bSopenharmony_ci    case PSA_ALG_ANY_HASH: return "PSA_ALG_ANY_HASH";
61a8e1175bSopenharmony_ci    case PSA_ALG_CATEGORY_HASH: return "PSA_ALG_CATEGORY_HASH";
62a8e1175bSopenharmony_ci    case PSA_ALG_MD5: return "PSA_ALG_MD5";
63a8e1175bSopenharmony_ci    case PSA_ALG_RIPEMD160: return "PSA_ALG_RIPEMD160";
64a8e1175bSopenharmony_ci    case PSA_ALG_SHA3_224: return "PSA_ALG_SHA3_224";
65a8e1175bSopenharmony_ci    case PSA_ALG_SHA3_256: return "PSA_ALG_SHA3_256";
66a8e1175bSopenharmony_ci    case PSA_ALG_SHA3_384: return "PSA_ALG_SHA3_384";
67a8e1175bSopenharmony_ci    case PSA_ALG_SHA3_512: return "PSA_ALG_SHA3_512";
68a8e1175bSopenharmony_ci    case PSA_ALG_SHAKE256_512: return "PSA_ALG_SHAKE256_512";
69a8e1175bSopenharmony_ci    case PSA_ALG_SHA_1: return "PSA_ALG_SHA_1";
70a8e1175bSopenharmony_ci    case PSA_ALG_SHA_224: return "PSA_ALG_SHA_224";
71a8e1175bSopenharmony_ci    case PSA_ALG_SHA_256: return "PSA_ALG_SHA_256";
72a8e1175bSopenharmony_ci    case PSA_ALG_SHA_384: return "PSA_ALG_SHA_384";
73a8e1175bSopenharmony_ci    case PSA_ALG_SHA_512: return "PSA_ALG_SHA_512";
74a8e1175bSopenharmony_ci    case PSA_ALG_SHA_512_224: return "PSA_ALG_SHA_512_224";
75a8e1175bSopenharmony_ci    case PSA_ALG_SHA_512_256: return "PSA_ALG_SHA_512_256";
76a8e1175bSopenharmony_ci    default: return NULL;
77a8e1175bSopenharmony_ci    }
78a8e1175bSopenharmony_ci}
79a8e1175bSopenharmony_ci
80a8e1175bSopenharmony_cistatic const char *psa_ka_algorithm_name(psa_algorithm_t ka_alg)
81a8e1175bSopenharmony_ci{
82a8e1175bSopenharmony_ci    switch (ka_alg) {
83a8e1175bSopenharmony_ci    case PSA_ALG_CATEGORY_KEY_AGREEMENT: return "PSA_ALG_CATEGORY_KEY_AGREEMENT";
84a8e1175bSopenharmony_ci    case PSA_ALG_ECDH: return "PSA_ALG_ECDH";
85a8e1175bSopenharmony_ci    case PSA_ALG_FFDH: return "PSA_ALG_FFDH";
86a8e1175bSopenharmony_ci    default: return NULL;
87a8e1175bSopenharmony_ci    }
88a8e1175bSopenharmony_ci}
89a8e1175bSopenharmony_ci
90a8e1175bSopenharmony_cistatic int psa_snprint_key_type(char *buffer, size_t buffer_size,
91a8e1175bSopenharmony_ci                                psa_key_type_t type)
92a8e1175bSopenharmony_ci{
93a8e1175bSopenharmony_ci    size_t required_size = 0;
94a8e1175bSopenharmony_ci    switch (type) {
95a8e1175bSopenharmony_ci    case PSA_KEY_TYPE_AES: append(&buffer, buffer_size, &required_size, "PSA_KEY_TYPE_AES", 16); break;
96a8e1175bSopenharmony_ci    case PSA_KEY_TYPE_ARIA: append(&buffer, buffer_size, &required_size, "PSA_KEY_TYPE_ARIA", 17); break;
97a8e1175bSopenharmony_ci    case PSA_KEY_TYPE_CAMELLIA: append(&buffer, buffer_size, &required_size, "PSA_KEY_TYPE_CAMELLIA", 21); break;
98a8e1175bSopenharmony_ci    case PSA_KEY_TYPE_CATEGORY_FLAG_PAIR: append(&buffer, buffer_size, &required_size, "PSA_KEY_TYPE_CATEGORY_FLAG_PAIR", 31); break;
99a8e1175bSopenharmony_ci    case PSA_KEY_TYPE_CATEGORY_KEY_PAIR: append(&buffer, buffer_size, &required_size, "PSA_KEY_TYPE_CATEGORY_KEY_PAIR", 30); break;
100a8e1175bSopenharmony_ci    case PSA_KEY_TYPE_CATEGORY_PUBLIC_KEY: append(&buffer, buffer_size, &required_size, "PSA_KEY_TYPE_CATEGORY_PUBLIC_KEY", 32); break;
101a8e1175bSopenharmony_ci    case PSA_KEY_TYPE_CATEGORY_RAW: append(&buffer, buffer_size, &required_size, "PSA_KEY_TYPE_CATEGORY_RAW", 25); break;
102a8e1175bSopenharmony_ci    case PSA_KEY_TYPE_CATEGORY_SYMMETRIC: append(&buffer, buffer_size, &required_size, "PSA_KEY_TYPE_CATEGORY_SYMMETRIC", 31); break;
103a8e1175bSopenharmony_ci    case PSA_KEY_TYPE_CHACHA20: append(&buffer, buffer_size, &required_size, "PSA_KEY_TYPE_CHACHA20", 21); break;
104a8e1175bSopenharmony_ci    case PSA_KEY_TYPE_DERIVE: append(&buffer, buffer_size, &required_size, "PSA_KEY_TYPE_DERIVE", 19); break;
105a8e1175bSopenharmony_ci    case PSA_KEY_TYPE_DES: append(&buffer, buffer_size, &required_size, "PSA_KEY_TYPE_DES", 16); break;
106a8e1175bSopenharmony_ci    case PSA_KEY_TYPE_DH_KEY_PAIR_BASE: append(&buffer, buffer_size, &required_size, "PSA_KEY_TYPE_DH_KEY_PAIR_BASE", 29); break;
107a8e1175bSopenharmony_ci    case PSA_KEY_TYPE_DH_PUBLIC_KEY_BASE: append(&buffer, buffer_size, &required_size, "PSA_KEY_TYPE_DH_PUBLIC_KEY_BASE", 31); break;
108a8e1175bSopenharmony_ci    case PSA_KEY_TYPE_DSA_KEY_PAIR: append(&buffer, buffer_size, &required_size, "PSA_KEY_TYPE_DSA_KEY_PAIR", 25); break;
109a8e1175bSopenharmony_ci    case PSA_KEY_TYPE_DSA_PUBLIC_KEY: append(&buffer, buffer_size, &required_size, "PSA_KEY_TYPE_DSA_PUBLIC_KEY", 27); break;
110a8e1175bSopenharmony_ci    case PSA_KEY_TYPE_ECC_KEY_PAIR_BASE: append(&buffer, buffer_size, &required_size, "PSA_KEY_TYPE_ECC_KEY_PAIR_BASE", 30); break;
111a8e1175bSopenharmony_ci    case PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE: append(&buffer, buffer_size, &required_size, "PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE", 32); break;
112a8e1175bSopenharmony_ci    case PSA_KEY_TYPE_HMAC: append(&buffer, buffer_size, &required_size, "PSA_KEY_TYPE_HMAC", 17); break;
113a8e1175bSopenharmony_ci    case PSA_KEY_TYPE_NONE: append(&buffer, buffer_size, &required_size, "PSA_KEY_TYPE_NONE", 17); break;
114a8e1175bSopenharmony_ci    case PSA_KEY_TYPE_PASSWORD: append(&buffer, buffer_size, &required_size, "PSA_KEY_TYPE_PASSWORD", 21); break;
115a8e1175bSopenharmony_ci    case PSA_KEY_TYPE_PASSWORD_HASH: append(&buffer, buffer_size, &required_size, "PSA_KEY_TYPE_PASSWORD_HASH", 26); break;
116a8e1175bSopenharmony_ci    case PSA_KEY_TYPE_PEPPER: append(&buffer, buffer_size, &required_size, "PSA_KEY_TYPE_PEPPER", 19); break;
117a8e1175bSopenharmony_ci    case PSA_KEY_TYPE_RAW_DATA: append(&buffer, buffer_size, &required_size, "PSA_KEY_TYPE_RAW_DATA", 21); break;
118a8e1175bSopenharmony_ci    case PSA_KEY_TYPE_RSA_KEY_PAIR: append(&buffer, buffer_size, &required_size, "PSA_KEY_TYPE_RSA_KEY_PAIR", 25); break;
119a8e1175bSopenharmony_ci    case PSA_KEY_TYPE_RSA_PUBLIC_KEY: append(&buffer, buffer_size, &required_size, "PSA_KEY_TYPE_RSA_PUBLIC_KEY", 27); break;
120a8e1175bSopenharmony_ci    default:
121a8e1175bSopenharmony_ci        if (PSA_KEY_TYPE_IS_ECC_KEY_PAIR(type)) {
122a8e1175bSopenharmony_ci            append_with_curve(&buffer, buffer_size, &required_size,
123a8e1175bSopenharmony_ci                              "PSA_KEY_TYPE_ECC_KEY_PAIR", 25,
124a8e1175bSopenharmony_ci                              PSA_KEY_TYPE_ECC_GET_FAMILY(type));
125a8e1175bSopenharmony_ci        } else if (PSA_KEY_TYPE_IS_ECC_PUBLIC_KEY(type)) {
126a8e1175bSopenharmony_ci            append_with_curve(&buffer, buffer_size, &required_size,
127a8e1175bSopenharmony_ci                              "PSA_KEY_TYPE_ECC_PUBLIC_KEY", 27,
128a8e1175bSopenharmony_ci                              PSA_KEY_TYPE_ECC_GET_FAMILY(type));
129a8e1175bSopenharmony_ci        } else if (PSA_KEY_TYPE_IS_DH_KEY_PAIR(type)) {
130a8e1175bSopenharmony_ci            append_with_group(&buffer, buffer_size, &required_size,
131a8e1175bSopenharmony_ci                              "PSA_KEY_TYPE_DH_KEY_PAIR", 24,
132a8e1175bSopenharmony_ci                              PSA_KEY_TYPE_DH_GET_FAMILY(type));
133a8e1175bSopenharmony_ci        } else if (PSA_KEY_TYPE_IS_DH_PUBLIC_KEY(type)) {
134a8e1175bSopenharmony_ci            append_with_group(&buffer, buffer_size, &required_size,
135a8e1175bSopenharmony_ci                              "PSA_KEY_TYPE_DH_PUBLIC_KEY", 26,
136a8e1175bSopenharmony_ci                              PSA_KEY_TYPE_DH_GET_FAMILY(type));
137a8e1175bSopenharmony_ci        } else {
138a8e1175bSopenharmony_ci            return snprintf(buffer, buffer_size,
139a8e1175bSopenharmony_ci                            "0x%04x", (unsigned) type);
140a8e1175bSopenharmony_ci        }
141a8e1175bSopenharmony_ci        break;
142a8e1175bSopenharmony_ci    }
143a8e1175bSopenharmony_ci    buffer[0] = 0;
144a8e1175bSopenharmony_ci    return (int) required_size;
145a8e1175bSopenharmony_ci}
146a8e1175bSopenharmony_ci
147a8e1175bSopenharmony_ci#define NO_LENGTH_MODIFIER 0xfffffffflu
148a8e1175bSopenharmony_cistatic int psa_snprint_algorithm(char *buffer, size_t buffer_size,
149a8e1175bSopenharmony_ci                                 psa_algorithm_t alg)
150a8e1175bSopenharmony_ci{
151a8e1175bSopenharmony_ci    size_t required_size = 0;
152a8e1175bSopenharmony_ci    psa_algorithm_t core_alg = alg;
153a8e1175bSopenharmony_ci    unsigned long length_modifier = NO_LENGTH_MODIFIER;
154a8e1175bSopenharmony_ci    if (PSA_ALG_IS_MAC(alg)) {
155a8e1175bSopenharmony_ci        core_alg = PSA_ALG_TRUNCATED_MAC(alg, 0);
156a8e1175bSopenharmony_ci        if (alg & PSA_ALG_MAC_AT_LEAST_THIS_LENGTH_FLAG) {
157a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size,
158a8e1175bSopenharmony_ci                   "PSA_ALG_AT_LEAST_THIS_LENGTH_MAC(", 33);
159a8e1175bSopenharmony_ci            length_modifier = PSA_MAC_TRUNCATED_LENGTH(alg);
160a8e1175bSopenharmony_ci        } else if (core_alg != alg) {
161a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size,
162a8e1175bSopenharmony_ci                   "PSA_ALG_TRUNCATED_MAC(", 22);
163a8e1175bSopenharmony_ci            length_modifier = PSA_MAC_TRUNCATED_LENGTH(alg);
164a8e1175bSopenharmony_ci        }
165a8e1175bSopenharmony_ci    } else if (PSA_ALG_IS_AEAD(alg)) {
166a8e1175bSopenharmony_ci        core_alg = PSA_ALG_AEAD_WITH_DEFAULT_LENGTH_TAG(alg);
167a8e1175bSopenharmony_ci        if (core_alg == 0) {
168a8e1175bSopenharmony_ci            /* For unknown AEAD algorithms, there is no "default tag length". */
169a8e1175bSopenharmony_ci            core_alg = alg;
170a8e1175bSopenharmony_ci        } else if (alg & PSA_ALG_AEAD_AT_LEAST_THIS_LENGTH_FLAG) {
171a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size,
172a8e1175bSopenharmony_ci                   "PSA_ALG_AEAD_WITH_AT_LEAST_THIS_LENGTH_TAG(", 43);
173a8e1175bSopenharmony_ci            length_modifier = PSA_ALG_AEAD_GET_TAG_LENGTH(alg);
174a8e1175bSopenharmony_ci        } else if (core_alg != alg) {
175a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size,
176a8e1175bSopenharmony_ci                   "PSA_ALG_AEAD_WITH_SHORTENED_TAG(", 32);
177a8e1175bSopenharmony_ci            length_modifier = PSA_ALG_AEAD_GET_TAG_LENGTH(alg);
178a8e1175bSopenharmony_ci        }
179a8e1175bSopenharmony_ci    } else if (PSA_ALG_IS_KEY_AGREEMENT(alg) &&
180a8e1175bSopenharmony_ci               !PSA_ALG_IS_RAW_KEY_AGREEMENT(alg)) {
181a8e1175bSopenharmony_ci        core_alg = PSA_ALG_KEY_AGREEMENT_GET_KDF(alg);
182a8e1175bSopenharmony_ci        append(&buffer, buffer_size, &required_size,
183a8e1175bSopenharmony_ci               "PSA_ALG_KEY_AGREEMENT(", 22);
184a8e1175bSopenharmony_ci        append_with_alg(&buffer, buffer_size, &required_size,
185a8e1175bSopenharmony_ci                        psa_ka_algorithm_name,
186a8e1175bSopenharmony_ci                        PSA_ALG_KEY_AGREEMENT_GET_BASE(alg));
187a8e1175bSopenharmony_ci        append(&buffer, buffer_size, &required_size, ", ", 2);
188a8e1175bSopenharmony_ci    }
189a8e1175bSopenharmony_ci    switch (core_alg) {
190a8e1175bSopenharmony_ci    case PSA_ALG_ANY_HASH: append(&buffer, buffer_size, &required_size, "PSA_ALG_ANY_HASH", 16); break;
191a8e1175bSopenharmony_ci    case PSA_ALG_CATEGORY_AEAD: append(&buffer, buffer_size, &required_size, "PSA_ALG_CATEGORY_AEAD", 21); break;
192a8e1175bSopenharmony_ci    case PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION: append(&buffer, buffer_size, &required_size, "PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION", 38); break;
193a8e1175bSopenharmony_ci    case PSA_ALG_CATEGORY_CIPHER: append(&buffer, buffer_size, &required_size, "PSA_ALG_CATEGORY_CIPHER", 23); break;
194a8e1175bSopenharmony_ci    case PSA_ALG_CATEGORY_HASH: append(&buffer, buffer_size, &required_size, "PSA_ALG_CATEGORY_HASH", 21); break;
195a8e1175bSopenharmony_ci    case PSA_ALG_CATEGORY_KEY_AGREEMENT: append(&buffer, buffer_size, &required_size, "PSA_ALG_CATEGORY_KEY_AGREEMENT", 30); break;
196a8e1175bSopenharmony_ci    case PSA_ALG_CATEGORY_KEY_DERIVATION: append(&buffer, buffer_size, &required_size, "PSA_ALG_CATEGORY_KEY_DERIVATION", 31); break;
197a8e1175bSopenharmony_ci    case PSA_ALG_CATEGORY_MAC: append(&buffer, buffer_size, &required_size, "PSA_ALG_CATEGORY_MAC", 20); break;
198a8e1175bSopenharmony_ci    case PSA_ALG_CATEGORY_PAKE: append(&buffer, buffer_size, &required_size, "PSA_ALG_CATEGORY_PAKE", 21); break;
199a8e1175bSopenharmony_ci    case PSA_ALG_CATEGORY_SIGN: append(&buffer, buffer_size, &required_size, "PSA_ALG_CATEGORY_SIGN", 21); break;
200a8e1175bSopenharmony_ci    case PSA_ALG_CBC_MAC: append(&buffer, buffer_size, &required_size, "PSA_ALG_CBC_MAC", 15); break;
201a8e1175bSopenharmony_ci    case PSA_ALG_CBC_NO_PADDING: append(&buffer, buffer_size, &required_size, "PSA_ALG_CBC_NO_PADDING", 22); break;
202a8e1175bSopenharmony_ci    case PSA_ALG_CBC_PKCS7: append(&buffer, buffer_size, &required_size, "PSA_ALG_CBC_PKCS7", 17); break;
203a8e1175bSopenharmony_ci    case PSA_ALG_CCM: append(&buffer, buffer_size, &required_size, "PSA_ALG_CCM", 11); break;
204a8e1175bSopenharmony_ci    case PSA_ALG_CCM_STAR_NO_TAG: append(&buffer, buffer_size, &required_size, "PSA_ALG_CCM_STAR_NO_TAG", 23); break;
205a8e1175bSopenharmony_ci    case PSA_ALG_CFB: append(&buffer, buffer_size, &required_size, "PSA_ALG_CFB", 11); break;
206a8e1175bSopenharmony_ci    case PSA_ALG_CHACHA20_POLY1305: append(&buffer, buffer_size, &required_size, "PSA_ALG_CHACHA20_POLY1305", 25); break;
207a8e1175bSopenharmony_ci    case PSA_ALG_CIPHER_MAC_BASE: append(&buffer, buffer_size, &required_size, "PSA_ALG_CIPHER_MAC_BASE", 23); break;
208a8e1175bSopenharmony_ci    case PSA_ALG_CMAC: append(&buffer, buffer_size, &required_size, "PSA_ALG_CMAC", 12); break;
209a8e1175bSopenharmony_ci    case PSA_ALG_CTR: append(&buffer, buffer_size, &required_size, "PSA_ALG_CTR", 11); break;
210a8e1175bSopenharmony_ci    case PSA_ALG_DETERMINISTIC_DSA_BASE: append(&buffer, buffer_size, &required_size, "PSA_ALG_DETERMINISTIC_DSA_BASE", 30); break;
211a8e1175bSopenharmony_ci    case PSA_ALG_DETERMINISTIC_ECDSA_BASE: append(&buffer, buffer_size, &required_size, "PSA_ALG_DETERMINISTIC_ECDSA_BASE", 32); break;
212a8e1175bSopenharmony_ci    case PSA_ALG_DSA_BASE: append(&buffer, buffer_size, &required_size, "PSA_ALG_DSA_BASE", 16); break;
213a8e1175bSopenharmony_ci    case PSA_ALG_ECB_NO_PADDING: append(&buffer, buffer_size, &required_size, "PSA_ALG_ECB_NO_PADDING", 22); break;
214a8e1175bSopenharmony_ci    case PSA_ALG_ECDH: append(&buffer, buffer_size, &required_size, "PSA_ALG_ECDH", 12); break;
215a8e1175bSopenharmony_ci    case PSA_ALG_ECDSA_ANY: append(&buffer, buffer_size, &required_size, "PSA_ALG_ECDSA_ANY", 17); break;
216a8e1175bSopenharmony_ci    case PSA_ALG_ED25519PH: append(&buffer, buffer_size, &required_size, "PSA_ALG_ED25519PH", 17); break;
217a8e1175bSopenharmony_ci    case PSA_ALG_ED448PH: append(&buffer, buffer_size, &required_size, "PSA_ALG_ED448PH", 15); break;
218a8e1175bSopenharmony_ci    case PSA_ALG_FFDH: append(&buffer, buffer_size, &required_size, "PSA_ALG_FFDH", 12); break;
219a8e1175bSopenharmony_ci    case PSA_ALG_GCM: append(&buffer, buffer_size, &required_size, "PSA_ALG_GCM", 11); break;
220a8e1175bSopenharmony_ci    case PSA_ALG_HASH_EDDSA_BASE: append(&buffer, buffer_size, &required_size, "PSA_ALG_HASH_EDDSA_BASE", 23); break;
221a8e1175bSopenharmony_ci    case PSA_ALG_HKDF_BASE: append(&buffer, buffer_size, &required_size, "PSA_ALG_HKDF_BASE", 17); break;
222a8e1175bSopenharmony_ci    case PSA_ALG_HKDF_EXPAND_BASE: append(&buffer, buffer_size, &required_size, "PSA_ALG_HKDF_EXPAND_BASE", 24); break;
223a8e1175bSopenharmony_ci    case PSA_ALG_HKDF_EXTRACT_BASE: append(&buffer, buffer_size, &required_size, "PSA_ALG_HKDF_EXTRACT_BASE", 25); break;
224a8e1175bSopenharmony_ci    case PSA_ALG_HMAC_BASE: append(&buffer, buffer_size, &required_size, "PSA_ALG_HMAC_BASE", 17); break;
225a8e1175bSopenharmony_ci    case PSA_ALG_JPAKE: append(&buffer, buffer_size, &required_size, "PSA_ALG_JPAKE", 13); break;
226a8e1175bSopenharmony_ci    case PSA_ALG_MD5: append(&buffer, buffer_size, &required_size, "PSA_ALG_MD5", 11); break;
227a8e1175bSopenharmony_ci    case PSA_ALG_NONE: append(&buffer, buffer_size, &required_size, "PSA_ALG_NONE", 12); break;
228a8e1175bSopenharmony_ci    case PSA_ALG_OFB: append(&buffer, buffer_size, &required_size, "PSA_ALG_OFB", 11); break;
229a8e1175bSopenharmony_ci    case PSA_ALG_PBKDF2_AES_CMAC_PRF_128: append(&buffer, buffer_size, &required_size, "PSA_ALG_PBKDF2_AES_CMAC_PRF_128", 31); break;
230a8e1175bSopenharmony_ci    case PSA_ALG_PBKDF2_HMAC_BASE: append(&buffer, buffer_size, &required_size, "PSA_ALG_PBKDF2_HMAC_BASE", 24); break;
231a8e1175bSopenharmony_ci    case PSA_ALG_PURE_EDDSA: append(&buffer, buffer_size, &required_size, "PSA_ALG_PURE_EDDSA", 18); break;
232a8e1175bSopenharmony_ci    case PSA_ALG_RIPEMD160: append(&buffer, buffer_size, &required_size, "PSA_ALG_RIPEMD160", 17); break;
233a8e1175bSopenharmony_ci    case PSA_ALG_RSA_OAEP_BASE: append(&buffer, buffer_size, &required_size, "PSA_ALG_RSA_OAEP_BASE", 21); break;
234a8e1175bSopenharmony_ci    case PSA_ALG_RSA_PKCS1V15_CRYPT: append(&buffer, buffer_size, &required_size, "PSA_ALG_RSA_PKCS1V15_CRYPT", 26); break;
235a8e1175bSopenharmony_ci    case PSA_ALG_RSA_PKCS1V15_SIGN_RAW: append(&buffer, buffer_size, &required_size, "PSA_ALG_RSA_PKCS1V15_SIGN_RAW", 29); break;
236a8e1175bSopenharmony_ci    case PSA_ALG_RSA_PSS_ANY_SALT_BASE: append(&buffer, buffer_size, &required_size, "PSA_ALG_RSA_PSS_ANY_SALT_BASE", 29); break;
237a8e1175bSopenharmony_ci    case PSA_ALG_RSA_PSS_BASE: append(&buffer, buffer_size, &required_size, "PSA_ALG_RSA_PSS_BASE", 20); break;
238a8e1175bSopenharmony_ci    case PSA_ALG_SHA3_224: append(&buffer, buffer_size, &required_size, "PSA_ALG_SHA3_224", 16); break;
239a8e1175bSopenharmony_ci    case PSA_ALG_SHA3_256: append(&buffer, buffer_size, &required_size, "PSA_ALG_SHA3_256", 16); break;
240a8e1175bSopenharmony_ci    case PSA_ALG_SHA3_384: append(&buffer, buffer_size, &required_size, "PSA_ALG_SHA3_384", 16); break;
241a8e1175bSopenharmony_ci    case PSA_ALG_SHA3_512: append(&buffer, buffer_size, &required_size, "PSA_ALG_SHA3_512", 16); break;
242a8e1175bSopenharmony_ci    case PSA_ALG_SHAKE256_512: append(&buffer, buffer_size, &required_size, "PSA_ALG_SHAKE256_512", 20); break;
243a8e1175bSopenharmony_ci    case PSA_ALG_SHA_1: append(&buffer, buffer_size, &required_size, "PSA_ALG_SHA_1", 13); break;
244a8e1175bSopenharmony_ci    case PSA_ALG_SHA_224: append(&buffer, buffer_size, &required_size, "PSA_ALG_SHA_224", 15); break;
245a8e1175bSopenharmony_ci    case PSA_ALG_SHA_256: append(&buffer, buffer_size, &required_size, "PSA_ALG_SHA_256", 15); break;
246a8e1175bSopenharmony_ci    case PSA_ALG_SHA_384: append(&buffer, buffer_size, &required_size, "PSA_ALG_SHA_384", 15); break;
247a8e1175bSopenharmony_ci    case PSA_ALG_SHA_512: append(&buffer, buffer_size, &required_size, "PSA_ALG_SHA_512", 15); break;
248a8e1175bSopenharmony_ci    case PSA_ALG_SHA_512_224: append(&buffer, buffer_size, &required_size, "PSA_ALG_SHA_512_224", 19); break;
249a8e1175bSopenharmony_ci    case PSA_ALG_SHA_512_256: append(&buffer, buffer_size, &required_size, "PSA_ALG_SHA_512_256", 19); break;
250a8e1175bSopenharmony_ci    case PSA_ALG_STREAM_CIPHER: append(&buffer, buffer_size, &required_size, "PSA_ALG_STREAM_CIPHER", 21); break;
251a8e1175bSopenharmony_ci    case PSA_ALG_TLS12_ECJPAKE_TO_PMS: append(&buffer, buffer_size, &required_size, "PSA_ALG_TLS12_ECJPAKE_TO_PMS", 28); break;
252a8e1175bSopenharmony_ci    case PSA_ALG_TLS12_PRF_BASE: append(&buffer, buffer_size, &required_size, "PSA_ALG_TLS12_PRF_BASE", 22); break;
253a8e1175bSopenharmony_ci    case PSA_ALG_TLS12_PSK_TO_MS_BASE: append(&buffer, buffer_size, &required_size, "PSA_ALG_TLS12_PSK_TO_MS_BASE", 28); break;
254a8e1175bSopenharmony_ci    case PSA_ALG_XTS: append(&buffer, buffer_size, &required_size, "PSA_ALG_XTS", 11); break;
255a8e1175bSopenharmony_ci    default:
256a8e1175bSopenharmony_ci        if (PSA_ALG_IS_DETERMINISTIC_DSA(core_alg)) {
257a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size,
258a8e1175bSopenharmony_ci                   "PSA_ALG_DETERMINISTIC_DSA(", 25 + 1);
259a8e1175bSopenharmony_ci            append_with_alg(&buffer, buffer_size, &required_size,
260a8e1175bSopenharmony_ci                            psa_hash_algorithm_name,
261a8e1175bSopenharmony_ci                            PSA_ALG_GET_HASH(core_alg));
262a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size, ")", 1);
263a8e1175bSopenharmony_ci        } else if (PSA_ALG_IS_DETERMINISTIC_ECDSA(core_alg)) {
264a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size,
265a8e1175bSopenharmony_ci                   "PSA_ALG_DETERMINISTIC_ECDSA(", 27 + 1);
266a8e1175bSopenharmony_ci            append_with_alg(&buffer, buffer_size, &required_size,
267a8e1175bSopenharmony_ci                            psa_hash_algorithm_name,
268a8e1175bSopenharmony_ci                            PSA_ALG_GET_HASH(core_alg));
269a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size, ")", 1);
270a8e1175bSopenharmony_ci        } else if (PSA_ALG_IS_RANDOMIZED_DSA(core_alg)) {
271a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size,
272a8e1175bSopenharmony_ci                   "PSA_ALG_DSA(", 11 + 1);
273a8e1175bSopenharmony_ci            append_with_alg(&buffer, buffer_size, &required_size,
274a8e1175bSopenharmony_ci                            psa_hash_algorithm_name,
275a8e1175bSopenharmony_ci                            PSA_ALG_GET_HASH(core_alg));
276a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size, ")", 1);
277a8e1175bSopenharmony_ci        } else if (PSA_ALG_IS_RANDOMIZED_ECDSA(core_alg)) {
278a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size,
279a8e1175bSopenharmony_ci                   "PSA_ALG_ECDSA(", 13 + 1);
280a8e1175bSopenharmony_ci            append_with_alg(&buffer, buffer_size, &required_size,
281a8e1175bSopenharmony_ci                            psa_hash_algorithm_name,
282a8e1175bSopenharmony_ci                            PSA_ALG_GET_HASH(core_alg));
283a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size, ")", 1);
284a8e1175bSopenharmony_ci        } else if (PSA_ALG_IS_HKDF(core_alg)) {
285a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size,
286a8e1175bSopenharmony_ci                   "PSA_ALG_HKDF(", 12 + 1);
287a8e1175bSopenharmony_ci            append_with_alg(&buffer, buffer_size, &required_size,
288a8e1175bSopenharmony_ci                            psa_hash_algorithm_name,
289a8e1175bSopenharmony_ci                            PSA_ALG_GET_HASH(core_alg));
290a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size, ")", 1);
291a8e1175bSopenharmony_ci        } else if (PSA_ALG_IS_HKDF_EXPAND(core_alg)) {
292a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size,
293a8e1175bSopenharmony_ci                   "PSA_ALG_HKDF_EXPAND(", 19 + 1);
294a8e1175bSopenharmony_ci            append_with_alg(&buffer, buffer_size, &required_size,
295a8e1175bSopenharmony_ci                            psa_hash_algorithm_name,
296a8e1175bSopenharmony_ci                            PSA_ALG_GET_HASH(core_alg));
297a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size, ")", 1);
298a8e1175bSopenharmony_ci        } else if (PSA_ALG_IS_HKDF_EXTRACT(core_alg)) {
299a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size,
300a8e1175bSopenharmony_ci                   "PSA_ALG_HKDF_EXTRACT(", 20 + 1);
301a8e1175bSopenharmony_ci            append_with_alg(&buffer, buffer_size, &required_size,
302a8e1175bSopenharmony_ci                            psa_hash_algorithm_name,
303a8e1175bSopenharmony_ci                            PSA_ALG_GET_HASH(core_alg));
304a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size, ")", 1);
305a8e1175bSopenharmony_ci        } else if (PSA_ALG_IS_HMAC(core_alg)) {
306a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size,
307a8e1175bSopenharmony_ci                   "PSA_ALG_HMAC(", 12 + 1);
308a8e1175bSopenharmony_ci            append_with_alg(&buffer, buffer_size, &required_size,
309a8e1175bSopenharmony_ci                            psa_hash_algorithm_name,
310a8e1175bSopenharmony_ci                            PSA_ALG_GET_HASH(core_alg));
311a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size, ")", 1);
312a8e1175bSopenharmony_ci        } else if (PSA_ALG_IS_PBKDF2_HMAC(core_alg)) {
313a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size,
314a8e1175bSopenharmony_ci                   "PSA_ALG_PBKDF2_HMAC(", 19 + 1);
315a8e1175bSopenharmony_ci            append_with_alg(&buffer, buffer_size, &required_size,
316a8e1175bSopenharmony_ci                            psa_hash_algorithm_name,
317a8e1175bSopenharmony_ci                            PSA_ALG_GET_HASH(core_alg));
318a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size, ")", 1);
319a8e1175bSopenharmony_ci        } else if (PSA_ALG_IS_RSA_OAEP(core_alg)) {
320a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size,
321a8e1175bSopenharmony_ci                   "PSA_ALG_RSA_OAEP(", 16 + 1);
322a8e1175bSopenharmony_ci            append_with_alg(&buffer, buffer_size, &required_size,
323a8e1175bSopenharmony_ci                            psa_hash_algorithm_name,
324a8e1175bSopenharmony_ci                            PSA_ALG_GET_HASH(core_alg));
325a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size, ")", 1);
326a8e1175bSopenharmony_ci        } else if (PSA_ALG_IS_RSA_PKCS1V15_SIGN(core_alg)) {
327a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size,
328a8e1175bSopenharmony_ci                   "PSA_ALG_RSA_PKCS1V15_SIGN(", 25 + 1);
329a8e1175bSopenharmony_ci            append_with_alg(&buffer, buffer_size, &required_size,
330a8e1175bSopenharmony_ci                            psa_hash_algorithm_name,
331a8e1175bSopenharmony_ci                            PSA_ALG_GET_HASH(core_alg));
332a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size, ")", 1);
333a8e1175bSopenharmony_ci        } else if (PSA_ALG_IS_RSA_PSS_STANDARD_SALT(core_alg)) {
334a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size,
335a8e1175bSopenharmony_ci                   "PSA_ALG_RSA_PSS(", 15 + 1);
336a8e1175bSopenharmony_ci            append_with_alg(&buffer, buffer_size, &required_size,
337a8e1175bSopenharmony_ci                            psa_hash_algorithm_name,
338a8e1175bSopenharmony_ci                            PSA_ALG_GET_HASH(core_alg));
339a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size, ")", 1);
340a8e1175bSopenharmony_ci        } else if (PSA_ALG_IS_RSA_PSS_ANY_SALT(core_alg)) {
341a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size,
342a8e1175bSopenharmony_ci                   "PSA_ALG_RSA_PSS_ANY_SALT(", 24 + 1);
343a8e1175bSopenharmony_ci            append_with_alg(&buffer, buffer_size, &required_size,
344a8e1175bSopenharmony_ci                            psa_hash_algorithm_name,
345a8e1175bSopenharmony_ci                            PSA_ALG_GET_HASH(core_alg));
346a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size, ")", 1);
347a8e1175bSopenharmony_ci        } else if (PSA_ALG_IS_TLS12_PRF(core_alg)) {
348a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size,
349a8e1175bSopenharmony_ci                   "PSA_ALG_TLS12_PRF(", 17 + 1);
350a8e1175bSopenharmony_ci            append_with_alg(&buffer, buffer_size, &required_size,
351a8e1175bSopenharmony_ci                            psa_hash_algorithm_name,
352a8e1175bSopenharmony_ci                            PSA_ALG_GET_HASH(core_alg));
353a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size, ")", 1);
354a8e1175bSopenharmony_ci        } else if (PSA_ALG_IS_TLS12_PSK_TO_MS(core_alg)) {
355a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size,
356a8e1175bSopenharmony_ci                   "PSA_ALG_TLS12_PSK_TO_MS(", 23 + 1);
357a8e1175bSopenharmony_ci            append_with_alg(&buffer, buffer_size, &required_size,
358a8e1175bSopenharmony_ci                            psa_hash_algorithm_name,
359a8e1175bSopenharmony_ci                            PSA_ALG_GET_HASH(core_alg));
360a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size, ")", 1);
361a8e1175bSopenharmony_ci        } else {
362a8e1175bSopenharmony_ci            append_integer(&buffer, buffer_size, &required_size,
363a8e1175bSopenharmony_ci                           "0x%08lx", (unsigned long) core_alg);
364a8e1175bSopenharmony_ci        }
365a8e1175bSopenharmony_ci        break;
366a8e1175bSopenharmony_ci    }
367a8e1175bSopenharmony_ci    if (core_alg != alg) {
368a8e1175bSopenharmony_ci        if (length_modifier != NO_LENGTH_MODIFIER) {
369a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size, ", ", 2);
370a8e1175bSopenharmony_ci            append_integer(&buffer, buffer_size, &required_size,
371a8e1175bSopenharmony_ci                           "%lu", length_modifier);
372a8e1175bSopenharmony_ci        }
373a8e1175bSopenharmony_ci        append(&buffer, buffer_size, &required_size, ")", 1);
374a8e1175bSopenharmony_ci    }
375a8e1175bSopenharmony_ci    buffer[0] = 0;
376a8e1175bSopenharmony_ci    return (int) required_size;
377a8e1175bSopenharmony_ci}
378a8e1175bSopenharmony_ci
379a8e1175bSopenharmony_cistatic int psa_snprint_key_usage(char *buffer, size_t buffer_size,
380a8e1175bSopenharmony_ci                                 psa_key_usage_t usage)
381a8e1175bSopenharmony_ci{
382a8e1175bSopenharmony_ci    size_t required_size = 0;
383a8e1175bSopenharmony_ci    if (usage == 0) {
384a8e1175bSopenharmony_ci        if (buffer_size > 1) {
385a8e1175bSopenharmony_ci            buffer[0] = '0';
386a8e1175bSopenharmony_ci            buffer[1] = 0;
387a8e1175bSopenharmony_ci        } else if (buffer_size == 1) {
388a8e1175bSopenharmony_ci            buffer[0] = 0;
389a8e1175bSopenharmony_ci        }
390a8e1175bSopenharmony_ci        return 1;
391a8e1175bSopenharmony_ci    }
392a8e1175bSopenharmony_ci    if (usage & PSA_KEY_USAGE_COPY) {
393a8e1175bSopenharmony_ci        if (required_size != 0) {
394a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size, " | ", 3);
395a8e1175bSopenharmony_ci        }
396a8e1175bSopenharmony_ci        append(&buffer, buffer_size, &required_size, "PSA_KEY_USAGE_COPY", 18);
397a8e1175bSopenharmony_ci        usage ^= PSA_KEY_USAGE_COPY;
398a8e1175bSopenharmony_ci    }
399a8e1175bSopenharmony_ci    if (usage & PSA_KEY_USAGE_DECRYPT) {
400a8e1175bSopenharmony_ci        if (required_size != 0) {
401a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size, " | ", 3);
402a8e1175bSopenharmony_ci        }
403a8e1175bSopenharmony_ci        append(&buffer, buffer_size, &required_size, "PSA_KEY_USAGE_DECRYPT", 21);
404a8e1175bSopenharmony_ci        usage ^= PSA_KEY_USAGE_DECRYPT;
405a8e1175bSopenharmony_ci    }
406a8e1175bSopenharmony_ci    if (usage & PSA_KEY_USAGE_DERIVE) {
407a8e1175bSopenharmony_ci        if (required_size != 0) {
408a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size, " | ", 3);
409a8e1175bSopenharmony_ci        }
410a8e1175bSopenharmony_ci        append(&buffer, buffer_size, &required_size, "PSA_KEY_USAGE_DERIVE", 20);
411a8e1175bSopenharmony_ci        usage ^= PSA_KEY_USAGE_DERIVE;
412a8e1175bSopenharmony_ci    }
413a8e1175bSopenharmony_ci    if (usage & PSA_KEY_USAGE_ENCRYPT) {
414a8e1175bSopenharmony_ci        if (required_size != 0) {
415a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size, " | ", 3);
416a8e1175bSopenharmony_ci        }
417a8e1175bSopenharmony_ci        append(&buffer, buffer_size, &required_size, "PSA_KEY_USAGE_ENCRYPT", 21);
418a8e1175bSopenharmony_ci        usage ^= PSA_KEY_USAGE_ENCRYPT;
419a8e1175bSopenharmony_ci    }
420a8e1175bSopenharmony_ci    if (usage & PSA_KEY_USAGE_EXPORT) {
421a8e1175bSopenharmony_ci        if (required_size != 0) {
422a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size, " | ", 3);
423a8e1175bSopenharmony_ci        }
424a8e1175bSopenharmony_ci        append(&buffer, buffer_size, &required_size, "PSA_KEY_USAGE_EXPORT", 20);
425a8e1175bSopenharmony_ci        usage ^= PSA_KEY_USAGE_EXPORT;
426a8e1175bSopenharmony_ci    }
427a8e1175bSopenharmony_ci    if (usage & PSA_KEY_USAGE_SIGN_HASH) {
428a8e1175bSopenharmony_ci        if (required_size != 0) {
429a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size, " | ", 3);
430a8e1175bSopenharmony_ci        }
431a8e1175bSopenharmony_ci        append(&buffer, buffer_size, &required_size, "PSA_KEY_USAGE_SIGN_HASH", 23);
432a8e1175bSopenharmony_ci        usage ^= PSA_KEY_USAGE_SIGN_HASH;
433a8e1175bSopenharmony_ci    }
434a8e1175bSopenharmony_ci    if (usage & PSA_KEY_USAGE_SIGN_MESSAGE) {
435a8e1175bSopenharmony_ci        if (required_size != 0) {
436a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size, " | ", 3);
437a8e1175bSopenharmony_ci        }
438a8e1175bSopenharmony_ci        append(&buffer, buffer_size, &required_size, "PSA_KEY_USAGE_SIGN_MESSAGE", 26);
439a8e1175bSopenharmony_ci        usage ^= PSA_KEY_USAGE_SIGN_MESSAGE;
440a8e1175bSopenharmony_ci    }
441a8e1175bSopenharmony_ci    if (usage & PSA_KEY_USAGE_VERIFY_DERIVATION) {
442a8e1175bSopenharmony_ci        if (required_size != 0) {
443a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size, " | ", 3);
444a8e1175bSopenharmony_ci        }
445a8e1175bSopenharmony_ci        append(&buffer, buffer_size, &required_size, "PSA_KEY_USAGE_VERIFY_DERIVATION", 31);
446a8e1175bSopenharmony_ci        usage ^= PSA_KEY_USAGE_VERIFY_DERIVATION;
447a8e1175bSopenharmony_ci    }
448a8e1175bSopenharmony_ci    if (usage & PSA_KEY_USAGE_VERIFY_HASH) {
449a8e1175bSopenharmony_ci        if (required_size != 0) {
450a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size, " | ", 3);
451a8e1175bSopenharmony_ci        }
452a8e1175bSopenharmony_ci        append(&buffer, buffer_size, &required_size, "PSA_KEY_USAGE_VERIFY_HASH", 25);
453a8e1175bSopenharmony_ci        usage ^= PSA_KEY_USAGE_VERIFY_HASH;
454a8e1175bSopenharmony_ci    }
455a8e1175bSopenharmony_ci    if (usage & PSA_KEY_USAGE_VERIFY_MESSAGE) {
456a8e1175bSopenharmony_ci        if (required_size != 0) {
457a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size, " | ", 3);
458a8e1175bSopenharmony_ci        }
459a8e1175bSopenharmony_ci        append(&buffer, buffer_size, &required_size, "PSA_KEY_USAGE_VERIFY_MESSAGE", 28);
460a8e1175bSopenharmony_ci        usage ^= PSA_KEY_USAGE_VERIFY_MESSAGE;
461a8e1175bSopenharmony_ci    }
462a8e1175bSopenharmony_ci    if (usage != 0) {
463a8e1175bSopenharmony_ci        if (required_size != 0) {
464a8e1175bSopenharmony_ci            append(&buffer, buffer_size, &required_size, " | ", 3);
465a8e1175bSopenharmony_ci        }
466a8e1175bSopenharmony_ci        append_integer(&buffer, buffer_size, &required_size,
467a8e1175bSopenharmony_ci                       "0x%08lx", (unsigned long) usage);
468a8e1175bSopenharmony_ci    } else {
469a8e1175bSopenharmony_ci        buffer[0] = 0;
470a8e1175bSopenharmony_ci    }
471a8e1175bSopenharmony_ci    return (int) required_size;
472a8e1175bSopenharmony_ci}
473a8e1175bSopenharmony_ci
474a8e1175bSopenharmony_ci/* End of automatically generated file. */
475