Files
SDK_GD32W51x/PROT/mbedtls_ns_callable/mbedtls_nsc.h
2023-05-18 18:53:00 +08:00

149 lines
5.2 KiB
C

#ifndef __MBEDTLS_NSC_H__
#define __MBEDTLS_NSC_H__
/**
* A read-only input memory region provided to an RoT Service.
*/
typedef struct nsc_invec {
const void *base; /*!< the start address of the memory buffer */
size_t len; /*!< the size in bytes */
} nsc_invec;
/**
* A writable output memory region provided to an RoT Service.
*/
typedef struct nsc_outvec {
void *base; /*!< the start address of the memory buffer */
size_t len; /*!< the size in bytes */
} nsc_outvec;
#define __mbedtls_secure_gateway_attributes__ \
__attribute__((cmse_nonsecure_entry, noinline, section("SFN")))
#define MBEDTLS_INT_FUNCTION(NSC_NAME) \
int mbedtls_##NSC_NAME##_nsc(nsc_invec in_vec[], \
size_t in_len, \
nsc_outvec out_vec[],\
size_t out_len)
#define MBEDTLS_VOID_FUNCTION(NSC_NAME) \
void mbedtls_##NSC_NAME##_nsc(nsc_invec in_vec[], \
size_t in_len, \
nsc_outvec out_vec[], \
size_t out_len)
#define MBEDTLS_ATTR_INT_FUNCTION(NSC_NAME) \
__mbedtls_secure_gateway_attributes__ \
MBEDTLS_INT_FUNCTION(NSC_NAME)
#define MBEDTLS_ATTR_VOID_FUNCTION(NSC_NAME) \
__mbedtls_secure_gateway_attributes__ \
MBEDTLS_VOID_FUNCTION(NSC_NAME)
#if defined(MBEDTLS_CIPHER_C)
MBEDTLS_INT_FUNCTION(mbedtls_cipher_auth_decrypt);
#if defined(MBEDTLS_CIPHER_MODE_AEAD)
MBEDTLS_INT_FUNCTION(mbedtls_cipher_auth_encrypt);
#endif
MBEDTLS_INT_FUNCTION(mbedtls_cipher_crypt);
MBEDTLS_VOID_FUNCTION(mbedtls_cipher_free);
MBEDTLS_VOID_FUNCTION(mbedtls_cipher_info_from_type);
#if defined(MBEDTLS_CIPHER_MODE_WITH_PADDING)
MBEDTLS_INT_FUNCTION(mbedtls_cipher_set_padding_mode);
#endif
MBEDTLS_INT_FUNCTION(mbedtls_cipher_setkey);
MBEDTLS_INT_FUNCTION(mbedtls_cipher_setup);
#endif /*MBEDTLS_CIPHER_C*/
#if defined(MBEDTLS_DHM_C)
MBEDTLS_INT_FUNCTION(mbedtls_dhm_calc_secret);
MBEDTLS_VOID_FUNCTION(mbedtls_dhm_free);
MBEDTLS_INT_FUNCTION(mbedtls_dhm_make_public);
MBEDTLS_INT_FUNCTION(mbedtls_dhm_read_params);
MBEDTLS_INT_FUNCTION(mbedtls_dhm_make_params);
MBEDTLS_INT_FUNCTION(mbedtls_dhm_read_public);
MBEDTLS_INT_FUNCTION(mbedtls_dhm_set_group);
#endif /* MBEDTLS_DHM_C */
#if defined(MBEDTLS_ECDH_C)
MBEDTLS_INT_FUNCTION(mbedtls_ecdh_calc_secret);
MBEDTLS_INT_FUNCTION(mbedtls_ecdh_get_params);
MBEDTLS_INT_FUNCTION(mbedtls_ecdh_make_public);
MBEDTLS_INT_FUNCTION(mbedtls_ecdh_read_params);
MBEDTLS_INT_FUNCTION(mbedtls_ecdh_make_params);
MBEDTLS_INT_FUNCTION(mbedtls_ecdh_read_public);
MBEDTLS_INT_FUNCTION(mbedtls_ecdh_setup);
MBEDTLS_VOID_FUNCTION(mbedtls_ecdh_free);
MBEDTLS_VOID_FUNCTION(mbedtls_ecdh_init);
#endif /*MBEDTLS_ECDH_C*/
#if defined(MBEDTLS_ECP_C)
#endif /* MBEDTLS_ECP_C */
#if defined(MBEDTLS_PK_C)
MBEDTLS_INT_FUNCTION(mbedtls_pk_can_do);
MBEDTLS_VOID_FUNCTION(mbedtls_pk_free);
MBEDTLS_INT_FUNCTION(mbedtls_pk_encrypt);
MBEDTLS_INT_FUNCTION(mbedtls_pk_sign_restartable);
MBEDTLS_INT_FUNCTION(mbedtls_pk_verify_restartable);
MBEDTLS_INT_FUNCTION(mbedtls_pk_decrypt);
MBEDTLS_VOID_FUNCTION(mbedtls_pk_get_bitlen);
MBEDTLS_INT_FUNCTION(mbedtls_pk_debug);
MBEDTLS_INT_FUNCTION(mbedtls_pk_parse_subpubkey);
MBEDTLS_INT_FUNCTION(mbedtls_pk_parse_key);
MBEDTLS_VOID_FUNCTION(mbedtls_pk_get_grp_id);
#endif /* MBEDTLS_PK_C */
#if defined(MBEDTLS_BIGNUM_C)
MBEDTLS_VOID_FUNCTION(mbedtls_mpi_free);
MBEDTLS_INT_FUNCTION(mbedtls_mpi_copy);
MBEDTLS_VOID_FUNCTION(mbedtls_mpi_size);
MBEDTLS_INT_FUNCTION(mbedtls_mpi_read_binary);
MBEDTLS_INT_FUNCTION(mbedtls_mpi_read_string);
#endif /* MBEDTLS_BIGNUM_C */
#if defined(MBEDTLS_X509_CRT_PARSE_C)
MBEDTLS_INT_FUNCTION(mbedtls_x509_crt_verify_info);
#if defined(MBEDTLS_X509_CHECK_EXTENDED_KEY_USAGE)
MBEDTLS_INT_FUNCTION(mbedtls_x509_crt_check_extended_key_usage);
#endif
#if defined(MBEDTLS_X509_CHECK_KEY_USAGE)
MBEDTLS_INT_FUNCTION(mbedtls_x509_crt_check_key_usage);
#endif
MBEDTLS_VOID_FUNCTION(mbedtls_x509_crt_free);
MBEDTLS_INT_FUNCTION(mbedtls_x509_crt_parse_der_nocopy);
MBEDTLS_INT_FUNCTION(mbedtls_x509_crt_verify_restartable);
MBEDTLS_INT_FUNCTION(mbedtls_x509_crt_info);
MBEDTLS_INT_FUNCTION(mbedtls_x509_crt_parse);
#endif /* MBEDTLS_X509_CRT_PARSE_C */
#if defined(MBEDTLS_MD_C)
MBEDTLS_VOID_FUNCTION(mbedtls_md_info_from_type);
MBEDTLS_INT_FUNCTION(mbedtls_md);
#endif /* MBEDTLS_MD_C */
#if defined(MBEDTLS_AES_C)
MBEDTLS_INT_FUNCTION(mbedtls_aes_crypt_cbc);
MBEDTLS_INT_FUNCTION(mbedtls_aes_crypt_cfb128);
MBEDTLS_INT_FUNCTION(mbedtls_aes_setkey_dec);
MBEDTLS_INT_FUNCTION(mbedtls_aes_setkey_enc);
#endif
MBEDTLS_INT_FUNCTION(mem_s2ns_copy);
/*secure and non-secure region may call the following function*/
int mbedtls_random_nsc(void *p_rng, unsigned char *output, size_t output_len);
int mbedtls_verify_nsc(void *data, mbedtls_x509_crt *crt, int depth, uint32_t *flags);
//void rom_set_mutex_func_nsc(int tolock, void *func);
#endif /*__MBEDTLS_NSC_H__*/