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> 9d0620b01SJens Wiklander #include <crypto/aes-ccm.h> 10d0620b01SJens Wiklander #include <crypto/aes-gcm.h> 11e1770e71SJens Wiklander #include <crypto/crypto.h> 1233790cc1SJens Wiklander #include <kernel/panic.h> 13b887bd8fSJens Wiklander 14b887bd8fSJens Wiklander #if !defined(_CFG_CRYPTO_WITH_HASH) 15b887bd8fSJens Wiklander TEE_Result crypto_hash_get_ctx_size(uint32_t algo __unused, 16b887bd8fSJens Wiklander size_t *size __unused) 17b887bd8fSJens Wiklander { 18b887bd8fSJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 19b887bd8fSJens Wiklander } 20b887bd8fSJens Wiklander 21b887bd8fSJens Wiklander TEE_Result crypto_hash_init(void *ctx __unused, uint32_t algo __unused) 22b887bd8fSJens Wiklander { 23b887bd8fSJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 24b887bd8fSJens Wiklander } 25b887bd8fSJens Wiklander TEE_Result crypto_hash_update(void *ctx __unused, uint32_t algo __unused, 26b887bd8fSJens Wiklander const uint8_t *data __unused, size_t len __unused) 27b887bd8fSJens Wiklander { 28b887bd8fSJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 29b887bd8fSJens Wiklander } 30b887bd8fSJens Wiklander TEE_Result crypto_hash_final(void *ctx __unused, uint32_t algo __unused, 31b887bd8fSJens Wiklander uint8_t *digest __unused, size_t len __unused) 32b887bd8fSJens Wiklander { 33b887bd8fSJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 34b887bd8fSJens Wiklander } 35b887bd8fSJens Wiklander #endif /*_CFG_CRYPTO_WITH_HASH*/ 3682d91db1SJens Wiklander 3782d91db1SJens Wiklander #if !defined(_CFG_CRYPTO_WITH_CIPHER) 38*1c5fdd1fSJerome Forissier TEE_Result crypto_cipher_get_ctx_size(uint32_t algo __unused, 39*1c5fdd1fSJerome Forissier size_t *size __unused) 4082d91db1SJens Wiklander { 41*1c5fdd1fSJerome Forissier return TEE_ERROR_NOT_IMPLEMENTED; 4282d91db1SJens Wiklander } 4382d91db1SJens Wiklander 4482d91db1SJens Wiklander TEE_Result crypto_cipher_init(void *ctx __unused, uint32_t algo __unused, 4582d91db1SJens Wiklander TEE_OperationMode mode __unused, 4682d91db1SJens Wiklander const uint8_t *key1 __unused, 4782d91db1SJens Wiklander size_t key1_len __unused, 4882d91db1SJens Wiklander const uint8_t *key2 __unused, 4982d91db1SJens Wiklander size_t key2_len __unused, 5082d91db1SJens Wiklander const uint8_t *iv __unused, 5182d91db1SJens Wiklander size_t iv_len __unused) 5282d91db1SJens Wiklander { 53*1c5fdd1fSJerome Forissier return TEE_ERROR_NOT_IMPLEMENTED; 5482d91db1SJens Wiklander } 5582d91db1SJens Wiklander 5682d91db1SJens Wiklander TEE_Result crypto_cipher_update(void *ctx __unused, uint32_t algo __unused, 5782d91db1SJens Wiklander TEE_OperationMode mode __unused, 5882d91db1SJens Wiklander bool last_block __unused, 5982d91db1SJens Wiklander const uint8_t *data __unused, 6082d91db1SJens Wiklander size_t len __unused, uint8_t *dst __unused) 6182d91db1SJens Wiklander { 62*1c5fdd1fSJerome Forissier return TEE_ERROR_NOT_IMPLEMENTED; 6382d91db1SJens Wiklander } 6482d91db1SJens Wiklander 6582d91db1SJens Wiklander void crypto_cipher_final(void *ctx __unused, uint32_t algo __unused) 6682d91db1SJens Wiklander { 6782d91db1SJens Wiklander } 6882d91db1SJens Wiklander 6982d91db1SJens Wiklander TEE_Result crypto_cipher_get_block_size(uint32_t algo __unused, 7082d91db1SJens Wiklander size_t *size __unused) 7182d91db1SJens Wiklander { 72*1c5fdd1fSJerome Forissier return TEE_ERROR_NOT_IMPLEMENTED; 7382d91db1SJens Wiklander } 7482d91db1SJens Wiklander #endif /*_CFG_CRYPTO_WITH_CIPHER*/ 75e9eaba5cSJens Wiklander 76e9eaba5cSJens Wiklander #if !defined(_CFG_CRYPTO_WITH_MAC) 77e9eaba5cSJens Wiklander TEE_Result crypto_mac_get_ctx_size(uint32_t algo __unused, 78e9eaba5cSJens Wiklander size_t *size __unused) 79e9eaba5cSJens Wiklander { 80e9eaba5cSJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 81e9eaba5cSJens Wiklander } 82e9eaba5cSJens Wiklander 83e9eaba5cSJens Wiklander TEE_Result crypto_mac_init(void *ctx __unused, uint32_t algo __unused, 84e9eaba5cSJens Wiklander const uint8_t *key __unused, size_t len __unused) 85e9eaba5cSJens Wiklander { 86e9eaba5cSJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 87e9eaba5cSJens Wiklander } 88e9eaba5cSJens Wiklander 89e9eaba5cSJens Wiklander TEE_Result crypto_mac_update(void *ctx __unused, uint32_t algo __unused, 90e9eaba5cSJens Wiklander const uint8_t *data __unused, size_t len __unused) 91e9eaba5cSJens Wiklander { 92e9eaba5cSJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 93e9eaba5cSJens Wiklander } 94e9eaba5cSJens Wiklander 95e9eaba5cSJens Wiklander TEE_Result crypto_mac_final(void *ctx __unused, uint32_t algo __unused, 96e9eaba5cSJens Wiklander uint8_t *digest __unused, 97e9eaba5cSJens Wiklander size_t digest_len __unused) 98e9eaba5cSJens Wiklander { 99e9eaba5cSJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 100e9eaba5cSJens Wiklander } 101e9eaba5cSJens Wiklander #endif /*_CFG_CRYPTO_WITH_MAC*/ 102e9eaba5cSJens Wiklander 103d0620b01SJens Wiklander TEE_Result crypto_authenc_get_ctx_size(uint32_t algo __maybe_unused, 104d0620b01SJens Wiklander size_t *size __maybe_unused) 1058875ce46SJens Wiklander { 106d0620b01SJens Wiklander switch (algo) { 107d0620b01SJens Wiklander #if defined(CFG_CRYPTO_CCM) 108d0620b01SJens Wiklander case TEE_ALG_AES_CCM: 109d0620b01SJens Wiklander *size = crypto_aes_ccm_get_ctx_size(); 110d0620b01SJens Wiklander return TEE_SUCCESS; 111d0620b01SJens Wiklander #endif 112d0620b01SJens Wiklander #if defined(CFG_CRYPTO_GCM) 113d0620b01SJens Wiklander case TEE_ALG_AES_GCM: 114d0620b01SJens Wiklander *size = crypto_aes_gcm_get_ctx_size(); 115d0620b01SJens Wiklander return TEE_SUCCESS; 116d0620b01SJens Wiklander #endif 117d0620b01SJens Wiklander default: 1188875ce46SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 1198875ce46SJens Wiklander } 120d0620b01SJens Wiklander } 1218875ce46SJens Wiklander 122d0620b01SJens Wiklander TEE_Result crypto_authenc_init(void *ctx __maybe_unused, 123d0620b01SJens Wiklander uint32_t algo __maybe_unused, 124d0620b01SJens Wiklander TEE_OperationMode mode __maybe_unused, 125d0620b01SJens Wiklander const uint8_t *key __maybe_unused, 126d0620b01SJens Wiklander size_t key_len __maybe_unused, 127d0620b01SJens Wiklander const uint8_t *nonce __maybe_unused, 128d0620b01SJens Wiklander size_t nonce_len __maybe_unused, 129d0620b01SJens Wiklander size_t tag_len __maybe_unused, 130d0620b01SJens Wiklander size_t aad_len __maybe_unused, 131d0620b01SJens Wiklander size_t payload_len __maybe_unused) 132d0620b01SJens Wiklander { 133d0620b01SJens Wiklander switch (algo) { 134d0620b01SJens Wiklander #if defined(CFG_CRYPTO_CCM) 135d0620b01SJens Wiklander case TEE_ALG_AES_CCM: 136d0620b01SJens Wiklander return crypto_aes_ccm_init(ctx, mode, key, key_len, nonce, 137d0620b01SJens Wiklander nonce_len, tag_len, aad_len, 138d0620b01SJens Wiklander payload_len); 139d0620b01SJens Wiklander #endif 140d0620b01SJens Wiklander #if defined(CFG_CRYPTO_GCM) 141d0620b01SJens Wiklander case TEE_ALG_AES_GCM: 142d0620b01SJens Wiklander return crypto_aes_gcm_init(ctx, mode, key, key_len, nonce, 143d0620b01SJens Wiklander nonce_len, tag_len); 144d0620b01SJens Wiklander #endif 145d0620b01SJens Wiklander default: 146d0620b01SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 147d0620b01SJens Wiklander } 148d0620b01SJens Wiklander } 149d0620b01SJens Wiklander 150d0620b01SJens Wiklander TEE_Result crypto_authenc_update_aad(void *ctx __maybe_unused, 151d0620b01SJens Wiklander uint32_t algo __maybe_unused, 1528875ce46SJens Wiklander TEE_OperationMode mode __unused, 153d0620b01SJens Wiklander const uint8_t *data __maybe_unused, 154d0620b01SJens Wiklander size_t len __maybe_unused) 1558875ce46SJens Wiklander { 156d0620b01SJens Wiklander switch (algo) { 157d0620b01SJens Wiklander #if defined(CFG_CRYPTO_CCM) 158d0620b01SJens Wiklander case TEE_ALG_AES_CCM: 159d0620b01SJens Wiklander return crypto_aes_ccm_update_aad(ctx, data, len); 160d0620b01SJens Wiklander #endif 161d0620b01SJens Wiklander #if defined(CFG_CRYPTO_GCM) 162d0620b01SJens Wiklander case TEE_ALG_AES_GCM: 163d0620b01SJens Wiklander return crypto_aes_gcm_update_aad(ctx, data, len); 164d0620b01SJens Wiklander #endif 165d0620b01SJens Wiklander default: 1668875ce46SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 1678875ce46SJens Wiklander } 168d0620b01SJens Wiklander } 1698875ce46SJens Wiklander 170d0620b01SJens Wiklander TEE_Result crypto_authenc_update_payload(void *ctx __maybe_unused, 171d0620b01SJens Wiklander uint32_t algo __maybe_unused, 172d0620b01SJens Wiklander TEE_OperationMode mode __maybe_unused, 173d0620b01SJens Wiklander const uint8_t *src_data __maybe_unused, 174d0620b01SJens Wiklander size_t src_len __maybe_unused, 175d0620b01SJens Wiklander uint8_t *dst_data __maybe_unused, 176d0620b01SJens Wiklander size_t *dst_len __maybe_unused) 1778875ce46SJens Wiklander { 178d0620b01SJens Wiklander size_t dl = *dst_len; 179d0620b01SJens Wiklander 180d0620b01SJens Wiklander *dst_len = src_len; 181d0620b01SJens Wiklander if (dl < src_len) 182d0620b01SJens Wiklander return TEE_ERROR_SHORT_BUFFER; 183d0620b01SJens Wiklander 184d0620b01SJens Wiklander switch (algo) { 185d0620b01SJens Wiklander #if defined(CFG_CRYPTO_CCM) 186d0620b01SJens Wiklander case TEE_ALG_AES_CCM: 187d0620b01SJens Wiklander return crypto_aes_ccm_update_payload(ctx, mode, src_data, 188d0620b01SJens Wiklander src_len, dst_data); 189d0620b01SJens Wiklander #endif 190d0620b01SJens Wiklander #if defined(CFG_CRYPTO_GCM) 191d0620b01SJens Wiklander case TEE_ALG_AES_GCM: 192d0620b01SJens Wiklander return crypto_aes_gcm_update_payload(ctx, mode, src_data, 193d0620b01SJens Wiklander src_len, dst_data); 194d0620b01SJens Wiklander #endif 195d0620b01SJens Wiklander default: 1968875ce46SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 1978875ce46SJens Wiklander } 198d0620b01SJens Wiklander } 1998875ce46SJens Wiklander 200d0620b01SJens Wiklander TEE_Result crypto_authenc_enc_final(void *ctx __maybe_unused, 201d0620b01SJens Wiklander uint32_t algo __maybe_unused, 202d0620b01SJens Wiklander const uint8_t *src_data __maybe_unused, 203d0620b01SJens Wiklander size_t src_len __maybe_unused, 204d0620b01SJens Wiklander uint8_t *dst_data __maybe_unused, 205d0620b01SJens Wiklander size_t *dst_len __maybe_unused, 206d0620b01SJens Wiklander uint8_t *dst_tag __maybe_unused, 207d0620b01SJens Wiklander size_t *dst_tag_len __maybe_unused) 2088875ce46SJens Wiklander { 209d0620b01SJens Wiklander size_t dl = *dst_len; 210d0620b01SJens Wiklander 211d0620b01SJens Wiklander *dst_len = src_len; 212d0620b01SJens Wiklander if (dl < src_len) 213d0620b01SJens Wiklander return TEE_ERROR_SHORT_BUFFER; 214d0620b01SJens Wiklander 215d0620b01SJens Wiklander switch (algo) { 216d0620b01SJens Wiklander #if defined(CFG_CRYPTO_CCM) 217d0620b01SJens Wiklander case TEE_ALG_AES_CCM: 218d0620b01SJens Wiklander return crypto_aes_ccm_enc_final(ctx, src_data, src_len, 219d0620b01SJens Wiklander dst_data, dst_tag, dst_tag_len); 220d0620b01SJens Wiklander #endif 221d0620b01SJens Wiklander #if defined(CFG_CRYPTO_GCM) 222d0620b01SJens Wiklander case TEE_ALG_AES_GCM: 223d0620b01SJens Wiklander return crypto_aes_gcm_enc_final(ctx, src_data, src_len, 224d0620b01SJens Wiklander dst_data, dst_tag, dst_tag_len); 225d0620b01SJens Wiklander #endif 226d0620b01SJens Wiklander default: 2278875ce46SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 2288875ce46SJens Wiklander } 229d0620b01SJens Wiklander } 2308875ce46SJens Wiklander 231d0620b01SJens Wiklander TEE_Result crypto_authenc_dec_final(void *ctx __maybe_unused, 232d0620b01SJens Wiklander uint32_t algo __maybe_unused, 233d0620b01SJens Wiklander const uint8_t *src_data __maybe_unused, 234d0620b01SJens Wiklander size_t src_len __maybe_unused, 235d0620b01SJens Wiklander uint8_t *dst_data __maybe_unused, 236d0620b01SJens Wiklander size_t *dst_len __maybe_unused, 237d0620b01SJens Wiklander const uint8_t *tag __maybe_unused, 238d0620b01SJens Wiklander size_t tag_len __maybe_unused) 2398875ce46SJens Wiklander { 240d0620b01SJens Wiklander size_t dl = *dst_len; 241d0620b01SJens Wiklander 242d0620b01SJens Wiklander *dst_len = src_len; 243d0620b01SJens Wiklander if (dl < src_len) 244d0620b01SJens Wiklander return TEE_ERROR_SHORT_BUFFER; 245d0620b01SJens Wiklander 246d0620b01SJens Wiklander switch (algo) { 247d0620b01SJens Wiklander #if defined(CFG_CRYPTO_CCM) 248d0620b01SJens Wiklander case TEE_ALG_AES_CCM: 249d0620b01SJens Wiklander return crypto_aes_ccm_dec_final(ctx, src_data, src_len, 250d0620b01SJens Wiklander dst_data, tag, tag_len); 251d0620b01SJens Wiklander #endif 252d0620b01SJens Wiklander #if defined(CFG_CRYPTO_GCM) 253d0620b01SJens Wiklander case TEE_ALG_AES_GCM: 254d0620b01SJens Wiklander return crypto_aes_gcm_dec_final(ctx, src_data, src_len, 255d0620b01SJens Wiklander dst_data, tag, tag_len); 256d0620b01SJens Wiklander #endif 257d0620b01SJens Wiklander default: 2588875ce46SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 2598875ce46SJens Wiklander } 2608875ce46SJens Wiklander } 2618875ce46SJens Wiklander 262d0620b01SJens Wiklander void crypto_authenc_final(void *ctx __maybe_unused, 263d0620b01SJens Wiklander uint32_t algo __maybe_unused) 2648875ce46SJens Wiklander { 265d0620b01SJens Wiklander switch (algo) { 266d0620b01SJens Wiklander #if defined(CFG_CRYPTO_CCM) 267d0620b01SJens Wiklander case TEE_ALG_AES_CCM: 268d0620b01SJens Wiklander crypto_aes_ccm_final(ctx); 269d0620b01SJens Wiklander break; 270d0620b01SJens Wiklander #endif 271d0620b01SJens Wiklander #if defined(CFG_CRYPTO_GCM) 272d0620b01SJens Wiklander case TEE_ALG_AES_GCM: 273d0620b01SJens Wiklander crypto_aes_gcm_final(ctx); 274d0620b01SJens Wiklander break; 275d0620b01SJens Wiklander #endif 276d0620b01SJens Wiklander default: 277d0620b01SJens Wiklander break; 2788875ce46SJens Wiklander } 279d0620b01SJens Wiklander } 28033790cc1SJens Wiklander 28133790cc1SJens Wiklander #if !defined(_CFG_CRYPTO_WITH_ACIPHER) 28233790cc1SJens Wiklander struct bignum *crypto_bignum_allocate(size_t size_bits __unused) 28333790cc1SJens Wiklander { 28433790cc1SJens Wiklander return NULL; 28533790cc1SJens Wiklander } 28633790cc1SJens Wiklander 28733790cc1SJens Wiklander TEE_Result crypto_bignum_bin2bn(const uint8_t *from __unused, 28833790cc1SJens Wiklander size_t fromsize __unused, 28933790cc1SJens Wiklander struct bignum *to __unused) 29033790cc1SJens Wiklander { 29133790cc1SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 29233790cc1SJens Wiklander } 29333790cc1SJens Wiklander 29433790cc1SJens Wiklander size_t crypto_bignum_num_bytes(struct bignum *a __unused) 29533790cc1SJens Wiklander { 29633790cc1SJens Wiklander return 0; 29733790cc1SJens Wiklander } 29833790cc1SJens Wiklander 29933790cc1SJens Wiklander size_t crypto_bignum_num_bits(struct bignum *a __unused) 30033790cc1SJens Wiklander { 30133790cc1SJens Wiklander return 0; 30233790cc1SJens Wiklander } 30333790cc1SJens Wiklander 30433790cc1SJens Wiklander /* 30533790cc1SJens Wiklander * crypto_bignum_allocate() and crypto_bignum_bin2bn() failing should be 30633790cc1SJens Wiklander * enough to guarantee that the functions calling this function aren't 30733790cc1SJens Wiklander * called, but just in case add a panic() here to avoid unexpected 30833790cc1SJens Wiklander * behavoir. 30933790cc1SJens Wiklander */ 31033790cc1SJens Wiklander static void bignum_cant_happen(void) 31133790cc1SJens Wiklander { 31233790cc1SJens Wiklander volatile bool b = true; 31333790cc1SJens Wiklander 31433790cc1SJens Wiklander /* Avoid warning about function does not return */ 31533790cc1SJens Wiklander if (b) 31633790cc1SJens Wiklander panic(); 31733790cc1SJens Wiklander } 31833790cc1SJens Wiklander 31933790cc1SJens Wiklander void crypto_bignum_bn2bin(const struct bignum *from __unused, 32033790cc1SJens Wiklander uint8_t *to __unused) 32133790cc1SJens Wiklander { 32233790cc1SJens Wiklander bignum_cant_happen(); 32333790cc1SJens Wiklander } 32433790cc1SJens Wiklander 32533790cc1SJens Wiklander void crypto_bignum_copy(struct bignum *to __unused, 32633790cc1SJens Wiklander const struct bignum *from __unused) 32733790cc1SJens Wiklander { 32833790cc1SJens Wiklander bignum_cant_happen(); 32933790cc1SJens Wiklander } 33033790cc1SJens Wiklander 33133790cc1SJens Wiklander void crypto_bignum_free(struct bignum *a) 33233790cc1SJens Wiklander { 33333790cc1SJens Wiklander if (a) 33433790cc1SJens Wiklander panic(); 33533790cc1SJens Wiklander } 33633790cc1SJens Wiklander 33733790cc1SJens Wiklander void crypto_bignum_clear(struct bignum *a __unused) 33833790cc1SJens Wiklander { 33933790cc1SJens Wiklander bignum_cant_happen(); 34033790cc1SJens Wiklander } 34133790cc1SJens Wiklander 34233790cc1SJens Wiklander /* return -1 if a<b, 0 if a==b, +1 if a>b */ 34333790cc1SJens Wiklander int32_t crypto_bignum_compare(struct bignum *a __unused, 34433790cc1SJens Wiklander struct bignum *b __unused) 34533790cc1SJens Wiklander { 34633790cc1SJens Wiklander bignum_cant_happen(); 34733790cc1SJens Wiklander return -1; 34833790cc1SJens Wiklander } 34933790cc1SJens Wiklander #endif /*!_CFG_CRYPTO_WITH_ACIPHER*/ 350291e5450SJens Wiklander 351291e5450SJens Wiklander #if !defined(CFG_CRYPTO_RSA) || !defined(_CFG_CRYPTO_WITH_ACIPHER) 352291e5450SJens Wiklander TEE_Result crypto_acipher_alloc_rsa_keypair(struct rsa_keypair *s __unused, 353291e5450SJens Wiklander size_t key_size_bits __unused) 354291e5450SJens Wiklander { 355291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 356291e5450SJens Wiklander } 357291e5450SJens Wiklander 358291e5450SJens Wiklander TEE_Result 359291e5450SJens Wiklander crypto_acipher_alloc_rsa_public_key(struct rsa_public_key *s __unused, 360291e5450SJens Wiklander size_t key_size_bits __unused) 361291e5450SJens Wiklander { 362291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 363291e5450SJens Wiklander } 364291e5450SJens Wiklander 365291e5450SJens Wiklander void crypto_acipher_free_rsa_public_key(struct rsa_public_key *s __unused) 366291e5450SJens Wiklander { 367291e5450SJens Wiklander } 368291e5450SJens Wiklander 369291e5450SJens Wiklander TEE_Result crypto_acipher_gen_rsa_key(struct rsa_keypair *key __unused, 370291e5450SJens Wiklander size_t key_size __unused) 371291e5450SJens Wiklander { 372291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 373291e5450SJens Wiklander } 374291e5450SJens Wiklander 375291e5450SJens Wiklander TEE_Result crypto_acipher_rsanopad_decrypt(struct rsa_keypair *key __unused, 376291e5450SJens Wiklander const uint8_t *src __unused, 377291e5450SJens Wiklander size_t src_len __unused, 378291e5450SJens Wiklander uint8_t *dst __unused, 379291e5450SJens Wiklander size_t *dst_len __unused) 380291e5450SJens Wiklander { 381291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 382291e5450SJens Wiklander } 383291e5450SJens Wiklander 384291e5450SJens Wiklander TEE_Result crypto_acipher_rsanopad_encrypt(struct rsa_public_key *key __unused, 385291e5450SJens Wiklander const uint8_t *src __unused, 386291e5450SJens Wiklander size_t src_len __unused, 387291e5450SJens Wiklander uint8_t *dst __unused, 388291e5450SJens Wiklander size_t *dst_len __unused) 389291e5450SJens Wiklander { 390291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 391291e5450SJens Wiklander } 392291e5450SJens Wiklander 393291e5450SJens Wiklander TEE_Result crypto_acipher_rsaes_decrypt(uint32_t algo __unused, 394291e5450SJens Wiklander struct rsa_keypair *key __unused, 395291e5450SJens Wiklander const uint8_t *label __unused, 396291e5450SJens Wiklander size_t label_len __unused, 397291e5450SJens Wiklander const uint8_t *src __unused, 398291e5450SJens Wiklander size_t src_len __unused, 399291e5450SJens Wiklander uint8_t *dst __unused, 400291e5450SJens Wiklander size_t *dst_len __unused) 401291e5450SJens Wiklander { 402291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 403291e5450SJens Wiklander } 404291e5450SJens Wiklander 405291e5450SJens Wiklander TEE_Result crypto_acipher_rsaes_encrypt(uint32_t algo __unused, 406291e5450SJens Wiklander struct rsa_public_key *key __unused, 407291e5450SJens Wiklander const uint8_t *label __unused, 408291e5450SJens Wiklander size_t label_len __unused, 409291e5450SJens Wiklander const uint8_t *src __unused, 410291e5450SJens Wiklander size_t src_len __unused, 411291e5450SJens Wiklander uint8_t *dst __unused, 412291e5450SJens Wiklander size_t *dst_len __unused) 413291e5450SJens Wiklander { 414291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 415291e5450SJens Wiklander } 416291e5450SJens Wiklander 417291e5450SJens Wiklander TEE_Result crypto_acipher_rsassa_sign(uint32_t algo __unused, 418291e5450SJens Wiklander struct rsa_keypair *key __unused, 419291e5450SJens Wiklander int salt_len __unused, 420291e5450SJens Wiklander const uint8_t *msg __unused, 421291e5450SJens Wiklander size_t msg_len __unused, 422291e5450SJens Wiklander uint8_t *sig __unused, 423291e5450SJens Wiklander size_t *sig_len __unused) 424291e5450SJens Wiklander { 425291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 426291e5450SJens Wiklander } 427291e5450SJens Wiklander 428291e5450SJens Wiklander TEE_Result crypto_acipher_rsassa_verify(uint32_t algo __unused, 429291e5450SJens Wiklander struct rsa_public_key *key __unused, 430291e5450SJens Wiklander int salt_len __unused, 431291e5450SJens Wiklander const uint8_t *msg __unused, 432291e5450SJens Wiklander size_t msg_len __unused, 433291e5450SJens Wiklander const uint8_t *sig __unused, 434291e5450SJens Wiklander size_t sig_len __unused) 435291e5450SJens Wiklander { 436291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 437291e5450SJens Wiklander } 438291e5450SJens Wiklander #endif /*!CFG_CRYPTO_RSA || !_CFG_CRYPTO_WITH_ACIPHER*/ 439291e5450SJens Wiklander 440291e5450SJens Wiklander #if !defined(CFG_CRYPTO_DSA) || !defined(_CFG_CRYPTO_WITH_ACIPHER) 441291e5450SJens Wiklander TEE_Result crypto_acipher_alloc_dsa_keypair(struct dsa_keypair *s __unused, 442291e5450SJens Wiklander size_t key_size_bits __unused) 443291e5450SJens Wiklander { 444291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 445291e5450SJens Wiklander } 446291e5450SJens Wiklander 447291e5450SJens Wiklander TEE_Result 448291e5450SJens Wiklander crypto_acipher_alloc_dsa_public_key(struct dsa_public_key *s __unused, 449291e5450SJens Wiklander size_t key_size_bits __unused) 450291e5450SJens Wiklander { 451291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 452291e5450SJens Wiklander } 453291e5450SJens Wiklander 454291e5450SJens Wiklander TEE_Result crypto_acipher_gen_dsa_key(struct dsa_keypair *key __unused, 455291e5450SJens Wiklander size_t key_size __unused) 456291e5450SJens Wiklander { 457291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 458291e5450SJens Wiklander } 459291e5450SJens Wiklander 460291e5450SJens Wiklander TEE_Result crypto_acipher_dsa_sign(uint32_t algo __unused, 461291e5450SJens Wiklander struct dsa_keypair *key __unused, 462291e5450SJens Wiklander const uint8_t *msg __unused, 463291e5450SJens Wiklander size_t msg_len __unused, 464291e5450SJens Wiklander uint8_t *sig __unused, 465291e5450SJens Wiklander size_t *sig_len __unused) 466291e5450SJens Wiklander { 467291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 468291e5450SJens Wiklander } 469291e5450SJens Wiklander 470291e5450SJens Wiklander TEE_Result crypto_acipher_dsa_verify(uint32_t algo __unused, 471291e5450SJens Wiklander struct dsa_public_key *key __unused, 472291e5450SJens Wiklander const uint8_t *msg __unused, 473291e5450SJens Wiklander size_t msg_len __unused, 474291e5450SJens Wiklander const uint8_t *sig __unused, 475291e5450SJens Wiklander size_t sig_len __unused) 476291e5450SJens Wiklander { 477291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 478291e5450SJens Wiklander } 479291e5450SJens Wiklander #endif /*!CFG_CRYPTO_DSA || !_CFG_CRYPTO_WITH_ACIPHER*/ 480291e5450SJens Wiklander 481291e5450SJens Wiklander #if !defined(CFG_CRYPTO_DH) || !defined(_CFG_CRYPTO_WITH_ACIPHER) 482291e5450SJens Wiklander TEE_Result crypto_acipher_alloc_dh_keypair(struct dh_keypair *s __unused, 483291e5450SJens Wiklander size_t key_size_bits __unused) 484291e5450SJens Wiklander { 485291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 486291e5450SJens Wiklander } 487291e5450SJens Wiklander 488291e5450SJens Wiklander TEE_Result crypto_acipher_gen_dh_key(struct dh_keypair *key __unused, 489291e5450SJens Wiklander struct bignum *q __unused, 490291e5450SJens Wiklander size_t xbits __unused) 491291e5450SJens Wiklander { 492291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 493291e5450SJens Wiklander } 494291e5450SJens Wiklander 495291e5450SJens Wiklander TEE_Result 496291e5450SJens Wiklander crypto_acipher_dh_shared_secret(struct dh_keypair *private_key __unused, 497291e5450SJens Wiklander struct bignum *public_key __unused, 498291e5450SJens Wiklander struct bignum *secret __unused) 499291e5450SJens Wiklander { 500291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 501291e5450SJens Wiklander } 502291e5450SJens Wiklander #endif /*!CFG_CRYPTO_DH || !_CFG_CRYPTO_WITH_ACIPHER*/ 503291e5450SJens Wiklander 504291e5450SJens Wiklander #if !defined(CFG_CRYPTO_ECC) || !defined(_CFG_CRYPTO_WITH_ACIPHER) 505291e5450SJens Wiklander TEE_Result 506291e5450SJens Wiklander crypto_acipher_alloc_ecc_public_key(struct ecc_public_key *s __unused, 507291e5450SJens Wiklander size_t key_size_bits __unused) 508291e5450SJens Wiklander { 509291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 510291e5450SJens Wiklander } 511291e5450SJens Wiklander 512291e5450SJens Wiklander TEE_Result crypto_acipher_alloc_ecc_keypair(struct ecc_keypair *s __unused, 513291e5450SJens Wiklander size_t key_size_bits __unused) 514291e5450SJens Wiklander { 515291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 516291e5450SJens Wiklander } 517291e5450SJens Wiklander 518291e5450SJens Wiklander void crypto_acipher_free_ecc_public_key(struct ecc_public_key *s __unused) 519291e5450SJens Wiklander { 520291e5450SJens Wiklander } 521291e5450SJens Wiklander 522291e5450SJens Wiklander TEE_Result crypto_acipher_gen_ecc_key(struct ecc_keypair *key __unused) 523291e5450SJens Wiklander { 524291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 525291e5450SJens Wiklander } 526291e5450SJens Wiklander 527291e5450SJens Wiklander TEE_Result crypto_acipher_ecc_sign(uint32_t algo __unused, 528291e5450SJens Wiklander struct ecc_keypair *key __unused, 529291e5450SJens Wiklander const uint8_t *msg __unused, 530291e5450SJens Wiklander size_t msg_len __unused, 531291e5450SJens Wiklander uint8_t *sig __unused, 532291e5450SJens Wiklander size_t *sig_len __unused) 533291e5450SJens Wiklander { 534291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 535291e5450SJens Wiklander } 536291e5450SJens Wiklander 537291e5450SJens Wiklander TEE_Result crypto_acipher_ecc_verify(uint32_t algo __unused, 538291e5450SJens Wiklander struct ecc_public_key *key __unused, 539291e5450SJens Wiklander const uint8_t *msg __unused, 540291e5450SJens Wiklander size_t msg_len __unused, 541291e5450SJens Wiklander const uint8_t *sig __unused, 542291e5450SJens Wiklander size_t sig_len __unused) 543291e5450SJens Wiklander { 544291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 545291e5450SJens Wiklander } 546291e5450SJens Wiklander 547291e5450SJens Wiklander TEE_Result 548291e5450SJens Wiklander crypto_acipher_ecc_shared_secret(struct ecc_keypair *private_key __unused, 549291e5450SJens Wiklander struct ecc_public_key *public_key __unused, 550291e5450SJens Wiklander void *secret __unused, 551291e5450SJens Wiklander unsigned long *secret_len __unused) 552291e5450SJens Wiklander { 553291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 554291e5450SJens Wiklander } 555291e5450SJens Wiklander #endif /*!CFG_CRYPTO_ECC || !_CFG_CRYPTO_WITH_ACIPHER*/ 556