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