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) 13ecf2e014SJens 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 18ecf2e014SJens Wiklander void crypto_hash_free_ctx(void *ctx __unused, uint32_t algo __unused) 19ecf2e014SJens Wiklander { 20ecf2e014SJens Wiklander assert(0); 21ecf2e014SJens Wiklander } 22ecf2e014SJens Wiklander 23ecf2e014SJens Wiklander void crypto_hash_copy_state(void *dst_ctx __unused, void *src_ctx __unused, 24ecf2e014SJens Wiklander uint32_t algo __unused) 25ecf2e014SJens Wiklander { 26ecf2e014SJens Wiklander assert(0); 27ecf2e014SJens Wiklander } 28ecf2e014SJens 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) 85*82ef73bcSJens Wiklander TEE_Result crypto_mac_alloc_ctx(void **ctx __unused, uint32_t algo __unused) 86e9eaba5cSJens Wiklander { 87e9eaba5cSJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 88e9eaba5cSJens Wiklander } 89e9eaba5cSJens Wiklander 90*82ef73bcSJens Wiklander void crypto_mac_free_ctx(void *ctx __unused, uint32_t algo __unused) 91*82ef73bcSJens Wiklander { 92*82ef73bcSJens Wiklander assert(0); 93*82ef73bcSJens Wiklander } 94*82ef73bcSJens Wiklander 95*82ef73bcSJens Wiklander void crypto_mac_copy_state(void *dst_ctx __unused, void *src_ctx __unused, 96*82ef73bcSJens Wiklander uint32_t algo __unused) 97*82ef73bcSJens Wiklander { 98*82ef73bcSJens Wiklander assert(0); 99*82ef73bcSJens Wiklander } 100*82ef73bcSJens Wiklander 101e9eaba5cSJens Wiklander TEE_Result crypto_mac_init(void *ctx __unused, uint32_t algo __unused, 102e9eaba5cSJens Wiklander const uint8_t *key __unused, size_t len __unused) 103e9eaba5cSJens Wiklander { 104e9eaba5cSJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 105e9eaba5cSJens Wiklander } 106e9eaba5cSJens Wiklander 107e9eaba5cSJens Wiklander TEE_Result crypto_mac_update(void *ctx __unused, uint32_t algo __unused, 108e9eaba5cSJens Wiklander const uint8_t *data __unused, size_t len __unused) 109e9eaba5cSJens Wiklander { 110e9eaba5cSJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 111e9eaba5cSJens Wiklander } 112e9eaba5cSJens Wiklander 113e9eaba5cSJens Wiklander TEE_Result crypto_mac_final(void *ctx __unused, uint32_t algo __unused, 114e9eaba5cSJens Wiklander uint8_t *digest __unused, 115e9eaba5cSJens Wiklander size_t digest_len __unused) 116e9eaba5cSJens Wiklander { 117e9eaba5cSJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 118e9eaba5cSJens Wiklander } 119e9eaba5cSJens Wiklander #endif /*_CFG_CRYPTO_WITH_MAC*/ 120e9eaba5cSJens Wiklander 121d0620b01SJens Wiklander TEE_Result crypto_authenc_get_ctx_size(uint32_t algo __maybe_unused, 122d0620b01SJens Wiklander size_t *size __maybe_unused) 1238875ce46SJens Wiklander { 124d0620b01SJens Wiklander switch (algo) { 125d0620b01SJens Wiklander #if defined(CFG_CRYPTO_CCM) 126d0620b01SJens Wiklander case TEE_ALG_AES_CCM: 127d0620b01SJens Wiklander *size = crypto_aes_ccm_get_ctx_size(); 128d0620b01SJens Wiklander return TEE_SUCCESS; 129d0620b01SJens Wiklander #endif 130d0620b01SJens Wiklander #if defined(CFG_CRYPTO_GCM) 131d0620b01SJens Wiklander case TEE_ALG_AES_GCM: 132d0620b01SJens Wiklander *size = crypto_aes_gcm_get_ctx_size(); 133d0620b01SJens Wiklander return TEE_SUCCESS; 134d0620b01SJens Wiklander #endif 135d0620b01SJens Wiklander default: 1368875ce46SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 1378875ce46SJens Wiklander } 138d0620b01SJens Wiklander } 1398875ce46SJens Wiklander 140d0620b01SJens Wiklander TEE_Result crypto_authenc_init(void *ctx __maybe_unused, 141d0620b01SJens Wiklander uint32_t algo __maybe_unused, 142d0620b01SJens Wiklander TEE_OperationMode mode __maybe_unused, 143d0620b01SJens Wiklander const uint8_t *key __maybe_unused, 144d0620b01SJens Wiklander size_t key_len __maybe_unused, 145d0620b01SJens Wiklander const uint8_t *nonce __maybe_unused, 146d0620b01SJens Wiklander size_t nonce_len __maybe_unused, 147d0620b01SJens Wiklander size_t tag_len __maybe_unused, 148d0620b01SJens Wiklander size_t aad_len __maybe_unused, 149d0620b01SJens Wiklander size_t payload_len __maybe_unused) 150d0620b01SJens Wiklander { 151d0620b01SJens Wiklander switch (algo) { 152d0620b01SJens Wiklander #if defined(CFG_CRYPTO_CCM) 153d0620b01SJens Wiklander case TEE_ALG_AES_CCM: 154d0620b01SJens Wiklander return crypto_aes_ccm_init(ctx, mode, key, key_len, nonce, 155d0620b01SJens Wiklander nonce_len, tag_len, aad_len, 156d0620b01SJens Wiklander payload_len); 157d0620b01SJens Wiklander #endif 158d0620b01SJens Wiklander #if defined(CFG_CRYPTO_GCM) 159d0620b01SJens Wiklander case TEE_ALG_AES_GCM: 160d0620b01SJens Wiklander return crypto_aes_gcm_init(ctx, mode, key, key_len, nonce, 161d0620b01SJens Wiklander nonce_len, tag_len); 162d0620b01SJens Wiklander #endif 163d0620b01SJens Wiklander default: 164d0620b01SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 165d0620b01SJens Wiklander } 166d0620b01SJens Wiklander } 167d0620b01SJens Wiklander 168d0620b01SJens Wiklander TEE_Result crypto_authenc_update_aad(void *ctx __maybe_unused, 169d0620b01SJens Wiklander uint32_t algo __maybe_unused, 1708875ce46SJens Wiklander TEE_OperationMode mode __unused, 171d0620b01SJens Wiklander const uint8_t *data __maybe_unused, 172d0620b01SJens Wiklander size_t len __maybe_unused) 1738875ce46SJens Wiklander { 174d0620b01SJens Wiklander switch (algo) { 175d0620b01SJens Wiklander #if defined(CFG_CRYPTO_CCM) 176d0620b01SJens Wiklander case TEE_ALG_AES_CCM: 177d0620b01SJens Wiklander return crypto_aes_ccm_update_aad(ctx, data, len); 178d0620b01SJens Wiklander #endif 179d0620b01SJens Wiklander #if defined(CFG_CRYPTO_GCM) 180d0620b01SJens Wiklander case TEE_ALG_AES_GCM: 181d0620b01SJens Wiklander return crypto_aes_gcm_update_aad(ctx, data, len); 182d0620b01SJens Wiklander #endif 183d0620b01SJens Wiklander default: 1848875ce46SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 1858875ce46SJens Wiklander } 186d0620b01SJens Wiklander } 1878875ce46SJens Wiklander 188d0620b01SJens Wiklander TEE_Result crypto_authenc_update_payload(void *ctx __maybe_unused, 189d0620b01SJens Wiklander uint32_t algo __maybe_unused, 190d0620b01SJens Wiklander TEE_OperationMode mode __maybe_unused, 191d0620b01SJens Wiklander const uint8_t *src_data __maybe_unused, 192d0620b01SJens Wiklander size_t src_len __maybe_unused, 193d0620b01SJens Wiklander uint8_t *dst_data __maybe_unused, 194d0620b01SJens Wiklander size_t *dst_len __maybe_unused) 1958875ce46SJens Wiklander { 196d0620b01SJens Wiklander size_t dl = *dst_len; 197d0620b01SJens Wiklander 198d0620b01SJens Wiklander *dst_len = src_len; 199d0620b01SJens Wiklander if (dl < src_len) 200d0620b01SJens Wiklander return TEE_ERROR_SHORT_BUFFER; 201d0620b01SJens Wiklander 202d0620b01SJens Wiklander switch (algo) { 203d0620b01SJens Wiklander #if defined(CFG_CRYPTO_CCM) 204d0620b01SJens Wiklander case TEE_ALG_AES_CCM: 205d0620b01SJens Wiklander return crypto_aes_ccm_update_payload(ctx, mode, src_data, 206d0620b01SJens Wiklander src_len, dst_data); 207d0620b01SJens Wiklander #endif 208d0620b01SJens Wiklander #if defined(CFG_CRYPTO_GCM) 209d0620b01SJens Wiklander case TEE_ALG_AES_GCM: 210d0620b01SJens Wiklander return crypto_aes_gcm_update_payload(ctx, mode, src_data, 211d0620b01SJens Wiklander src_len, dst_data); 212d0620b01SJens Wiklander #endif 213d0620b01SJens Wiklander default: 2148875ce46SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 2158875ce46SJens Wiklander } 216d0620b01SJens Wiklander } 2178875ce46SJens Wiklander 218d0620b01SJens Wiklander TEE_Result crypto_authenc_enc_final(void *ctx __maybe_unused, 219d0620b01SJens Wiklander uint32_t algo __maybe_unused, 220d0620b01SJens Wiklander const uint8_t *src_data __maybe_unused, 221d0620b01SJens Wiklander size_t src_len __maybe_unused, 222d0620b01SJens Wiklander uint8_t *dst_data __maybe_unused, 223d0620b01SJens Wiklander size_t *dst_len __maybe_unused, 224d0620b01SJens Wiklander uint8_t *dst_tag __maybe_unused, 225d0620b01SJens Wiklander size_t *dst_tag_len __maybe_unused) 2268875ce46SJens Wiklander { 227d0620b01SJens Wiklander size_t dl = *dst_len; 228d0620b01SJens Wiklander 229d0620b01SJens Wiklander *dst_len = src_len; 230d0620b01SJens Wiklander if (dl < src_len) 231d0620b01SJens Wiklander return TEE_ERROR_SHORT_BUFFER; 232d0620b01SJens Wiklander 233d0620b01SJens Wiklander switch (algo) { 234d0620b01SJens Wiklander #if defined(CFG_CRYPTO_CCM) 235d0620b01SJens Wiklander case TEE_ALG_AES_CCM: 236d0620b01SJens Wiklander return crypto_aes_ccm_enc_final(ctx, src_data, src_len, 237d0620b01SJens Wiklander dst_data, dst_tag, dst_tag_len); 238d0620b01SJens Wiklander #endif 239d0620b01SJens Wiklander #if defined(CFG_CRYPTO_GCM) 240d0620b01SJens Wiklander case TEE_ALG_AES_GCM: 241d0620b01SJens Wiklander return crypto_aes_gcm_enc_final(ctx, src_data, src_len, 242d0620b01SJens Wiklander dst_data, dst_tag, dst_tag_len); 243d0620b01SJens Wiklander #endif 244d0620b01SJens Wiklander default: 2458875ce46SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 2468875ce46SJens Wiklander } 247d0620b01SJens Wiklander } 2488875ce46SJens Wiklander 249d0620b01SJens Wiklander TEE_Result crypto_authenc_dec_final(void *ctx __maybe_unused, 250d0620b01SJens Wiklander uint32_t algo __maybe_unused, 251d0620b01SJens Wiklander const uint8_t *src_data __maybe_unused, 252d0620b01SJens Wiklander size_t src_len __maybe_unused, 253d0620b01SJens Wiklander uint8_t *dst_data __maybe_unused, 254d0620b01SJens Wiklander size_t *dst_len __maybe_unused, 255d0620b01SJens Wiklander const uint8_t *tag __maybe_unused, 256d0620b01SJens Wiklander size_t tag_len __maybe_unused) 2578875ce46SJens Wiklander { 258d0620b01SJens Wiklander size_t dl = *dst_len; 259d0620b01SJens Wiklander 260d0620b01SJens Wiklander *dst_len = src_len; 261d0620b01SJens Wiklander if (dl < src_len) 262d0620b01SJens Wiklander return TEE_ERROR_SHORT_BUFFER; 263d0620b01SJens Wiklander 264d0620b01SJens Wiklander switch (algo) { 265d0620b01SJens Wiklander #if defined(CFG_CRYPTO_CCM) 266d0620b01SJens Wiklander case TEE_ALG_AES_CCM: 267d0620b01SJens Wiklander return crypto_aes_ccm_dec_final(ctx, src_data, src_len, 268d0620b01SJens Wiklander dst_data, tag, tag_len); 269d0620b01SJens Wiklander #endif 270d0620b01SJens Wiklander #if defined(CFG_CRYPTO_GCM) 271d0620b01SJens Wiklander case TEE_ALG_AES_GCM: 272d0620b01SJens Wiklander return crypto_aes_gcm_dec_final(ctx, src_data, src_len, 273d0620b01SJens Wiklander dst_data, tag, tag_len); 274d0620b01SJens Wiklander #endif 275d0620b01SJens Wiklander default: 2768875ce46SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 2778875ce46SJens Wiklander } 2788875ce46SJens Wiklander } 2798875ce46SJens Wiklander 280d0620b01SJens Wiklander void crypto_authenc_final(void *ctx __maybe_unused, 281d0620b01SJens Wiklander uint32_t algo __maybe_unused) 2828875ce46SJens Wiklander { 283d0620b01SJens Wiklander switch (algo) { 284d0620b01SJens Wiklander #if defined(CFG_CRYPTO_CCM) 285d0620b01SJens Wiklander case TEE_ALG_AES_CCM: 286d0620b01SJens Wiklander crypto_aes_ccm_final(ctx); 287d0620b01SJens Wiklander break; 288d0620b01SJens Wiklander #endif 289d0620b01SJens Wiklander #if defined(CFG_CRYPTO_GCM) 290d0620b01SJens Wiklander case TEE_ALG_AES_GCM: 291d0620b01SJens Wiklander crypto_aes_gcm_final(ctx); 292d0620b01SJens Wiklander break; 293d0620b01SJens Wiklander #endif 294d0620b01SJens Wiklander default: 295d0620b01SJens Wiklander break; 2968875ce46SJens Wiklander } 297d0620b01SJens Wiklander } 29833790cc1SJens Wiklander 29933790cc1SJens Wiklander #if !defined(_CFG_CRYPTO_WITH_ACIPHER) 30033790cc1SJens Wiklander struct bignum *crypto_bignum_allocate(size_t size_bits __unused) 30133790cc1SJens Wiklander { 30233790cc1SJens Wiklander return NULL; 30333790cc1SJens Wiklander } 30433790cc1SJens Wiklander 30533790cc1SJens Wiklander TEE_Result crypto_bignum_bin2bn(const uint8_t *from __unused, 30633790cc1SJens Wiklander size_t fromsize __unused, 30733790cc1SJens Wiklander struct bignum *to __unused) 30833790cc1SJens Wiklander { 30933790cc1SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 31033790cc1SJens Wiklander } 31133790cc1SJens Wiklander 31233790cc1SJens Wiklander size_t crypto_bignum_num_bytes(struct bignum *a __unused) 31333790cc1SJens Wiklander { 31433790cc1SJens Wiklander return 0; 31533790cc1SJens Wiklander } 31633790cc1SJens Wiklander 31733790cc1SJens Wiklander size_t crypto_bignum_num_bits(struct bignum *a __unused) 31833790cc1SJens Wiklander { 31933790cc1SJens Wiklander return 0; 32033790cc1SJens Wiklander } 32133790cc1SJens Wiklander 32233790cc1SJens Wiklander /* 32333790cc1SJens Wiklander * crypto_bignum_allocate() and crypto_bignum_bin2bn() failing should be 32433790cc1SJens Wiklander * enough to guarantee that the functions calling this function aren't 32533790cc1SJens Wiklander * called, but just in case add a panic() here to avoid unexpected 32633790cc1SJens Wiklander * behavoir. 32733790cc1SJens Wiklander */ 32833790cc1SJens Wiklander static void bignum_cant_happen(void) 32933790cc1SJens Wiklander { 33033790cc1SJens Wiklander volatile bool b = true; 33133790cc1SJens Wiklander 33233790cc1SJens Wiklander /* Avoid warning about function does not return */ 33333790cc1SJens Wiklander if (b) 33433790cc1SJens Wiklander panic(); 33533790cc1SJens Wiklander } 33633790cc1SJens Wiklander 33733790cc1SJens Wiklander void crypto_bignum_bn2bin(const struct bignum *from __unused, 33833790cc1SJens Wiklander uint8_t *to __unused) 33933790cc1SJens Wiklander { 34033790cc1SJens Wiklander bignum_cant_happen(); 34133790cc1SJens Wiklander } 34233790cc1SJens Wiklander 34333790cc1SJens Wiklander void crypto_bignum_copy(struct bignum *to __unused, 34433790cc1SJens Wiklander const struct bignum *from __unused) 34533790cc1SJens Wiklander { 34633790cc1SJens Wiklander bignum_cant_happen(); 34733790cc1SJens Wiklander } 34833790cc1SJens Wiklander 34933790cc1SJens Wiklander void crypto_bignum_free(struct bignum *a) 35033790cc1SJens Wiklander { 35133790cc1SJens Wiklander if (a) 35233790cc1SJens Wiklander panic(); 35333790cc1SJens Wiklander } 35433790cc1SJens Wiklander 35533790cc1SJens Wiklander void crypto_bignum_clear(struct bignum *a __unused) 35633790cc1SJens Wiklander { 35733790cc1SJens Wiklander bignum_cant_happen(); 35833790cc1SJens Wiklander } 35933790cc1SJens Wiklander 36033790cc1SJens Wiklander /* return -1 if a<b, 0 if a==b, +1 if a>b */ 36133790cc1SJens Wiklander int32_t crypto_bignum_compare(struct bignum *a __unused, 36233790cc1SJens Wiklander struct bignum *b __unused) 36333790cc1SJens Wiklander { 36433790cc1SJens Wiklander bignum_cant_happen(); 36533790cc1SJens Wiklander return -1; 36633790cc1SJens Wiklander } 36733790cc1SJens Wiklander #endif /*!_CFG_CRYPTO_WITH_ACIPHER*/ 368291e5450SJens Wiklander 369291e5450SJens Wiklander #if !defined(CFG_CRYPTO_RSA) || !defined(_CFG_CRYPTO_WITH_ACIPHER) 370291e5450SJens Wiklander TEE_Result crypto_acipher_alloc_rsa_keypair(struct rsa_keypair *s __unused, 371291e5450SJens Wiklander size_t key_size_bits __unused) 372291e5450SJens Wiklander { 373291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 374291e5450SJens Wiklander } 375291e5450SJens Wiklander 376291e5450SJens Wiklander TEE_Result 377291e5450SJens Wiklander crypto_acipher_alloc_rsa_public_key(struct rsa_public_key *s __unused, 378291e5450SJens Wiklander size_t key_size_bits __unused) 379291e5450SJens Wiklander { 380291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 381291e5450SJens Wiklander } 382291e5450SJens Wiklander 383291e5450SJens Wiklander void crypto_acipher_free_rsa_public_key(struct rsa_public_key *s __unused) 384291e5450SJens Wiklander { 385291e5450SJens Wiklander } 386291e5450SJens Wiklander 387291e5450SJens Wiklander TEE_Result crypto_acipher_gen_rsa_key(struct rsa_keypair *key __unused, 388291e5450SJens Wiklander size_t key_size __unused) 389291e5450SJens Wiklander { 390291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 391291e5450SJens Wiklander } 392291e5450SJens Wiklander 393291e5450SJens Wiklander TEE_Result crypto_acipher_rsanopad_decrypt(struct rsa_keypair *key __unused, 394291e5450SJens Wiklander const uint8_t *src __unused, 395291e5450SJens Wiklander size_t src_len __unused, 396291e5450SJens Wiklander uint8_t *dst __unused, 397291e5450SJens Wiklander size_t *dst_len __unused) 398291e5450SJens Wiklander { 399291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 400291e5450SJens Wiklander } 401291e5450SJens Wiklander 402291e5450SJens Wiklander TEE_Result crypto_acipher_rsanopad_encrypt(struct rsa_public_key *key __unused, 403291e5450SJens Wiklander const uint8_t *src __unused, 404291e5450SJens Wiklander size_t src_len __unused, 405291e5450SJens Wiklander uint8_t *dst __unused, 406291e5450SJens Wiklander size_t *dst_len __unused) 407291e5450SJens Wiklander { 408291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 409291e5450SJens Wiklander } 410291e5450SJens Wiklander 411291e5450SJens Wiklander TEE_Result crypto_acipher_rsaes_decrypt(uint32_t algo __unused, 412291e5450SJens Wiklander struct rsa_keypair *key __unused, 413291e5450SJens Wiklander const uint8_t *label __unused, 414291e5450SJens Wiklander size_t label_len __unused, 415291e5450SJens Wiklander const uint8_t *src __unused, 416291e5450SJens Wiklander size_t src_len __unused, 417291e5450SJens Wiklander uint8_t *dst __unused, 418291e5450SJens Wiklander size_t *dst_len __unused) 419291e5450SJens Wiklander { 420291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 421291e5450SJens Wiklander } 422291e5450SJens Wiklander 423291e5450SJens Wiklander TEE_Result crypto_acipher_rsaes_encrypt(uint32_t algo __unused, 424291e5450SJens Wiklander struct rsa_public_key *key __unused, 425291e5450SJens Wiklander const uint8_t *label __unused, 426291e5450SJens Wiklander size_t label_len __unused, 427291e5450SJens Wiklander const uint8_t *src __unused, 428291e5450SJens Wiklander size_t src_len __unused, 429291e5450SJens Wiklander uint8_t *dst __unused, 430291e5450SJens Wiklander size_t *dst_len __unused) 431291e5450SJens Wiklander { 432291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 433291e5450SJens Wiklander } 434291e5450SJens Wiklander 435291e5450SJens Wiklander TEE_Result crypto_acipher_rsassa_sign(uint32_t algo __unused, 436291e5450SJens Wiklander struct rsa_keypair *key __unused, 437291e5450SJens Wiklander int salt_len __unused, 438291e5450SJens Wiklander const uint8_t *msg __unused, 439291e5450SJens Wiklander size_t msg_len __unused, 440291e5450SJens Wiklander uint8_t *sig __unused, 441291e5450SJens Wiklander size_t *sig_len __unused) 442291e5450SJens Wiklander { 443291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 444291e5450SJens Wiklander } 445291e5450SJens Wiklander 446291e5450SJens Wiklander TEE_Result crypto_acipher_rsassa_verify(uint32_t algo __unused, 447291e5450SJens Wiklander struct rsa_public_key *key __unused, 448291e5450SJens Wiklander int salt_len __unused, 449291e5450SJens Wiklander const uint8_t *msg __unused, 450291e5450SJens Wiklander size_t msg_len __unused, 451291e5450SJens Wiklander const uint8_t *sig __unused, 452291e5450SJens Wiklander size_t sig_len __unused) 453291e5450SJens Wiklander { 454291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 455291e5450SJens Wiklander } 456291e5450SJens Wiklander #endif /*!CFG_CRYPTO_RSA || !_CFG_CRYPTO_WITH_ACIPHER*/ 457291e5450SJens Wiklander 458291e5450SJens Wiklander #if !defined(CFG_CRYPTO_DSA) || !defined(_CFG_CRYPTO_WITH_ACIPHER) 459291e5450SJens Wiklander TEE_Result crypto_acipher_alloc_dsa_keypair(struct dsa_keypair *s __unused, 460291e5450SJens Wiklander size_t key_size_bits __unused) 461291e5450SJens Wiklander { 462291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 463291e5450SJens Wiklander } 464291e5450SJens Wiklander 465291e5450SJens Wiklander TEE_Result 466291e5450SJens Wiklander crypto_acipher_alloc_dsa_public_key(struct dsa_public_key *s __unused, 467291e5450SJens Wiklander size_t key_size_bits __unused) 468291e5450SJens Wiklander { 469291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 470291e5450SJens Wiklander } 471291e5450SJens Wiklander 472291e5450SJens Wiklander TEE_Result crypto_acipher_gen_dsa_key(struct dsa_keypair *key __unused, 473291e5450SJens Wiklander size_t key_size __unused) 474291e5450SJens Wiklander { 475291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 476291e5450SJens Wiklander } 477291e5450SJens Wiklander 478291e5450SJens Wiklander TEE_Result crypto_acipher_dsa_sign(uint32_t algo __unused, 479291e5450SJens Wiklander struct dsa_keypair *key __unused, 480291e5450SJens Wiklander const uint8_t *msg __unused, 481291e5450SJens Wiklander size_t msg_len __unused, 482291e5450SJens Wiklander uint8_t *sig __unused, 483291e5450SJens Wiklander size_t *sig_len __unused) 484291e5450SJens Wiklander { 485291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 486291e5450SJens Wiklander } 487291e5450SJens Wiklander 488291e5450SJens Wiklander TEE_Result crypto_acipher_dsa_verify(uint32_t algo __unused, 489291e5450SJens Wiklander struct dsa_public_key *key __unused, 490291e5450SJens Wiklander const uint8_t *msg __unused, 491291e5450SJens Wiklander size_t msg_len __unused, 492291e5450SJens Wiklander const uint8_t *sig __unused, 493291e5450SJens Wiklander size_t sig_len __unused) 494291e5450SJens Wiklander { 495291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 496291e5450SJens Wiklander } 497291e5450SJens Wiklander #endif /*!CFG_CRYPTO_DSA || !_CFG_CRYPTO_WITH_ACIPHER*/ 498291e5450SJens Wiklander 499291e5450SJens Wiklander #if !defined(CFG_CRYPTO_DH) || !defined(_CFG_CRYPTO_WITH_ACIPHER) 500291e5450SJens Wiklander TEE_Result crypto_acipher_alloc_dh_keypair(struct dh_keypair *s __unused, 501291e5450SJens Wiklander size_t key_size_bits __unused) 502291e5450SJens Wiklander { 503291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 504291e5450SJens Wiklander } 505291e5450SJens Wiklander 506291e5450SJens Wiklander TEE_Result crypto_acipher_gen_dh_key(struct dh_keypair *key __unused, 507291e5450SJens Wiklander struct bignum *q __unused, 508291e5450SJens Wiklander size_t xbits __unused) 509291e5450SJens Wiklander { 510291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 511291e5450SJens Wiklander } 512291e5450SJens Wiklander 513291e5450SJens Wiklander TEE_Result 514291e5450SJens Wiklander crypto_acipher_dh_shared_secret(struct dh_keypair *private_key __unused, 515291e5450SJens Wiklander struct bignum *public_key __unused, 516291e5450SJens Wiklander struct bignum *secret __unused) 517291e5450SJens Wiklander { 518291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 519291e5450SJens Wiklander } 520291e5450SJens Wiklander #endif /*!CFG_CRYPTO_DH || !_CFG_CRYPTO_WITH_ACIPHER*/ 521291e5450SJens Wiklander 522291e5450SJens Wiklander #if !defined(CFG_CRYPTO_ECC) || !defined(_CFG_CRYPTO_WITH_ACIPHER) 523291e5450SJens Wiklander TEE_Result 524291e5450SJens Wiklander crypto_acipher_alloc_ecc_public_key(struct ecc_public_key *s __unused, 525291e5450SJens Wiklander size_t key_size_bits __unused) 526291e5450SJens Wiklander { 527291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 528291e5450SJens Wiklander } 529291e5450SJens Wiklander 530291e5450SJens Wiklander TEE_Result crypto_acipher_alloc_ecc_keypair(struct ecc_keypair *s __unused, 531291e5450SJens Wiklander size_t key_size_bits __unused) 532291e5450SJens Wiklander { 533291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 534291e5450SJens Wiklander } 535291e5450SJens Wiklander 536291e5450SJens Wiklander void crypto_acipher_free_ecc_public_key(struct ecc_public_key *s __unused) 537291e5450SJens Wiklander { 538291e5450SJens Wiklander } 539291e5450SJens Wiklander 540291e5450SJens Wiklander TEE_Result crypto_acipher_gen_ecc_key(struct ecc_keypair *key __unused) 541291e5450SJens Wiklander { 542291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 543291e5450SJens Wiklander } 544291e5450SJens Wiklander 545291e5450SJens Wiklander TEE_Result crypto_acipher_ecc_sign(uint32_t algo __unused, 546291e5450SJens Wiklander struct ecc_keypair *key __unused, 547291e5450SJens Wiklander const uint8_t *msg __unused, 548291e5450SJens Wiklander size_t msg_len __unused, 549291e5450SJens Wiklander 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 crypto_acipher_ecc_verify(uint32_t algo __unused, 556291e5450SJens Wiklander struct ecc_public_key *key __unused, 557291e5450SJens Wiklander const uint8_t *msg __unused, 558291e5450SJens Wiklander size_t msg_len __unused, 559291e5450SJens Wiklander const uint8_t *sig __unused, 560291e5450SJens Wiklander size_t sig_len __unused) 561291e5450SJens Wiklander { 562291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 563291e5450SJens Wiklander } 564291e5450SJens Wiklander 565291e5450SJens Wiklander TEE_Result 566291e5450SJens Wiklander crypto_acipher_ecc_shared_secret(struct ecc_keypair *private_key __unused, 567291e5450SJens Wiklander struct ecc_public_key *public_key __unused, 568291e5450SJens Wiklander void *secret __unused, 569291e5450SJens Wiklander unsigned long *secret_len __unused) 570291e5450SJens Wiklander { 571291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 572291e5450SJens Wiklander } 573291e5450SJens Wiklander #endif /*!CFG_CRYPTO_ECC || !_CFG_CRYPTO_WITH_ACIPHER*/ 574