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) 46*72a9b1a0SJens Wiklander TEE_Result crypto_cipher_alloc_ctx(void **ctx __unused, uint32_t algo __unused) 4782d91db1SJens Wiklander { 481c5fdd1fSJerome Forissier return TEE_ERROR_NOT_IMPLEMENTED; 4982d91db1SJens Wiklander } 5082d91db1SJens Wiklander 51*72a9b1a0SJens Wiklander void crypto_cipher_free_ctx(void *ctx __unused, uint32_t algo __unused) 52*72a9b1a0SJens Wiklander { 53*72a9b1a0SJens Wiklander assert(0); 54*72a9b1a0SJens Wiklander } 55*72a9b1a0SJens Wiklander 56*72a9b1a0SJens Wiklander void crypto_cipher_copy_state(void *dst_ctx __unused, void *src_ctx __unused, 57*72a9b1a0SJens Wiklander uint32_t algo __unused) 58*72a9b1a0SJens Wiklander { 59*72a9b1a0SJens Wiklander assert(0); 60*72a9b1a0SJens Wiklander } 61*72a9b1a0SJens Wiklander 6282d91db1SJens Wiklander TEE_Result crypto_cipher_init(void *ctx __unused, uint32_t algo __unused, 6382d91db1SJens Wiklander TEE_OperationMode mode __unused, 6482d91db1SJens Wiklander const uint8_t *key1 __unused, 6582d91db1SJens Wiklander size_t key1_len __unused, 6682d91db1SJens Wiklander const uint8_t *key2 __unused, 6782d91db1SJens Wiklander size_t key2_len __unused, 6882d91db1SJens Wiklander const uint8_t *iv __unused, 6982d91db1SJens Wiklander size_t iv_len __unused) 7082d91db1SJens Wiklander { 711c5fdd1fSJerome Forissier return TEE_ERROR_NOT_IMPLEMENTED; 7282d91db1SJens Wiklander } 7382d91db1SJens Wiklander 7482d91db1SJens Wiklander TEE_Result crypto_cipher_update(void *ctx __unused, uint32_t algo __unused, 7582d91db1SJens Wiklander TEE_OperationMode mode __unused, 7682d91db1SJens Wiklander bool last_block __unused, 7782d91db1SJens Wiklander const uint8_t *data __unused, 7882d91db1SJens Wiklander size_t len __unused, uint8_t *dst __unused) 7982d91db1SJens Wiklander { 801c5fdd1fSJerome Forissier return TEE_ERROR_NOT_IMPLEMENTED; 8182d91db1SJens Wiklander } 8282d91db1SJens Wiklander 8382d91db1SJens Wiklander void crypto_cipher_final(void *ctx __unused, uint32_t algo __unused) 8482d91db1SJens Wiklander { 8582d91db1SJens Wiklander } 8682d91db1SJens Wiklander 8782d91db1SJens Wiklander TEE_Result crypto_cipher_get_block_size(uint32_t algo __unused, 8882d91db1SJens Wiklander size_t *size __unused) 8982d91db1SJens Wiklander { 901c5fdd1fSJerome Forissier return TEE_ERROR_NOT_IMPLEMENTED; 9182d91db1SJens Wiklander } 9282d91db1SJens Wiklander #endif /*_CFG_CRYPTO_WITH_CIPHER*/ 93e9eaba5cSJens Wiklander 94e9eaba5cSJens Wiklander #if !defined(_CFG_CRYPTO_WITH_MAC) 9582ef73bcSJens Wiklander TEE_Result crypto_mac_alloc_ctx(void **ctx __unused, uint32_t algo __unused) 96e9eaba5cSJens Wiklander { 97e9eaba5cSJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 98e9eaba5cSJens Wiklander } 99e9eaba5cSJens Wiklander 10082ef73bcSJens Wiklander void crypto_mac_free_ctx(void *ctx __unused, uint32_t algo __unused) 10182ef73bcSJens Wiklander { 10282ef73bcSJens Wiklander assert(0); 10382ef73bcSJens Wiklander } 10482ef73bcSJens Wiklander 10582ef73bcSJens Wiklander void crypto_mac_copy_state(void *dst_ctx __unused, void *src_ctx __unused, 10682ef73bcSJens Wiklander uint32_t algo __unused) 10782ef73bcSJens Wiklander { 10882ef73bcSJens Wiklander assert(0); 10982ef73bcSJens Wiklander } 11082ef73bcSJens Wiklander 111e9eaba5cSJens Wiklander TEE_Result crypto_mac_init(void *ctx __unused, uint32_t algo __unused, 112e9eaba5cSJens Wiklander const uint8_t *key __unused, size_t len __unused) 113e9eaba5cSJens Wiklander { 114e9eaba5cSJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 115e9eaba5cSJens Wiklander } 116e9eaba5cSJens Wiklander 117e9eaba5cSJens Wiklander TEE_Result crypto_mac_update(void *ctx __unused, uint32_t algo __unused, 118e9eaba5cSJens Wiklander const uint8_t *data __unused, size_t len __unused) 119e9eaba5cSJens Wiklander { 120e9eaba5cSJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 121e9eaba5cSJens Wiklander } 122e9eaba5cSJens Wiklander 123e9eaba5cSJens Wiklander TEE_Result crypto_mac_final(void *ctx __unused, uint32_t algo __unused, 124e9eaba5cSJens Wiklander uint8_t *digest __unused, 125e9eaba5cSJens Wiklander size_t digest_len __unused) 126e9eaba5cSJens Wiklander { 127e9eaba5cSJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 128e9eaba5cSJens Wiklander } 129e9eaba5cSJens Wiklander #endif /*_CFG_CRYPTO_WITH_MAC*/ 130e9eaba5cSJens Wiklander 131d0620b01SJens Wiklander TEE_Result crypto_authenc_get_ctx_size(uint32_t algo __maybe_unused, 132d0620b01SJens Wiklander size_t *size __maybe_unused) 1338875ce46SJens Wiklander { 134d0620b01SJens Wiklander switch (algo) { 135d0620b01SJens Wiklander #if defined(CFG_CRYPTO_CCM) 136d0620b01SJens Wiklander case TEE_ALG_AES_CCM: 137d0620b01SJens Wiklander *size = crypto_aes_ccm_get_ctx_size(); 138d0620b01SJens Wiklander return TEE_SUCCESS; 139d0620b01SJens Wiklander #endif 140d0620b01SJens Wiklander #if defined(CFG_CRYPTO_GCM) 141d0620b01SJens Wiklander case TEE_ALG_AES_GCM: 142d0620b01SJens Wiklander *size = crypto_aes_gcm_get_ctx_size(); 143d0620b01SJens Wiklander return TEE_SUCCESS; 144d0620b01SJens Wiklander #endif 145d0620b01SJens Wiklander default: 1468875ce46SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 1478875ce46SJens Wiklander } 148d0620b01SJens Wiklander } 1498875ce46SJens Wiklander 150d0620b01SJens Wiklander TEE_Result crypto_authenc_init(void *ctx __maybe_unused, 151d0620b01SJens Wiklander uint32_t algo __maybe_unused, 152d0620b01SJens Wiklander TEE_OperationMode mode __maybe_unused, 153d0620b01SJens Wiklander const uint8_t *key __maybe_unused, 154d0620b01SJens Wiklander size_t key_len __maybe_unused, 155d0620b01SJens Wiklander const uint8_t *nonce __maybe_unused, 156d0620b01SJens Wiklander size_t nonce_len __maybe_unused, 157d0620b01SJens Wiklander size_t tag_len __maybe_unused, 158d0620b01SJens Wiklander size_t aad_len __maybe_unused, 159d0620b01SJens Wiklander size_t payload_len __maybe_unused) 160d0620b01SJens Wiklander { 161d0620b01SJens Wiklander switch (algo) { 162d0620b01SJens Wiklander #if defined(CFG_CRYPTO_CCM) 163d0620b01SJens Wiklander case TEE_ALG_AES_CCM: 164d0620b01SJens Wiklander return crypto_aes_ccm_init(ctx, mode, key, key_len, nonce, 165d0620b01SJens Wiklander nonce_len, tag_len, aad_len, 166d0620b01SJens Wiklander payload_len); 167d0620b01SJens Wiklander #endif 168d0620b01SJens Wiklander #if defined(CFG_CRYPTO_GCM) 169d0620b01SJens Wiklander case TEE_ALG_AES_GCM: 170d0620b01SJens Wiklander return crypto_aes_gcm_init(ctx, mode, key, key_len, nonce, 171d0620b01SJens Wiklander nonce_len, tag_len); 172d0620b01SJens Wiklander #endif 173d0620b01SJens Wiklander default: 174d0620b01SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 175d0620b01SJens Wiklander } 176d0620b01SJens Wiklander } 177d0620b01SJens Wiklander 178d0620b01SJens Wiklander TEE_Result crypto_authenc_update_aad(void *ctx __maybe_unused, 179d0620b01SJens Wiklander uint32_t algo __maybe_unused, 1808875ce46SJens Wiklander TEE_OperationMode mode __unused, 181d0620b01SJens Wiklander const uint8_t *data __maybe_unused, 182d0620b01SJens Wiklander size_t len __maybe_unused) 1838875ce46SJens 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_aad(ctx, data, len); 188d0620b01SJens Wiklander #endif 189d0620b01SJens Wiklander #if defined(CFG_CRYPTO_GCM) 190d0620b01SJens Wiklander case TEE_ALG_AES_GCM: 191d0620b01SJens Wiklander return crypto_aes_gcm_update_aad(ctx, data, len); 192d0620b01SJens Wiklander #endif 193d0620b01SJens Wiklander default: 1948875ce46SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 1958875ce46SJens Wiklander } 196d0620b01SJens Wiklander } 1978875ce46SJens Wiklander 198d0620b01SJens Wiklander TEE_Result crypto_authenc_update_payload(void *ctx __maybe_unused, 199d0620b01SJens Wiklander uint32_t algo __maybe_unused, 200d0620b01SJens Wiklander TEE_OperationMode mode __maybe_unused, 201d0620b01SJens Wiklander const uint8_t *src_data __maybe_unused, 202d0620b01SJens Wiklander size_t src_len __maybe_unused, 203d0620b01SJens Wiklander uint8_t *dst_data __maybe_unused, 204d0620b01SJens Wiklander size_t *dst_len __maybe_unused) 2058875ce46SJens Wiklander { 206d0620b01SJens Wiklander size_t dl = *dst_len; 207d0620b01SJens Wiklander 208d0620b01SJens Wiklander *dst_len = src_len; 209d0620b01SJens Wiklander if (dl < src_len) 210d0620b01SJens Wiklander return TEE_ERROR_SHORT_BUFFER; 211d0620b01SJens Wiklander 212d0620b01SJens Wiklander switch (algo) { 213d0620b01SJens Wiklander #if defined(CFG_CRYPTO_CCM) 214d0620b01SJens Wiklander case TEE_ALG_AES_CCM: 215d0620b01SJens Wiklander return crypto_aes_ccm_update_payload(ctx, mode, src_data, 216d0620b01SJens Wiklander src_len, dst_data); 217d0620b01SJens Wiklander #endif 218d0620b01SJens Wiklander #if defined(CFG_CRYPTO_GCM) 219d0620b01SJens Wiklander case TEE_ALG_AES_GCM: 220d0620b01SJens Wiklander return crypto_aes_gcm_update_payload(ctx, mode, src_data, 221d0620b01SJens Wiklander src_len, dst_data); 222d0620b01SJens Wiklander #endif 223d0620b01SJens Wiklander default: 2248875ce46SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 2258875ce46SJens Wiklander } 226d0620b01SJens Wiklander } 2278875ce46SJens Wiklander 228d0620b01SJens Wiklander TEE_Result crypto_authenc_enc_final(void *ctx __maybe_unused, 229d0620b01SJens Wiklander uint32_t algo __maybe_unused, 230d0620b01SJens Wiklander const uint8_t *src_data __maybe_unused, 231d0620b01SJens Wiklander size_t src_len __maybe_unused, 232d0620b01SJens Wiklander uint8_t *dst_data __maybe_unused, 233d0620b01SJens Wiklander size_t *dst_len __maybe_unused, 234d0620b01SJens Wiklander uint8_t *dst_tag __maybe_unused, 235d0620b01SJens Wiklander size_t *dst_tag_len __maybe_unused) 2368875ce46SJens Wiklander { 237d0620b01SJens Wiklander size_t dl = *dst_len; 238d0620b01SJens Wiklander 239d0620b01SJens Wiklander *dst_len = src_len; 240d0620b01SJens Wiklander if (dl < src_len) 241d0620b01SJens Wiklander return TEE_ERROR_SHORT_BUFFER; 242d0620b01SJens Wiklander 243d0620b01SJens Wiklander switch (algo) { 244d0620b01SJens Wiklander #if defined(CFG_CRYPTO_CCM) 245d0620b01SJens Wiklander case TEE_ALG_AES_CCM: 246d0620b01SJens Wiklander return crypto_aes_ccm_enc_final(ctx, src_data, src_len, 247d0620b01SJens Wiklander dst_data, dst_tag, dst_tag_len); 248d0620b01SJens Wiklander #endif 249d0620b01SJens Wiklander #if defined(CFG_CRYPTO_GCM) 250d0620b01SJens Wiklander case TEE_ALG_AES_GCM: 251d0620b01SJens Wiklander return crypto_aes_gcm_enc_final(ctx, src_data, src_len, 252d0620b01SJens Wiklander dst_data, dst_tag, dst_tag_len); 253d0620b01SJens Wiklander #endif 254d0620b01SJens Wiklander default: 2558875ce46SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 2568875ce46SJens Wiklander } 257d0620b01SJens Wiklander } 2588875ce46SJens Wiklander 259d0620b01SJens Wiklander TEE_Result crypto_authenc_dec_final(void *ctx __maybe_unused, 260d0620b01SJens Wiklander uint32_t algo __maybe_unused, 261d0620b01SJens Wiklander const uint8_t *src_data __maybe_unused, 262d0620b01SJens Wiklander size_t src_len __maybe_unused, 263d0620b01SJens Wiklander uint8_t *dst_data __maybe_unused, 264d0620b01SJens Wiklander size_t *dst_len __maybe_unused, 265d0620b01SJens Wiklander const uint8_t *tag __maybe_unused, 266d0620b01SJens Wiklander size_t tag_len __maybe_unused) 2678875ce46SJens Wiklander { 268d0620b01SJens Wiklander size_t dl = *dst_len; 269d0620b01SJens Wiklander 270d0620b01SJens Wiklander *dst_len = src_len; 271d0620b01SJens Wiklander if (dl < src_len) 272d0620b01SJens Wiklander return TEE_ERROR_SHORT_BUFFER; 273d0620b01SJens Wiklander 274d0620b01SJens Wiklander switch (algo) { 275d0620b01SJens Wiklander #if defined(CFG_CRYPTO_CCM) 276d0620b01SJens Wiklander case TEE_ALG_AES_CCM: 277d0620b01SJens Wiklander return crypto_aes_ccm_dec_final(ctx, src_data, src_len, 278d0620b01SJens Wiklander dst_data, tag, tag_len); 279d0620b01SJens Wiklander #endif 280d0620b01SJens Wiklander #if defined(CFG_CRYPTO_GCM) 281d0620b01SJens Wiklander case TEE_ALG_AES_GCM: 282d0620b01SJens Wiklander return crypto_aes_gcm_dec_final(ctx, src_data, src_len, 283d0620b01SJens Wiklander dst_data, tag, tag_len); 284d0620b01SJens Wiklander #endif 285d0620b01SJens Wiklander default: 2868875ce46SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 2878875ce46SJens Wiklander } 2888875ce46SJens Wiklander } 2898875ce46SJens Wiklander 290d0620b01SJens Wiklander void crypto_authenc_final(void *ctx __maybe_unused, 291d0620b01SJens Wiklander uint32_t algo __maybe_unused) 2928875ce46SJens Wiklander { 293d0620b01SJens Wiklander switch (algo) { 294d0620b01SJens Wiklander #if defined(CFG_CRYPTO_CCM) 295d0620b01SJens Wiklander case TEE_ALG_AES_CCM: 296d0620b01SJens Wiklander crypto_aes_ccm_final(ctx); 297d0620b01SJens Wiklander break; 298d0620b01SJens Wiklander #endif 299d0620b01SJens Wiklander #if defined(CFG_CRYPTO_GCM) 300d0620b01SJens Wiklander case TEE_ALG_AES_GCM: 301d0620b01SJens Wiklander crypto_aes_gcm_final(ctx); 302d0620b01SJens Wiklander break; 303d0620b01SJens Wiklander #endif 304d0620b01SJens Wiklander default: 305d0620b01SJens Wiklander break; 3068875ce46SJens Wiklander } 307d0620b01SJens Wiklander } 30833790cc1SJens Wiklander 30933790cc1SJens Wiklander #if !defined(_CFG_CRYPTO_WITH_ACIPHER) 31033790cc1SJens Wiklander struct bignum *crypto_bignum_allocate(size_t size_bits __unused) 31133790cc1SJens Wiklander { 31233790cc1SJens Wiklander return NULL; 31333790cc1SJens Wiklander } 31433790cc1SJens Wiklander 31533790cc1SJens Wiklander TEE_Result crypto_bignum_bin2bn(const uint8_t *from __unused, 31633790cc1SJens Wiklander size_t fromsize __unused, 31733790cc1SJens Wiklander struct bignum *to __unused) 31833790cc1SJens Wiklander { 31933790cc1SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 32033790cc1SJens Wiklander } 32133790cc1SJens Wiklander 32233790cc1SJens Wiklander size_t crypto_bignum_num_bytes(struct bignum *a __unused) 32333790cc1SJens Wiklander { 32433790cc1SJens Wiklander return 0; 32533790cc1SJens Wiklander } 32633790cc1SJens Wiklander 32733790cc1SJens Wiklander size_t crypto_bignum_num_bits(struct bignum *a __unused) 32833790cc1SJens Wiklander { 32933790cc1SJens Wiklander return 0; 33033790cc1SJens Wiklander } 33133790cc1SJens Wiklander 33233790cc1SJens Wiklander /* 33333790cc1SJens Wiklander * crypto_bignum_allocate() and crypto_bignum_bin2bn() failing should be 33433790cc1SJens Wiklander * enough to guarantee that the functions calling this function aren't 33533790cc1SJens Wiklander * called, but just in case add a panic() here to avoid unexpected 33633790cc1SJens Wiklander * behavoir. 33733790cc1SJens Wiklander */ 33833790cc1SJens Wiklander static void bignum_cant_happen(void) 33933790cc1SJens Wiklander { 34033790cc1SJens Wiklander volatile bool b = true; 34133790cc1SJens Wiklander 34233790cc1SJens Wiklander /* Avoid warning about function does not return */ 34333790cc1SJens Wiklander if (b) 34433790cc1SJens Wiklander panic(); 34533790cc1SJens Wiklander } 34633790cc1SJens Wiklander 34733790cc1SJens Wiklander void crypto_bignum_bn2bin(const struct bignum *from __unused, 34833790cc1SJens Wiklander uint8_t *to __unused) 34933790cc1SJens Wiklander { 35033790cc1SJens Wiklander bignum_cant_happen(); 35133790cc1SJens Wiklander } 35233790cc1SJens Wiklander 35333790cc1SJens Wiklander void crypto_bignum_copy(struct bignum *to __unused, 35433790cc1SJens Wiklander const struct bignum *from __unused) 35533790cc1SJens Wiklander { 35633790cc1SJens Wiklander bignum_cant_happen(); 35733790cc1SJens Wiklander } 35833790cc1SJens Wiklander 35933790cc1SJens Wiklander void crypto_bignum_free(struct bignum *a) 36033790cc1SJens Wiklander { 36133790cc1SJens Wiklander if (a) 36233790cc1SJens Wiklander panic(); 36333790cc1SJens Wiklander } 36433790cc1SJens Wiklander 36533790cc1SJens Wiklander void crypto_bignum_clear(struct bignum *a __unused) 36633790cc1SJens Wiklander { 36733790cc1SJens Wiklander bignum_cant_happen(); 36833790cc1SJens Wiklander } 36933790cc1SJens Wiklander 37033790cc1SJens Wiklander /* return -1 if a<b, 0 if a==b, +1 if a>b */ 37133790cc1SJens Wiklander int32_t crypto_bignum_compare(struct bignum *a __unused, 37233790cc1SJens Wiklander struct bignum *b __unused) 37333790cc1SJens Wiklander { 37433790cc1SJens Wiklander bignum_cant_happen(); 37533790cc1SJens Wiklander return -1; 37633790cc1SJens Wiklander } 37733790cc1SJens Wiklander #endif /*!_CFG_CRYPTO_WITH_ACIPHER*/ 378291e5450SJens Wiklander 379291e5450SJens Wiklander #if !defined(CFG_CRYPTO_RSA) || !defined(_CFG_CRYPTO_WITH_ACIPHER) 380291e5450SJens Wiklander TEE_Result crypto_acipher_alloc_rsa_keypair(struct rsa_keypair *s __unused, 381291e5450SJens Wiklander size_t key_size_bits __unused) 382291e5450SJens Wiklander { 383291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 384291e5450SJens Wiklander } 385291e5450SJens Wiklander 386291e5450SJens Wiklander TEE_Result 387291e5450SJens Wiklander crypto_acipher_alloc_rsa_public_key(struct rsa_public_key *s __unused, 388291e5450SJens Wiklander size_t key_size_bits __unused) 389291e5450SJens Wiklander { 390291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 391291e5450SJens Wiklander } 392291e5450SJens Wiklander 393291e5450SJens Wiklander void crypto_acipher_free_rsa_public_key(struct rsa_public_key *s __unused) 394291e5450SJens Wiklander { 395291e5450SJens Wiklander } 396291e5450SJens Wiklander 397291e5450SJens Wiklander TEE_Result crypto_acipher_gen_rsa_key(struct rsa_keypair *key __unused, 398291e5450SJens Wiklander size_t key_size __unused) 399291e5450SJens Wiklander { 400291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 401291e5450SJens Wiklander } 402291e5450SJens Wiklander 403291e5450SJens Wiklander TEE_Result crypto_acipher_rsanopad_decrypt(struct rsa_keypair *key __unused, 404291e5450SJens Wiklander const uint8_t *src __unused, 405291e5450SJens Wiklander size_t src_len __unused, 406291e5450SJens Wiklander uint8_t *dst __unused, 407291e5450SJens Wiklander size_t *dst_len __unused) 408291e5450SJens Wiklander { 409291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 410291e5450SJens Wiklander } 411291e5450SJens Wiklander 412291e5450SJens Wiklander TEE_Result crypto_acipher_rsanopad_encrypt(struct rsa_public_key *key __unused, 413291e5450SJens Wiklander const uint8_t *src __unused, 414291e5450SJens Wiklander size_t src_len __unused, 415291e5450SJens Wiklander uint8_t *dst __unused, 416291e5450SJens Wiklander size_t *dst_len __unused) 417291e5450SJens Wiklander { 418291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 419291e5450SJens Wiklander } 420291e5450SJens Wiklander 421291e5450SJens Wiklander TEE_Result crypto_acipher_rsaes_decrypt(uint32_t algo __unused, 422291e5450SJens Wiklander struct rsa_keypair *key __unused, 423291e5450SJens Wiklander const uint8_t *label __unused, 424291e5450SJens Wiklander size_t label_len __unused, 425291e5450SJens Wiklander const uint8_t *src __unused, 426291e5450SJens Wiklander size_t src_len __unused, 427291e5450SJens Wiklander uint8_t *dst __unused, 428291e5450SJens Wiklander size_t *dst_len __unused) 429291e5450SJens Wiklander { 430291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 431291e5450SJens Wiklander } 432291e5450SJens Wiklander 433291e5450SJens Wiklander TEE_Result crypto_acipher_rsaes_encrypt(uint32_t algo __unused, 434291e5450SJens Wiklander struct rsa_public_key *key __unused, 435291e5450SJens Wiklander const uint8_t *label __unused, 436291e5450SJens Wiklander size_t label_len __unused, 437291e5450SJens Wiklander const uint8_t *src __unused, 438291e5450SJens Wiklander size_t src_len __unused, 439291e5450SJens Wiklander uint8_t *dst __unused, 440291e5450SJens Wiklander size_t *dst_len __unused) 441291e5450SJens Wiklander { 442291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 443291e5450SJens Wiklander } 444291e5450SJens Wiklander 445291e5450SJens Wiklander TEE_Result crypto_acipher_rsassa_sign(uint32_t algo __unused, 446291e5450SJens Wiklander struct rsa_keypair *key __unused, 447291e5450SJens Wiklander int salt_len __unused, 448291e5450SJens Wiklander const uint8_t *msg __unused, 449291e5450SJens Wiklander size_t msg_len __unused, 450291e5450SJens Wiklander uint8_t *sig __unused, 451291e5450SJens Wiklander size_t *sig_len __unused) 452291e5450SJens Wiklander { 453291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 454291e5450SJens Wiklander } 455291e5450SJens Wiklander 456291e5450SJens Wiklander TEE_Result crypto_acipher_rsassa_verify(uint32_t algo __unused, 457291e5450SJens Wiklander struct rsa_public_key *key __unused, 458291e5450SJens Wiklander int salt_len __unused, 459291e5450SJens Wiklander const uint8_t *msg __unused, 460291e5450SJens Wiklander size_t msg_len __unused, 461291e5450SJens Wiklander const uint8_t *sig __unused, 462291e5450SJens Wiklander size_t sig_len __unused) 463291e5450SJens Wiklander { 464291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 465291e5450SJens Wiklander } 466291e5450SJens Wiklander #endif /*!CFG_CRYPTO_RSA || !_CFG_CRYPTO_WITH_ACIPHER*/ 467291e5450SJens Wiklander 468291e5450SJens Wiklander #if !defined(CFG_CRYPTO_DSA) || !defined(_CFG_CRYPTO_WITH_ACIPHER) 469291e5450SJens Wiklander TEE_Result crypto_acipher_alloc_dsa_keypair(struct dsa_keypair *s __unused, 470291e5450SJens Wiklander size_t key_size_bits __unused) 471291e5450SJens Wiklander { 472291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 473291e5450SJens Wiklander } 474291e5450SJens Wiklander 475291e5450SJens Wiklander TEE_Result 476291e5450SJens Wiklander crypto_acipher_alloc_dsa_public_key(struct dsa_public_key *s __unused, 477291e5450SJens Wiklander size_t key_size_bits __unused) 478291e5450SJens Wiklander { 479291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 480291e5450SJens Wiklander } 481291e5450SJens Wiklander 482291e5450SJens Wiklander TEE_Result crypto_acipher_gen_dsa_key(struct dsa_keypair *key __unused, 483291e5450SJens Wiklander size_t key_size __unused) 484291e5450SJens Wiklander { 485291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 486291e5450SJens Wiklander } 487291e5450SJens Wiklander 488291e5450SJens Wiklander TEE_Result crypto_acipher_dsa_sign(uint32_t algo __unused, 489291e5450SJens Wiklander struct dsa_keypair *key __unused, 490291e5450SJens Wiklander const uint8_t *msg __unused, 491291e5450SJens Wiklander size_t msg_len __unused, 492291e5450SJens Wiklander uint8_t *sig __unused, 493291e5450SJens Wiklander size_t *sig_len __unused) 494291e5450SJens Wiklander { 495291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 496291e5450SJens Wiklander } 497291e5450SJens Wiklander 498291e5450SJens Wiklander TEE_Result crypto_acipher_dsa_verify(uint32_t algo __unused, 499291e5450SJens Wiklander struct dsa_public_key *key __unused, 500291e5450SJens Wiklander const uint8_t *msg __unused, 501291e5450SJens Wiklander size_t msg_len __unused, 502291e5450SJens Wiklander const uint8_t *sig __unused, 503291e5450SJens Wiklander size_t sig_len __unused) 504291e5450SJens Wiklander { 505291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 506291e5450SJens Wiklander } 507291e5450SJens Wiklander #endif /*!CFG_CRYPTO_DSA || !_CFG_CRYPTO_WITH_ACIPHER*/ 508291e5450SJens Wiklander 509291e5450SJens Wiklander #if !defined(CFG_CRYPTO_DH) || !defined(_CFG_CRYPTO_WITH_ACIPHER) 510291e5450SJens Wiklander TEE_Result crypto_acipher_alloc_dh_keypair(struct dh_keypair *s __unused, 511291e5450SJens Wiklander size_t key_size_bits __unused) 512291e5450SJens Wiklander { 513291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 514291e5450SJens Wiklander } 515291e5450SJens Wiklander 516291e5450SJens Wiklander TEE_Result crypto_acipher_gen_dh_key(struct dh_keypair *key __unused, 517291e5450SJens Wiklander struct bignum *q __unused, 518291e5450SJens Wiklander size_t xbits __unused) 519291e5450SJens Wiklander { 520291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 521291e5450SJens Wiklander } 522291e5450SJens Wiklander 523291e5450SJens Wiklander TEE_Result 524291e5450SJens Wiklander crypto_acipher_dh_shared_secret(struct dh_keypair *private_key __unused, 525291e5450SJens Wiklander struct bignum *public_key __unused, 526291e5450SJens Wiklander struct bignum *secret __unused) 527291e5450SJens Wiklander { 528291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 529291e5450SJens Wiklander } 530291e5450SJens Wiklander #endif /*!CFG_CRYPTO_DH || !_CFG_CRYPTO_WITH_ACIPHER*/ 531291e5450SJens Wiklander 532291e5450SJens Wiklander #if !defined(CFG_CRYPTO_ECC) || !defined(_CFG_CRYPTO_WITH_ACIPHER) 533291e5450SJens Wiklander TEE_Result 534291e5450SJens Wiklander crypto_acipher_alloc_ecc_public_key(struct ecc_public_key *s __unused, 535291e5450SJens Wiklander size_t key_size_bits __unused) 536291e5450SJens Wiklander { 537291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 538291e5450SJens Wiklander } 539291e5450SJens Wiklander 540291e5450SJens Wiklander TEE_Result crypto_acipher_alloc_ecc_keypair(struct ecc_keypair *s __unused, 541291e5450SJens Wiklander size_t key_size_bits __unused) 542291e5450SJens Wiklander { 543291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 544291e5450SJens Wiklander } 545291e5450SJens Wiklander 546291e5450SJens Wiklander void crypto_acipher_free_ecc_public_key(struct ecc_public_key *s __unused) 547291e5450SJens Wiklander { 548291e5450SJens Wiklander } 549291e5450SJens Wiklander 550291e5450SJens Wiklander TEE_Result crypto_acipher_gen_ecc_key(struct ecc_keypair *key __unused) 551291e5450SJens Wiklander { 552291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 553291e5450SJens Wiklander } 554291e5450SJens Wiklander 555291e5450SJens Wiklander TEE_Result crypto_acipher_ecc_sign(uint32_t algo __unused, 556291e5450SJens Wiklander struct ecc_keypair *key __unused, 557291e5450SJens Wiklander const uint8_t *msg __unused, 558291e5450SJens Wiklander size_t msg_len __unused, 559291e5450SJens Wiklander 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 crypto_acipher_ecc_verify(uint32_t algo __unused, 566291e5450SJens Wiklander struct ecc_public_key *key __unused, 567291e5450SJens Wiklander const uint8_t *msg __unused, 568291e5450SJens Wiklander size_t msg_len __unused, 569291e5450SJens Wiklander const uint8_t *sig __unused, 570291e5450SJens Wiklander size_t sig_len __unused) 571291e5450SJens Wiklander { 572291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 573291e5450SJens Wiklander } 574291e5450SJens Wiklander 575291e5450SJens Wiklander TEE_Result 576291e5450SJens Wiklander crypto_acipher_ecc_shared_secret(struct ecc_keypair *private_key __unused, 577291e5450SJens Wiklander struct ecc_public_key *public_key __unused, 578291e5450SJens Wiklander void *secret __unused, 579291e5450SJens Wiklander unsigned long *secret_len __unused) 580291e5450SJens Wiklander { 581291e5450SJens Wiklander return TEE_ERROR_NOT_IMPLEMENTED; 582291e5450SJens Wiklander } 583291e5450SJens Wiklander #endif /*!CFG_CRYPTO_ECC || !_CFG_CRYPTO_WITH_ACIPHER*/ 584