1 /* 2 * Copyright (c) 2017, Linaro Limited 3 * All rights reserved. 4 * 5 * SPDX-License-Identifier: BSD-2-Clause 6 */ 7 8 #include <compiler.h> 9 #include <kernel/panic.h> 10 #include <tee/tee_cryp_provider.h> 11 12 #if !defined(_CFG_CRYPTO_WITH_HASH) 13 TEE_Result crypto_hash_get_ctx_size(uint32_t algo __unused, 14 size_t *size __unused) 15 { 16 return TEE_ERROR_NOT_IMPLEMENTED; 17 } 18 19 TEE_Result crypto_hash_init(void *ctx __unused, uint32_t algo __unused) 20 { 21 return TEE_ERROR_NOT_IMPLEMENTED; 22 } 23 TEE_Result crypto_hash_update(void *ctx __unused, uint32_t algo __unused, 24 const uint8_t *data __unused, size_t len __unused) 25 { 26 return TEE_ERROR_NOT_IMPLEMENTED; 27 } 28 TEE_Result crypto_hash_final(void *ctx __unused, uint32_t algo __unused, 29 uint8_t *digest __unused, size_t len __unused) 30 { 31 return TEE_ERROR_NOT_IMPLEMENTED; 32 } 33 #endif /*_CFG_CRYPTO_WITH_HASH*/ 34 35 #if !defined(_CFG_CRYPTO_WITH_CIPHER) 36 TEE_Result crypto_cipher_get_ctx_size(uint32_t algo, size_t *size) 37 { 38 return TEE_ERROR_NOT_IMPLEMENTED 39 } 40 41 TEE_Result crypto_cipher_init(void *ctx __unused, uint32_t algo __unused, 42 TEE_OperationMode mode __unused, 43 const uint8_t *key1 __unused, 44 size_t key1_len __unused, 45 const uint8_t *key2 __unused, 46 size_t key2_len __unused, 47 const uint8_t *iv __unused, 48 size_t iv_len __unused) 49 { 50 return TEE_ERROR_NOT_IMPLEMENTED 51 } 52 53 TEE_Result crypto_cipher_update(void *ctx __unused, uint32_t algo __unused, 54 TEE_OperationMode mode __unused, 55 bool last_block __unused, 56 const uint8_t *data __unused, 57 size_t len __unused, uint8_t *dst __unused) 58 { 59 return TEE_ERROR_NOT_IMPLEMENTED 60 } 61 62 void crypto_cipher_final(void *ctx __unused, uint32_t algo __unused) 63 { 64 } 65 66 TEE_Result crypto_cipher_get_block_size(uint32_t algo __unused, 67 size_t *size __unused) 68 { 69 return TEE_ERROR_NOT_IMPLEMENTED 70 } 71 #endif /*_CFG_CRYPTO_WITH_CIPHER*/ 72 73 #if !defined(_CFG_CRYPTO_WITH_MAC) 74 TEE_Result crypto_mac_get_ctx_size(uint32_t algo __unused, 75 size_t *size __unused) 76 { 77 return TEE_ERROR_NOT_IMPLEMENTED; 78 } 79 80 TEE_Result crypto_mac_init(void *ctx __unused, uint32_t algo __unused, 81 const uint8_t *key __unused, size_t len __unused) 82 { 83 return TEE_ERROR_NOT_IMPLEMENTED; 84 } 85 86 TEE_Result crypto_mac_update(void *ctx __unused, uint32_t algo __unused, 87 const uint8_t *data __unused, size_t len __unused) 88 { 89 return TEE_ERROR_NOT_IMPLEMENTED; 90 } 91 92 TEE_Result crypto_mac_final(void *ctx __unused, uint32_t algo __unused, 93 uint8_t *digest __unused, 94 size_t digest_len __unused) 95 { 96 return TEE_ERROR_NOT_IMPLEMENTED; 97 } 98 #endif /*_CFG_CRYPTO_WITH_MAC*/ 99 100 #if !defined(_CFG_CRYPTO_WITH_AUTHENC) 101 TEE_Result crypto_authenc_get_ctx_size(uint32_t algo __unused, 102 size_t *size __unused) 103 { 104 return TEE_ERROR_NOT_IMPLEMENTED; 105 } 106 107 TEE_Result crypto_authenc_init(void *ctx __unused, uint32_t algo __unused, 108 TEE_OperationMode mode __unused, 109 const uint8_t *key __unused, 110 size_t key_len __unused, 111 const uint8_t *nonce __unused, 112 size_t nonce_len __unused, 113 size_t tag_len __unused, 114 size_t aad_len __unused, 115 size_t payload_len __unused) 116 { 117 return TEE_ERROR_NOT_IMPLEMENTED; 118 } 119 120 TEE_Result crypto_authenc_update_aad(void *ctx __unused, uint32_t algo __unused, 121 TEE_OperationMode mode __unused, 122 const uint8_t *data __unused, 123 size_t len __unused) 124 { 125 return TEE_ERROR_NOT_IMPLEMENTED; 126 } 127 128 TEE_Result crypto_authenc_update_payload(void *ctx __unused, 129 uint32_t algo __unused, 130 TEE_OperationMode mode __unused, 131 const uint8_t *src_data __unused, 132 size_t src_len __unused, 133 uint8_t *dst_data __unused, 134 size_t *dst_len __unused) 135 { 136 return TEE_ERROR_NOT_IMPLEMENTED; 137 } 138 139 TEE_Result crypto_authenc_enc_final(void *ctx __unused, uint32_t algo __unused, 140 const uint8_t *src_data __unused, 141 size_t src_len __unused, 142 uint8_t *dst_data __unused, 143 size_t *dst_len __unused, 144 uint8_t *dst_tag __unused, 145 size_t *dst_tag_len __unused) 146 { 147 return TEE_ERROR_NOT_IMPLEMENTED; 148 } 149 150 TEE_Result crypto_authenc_dec_final(void *ctx __unused, uint32_t algo __unused, 151 const uint8_t *src_data __unused, 152 size_t src_len __unused, 153 uint8_t *dst_data __unused, 154 size_t *dst_len __unused, 155 const uint8_t *tag __unused, 156 size_t tag_len __unused) 157 { 158 return TEE_ERROR_NOT_IMPLEMENTED; 159 } 160 161 void crypto_authenc_final(void *ctx __unused, uint32_t algo __unused) 162 { 163 } 164 #endif /*_CFG_CRYPTO_WITH_AUTHENC*/ 165 166 #if !defined(_CFG_CRYPTO_WITH_ACIPHER) 167 struct bignum *crypto_bignum_allocate(size_t size_bits __unused) 168 { 169 return NULL; 170 } 171 172 TEE_Result crypto_bignum_bin2bn(const uint8_t *from __unused, 173 size_t fromsize __unused, 174 struct bignum *to __unused) 175 { 176 return TEE_ERROR_NOT_IMPLEMENTED; 177 } 178 179 size_t crypto_bignum_num_bytes(struct bignum *a __unused) 180 { 181 return 0; 182 } 183 184 size_t crypto_bignum_num_bits(struct bignum *a __unused) 185 { 186 return 0; 187 } 188 189 /* 190 * crypto_bignum_allocate() and crypto_bignum_bin2bn() failing should be 191 * enough to guarantee that the functions calling this function aren't 192 * called, but just in case add a panic() here to avoid unexpected 193 * behavoir. 194 */ 195 static void bignum_cant_happen(void) 196 { 197 volatile bool b = true; 198 199 /* Avoid warning about function does not return */ 200 if (b) 201 panic(); 202 } 203 204 void crypto_bignum_bn2bin(const struct bignum *from __unused, 205 uint8_t *to __unused) 206 { 207 bignum_cant_happen(); 208 } 209 210 void crypto_bignum_copy(struct bignum *to __unused, 211 const struct bignum *from __unused) 212 { 213 bignum_cant_happen(); 214 } 215 216 void crypto_bignum_free(struct bignum *a) 217 { 218 if (a) 219 panic(); 220 } 221 222 void crypto_bignum_clear(struct bignum *a __unused) 223 { 224 bignum_cant_happen(); 225 } 226 227 /* return -1 if a<b, 0 if a==b, +1 if a>b */ 228 int32_t crypto_bignum_compare(struct bignum *a __unused, 229 struct bignum *b __unused) 230 { 231 bignum_cant_happen(); 232 return -1; 233 } 234 #endif /*!_CFG_CRYPTO_WITH_ACIPHER*/ 235