1 /* SPDX-License-Identifier: BSD-2-Clause */ 2 /* 3 * Copyright (c) 2015, Linaro Limited 4 */ 5 6 #ifndef TA_CRYPTO_PERF_H 7 #define TA_CRYPTO_PERF_H 8 9 #define TA_CRYPTO_PERF_UUID { 0x02a42f43, 0xd8b7, 0x4a57, \ 10 { 0xaa, 0x4d, 0x87, 0xbd, 0x9b, 0x55, 0x87, 0xcb } } 11 12 /* 13 * Commands implemented by the TA 14 */ 15 16 #define TA_CRYPTO_PERF_CMD_CIPHER_PREPARE_KEY 0 17 #define TA_CRYPTO_PERF_CMD_CIPHER_PROCESS 1 18 #define TA_CRYPTO_PERF_CMD_CIPHER_PROCESS_SDP 2 19 #define TA_CRYPTO_PERF_CMD_HASH_PREPARE_OP 3 20 #define TA_CRYPTO_PERF_CMD_HASH_PROCESS 4 21 #define TA_CRYPTO_PERF_CMD_ASYM_PREPARE_OBJ 5 22 #define TA_CRYPTO_PERF_CMD_ASYM_PREPARE_HASH 6 23 #define TA_CRYPTO_PERF_CMD_ASYM_PREPARE_KEYPAIR 7 24 #define TA_CRYPTO_PERF_CMD_ASYM_PREPARE_ENC_SIGN 8 25 #define TA_CRYPTO_PERF_CMD_ASYM_PREPARE_ATTRS 9 26 #define TA_CRYPTO_PERF_CMD_ASYM_PROCESS_GEN_KEYPAIR 10 27 #define TA_CRYPTO_PERF_CMD_ASYM_PROCESS 11 28 #define TA_CRYPTO_PERF_CMD_ASYM_FREE_ATTRS 12 29 30 /* 31 * Supported AES modes of operation 32 */ 33 34 #define TA_AES_ECB 0 35 #define TA_AES_CBC 1 36 #define TA_AES_CTR 2 37 #define TA_AES_XTS 3 38 #define TA_AES_GCM 4 39 #define TA_SM4_ECB 5 40 #define TA_SM4_CBC 6 41 #define TA_SM4_CTR 7 42 #define TA_SM4_XTS 8 43 44 /* 45 * AES key sizes 46 */ 47 #define AES_128 128 48 #define AES_192 192 49 #define AES_256 256 50 51 /* 52 * Supported hash algorithms 53 */ 54 55 #define TA_SHA_SHA1 0 56 #define TA_SHA_SHA224 1 57 #define TA_SHA_SHA256 2 58 #define TA_SHA_SHA384 3 59 #define TA_SHA_SHA512 4 60 #define TA_SM3 5 61 #define TA_HMAC_SHA1 6 62 #define TA_HMAC_SHA224 7 63 #define TA_HMAC_SHA256 8 64 #define TA_HMAC_SHA384 9 65 #define TA_HMAC_SHA512 10 66 #define TA_HMAC_SM3 11 67 68 /* 69 * Asymmetric cryptographic algorithms 70 */ 71 #define PKCS_V1_5_MIN 11 72 #define BITS_TO_BYTES(len) (((len) + 7) / 8) 73 #define OAEP_HASH_LEN(hsz) ((hsz) * 2) 74 #define OAEP_OTHER_LEN 2 75 #define PSS_OTHER_LEN 2 76 77 #define DERCODE_SHA1_LEN 15 78 #define DERCODE_SHA_LEN 19 79 #define SHA1_LEN 20 80 #define SHA224_LEN 28 81 #define SHA256_LEN 32 82 #define SHA384_LEN 48 83 #define SHA512_LEN 64 84 85 #define WIDTH_BITS_25519 256 86 87 #define ECC_CURVE_192 192 88 #define ECC_CURVE_224 224 89 #define ECC_CURVE_256 256 90 #define ECC_CURVE_384 384 91 #define ECC_CURVE_521 521 92 93 #define TEE_MAX_OUT_SIZE 4096 94 95 #define DH_MAX_SIZE 4096 96 #define DH_G_SIZE 1 97 98 enum symm_cipher { 99 AES = 0, 100 SM4 = 1, 101 }; 102 103 enum symm_mode { 104 ECB = 0, 105 CBC = 1, 106 CTR = 2, 107 XTS = 3, 108 GCM = 4, 109 }; 110 111 enum asym_algorithm { 112 ALGO_DH = 1, 113 ALGO_RSA = 2, 114 ALGO_ECDSA = 3, 115 ALGO_ECDH = 4, 116 ALGO_X25519 = 5, 117 ALGO_SM2 = 6, 118 }; 119 120 enum asym_cipher_mode { 121 MODE_ENCRYPT = 0, 122 MODE_DECRYPT = 1, 123 MODE_SIGN = 2, 124 MODE_VERIFY = 3, 125 MODE_GENKEYPAIR = 4, 126 }; 127 128 enum rsa_mode { 129 RSA_NOPAD = 0, 130 RSAES_PKCS1_V1_5 = 1, 131 RSAES_PKCS1_OAEP_SHA1 = 2, 132 RSAES_PKCS1_OAEP_SHA224 = 3, 133 RSAES_PKCS1_OAEP_SHA256 = 4, 134 RSAES_PKCS1_OAEP_SHA384 = 5, 135 RSAES_PKCS1_OAEP_SHA512 = 6, 136 RSASSA_PKCS1_V1_5_SHA1 = 7, 137 RSASSA_PKCS1_V1_5_SHA224 = 8, 138 RSASSA_PKCS1_V1_5_SHA256 = 9, 139 RSASSA_PKCS1_V1_5_SHA384 = 10, 140 RSASSA_PKCS1_V1_5_SHA512 = 11, 141 RSASSA_PKCS1_PSS_MGF1_SHA1 = 12, 142 RSASSA_PKCS1_PSS_MGF1_SHA224 = 13, 143 RSASSA_PKCS1_PSS_MGF1_SHA256 = 14, 144 RSASSA_PKCS1_PSS_MGF1_SHA384 = 15, 145 RSASSA_PKCS1_PSS_MGF1_SHA512 = 16, 146 }; 147 148 #endif /* TA_CRYPTO_PERF_H */ 149