1b887bd8fSJens Wiklander /* 2b887bd8fSJens Wiklander * Copyright (c) 2017, Linaro Limited 3b887bd8fSJens Wiklander * All rights reserved. 4b887bd8fSJens Wiklander * 5b887bd8fSJens Wiklander * SPDX-License-Identifier: BSD-2-Clause 6b887bd8fSJens Wiklander */ 7b887bd8fSJens Wiklander 8b887bd8fSJens Wiklander #include <compiler.h> 9*33790cc1SJens Wiklander #include <kernel/panic.h> 10b887bd8fSJens Wiklander #include <tee/tee_cryp_provider.h> 11b887bd8fSJens Wiklander 12b887bd8fSJens Wiklander #if !defined(_CFG_CRYPTO_WITH_HASH) 13b887bd8fSJens Wiklander TEE_Result crypto_hash_get_ctx_size(uint32_t algo __unused, 14b887bd8fSJens Wiklander size_t *size __unused) 15b887bd8fSJens Wiklander { 16b887bd8fSJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 17b887bd8fSJens Wiklander } 18b887bd8fSJens Wiklander 19b887bd8fSJens Wiklander TEE_Result crypto_hash_init(void *ctx __unused, uint32_t algo __unused) 20b887bd8fSJens Wiklander { 21b887bd8fSJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 22b887bd8fSJens Wiklander } 23b887bd8fSJens Wiklander TEE_Result crypto_hash_update(void *ctx __unused, uint32_t algo __unused, 24b887bd8fSJens Wiklander const uint8_t *data __unused, size_t len __unused) 25b887bd8fSJens Wiklander { 26b887bd8fSJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 27b887bd8fSJens Wiklander } 28b887bd8fSJens Wiklander TEE_Result crypto_hash_final(void *ctx __unused, uint32_t algo __unused, 29b887bd8fSJens Wiklander uint8_t *digest __unused, size_t len __unused) 30b887bd8fSJens Wiklander { 31b887bd8fSJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 32b887bd8fSJens Wiklander } 33b887bd8fSJens Wiklander #endif /*_CFG_CRYPTO_WITH_HASH*/ 3482d91db1SJens Wiklander 3582d91db1SJens Wiklander #if !defined(_CFG_CRYPTO_WITH_CIPHER) 3682d91db1SJens Wiklander TEE_Result crypto_cipher_get_ctx_size(uint32_t algo, size_t *size) 3782d91db1SJens Wiklander { 3882d91db1SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED 3982d91db1SJens Wiklander } 4082d91db1SJens Wiklander 4182d91db1SJens Wiklander TEE_Result crypto_cipher_init(void *ctx __unused, uint32_t algo __unused, 4282d91db1SJens Wiklander TEE_OperationMode mode __unused, 4382d91db1SJens Wiklander const uint8_t *key1 __unused, 4482d91db1SJens Wiklander size_t key1_len __unused, 4582d91db1SJens Wiklander const uint8_t *key2 __unused, 4682d91db1SJens Wiklander size_t key2_len __unused, 4782d91db1SJens Wiklander const uint8_t *iv __unused, 4882d91db1SJens Wiklander size_t iv_len __unused) 4982d91db1SJens Wiklander { 5082d91db1SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED 5182d91db1SJens Wiklander } 5282d91db1SJens Wiklander 5382d91db1SJens Wiklander TEE_Result crypto_cipher_update(void *ctx __unused, uint32_t algo __unused, 5482d91db1SJens Wiklander TEE_OperationMode mode __unused, 5582d91db1SJens Wiklander bool last_block __unused, 5682d91db1SJens Wiklander const uint8_t *data __unused, 5782d91db1SJens Wiklander size_t len __unused, uint8_t *dst __unused) 5882d91db1SJens Wiklander { 5982d91db1SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED 6082d91db1SJens Wiklander } 6182d91db1SJens Wiklander 6282d91db1SJens Wiklander void crypto_cipher_final(void *ctx __unused, uint32_t algo __unused) 6382d91db1SJens Wiklander { 6482d91db1SJens Wiklander } 6582d91db1SJens Wiklander 6682d91db1SJens Wiklander TEE_Result crypto_cipher_get_block_size(uint32_t algo __unused, 6782d91db1SJens Wiklander size_t *size __unused) 6882d91db1SJens Wiklander { 6982d91db1SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED 7082d91db1SJens Wiklander } 7182d91db1SJens Wiklander #endif /*_CFG_CRYPTO_WITH_CIPHER*/ 72e9eaba5cSJens Wiklander 73e9eaba5cSJens Wiklander #if !defined(_CFG_CRYPTO_WITH_MAC) 74e9eaba5cSJens Wiklander TEE_Result crypto_mac_get_ctx_size(uint32_t algo __unused, 75e9eaba5cSJens Wiklander size_t *size __unused) 76e9eaba5cSJens Wiklander { 77e9eaba5cSJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 78e9eaba5cSJens Wiklander } 79e9eaba5cSJens Wiklander 80e9eaba5cSJens Wiklander TEE_Result crypto_mac_init(void *ctx __unused, uint32_t algo __unused, 81e9eaba5cSJens Wiklander const uint8_t *key __unused, size_t len __unused) 82e9eaba5cSJens Wiklander { 83e9eaba5cSJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 84e9eaba5cSJens Wiklander } 85e9eaba5cSJens Wiklander 86e9eaba5cSJens Wiklander TEE_Result crypto_mac_update(void *ctx __unused, uint32_t algo __unused, 87e9eaba5cSJens Wiklander const uint8_t *data __unused, size_t len __unused) 88e9eaba5cSJens Wiklander { 89e9eaba5cSJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 90e9eaba5cSJens Wiklander } 91e9eaba5cSJens Wiklander 92e9eaba5cSJens Wiklander TEE_Result crypto_mac_final(void *ctx __unused, uint32_t algo __unused, 93e9eaba5cSJens Wiklander uint8_t *digest __unused, 94e9eaba5cSJens Wiklander size_t digest_len __unused) 95e9eaba5cSJens Wiklander { 96e9eaba5cSJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 97e9eaba5cSJens Wiklander } 98e9eaba5cSJens Wiklander #endif /*_CFG_CRYPTO_WITH_MAC*/ 99e9eaba5cSJens Wiklander 1008875ce46SJens Wiklander #if !defined(_CFG_CRYPTO_WITH_AUTHENC) 1018875ce46SJens Wiklander TEE_Result crypto_authenc_get_ctx_size(uint32_t algo __unused, 1028875ce46SJens Wiklander size_t *size __unused) 1038875ce46SJens Wiklander { 1048875ce46SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 1058875ce46SJens Wiklander } 1068875ce46SJens Wiklander 1078875ce46SJens Wiklander TEE_Result crypto_authenc_init(void *ctx __unused, uint32_t algo __unused, 1088875ce46SJens Wiklander TEE_OperationMode mode __unused, 1098875ce46SJens Wiklander const uint8_t *key __unused, 1108875ce46SJens Wiklander size_t key_len __unused, 1118875ce46SJens Wiklander const uint8_t *nonce __unused, 1128875ce46SJens Wiklander size_t nonce_len __unused, 1138875ce46SJens Wiklander size_t tag_len __unused, 1148875ce46SJens Wiklander size_t aad_len __unused, 1158875ce46SJens Wiklander size_t payload_len __unused) 1168875ce46SJens Wiklander { 1178875ce46SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 1188875ce46SJens Wiklander } 1198875ce46SJens Wiklander 1208875ce46SJens Wiklander TEE_Result crypto_authenc_update_aad(void *ctx __unused, uint32_t algo __unused, 1218875ce46SJens Wiklander TEE_OperationMode mode __unused, 1228875ce46SJens Wiklander const uint8_t *data __unused, 1238875ce46SJens Wiklander size_t len __unused) 1248875ce46SJens Wiklander { 1258875ce46SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 1268875ce46SJens Wiklander } 1278875ce46SJens Wiklander 1288875ce46SJens Wiklander TEE_Result crypto_authenc_update_payload(void *ctx __unused, 1298875ce46SJens Wiklander uint32_t algo __unused, 1308875ce46SJens Wiklander TEE_OperationMode mode __unused, 1318875ce46SJens Wiklander const uint8_t *src_data __unused, 1328875ce46SJens Wiklander size_t src_len __unused, 1338875ce46SJens Wiklander uint8_t *dst_data __unused, 1348875ce46SJens Wiklander size_t *dst_len __unused) 1358875ce46SJens Wiklander { 1368875ce46SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 1378875ce46SJens Wiklander } 1388875ce46SJens Wiklander 1398875ce46SJens Wiklander TEE_Result crypto_authenc_enc_final(void *ctx __unused, uint32_t algo __unused, 1408875ce46SJens Wiklander const uint8_t *src_data __unused, 1418875ce46SJens Wiklander size_t src_len __unused, 1428875ce46SJens Wiklander uint8_t *dst_data __unused, 1438875ce46SJens Wiklander size_t *dst_len __unused, 1448875ce46SJens Wiklander uint8_t *dst_tag __unused, 1458875ce46SJens Wiklander size_t *dst_tag_len __unused) 1468875ce46SJens Wiklander { 1478875ce46SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 1488875ce46SJens Wiklander } 1498875ce46SJens Wiklander 1508875ce46SJens Wiklander TEE_Result crypto_authenc_dec_final(void *ctx __unused, uint32_t algo __unused, 1518875ce46SJens Wiklander const uint8_t *src_data __unused, 1528875ce46SJens Wiklander size_t src_len __unused, 1538875ce46SJens Wiklander uint8_t *dst_data __unused, 1548875ce46SJens Wiklander size_t *dst_len __unused, 1558875ce46SJens Wiklander const uint8_t *tag __unused, 1568875ce46SJens Wiklander size_t tag_len __unused) 1578875ce46SJens Wiklander { 1588875ce46SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 1598875ce46SJens Wiklander } 1608875ce46SJens Wiklander 1618875ce46SJens Wiklander void crypto_authenc_final(void *ctx __unused, uint32_t algo __unused) 1628875ce46SJens Wiklander { 1638875ce46SJens Wiklander } 1648875ce46SJens Wiklander #endif /*_CFG_CRYPTO_WITH_AUTHENC*/ 165*33790cc1SJens Wiklander 166*33790cc1SJens Wiklander #if !defined(_CFG_CRYPTO_WITH_ACIPHER) 167*33790cc1SJens Wiklander struct bignum *crypto_bignum_allocate(size_t size_bits __unused) 168*33790cc1SJens Wiklander { 169*33790cc1SJens Wiklander return NULL; 170*33790cc1SJens Wiklander } 171*33790cc1SJens Wiklander 172*33790cc1SJens Wiklander TEE_Result crypto_bignum_bin2bn(const uint8_t *from __unused, 173*33790cc1SJens Wiklander size_t fromsize __unused, 174*33790cc1SJens Wiklander struct bignum *to __unused) 175*33790cc1SJens Wiklander { 176*33790cc1SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 177*33790cc1SJens Wiklander } 178*33790cc1SJens Wiklander 179*33790cc1SJens Wiklander size_t crypto_bignum_num_bytes(struct bignum *a __unused) 180*33790cc1SJens Wiklander { 181*33790cc1SJens Wiklander return 0; 182*33790cc1SJens Wiklander } 183*33790cc1SJens Wiklander 184*33790cc1SJens Wiklander size_t crypto_bignum_num_bits(struct bignum *a __unused) 185*33790cc1SJens Wiklander { 186*33790cc1SJens Wiklander return 0; 187*33790cc1SJens Wiklander } 188*33790cc1SJens Wiklander 189*33790cc1SJens Wiklander /* 190*33790cc1SJens Wiklander * crypto_bignum_allocate() and crypto_bignum_bin2bn() failing should be 191*33790cc1SJens Wiklander * enough to guarantee that the functions calling this function aren't 192*33790cc1SJens Wiklander * called, but just in case add a panic() here to avoid unexpected 193*33790cc1SJens Wiklander * behavoir. 194*33790cc1SJens Wiklander */ 195*33790cc1SJens Wiklander static void bignum_cant_happen(void) 196*33790cc1SJens Wiklander { 197*33790cc1SJens Wiklander volatile bool b = true; 198*33790cc1SJens Wiklander 199*33790cc1SJens Wiklander /* Avoid warning about function does not return */ 200*33790cc1SJens Wiklander if (b) 201*33790cc1SJens Wiklander panic(); 202*33790cc1SJens Wiklander } 203*33790cc1SJens Wiklander 204*33790cc1SJens Wiklander void crypto_bignum_bn2bin(const struct bignum *from __unused, 205*33790cc1SJens Wiklander uint8_t *to __unused) 206*33790cc1SJens Wiklander { 207*33790cc1SJens Wiklander bignum_cant_happen(); 208*33790cc1SJens Wiklander } 209*33790cc1SJens Wiklander 210*33790cc1SJens Wiklander void crypto_bignum_copy(struct bignum *to __unused, 211*33790cc1SJens Wiklander const struct bignum *from __unused) 212*33790cc1SJens Wiklander { 213*33790cc1SJens Wiklander bignum_cant_happen(); 214*33790cc1SJens Wiklander } 215*33790cc1SJens Wiklander 216*33790cc1SJens Wiklander void crypto_bignum_free(struct bignum *a) 217*33790cc1SJens Wiklander { 218*33790cc1SJens Wiklander if (a) 219*33790cc1SJens Wiklander panic(); 220*33790cc1SJens Wiklander } 221*33790cc1SJens Wiklander 222*33790cc1SJens Wiklander void crypto_bignum_clear(struct bignum *a __unused) 223*33790cc1SJens Wiklander { 224*33790cc1SJens Wiklander bignum_cant_happen(); 225*33790cc1SJens Wiklander } 226*33790cc1SJens Wiklander 227*33790cc1SJens Wiklander /* return -1 if a<b, 0 if a==b, +1 if a>b */ 228*33790cc1SJens Wiklander int32_t crypto_bignum_compare(struct bignum *a __unused, 229*33790cc1SJens Wiklander struct bignum *b __unused) 230*33790cc1SJens Wiklander { 231*33790cc1SJens Wiklander bignum_cant_happen(); 232*33790cc1SJens Wiklander return -1; 233*33790cc1SJens Wiklander } 234*33790cc1SJens Wiklander #endif /*!_CFG_CRYPTO_WITH_ACIPHER*/ 235