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