1fb7ef469SJerome Forissier // SPDX-License-Identifier: BSD-2-Clause 2b887bd8fSJens Wiklander /* 3b887bd8fSJens Wiklander * Copyright (c) 2017, Linaro Limited 4b887bd8fSJens Wiklander */ 5b887bd8fSJens Wiklander 6b887bd8fSJens Wiklander #include <compiler.h> 7d0620b01SJens Wiklander #include <crypto/aes-ccm.h> 8d0620b01SJens Wiklander #include <crypto/aes-gcm.h> 9e1770e71SJens Wiklander #include <crypto/crypto.h> 1033790cc1SJens Wiklander #include <kernel/panic.h> 11b887bd8fSJens Wiklander 12b887bd8fSJens Wiklander #if !defined(_CFG_CRYPTO_WITH_HASH) 13*ecf2e014SJens Wiklander TEE_Result crypto_hash_alloc_ctx(void **ctx __unused, uint32_t algo __unused) 14b887bd8fSJens Wiklander { 15b887bd8fSJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 16b887bd8fSJens Wiklander } 17b887bd8fSJens Wiklander 18*ecf2e014SJens Wiklander void crypto_hash_free_ctx(void *ctx __unused, uint32_t algo __unused) 19*ecf2e014SJens Wiklander { 20*ecf2e014SJens Wiklander assert(0); 21*ecf2e014SJens Wiklander } 22*ecf2e014SJens Wiklander 23*ecf2e014SJens Wiklander void crypto_hash_copy_state(void *dst_ctx __unused, void *src_ctx __unused, 24*ecf2e014SJens Wiklander uint32_t algo __unused) 25*ecf2e014SJens Wiklander { 26*ecf2e014SJens Wiklander assert(0); 27*ecf2e014SJens Wiklander } 28*ecf2e014SJens Wiklander 29b887bd8fSJens Wiklander TEE_Result crypto_hash_init(void *ctx __unused, uint32_t algo __unused) 30b887bd8fSJens Wiklander { 31b887bd8fSJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 32b887bd8fSJens Wiklander } 33b887bd8fSJens Wiklander TEE_Result crypto_hash_update(void *ctx __unused, uint32_t algo __unused, 34b887bd8fSJens Wiklander const uint8_t *data __unused, size_t len __unused) 35b887bd8fSJens Wiklander { 36b887bd8fSJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 37b887bd8fSJens Wiklander } 38b887bd8fSJens Wiklander TEE_Result crypto_hash_final(void *ctx __unused, uint32_t algo __unused, 39b887bd8fSJens Wiklander uint8_t *digest __unused, size_t len __unused) 40b887bd8fSJens Wiklander { 41b887bd8fSJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 42b887bd8fSJens Wiklander } 43b887bd8fSJens Wiklander #endif /*_CFG_CRYPTO_WITH_HASH*/ 4482d91db1SJens Wiklander 4582d91db1SJens Wiklander #if !defined(_CFG_CRYPTO_WITH_CIPHER) 461c5fdd1fSJerome Forissier TEE_Result crypto_cipher_get_ctx_size(uint32_t algo __unused, 471c5fdd1fSJerome Forissier size_t *size __unused) 4882d91db1SJens Wiklander { 491c5fdd1fSJerome Forissier return TEE_ERROR_NOT_IMPLEMENTED; 5082d91db1SJens Wiklander } 5182d91db1SJens Wiklander 5282d91db1SJens Wiklander TEE_Result crypto_cipher_init(void *ctx __unused, uint32_t algo __unused, 5382d91db1SJens Wiklander TEE_OperationMode mode __unused, 5482d91db1SJens Wiklander const uint8_t *key1 __unused, 5582d91db1SJens Wiklander size_t key1_len __unused, 5682d91db1SJens Wiklander const uint8_t *key2 __unused, 5782d91db1SJens Wiklander size_t key2_len __unused, 5882d91db1SJens Wiklander const uint8_t *iv __unused, 5982d91db1SJens Wiklander size_t iv_len __unused) 6082d91db1SJens Wiklander { 611c5fdd1fSJerome Forissier return TEE_ERROR_NOT_IMPLEMENTED; 6282d91db1SJens Wiklander } 6382d91db1SJens Wiklander 6482d91db1SJens Wiklander TEE_Result crypto_cipher_update(void *ctx __unused, uint32_t algo __unused, 6582d91db1SJens Wiklander TEE_OperationMode mode __unused, 6682d91db1SJens Wiklander bool last_block __unused, 6782d91db1SJens Wiklander const uint8_t *data __unused, 6882d91db1SJens Wiklander size_t len __unused, uint8_t *dst __unused) 6982d91db1SJens Wiklander { 701c5fdd1fSJerome Forissier return TEE_ERROR_NOT_IMPLEMENTED; 7182d91db1SJens Wiklander } 7282d91db1SJens Wiklander 7382d91db1SJens Wiklander void crypto_cipher_final(void *ctx __unused, uint32_t algo __unused) 7482d91db1SJens Wiklander { 7582d91db1SJens Wiklander } 7682d91db1SJens Wiklander 7782d91db1SJens Wiklander TEE_Result crypto_cipher_get_block_size(uint32_t algo __unused, 7882d91db1SJens Wiklander size_t *size __unused) 7982d91db1SJens Wiklander { 801c5fdd1fSJerome Forissier return TEE_ERROR_NOT_IMPLEMENTED; 8182d91db1SJens Wiklander } 8282d91db1SJens Wiklander #endif /*_CFG_CRYPTO_WITH_CIPHER*/ 83e9eaba5cSJens Wiklander 84e9eaba5cSJens Wiklander #if !defined(_CFG_CRYPTO_WITH_MAC) 85e9eaba5cSJens Wiklander TEE_Result crypto_mac_get_ctx_size(uint32_t algo __unused, 86e9eaba5cSJens Wiklander size_t *size __unused) 87e9eaba5cSJens Wiklander { 88e9eaba5cSJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 89e9eaba5cSJens Wiklander } 90e9eaba5cSJens Wiklander 91e9eaba5cSJens Wiklander TEE_Result crypto_mac_init(void *ctx __unused, uint32_t algo __unused, 92e9eaba5cSJens Wiklander const uint8_t *key __unused, size_t len __unused) 93e9eaba5cSJens Wiklander { 94e9eaba5cSJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 95e9eaba5cSJens Wiklander } 96e9eaba5cSJens Wiklander 97e9eaba5cSJens Wiklander TEE_Result crypto_mac_update(void *ctx __unused, uint32_t algo __unused, 98e9eaba5cSJens Wiklander const uint8_t *data __unused, size_t len __unused) 99e9eaba5cSJens Wiklander { 100e9eaba5cSJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 101e9eaba5cSJens Wiklander } 102e9eaba5cSJens Wiklander 103e9eaba5cSJens Wiklander TEE_Result crypto_mac_final(void *ctx __unused, uint32_t algo __unused, 104e9eaba5cSJens Wiklander uint8_t *digest __unused, 105e9eaba5cSJens Wiklander size_t digest_len __unused) 106e9eaba5cSJens Wiklander { 107e9eaba5cSJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 108e9eaba5cSJens Wiklander } 109e9eaba5cSJens Wiklander #endif /*_CFG_CRYPTO_WITH_MAC*/ 110e9eaba5cSJens Wiklander 111d0620b01SJens Wiklander TEE_Result crypto_authenc_get_ctx_size(uint32_t algo __maybe_unused, 112d0620b01SJens Wiklander size_t *size __maybe_unused) 1138875ce46SJens Wiklander { 114d0620b01SJens Wiklander switch (algo) { 115d0620b01SJens Wiklander #if defined(CFG_CRYPTO_CCM) 116d0620b01SJens Wiklander case TEE_ALG_AES_CCM: 117d0620b01SJens Wiklander *size = crypto_aes_ccm_get_ctx_size(); 118d0620b01SJens Wiklander return TEE_SUCCESS; 119d0620b01SJens Wiklander #endif 120d0620b01SJens Wiklander #if defined(CFG_CRYPTO_GCM) 121d0620b01SJens Wiklander case TEE_ALG_AES_GCM: 122d0620b01SJens Wiklander *size = crypto_aes_gcm_get_ctx_size(); 123d0620b01SJens Wiklander return TEE_SUCCESS; 124d0620b01SJens Wiklander #endif 125d0620b01SJens Wiklander default: 1268875ce46SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 1278875ce46SJens Wiklander } 128d0620b01SJens Wiklander } 1298875ce46SJens Wiklander 130d0620b01SJens Wiklander TEE_Result crypto_authenc_init(void *ctx __maybe_unused, 131d0620b01SJens Wiklander uint32_t algo __maybe_unused, 132d0620b01SJens Wiklander TEE_OperationMode mode __maybe_unused, 133d0620b01SJens Wiklander const uint8_t *key __maybe_unused, 134d0620b01SJens Wiklander size_t key_len __maybe_unused, 135d0620b01SJens Wiklander const uint8_t *nonce __maybe_unused, 136d0620b01SJens Wiklander size_t nonce_len __maybe_unused, 137d0620b01SJens Wiklander size_t tag_len __maybe_unused, 138d0620b01SJens Wiklander size_t aad_len __maybe_unused, 139d0620b01SJens Wiklander size_t payload_len __maybe_unused) 140d0620b01SJens Wiklander { 141d0620b01SJens Wiklander switch (algo) { 142d0620b01SJens Wiklander #if defined(CFG_CRYPTO_CCM) 143d0620b01SJens Wiklander case TEE_ALG_AES_CCM: 144d0620b01SJens Wiklander return crypto_aes_ccm_init(ctx, mode, key, key_len, nonce, 145d0620b01SJens Wiklander nonce_len, tag_len, aad_len, 146d0620b01SJens Wiklander payload_len); 147d0620b01SJens Wiklander #endif 148d0620b01SJens Wiklander #if defined(CFG_CRYPTO_GCM) 149d0620b01SJens Wiklander case TEE_ALG_AES_GCM: 150d0620b01SJens Wiklander return crypto_aes_gcm_init(ctx, mode, key, key_len, nonce, 151d0620b01SJens Wiklander nonce_len, tag_len); 152d0620b01SJens Wiklander #endif 153d0620b01SJens Wiklander default: 154d0620b01SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 155d0620b01SJens Wiklander } 156d0620b01SJens Wiklander } 157d0620b01SJens Wiklander 158d0620b01SJens Wiklander TEE_Result crypto_authenc_update_aad(void *ctx __maybe_unused, 159d0620b01SJens Wiklander uint32_t algo __maybe_unused, 1608875ce46SJens Wiklander TEE_OperationMode mode __unused, 161d0620b01SJens Wiklander const uint8_t *data __maybe_unused, 162d0620b01SJens Wiklander size_t len __maybe_unused) 1638875ce46SJens Wiklander { 164d0620b01SJens Wiklander switch (algo) { 165d0620b01SJens Wiklander #if defined(CFG_CRYPTO_CCM) 166d0620b01SJens Wiklander case TEE_ALG_AES_CCM: 167d0620b01SJens Wiklander return crypto_aes_ccm_update_aad(ctx, data, len); 168d0620b01SJens Wiklander #endif 169d0620b01SJens Wiklander #if defined(CFG_CRYPTO_GCM) 170d0620b01SJens Wiklander case TEE_ALG_AES_GCM: 171d0620b01SJens Wiklander return crypto_aes_gcm_update_aad(ctx, data, len); 172d0620b01SJens Wiklander #endif 173d0620b01SJens Wiklander default: 1748875ce46SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 1758875ce46SJens Wiklander } 176d0620b01SJens Wiklander } 1778875ce46SJens Wiklander 178d0620b01SJens Wiklander TEE_Result crypto_authenc_update_payload(void *ctx __maybe_unused, 179d0620b01SJens Wiklander uint32_t algo __maybe_unused, 180d0620b01SJens Wiklander TEE_OperationMode mode __maybe_unused, 181d0620b01SJens Wiklander const uint8_t *src_data __maybe_unused, 182d0620b01SJens Wiklander size_t src_len __maybe_unused, 183d0620b01SJens Wiklander uint8_t *dst_data __maybe_unused, 184d0620b01SJens Wiklander size_t *dst_len __maybe_unused) 1858875ce46SJens Wiklander { 186d0620b01SJens Wiklander size_t dl = *dst_len; 187d0620b01SJens Wiklander 188d0620b01SJens Wiklander *dst_len = src_len; 189d0620b01SJens Wiklander if (dl < src_len) 190d0620b01SJens Wiklander return TEE_ERROR_SHORT_BUFFER; 191d0620b01SJens Wiklander 192d0620b01SJens Wiklander switch (algo) { 193d0620b01SJens Wiklander #if defined(CFG_CRYPTO_CCM) 194d0620b01SJens Wiklander case TEE_ALG_AES_CCM: 195d0620b01SJens Wiklander return crypto_aes_ccm_update_payload(ctx, mode, src_data, 196d0620b01SJens Wiklander src_len, dst_data); 197d0620b01SJens Wiklander #endif 198d0620b01SJens Wiklander #if defined(CFG_CRYPTO_GCM) 199d0620b01SJens Wiklander case TEE_ALG_AES_GCM: 200d0620b01SJens Wiklander return crypto_aes_gcm_update_payload(ctx, mode, src_data, 201d0620b01SJens Wiklander src_len, dst_data); 202d0620b01SJens Wiklander #endif 203d0620b01SJens Wiklander default: 2048875ce46SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 2058875ce46SJens Wiklander } 206d0620b01SJens Wiklander } 2078875ce46SJens Wiklander 208d0620b01SJens Wiklander TEE_Result crypto_authenc_enc_final(void *ctx __maybe_unused, 209d0620b01SJens Wiklander uint32_t algo __maybe_unused, 210d0620b01SJens Wiklander const uint8_t *src_data __maybe_unused, 211d0620b01SJens Wiklander size_t src_len __maybe_unused, 212d0620b01SJens Wiklander uint8_t *dst_data __maybe_unused, 213d0620b01SJens Wiklander size_t *dst_len __maybe_unused, 214d0620b01SJens Wiklander uint8_t *dst_tag __maybe_unused, 215d0620b01SJens Wiklander size_t *dst_tag_len __maybe_unused) 2168875ce46SJens Wiklander { 217d0620b01SJens Wiklander size_t dl = *dst_len; 218d0620b01SJens Wiklander 219d0620b01SJens Wiklander *dst_len = src_len; 220d0620b01SJens Wiklander if (dl < src_len) 221d0620b01SJens Wiklander return TEE_ERROR_SHORT_BUFFER; 222d0620b01SJens Wiklander 223d0620b01SJens Wiklander switch (algo) { 224d0620b01SJens Wiklander #if defined(CFG_CRYPTO_CCM) 225d0620b01SJens Wiklander case TEE_ALG_AES_CCM: 226d0620b01SJens Wiklander return crypto_aes_ccm_enc_final(ctx, src_data, src_len, 227d0620b01SJens Wiklander dst_data, dst_tag, dst_tag_len); 228d0620b01SJens Wiklander #endif 229d0620b01SJens Wiklander #if defined(CFG_CRYPTO_GCM) 230d0620b01SJens Wiklander case TEE_ALG_AES_GCM: 231d0620b01SJens Wiklander return crypto_aes_gcm_enc_final(ctx, src_data, src_len, 232d0620b01SJens Wiklander dst_data, dst_tag, dst_tag_len); 233d0620b01SJens Wiklander #endif 234d0620b01SJens Wiklander default: 2358875ce46SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 2368875ce46SJens Wiklander } 237d0620b01SJens Wiklander } 2388875ce46SJens Wiklander 239d0620b01SJens Wiklander TEE_Result crypto_authenc_dec_final(void *ctx __maybe_unused, 240d0620b01SJens Wiklander uint32_t algo __maybe_unused, 241d0620b01SJens Wiklander const uint8_t *src_data __maybe_unused, 242d0620b01SJens Wiklander size_t src_len __maybe_unused, 243d0620b01SJens Wiklander uint8_t *dst_data __maybe_unused, 244d0620b01SJens Wiklander size_t *dst_len __maybe_unused, 245d0620b01SJens Wiklander const uint8_t *tag __maybe_unused, 246d0620b01SJens Wiklander size_t tag_len __maybe_unused) 2478875ce46SJens Wiklander { 248d0620b01SJens Wiklander size_t dl = *dst_len; 249d0620b01SJens Wiklander 250d0620b01SJens Wiklander *dst_len = src_len; 251d0620b01SJens Wiklander if (dl < src_len) 252d0620b01SJens Wiklander return TEE_ERROR_SHORT_BUFFER; 253d0620b01SJens Wiklander 254d0620b01SJens Wiklander switch (algo) { 255d0620b01SJens Wiklander #if defined(CFG_CRYPTO_CCM) 256d0620b01SJens Wiklander case TEE_ALG_AES_CCM: 257d0620b01SJens Wiklander return crypto_aes_ccm_dec_final(ctx, src_data, src_len, 258d0620b01SJens Wiklander dst_data, tag, tag_len); 259d0620b01SJens Wiklander #endif 260d0620b01SJens Wiklander #if defined(CFG_CRYPTO_GCM) 261d0620b01SJens Wiklander case TEE_ALG_AES_GCM: 262d0620b01SJens Wiklander return crypto_aes_gcm_dec_final(ctx, src_data, src_len, 263d0620b01SJens Wiklander dst_data, tag, tag_len); 264d0620b01SJens Wiklander #endif 265d0620b01SJens Wiklander default: 2668875ce46SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 2678875ce46SJens Wiklander } 2688875ce46SJens Wiklander } 2698875ce46SJens Wiklander 270d0620b01SJens Wiklander void crypto_authenc_final(void *ctx __maybe_unused, 271d0620b01SJens Wiklander uint32_t algo __maybe_unused) 2728875ce46SJens Wiklander { 273d0620b01SJens Wiklander switch (algo) { 274d0620b01SJens Wiklander #if defined(CFG_CRYPTO_CCM) 275d0620b01SJens Wiklander case TEE_ALG_AES_CCM: 276d0620b01SJens Wiklander crypto_aes_ccm_final(ctx); 277d0620b01SJens Wiklander break; 278d0620b01SJens Wiklander #endif 279d0620b01SJens Wiklander #if defined(CFG_CRYPTO_GCM) 280d0620b01SJens Wiklander case TEE_ALG_AES_GCM: 281d0620b01SJens Wiklander crypto_aes_gcm_final(ctx); 282d0620b01SJens Wiklander break; 283d0620b01SJens Wiklander #endif 284d0620b01SJens Wiklander default: 285d0620b01SJens Wiklander break; 2868875ce46SJens Wiklander } 287d0620b01SJens Wiklander } 28833790cc1SJens Wiklander 28933790cc1SJens Wiklander #if !defined(_CFG_CRYPTO_WITH_ACIPHER) 29033790cc1SJens Wiklander struct bignum *crypto_bignum_allocate(size_t size_bits __unused) 29133790cc1SJens Wiklander { 29233790cc1SJens Wiklander return NULL; 29333790cc1SJens Wiklander } 29433790cc1SJens Wiklander 29533790cc1SJens Wiklander TEE_Result crypto_bignum_bin2bn(const uint8_t *from __unused, 29633790cc1SJens Wiklander size_t fromsize __unused, 29733790cc1SJens Wiklander struct bignum *to __unused) 29833790cc1SJens Wiklander { 29933790cc1SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 30033790cc1SJens Wiklander } 30133790cc1SJens Wiklander 30233790cc1SJens Wiklander size_t crypto_bignum_num_bytes(struct bignum *a __unused) 30333790cc1SJens Wiklander { 30433790cc1SJens Wiklander return 0; 30533790cc1SJens Wiklander } 30633790cc1SJens Wiklander 30733790cc1SJens Wiklander size_t crypto_bignum_num_bits(struct bignum *a __unused) 30833790cc1SJens Wiklander { 30933790cc1SJens Wiklander return 0; 31033790cc1SJens Wiklander } 31133790cc1SJens Wiklander 31233790cc1SJens Wiklander /* 31333790cc1SJens Wiklander * crypto_bignum_allocate() and crypto_bignum_bin2bn() failing should be 31433790cc1SJens Wiklander * enough to guarantee that the functions calling this function aren't 31533790cc1SJens Wiklander * called, but just in case add a panic() here to avoid unexpected 31633790cc1SJens Wiklander * behavoir. 31733790cc1SJens Wiklander */ 31833790cc1SJens Wiklander static void bignum_cant_happen(void) 31933790cc1SJens Wiklander { 32033790cc1SJens Wiklander volatile bool b = true; 32133790cc1SJens Wiklander 32233790cc1SJens Wiklander /* Avoid warning about function does not return */ 32333790cc1SJens Wiklander if (b) 32433790cc1SJens Wiklander panic(); 32533790cc1SJens Wiklander } 32633790cc1SJens Wiklander 32733790cc1SJens Wiklander void crypto_bignum_bn2bin(const struct bignum *from __unused, 32833790cc1SJens Wiklander uint8_t *to __unused) 32933790cc1SJens Wiklander { 33033790cc1SJens Wiklander bignum_cant_happen(); 33133790cc1SJens Wiklander } 33233790cc1SJens Wiklander 33333790cc1SJens Wiklander void crypto_bignum_copy(struct bignum *to __unused, 33433790cc1SJens Wiklander const struct bignum *from __unused) 33533790cc1SJens Wiklander { 33633790cc1SJens Wiklander bignum_cant_happen(); 33733790cc1SJens Wiklander } 33833790cc1SJens Wiklander 33933790cc1SJens Wiklander void crypto_bignum_free(struct bignum *a) 34033790cc1SJens Wiklander { 34133790cc1SJens Wiklander if (a) 34233790cc1SJens Wiklander panic(); 34333790cc1SJens Wiklander } 34433790cc1SJens Wiklander 34533790cc1SJens Wiklander void crypto_bignum_clear(struct bignum *a __unused) 34633790cc1SJens Wiklander { 34733790cc1SJens Wiklander bignum_cant_happen(); 34833790cc1SJens Wiklander } 34933790cc1SJens Wiklander 35033790cc1SJens Wiklander /* return -1 if a<b, 0 if a==b, +1 if a>b */ 35133790cc1SJens Wiklander int32_t crypto_bignum_compare(struct bignum *a __unused, 35233790cc1SJens Wiklander struct bignum *b __unused) 35333790cc1SJens Wiklander { 35433790cc1SJens Wiklander bignum_cant_happen(); 35533790cc1SJens Wiklander return -1; 35633790cc1SJens Wiklander } 35733790cc1SJens Wiklander #endif /*!_CFG_CRYPTO_WITH_ACIPHER*/ 358291e5450SJens Wiklander 359291e5450SJens Wiklander #if !defined(CFG_CRYPTO_RSA) || !defined(_CFG_CRYPTO_WITH_ACIPHER) 360291e5450SJens Wiklander TEE_Result crypto_acipher_alloc_rsa_keypair(struct rsa_keypair *s __unused, 361291e5450SJens Wiklander size_t key_size_bits __unused) 362291e5450SJens Wiklander { 363291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 364291e5450SJens Wiklander } 365291e5450SJens Wiklander 366291e5450SJens Wiklander TEE_Result 367291e5450SJens Wiklander crypto_acipher_alloc_rsa_public_key(struct rsa_public_key *s __unused, 368291e5450SJens Wiklander size_t key_size_bits __unused) 369291e5450SJens Wiklander { 370291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 371291e5450SJens Wiklander } 372291e5450SJens Wiklander 373291e5450SJens Wiklander void crypto_acipher_free_rsa_public_key(struct rsa_public_key *s __unused) 374291e5450SJens Wiklander { 375291e5450SJens Wiklander } 376291e5450SJens Wiklander 377291e5450SJens Wiklander TEE_Result crypto_acipher_gen_rsa_key(struct rsa_keypair *key __unused, 378291e5450SJens Wiklander size_t key_size __unused) 379291e5450SJens Wiklander { 380291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 381291e5450SJens Wiklander } 382291e5450SJens Wiklander 383291e5450SJens Wiklander TEE_Result crypto_acipher_rsanopad_decrypt(struct rsa_keypair *key __unused, 384291e5450SJens Wiklander const uint8_t *src __unused, 385291e5450SJens Wiklander size_t src_len __unused, 386291e5450SJens Wiklander uint8_t *dst __unused, 387291e5450SJens Wiklander size_t *dst_len __unused) 388291e5450SJens Wiklander { 389291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 390291e5450SJens Wiklander } 391291e5450SJens Wiklander 392291e5450SJens Wiklander TEE_Result crypto_acipher_rsanopad_encrypt(struct rsa_public_key *key __unused, 393291e5450SJens Wiklander const uint8_t *src __unused, 394291e5450SJens Wiklander size_t src_len __unused, 395291e5450SJens Wiklander uint8_t *dst __unused, 396291e5450SJens Wiklander size_t *dst_len __unused) 397291e5450SJens Wiklander { 398291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 399291e5450SJens Wiklander } 400291e5450SJens Wiklander 401291e5450SJens Wiklander TEE_Result crypto_acipher_rsaes_decrypt(uint32_t algo __unused, 402291e5450SJens Wiklander struct rsa_keypair *key __unused, 403291e5450SJens Wiklander const uint8_t *label __unused, 404291e5450SJens Wiklander size_t label_len __unused, 405291e5450SJens Wiklander const uint8_t *src __unused, 406291e5450SJens Wiklander size_t src_len __unused, 407291e5450SJens Wiklander uint8_t *dst __unused, 408291e5450SJens Wiklander size_t *dst_len __unused) 409291e5450SJens Wiklander { 410291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 411291e5450SJens Wiklander } 412291e5450SJens Wiklander 413291e5450SJens Wiklander TEE_Result crypto_acipher_rsaes_encrypt(uint32_t algo __unused, 414291e5450SJens Wiklander struct rsa_public_key *key __unused, 415291e5450SJens Wiklander const uint8_t *label __unused, 416291e5450SJens Wiklander size_t label_len __unused, 417291e5450SJens Wiklander const uint8_t *src __unused, 418291e5450SJens Wiklander size_t src_len __unused, 419291e5450SJens Wiklander uint8_t *dst __unused, 420291e5450SJens Wiklander size_t *dst_len __unused) 421291e5450SJens Wiklander { 422291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 423291e5450SJens Wiklander } 424291e5450SJens Wiklander 425291e5450SJens Wiklander TEE_Result crypto_acipher_rsassa_sign(uint32_t algo __unused, 426291e5450SJens Wiklander struct rsa_keypair *key __unused, 427291e5450SJens Wiklander int salt_len __unused, 428291e5450SJens Wiklander const uint8_t *msg __unused, 429291e5450SJens Wiklander size_t msg_len __unused, 430291e5450SJens Wiklander uint8_t *sig __unused, 431291e5450SJens Wiklander size_t *sig_len __unused) 432291e5450SJens Wiklander { 433291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 434291e5450SJens Wiklander } 435291e5450SJens Wiklander 436291e5450SJens Wiklander TEE_Result crypto_acipher_rsassa_verify(uint32_t algo __unused, 437291e5450SJens Wiklander struct rsa_public_key *key __unused, 438291e5450SJens Wiklander int salt_len __unused, 439291e5450SJens Wiklander const uint8_t *msg __unused, 440291e5450SJens Wiklander size_t msg_len __unused, 441291e5450SJens Wiklander const uint8_t *sig __unused, 442291e5450SJens Wiklander size_t sig_len __unused) 443291e5450SJens Wiklander { 444291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 445291e5450SJens Wiklander } 446291e5450SJens Wiklander #endif /*!CFG_CRYPTO_RSA || !_CFG_CRYPTO_WITH_ACIPHER*/ 447291e5450SJens Wiklander 448291e5450SJens Wiklander #if !defined(CFG_CRYPTO_DSA) || !defined(_CFG_CRYPTO_WITH_ACIPHER) 449291e5450SJens Wiklander TEE_Result crypto_acipher_alloc_dsa_keypair(struct dsa_keypair *s __unused, 450291e5450SJens Wiklander size_t key_size_bits __unused) 451291e5450SJens Wiklander { 452291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 453291e5450SJens Wiklander } 454291e5450SJens Wiklander 455291e5450SJens Wiklander TEE_Result 456291e5450SJens Wiklander crypto_acipher_alloc_dsa_public_key(struct dsa_public_key *s __unused, 457291e5450SJens Wiklander size_t key_size_bits __unused) 458291e5450SJens Wiklander { 459291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 460291e5450SJens Wiklander } 461291e5450SJens Wiklander 462291e5450SJens Wiklander TEE_Result crypto_acipher_gen_dsa_key(struct dsa_keypair *key __unused, 463291e5450SJens Wiklander size_t key_size __unused) 464291e5450SJens Wiklander { 465291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 466291e5450SJens Wiklander } 467291e5450SJens Wiklander 468291e5450SJens Wiklander TEE_Result crypto_acipher_dsa_sign(uint32_t algo __unused, 469291e5450SJens Wiklander struct dsa_keypair *key __unused, 470291e5450SJens Wiklander const uint8_t *msg __unused, 471291e5450SJens Wiklander size_t msg_len __unused, 472291e5450SJens Wiklander uint8_t *sig __unused, 473291e5450SJens Wiklander size_t *sig_len __unused) 474291e5450SJens Wiklander { 475291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 476291e5450SJens Wiklander } 477291e5450SJens Wiklander 478291e5450SJens Wiklander TEE_Result crypto_acipher_dsa_verify(uint32_t algo __unused, 479291e5450SJens Wiklander struct dsa_public_key *key __unused, 480291e5450SJens Wiklander const uint8_t *msg __unused, 481291e5450SJens Wiklander size_t msg_len __unused, 482291e5450SJens Wiklander const uint8_t *sig __unused, 483291e5450SJens Wiklander size_t sig_len __unused) 484291e5450SJens Wiklander { 485291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 486291e5450SJens Wiklander } 487291e5450SJens Wiklander #endif /*!CFG_CRYPTO_DSA || !_CFG_CRYPTO_WITH_ACIPHER*/ 488291e5450SJens Wiklander 489291e5450SJens Wiklander #if !defined(CFG_CRYPTO_DH) || !defined(_CFG_CRYPTO_WITH_ACIPHER) 490291e5450SJens Wiklander TEE_Result crypto_acipher_alloc_dh_keypair(struct dh_keypair *s __unused, 491291e5450SJens Wiklander size_t key_size_bits __unused) 492291e5450SJens Wiklander { 493291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 494291e5450SJens Wiklander } 495291e5450SJens Wiklander 496291e5450SJens Wiklander TEE_Result crypto_acipher_gen_dh_key(struct dh_keypair *key __unused, 497291e5450SJens Wiklander struct bignum *q __unused, 498291e5450SJens Wiklander size_t xbits __unused) 499291e5450SJens Wiklander { 500291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 501291e5450SJens Wiklander } 502291e5450SJens Wiklander 503291e5450SJens Wiklander TEE_Result 504291e5450SJens Wiklander crypto_acipher_dh_shared_secret(struct dh_keypair *private_key __unused, 505291e5450SJens Wiklander struct bignum *public_key __unused, 506291e5450SJens Wiklander struct bignum *secret __unused) 507291e5450SJens Wiklander { 508291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 509291e5450SJens Wiklander } 510291e5450SJens Wiklander #endif /*!CFG_CRYPTO_DH || !_CFG_CRYPTO_WITH_ACIPHER*/ 511291e5450SJens Wiklander 512291e5450SJens Wiklander #if !defined(CFG_CRYPTO_ECC) || !defined(_CFG_CRYPTO_WITH_ACIPHER) 513291e5450SJens Wiklander TEE_Result 514291e5450SJens Wiklander crypto_acipher_alloc_ecc_public_key(struct ecc_public_key *s __unused, 515291e5450SJens Wiklander size_t key_size_bits __unused) 516291e5450SJens Wiklander { 517291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 518291e5450SJens Wiklander } 519291e5450SJens Wiklander 520291e5450SJens Wiklander TEE_Result crypto_acipher_alloc_ecc_keypair(struct ecc_keypair *s __unused, 521291e5450SJens Wiklander size_t key_size_bits __unused) 522291e5450SJens Wiklander { 523291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 524291e5450SJens Wiklander } 525291e5450SJens Wiklander 526291e5450SJens Wiklander void crypto_acipher_free_ecc_public_key(struct ecc_public_key *s __unused) 527291e5450SJens Wiklander { 528291e5450SJens Wiklander } 529291e5450SJens Wiklander 530291e5450SJens Wiklander TEE_Result crypto_acipher_gen_ecc_key(struct ecc_keypair *key __unused) 531291e5450SJens Wiklander { 532291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 533291e5450SJens Wiklander } 534291e5450SJens Wiklander 535291e5450SJens Wiklander TEE_Result crypto_acipher_ecc_sign(uint32_t algo __unused, 536291e5450SJens Wiklander struct ecc_keypair *key __unused, 537291e5450SJens Wiklander const uint8_t *msg __unused, 538291e5450SJens Wiklander size_t msg_len __unused, 539291e5450SJens Wiklander uint8_t *sig __unused, 540291e5450SJens Wiklander size_t *sig_len __unused) 541291e5450SJens Wiklander { 542291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 543291e5450SJens Wiklander } 544291e5450SJens Wiklander 545291e5450SJens Wiklander TEE_Result crypto_acipher_ecc_verify(uint32_t algo __unused, 546291e5450SJens Wiklander struct ecc_public_key *key __unused, 547291e5450SJens Wiklander const uint8_t *msg __unused, 548291e5450SJens Wiklander size_t msg_len __unused, 549291e5450SJens Wiklander const uint8_t *sig __unused, 550291e5450SJens Wiklander size_t sig_len __unused) 551291e5450SJens Wiklander { 552291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 553291e5450SJens Wiklander } 554291e5450SJens Wiklander 555291e5450SJens Wiklander TEE_Result 556291e5450SJens Wiklander crypto_acipher_ecc_shared_secret(struct ecc_keypair *private_key __unused, 557291e5450SJens Wiklander struct ecc_public_key *public_key __unused, 558291e5450SJens Wiklander void *secret __unused, 559291e5450SJens Wiklander unsigned long *secret_len __unused) 560291e5450SJens Wiklander { 561291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 562291e5450SJens Wiklander } 563291e5450SJens Wiklander #endif /*!CFG_CRYPTO_ECC || !_CFG_CRYPTO_WITH_ACIPHER*/ 564