1 /* 2 * SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 #pragma once 8 9 #include "mbedtls/aes.h" 10 #include "mbedtls/asn1.h" 11 #include "mbedtls/asn1write.h" 12 #include "mbedtls/base64.h" 13 #include "mbedtls/bignum.h" 14 #include "mbedtls/ccm.h" 15 #include "mbedtls/cipher.h" 16 #include "mbedtls/cmac.h" 17 #include "mbedtls/ctr_drbg.h" 18 #include "mbedtls/dhm.h" 19 #include "mbedtls/ecdh.h" 20 #include "mbedtls/ecdsa.h" 21 #include "mbedtls/ecjpake.h" 22 #include "mbedtls/ecp.h" 23 #include "mbedtls/entropy.h" 24 #include "mbedtls/hmac_drbg.h" 25 #include "mbedtls/md.h" 26 #include "mbedtls/md5.h" 27 #include "mbedtls/oid.h" 28 #include "mbedtls/pem.h" 29 #include "mbedtls/pkcs12.h" 30 #include "mbedtls/pkcs5.h" 31 #include "mbedtls/pk.h" 32 #include "mbedtls/platform.h" 33 #include "mbedtls/rsa.h" 34 #include "mbedtls/sha1.h" 35 #include "mbedtls/sha256.h" 36 #include "mbedtls/sha512.h" 37 #include "mbedtls/ssl_ciphersuites.h" 38 #include "mbedtls/ssl.h" 39 #include "mbedtls/x509_crt.h" 40 #include "mbedtls/x509.h" 41 42 #ifdef __cplusplus 43 extern "C" { 44 #endif 45 46 #if (!defined(CONFIG_MBEDTLS_THREADING_C)) 47 #error CONFIG_MBEDTLS_THREADING_C 48 #endif 49 50 typedef void (*_rom_mbedtls_threading_set_alt_t)(void (*mutex_init)(mbedtls_threading_mutex_t *), 51 void (*mutex_free)(mbedtls_threading_mutex_t *), 52 int (*mutex_lock)(mbedtls_threading_mutex_t *), 53 int (*mutex_unlock)(mbedtls_threading_mutex_t *)); 54 55 typedef struct mbedtls_rom_funcs { 56 void (*_rom_mbedtls_aes_init)( mbedtls_aes_context *ctx ); 57 int (*_rom_ssl_write_client_hello)( mbedtls_ssl_context *ssl ); 58 int (*_rom_ssl_parse_server_hello)( mbedtls_ssl_context *ssl ); 59 int (*_rom_ssl_parse_server_key_exchange)( mbedtls_ssl_context *ssl ); 60 int (*_rom_ssl_parse_certificate_request)( mbedtls_ssl_context *ssl ); 61 int (*_rom_ssl_parse_server_hello_done)( mbedtls_ssl_context *ssl ); 62 int (*_rom_ssl_write_client_key_exchange)( mbedtls_ssl_context *ssl ); 63 int (*_rom_ssl_write_certificate_verify)( mbedtls_ssl_context *ssl ); 64 int (*_rom_ssl_parse_new_session_ticket)( mbedtls_ssl_context *ssl ); 65 void (*_rom_mbedtls_aes_free)( mbedtls_aes_context *ctx ); 66 int (*_rom_mbedtls_aes_setkey_enc)( mbedtls_aes_context *ctx, const unsigned char *key, unsigned int keybits ); 67 int (*_rom_mbedtls_aes_setkey_dec)( mbedtls_aes_context *ctx, const unsigned char *key, unsigned int keybits ); 68 int (*_rom_mbedtls_aes_crypt_ecb)( mbedtls_aes_context *ctx, int mode, const unsigned char input[16], unsigned char output[16] ); 69 int (*_rom_mbedtls_aes_crypt_cbc)( mbedtls_aes_context *ctx, int mode, size_t length, unsigned char iv[16], const unsigned char *input, unsigned char *output ); 70 int (*_rom_mbedtls_internal_aes_encrypt)( mbedtls_aes_context *ctx, const unsigned char input[16], unsigned char output[16] ); 71 int (*_rom_mbedtls_internal_aes_decrypt)( mbedtls_aes_context *ctx, const unsigned char input[16], unsigned char output[16] ); 72 int (*_rom_mbedtls_asn1_get_len)( unsigned char **p, const unsigned char *end, size_t *len ); 73 int (*_rom_mbedtls_asn1_get_tag)( unsigned char **p, const unsigned char *end, size_t *len, int tag ); 74 int (*_rom_mbedtls_asn1_get_bool)( unsigned char **p, const unsigned char *end, int *val ); 75 int (*_rom_mbedtls_asn1_get_int)( unsigned char **p, const unsigned char *end, int *val ); 76 int (*_rom_mbedtls_asn1_get_bitstring)( unsigned char **p, const unsigned char *end, mbedtls_asn1_bitstring *bs); 77 int (*_rom_mbedtls_asn1_get_bitstring_null)( unsigned char **p, const unsigned char *end, size_t *len ); 78 int (*_rom_mbedtls_asn1_get_sequence_of)( unsigned char **p, const unsigned char *end, mbedtls_asn1_sequence *cur, int tag); 79 int (*_rom_mbedtls_asn1_get_mpi)( unsigned char **p, const unsigned char *end, mbedtls_mpi *X ); 80 int (*_rom_mbedtls_asn1_get_alg)( unsigned char **p, const unsigned char *end, mbedtls_asn1_buf *alg, mbedtls_asn1_buf *params ); 81 int (*_rom_mbedtls_asn1_get_alg_null)( unsigned char **p, const unsigned char *end, mbedtls_asn1_buf *alg ); 82 int (*_rom_mbedtls_asn1_write_len)( unsigned char **p, const unsigned char *start, size_t len ); 83 int (*_rom_mbedtls_asn1_write_tag)( unsigned char **p, const unsigned char *start, unsigned char tag ); 84 int (*_rom_mbedtls_asn1_write_mpi)( unsigned char **p, const unsigned char *start, const mbedtls_mpi *X ); 85 int (*_rom_mbedtls_base64_decode)( unsigned char *dst, size_t dlen, size_t *olen, const unsigned char *src, size_t slen ); 86 void (*_rom_mbedtls_mpi_init)( mbedtls_mpi *X ); 87 void (*_rom_mbedtls_mpi_free)( mbedtls_mpi *X ); 88 int (*_rom_mbedtls_mpi_grow)( mbedtls_mpi *X, size_t nblimbs ); 89 int (*_rom_mbedtls_mpi_shrink)( mbedtls_mpi *X, size_t nblimbs ); 90 int (*_rom_mbedtls_mpi_copy)( mbedtls_mpi *X, const mbedtls_mpi *Y ); 91 int (*_rom_mbedtls_mpi_safe_cond_assign)( mbedtls_mpi *X, const mbedtls_mpi *Y, unsigned char assign ); 92 int (*_rom_mbedtls_mpi_safe_cond_swap)( mbedtls_mpi *X, mbedtls_mpi *Y, unsigned char assign ); 93 int (*_rom_mbedtls_mpi_lset)( mbedtls_mpi *X, mbedtls_mpi_sint z ); 94 int (*_rom_mbedtls_mpi_get_bit)( const mbedtls_mpi *X, size_t pos ); 95 int (*_rom_mbedtls_mpi_set_bit)( mbedtls_mpi *X, size_t pos, unsigned char val ); 96 size_t (*_rom_mbedtls_mpi_lsb)( const mbedtls_mpi *X ); 97 size_t (*_rom_mbedtls_mpi_bitlen)( const mbedtls_mpi *X ); 98 size_t (*_rom_mbedtls_mpi_size)( const mbedtls_mpi *X ); 99 int (*_rom_mbedtls_mpi_read_binary)( mbedtls_mpi *X, const unsigned char *buf, size_t buflen ); 100 int (*_rom_mbedtls_mpi_write_binary)( const mbedtls_mpi *X, unsigned char *buf, size_t buflen ); 101 int (*_rom_mbedtls_mpi_shift_l)( mbedtls_mpi *X, size_t count ); 102 int (*_rom_mbedtls_mpi_shift_r)( mbedtls_mpi *X, size_t count ); 103 int (*_rom_mbedtls_mpi_cmp_abs)( const mbedtls_mpi *X, const mbedtls_mpi *Y ); 104 int (*_rom_mbedtls_mpi_cmp_mpi)( const mbedtls_mpi *X, const mbedtls_mpi *Y ); 105 int (*_rom_mbedtls_mpi_lt_mpi_ct)( const mbedtls_mpi *X, const mbedtls_mpi *Y, unsigned *ret ); 106 int (*_rom_mbedtls_mpi_cmp_int)( const mbedtls_mpi *X, mbedtls_mpi_sint z ); 107 int (*_rom_mbedtls_mpi_add_abs)( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *B ); 108 int (*_rom_mbedtls_mpi_sub_abs)( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *B ); 109 int (*_rom_mbedtls_mpi_add_mpi)( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *B ); 110 int (*_rom_mbedtls_mpi_sub_mpi)( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *B ); 111 int (*_rom_mbedtls_mpi_add_int)( mbedtls_mpi *X, const mbedtls_mpi *A, mbedtls_mpi_sint b ); 112 int (*_rom_mbedtls_mpi_sub_int)( mbedtls_mpi *X, const mbedtls_mpi *A, mbedtls_mpi_sint b ); 113 int (*_rom_mbedtls_mpi_mul_mpi)( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *B ); 114 int (*_rom_mbedtls_mpi_mul_int)( mbedtls_mpi *X, const mbedtls_mpi *A, mbedtls_mpi_uint b ); 115 int (*_rom_mbedtls_mpi_div_mpi)( mbedtls_mpi *Q, mbedtls_mpi *R, const mbedtls_mpi *A, const mbedtls_mpi *B ); 116 int (*_rom_mbedtls_mpi_div_int)( mbedtls_mpi *Q, mbedtls_mpi *R, const mbedtls_mpi *A, mbedtls_mpi_sint b ); 117 int (*_rom_mbedtls_mpi_mod_mpi)( mbedtls_mpi *R, const mbedtls_mpi *A, const mbedtls_mpi *B ); 118 int (*_rom_mbedtls_mpi_mod_int)( mbedtls_mpi_uint *r, const mbedtls_mpi *A, mbedtls_mpi_sint b ); 119 int (*_rom_mbedtls_mpi_exp_mod)( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *E, const mbedtls_mpi *N, mbedtls_mpi *_RR ); 120 int (*_rom_mbedtls_mpi_fill_random)( mbedtls_mpi *X, size_t size, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); 121 int (*_rom_mbedtls_mpi_gcd)( mbedtls_mpi *G, const mbedtls_mpi *A, const mbedtls_mpi *B ); 122 int (*_rom_mbedtls_mpi_inv_mod)( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *N ); 123 int (*_rom_mbedtls_mpi_is_prime_ext)( const mbedtls_mpi *X, int rounds, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); 124 int (*_rom_mbedtls_ccm_star_encrypt_and_tag)( mbedtls_ccm_context *ctx, size_t length, const unsigned char *iv, size_t iv_len, const unsigned char *add, size_t add_len, const unsigned char *input, unsigned char *output, unsigned char *tag, size_t tag_len ); 125 int (*_rom_mbedtls_ccm_star_auth_decrypt)( mbedtls_ccm_context *ctx, size_t length, const unsigned char *iv, size_t iv_len, const unsigned char *add, size_t add_len, const unsigned char *input, unsigned char *output, const unsigned char *tag, size_t tag_len ); 126 void (*_rom_mbedtls_cipher_init)( mbedtls_cipher_context_t *ctx ); 127 int (*_rom_mbedtls_cipher_set_padding_mode)( mbedtls_cipher_context_t *ctx, mbedtls_cipher_padding_t mode ); 128 int (*_rom_mbedtls_cipher_reset)( mbedtls_cipher_context_t *ctx ); 129 int (*_rom_mbedtls_cipher_finish)( mbedtls_cipher_context_t *ctx, unsigned char *output, size_t *olen ); 130 int (*_rom_mbedtls_cipher_crypt)( mbedtls_cipher_context_t *ctx, const unsigned char *iv, size_t iv_len, const unsigned char *input, size_t ilen, unsigned char *output, size_t *olen ); 131 int (*_rom_mbedtls_cipher_cmac_starts)( mbedtls_cipher_context_t *ctx, const unsigned char *key, size_t keybits ); 132 int (*_rom_mbedtls_cipher_cmac_update)( mbedtls_cipher_context_t *ctx, const unsigned char *input, size_t ilen ); 133 int (*_rom_mbedtls_cipher_cmac_finish)( mbedtls_cipher_context_t *ctx, unsigned char *output ); 134 void (*_rom_mbedtls_ctr_drbg_init)( mbedtls_ctr_drbg_context *ctx ); 135 int (*_rom_mbedtls_ctr_drbg_seed)( mbedtls_ctr_drbg_context *ctx, int (*f_entropy)(void *, unsigned char *, size_t), void *p_entropy, const unsigned char *custom, size_t len ); 136 void (*_rom_mbedtls_ctr_drbg_free)( mbedtls_ctr_drbg_context *ctx ); 137 int (*_rom_mbedtls_ctr_drbg_reseed)( mbedtls_ctr_drbg_context *ctx, const unsigned char *additional, size_t len ); 138 int (*_rom_mbedtls_ctr_drbg_random_with_add)( void *p_rng, unsigned char *output, size_t output_len, const unsigned char *additional, size_t add_len ); 139 int (*_rom_mbedtls_ctr_drbg_random)( void *p_rng, unsigned char *output, size_t output_len ); 140 void (*_rom_mbedtls_dhm_init)( mbedtls_dhm_context *ctx ); 141 int (*_rom_mbedtls_dhm_read_params)( mbedtls_dhm_context *ctx, unsigned char **p, const unsigned char *end ); 142 int (*_rom_mbedtls_dhm_make_public)( mbedtls_dhm_context *ctx, int x_size, unsigned char *output, size_t olen, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); 143 int (*_rom_mbedtls_dhm_calc_secret)( mbedtls_dhm_context *ctx, unsigned char *output, size_t output_size, size_t *olen, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); 144 void (*_rom_mbedtls_dhm_free)( mbedtls_dhm_context *ctx ); 145 void (*_rom_mbedtls_ecdh_init)( mbedtls_ecdh_context *ctx ); 146 int (*_rom_mbedtls_ecdh_setup)( mbedtls_ecdh_context *ctx, mbedtls_ecp_group_id grp_id ); 147 void (*_rom_mbedtls_ecdh_free)( mbedtls_ecdh_context *ctx ); 148 int (*_rom_mbedtls_ecdh_read_params)( mbedtls_ecdh_context *ctx, const unsigned char **buf, const unsigned char *end ); 149 int (*_rom_mbedtls_ecdh_get_params)( mbedtls_ecdh_context *ctx, const mbedtls_ecp_keypair *key, mbedtls_ecdh_side side ); 150 int (*_rom_mbedtls_ecdh_make_public)( mbedtls_ecdh_context *ctx, size_t *olen, unsigned char *buf, size_t blen, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); 151 int (*_rom_mbedtls_ecdh_calc_secret)( mbedtls_ecdh_context *ctx, size_t *olen, unsigned char *buf, size_t blen, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); 152 void (*_rom_mbedtls_ecdh_enable_restart)( mbedtls_ecdh_context *ctx ); 153 int (*_rom_mbedtls_ecdsa_write_signature)( mbedtls_ecdsa_context *ctx, mbedtls_md_type_t md_alg, const unsigned char *hash, size_t hlen, unsigned char *sig, size_t *slen, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); 154 int (*_rom_mbedtls_ecdsa_write_signature_restartable)( mbedtls_ecdsa_context *ctx, mbedtls_md_type_t md_alg, const unsigned char *hash, size_t hlen, unsigned char *sig, size_t *slen, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, mbedtls_ecdsa_restart_ctx *rs_ctx ); 155 int (*_rom_mbedtls_ecdsa_read_signature)( mbedtls_ecdsa_context *ctx, const unsigned char *hash, size_t hlen, const unsigned char *sig, size_t slen ); 156 int (*_rom_mbedtls_ecdsa_read_signature_restartable)( mbedtls_ecdsa_context *ctx, const unsigned char *hash, size_t hlen, const unsigned char *sig, size_t slen, mbedtls_ecdsa_restart_ctx *rs_ctx ); 157 int (*_rom_mbedtls_ecdsa_from_keypair)( mbedtls_ecdsa_context *ctx, const mbedtls_ecp_keypair *key ); 158 void (*_rom_mbedtls_ecdsa_init)( mbedtls_ecdsa_context *ctx ); 159 void (*_rom_mbedtls_ecdsa_free)( mbedtls_ecdsa_context *ctx ); 160 void (*_rom_mbedtls_ecdsa_restart_init)( mbedtls_ecdsa_restart_ctx *ctx ); 161 void (*_rom_mbedtls_ecdsa_restart_free)( mbedtls_ecdsa_restart_ctx *ctx ); 162 void (*_rom_mbedtls_ecjpake_init)( mbedtls_ecjpake_context *ctx ); 163 int (*_rom_mbedtls_ecjpake_check)( const mbedtls_ecjpake_context *ctx ); 164 int (*_rom_mbedtls_ecjpake_write_round_one)( mbedtls_ecjpake_context *ctx, unsigned char *buf, size_t len, size_t *olen, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); 165 int (*_rom_mbedtls_ecjpake_read_round_one)( mbedtls_ecjpake_context *ctx, const unsigned char *buf, size_t len ); 166 int (*_rom_mbedtls_ecjpake_write_round_two)( mbedtls_ecjpake_context *ctx, unsigned char *buf, size_t len, size_t *olen, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); 167 int (*_rom_mbedtls_ecjpake_read_round_two)( mbedtls_ecjpake_context *ctx, const unsigned char *buf, size_t len ); 168 int (*_rom_mbedtls_ecjpake_derive_secret)( mbedtls_ecjpake_context *ctx, unsigned char *buf, size_t len, size_t *olen, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); 169 void (*_rom_mbedtls_ecjpake_free)( mbedtls_ecjpake_context *ctx ); 170 int (*_rom_mbedtls_ecp_check_budget)( const mbedtls_ecp_group *grp, mbedtls_ecp_restart_ctx *rs_ctx, unsigned ops ); 171 int (*_rom_mbedtls_ecp_restart_is_enabled)( void ); 172 const mbedtls_ecp_curve_info *(*_rom_mbedtls_ecp_curve_list)( void ); 173 const mbedtls_ecp_group_id *(*_rom_mbedtls_ecp_grp_id_list)( void ); 174 const mbedtls_ecp_curve_info *(*_rom_mbedtls_ecp_curve_info_from_grp_id)( mbedtls_ecp_group_id grp_id ); 175 const mbedtls_ecp_curve_info *(*_rom_mbedtls_ecp_curve_info_from_tls_id)( uint16_t tls_id ); 176 void (*_rom_mbedtls_ecp_point_init)( mbedtls_ecp_point *pt ); 177 void (*_rom_mbedtls_ecp_group_init)( mbedtls_ecp_group *grp ); 178 void (*_rom_mbedtls_ecp_keypair_init)( mbedtls_ecp_keypair *key ); 179 void (*_rom_mbedtls_ecp_point_free)( mbedtls_ecp_point *pt ); 180 void (*_rom_mbedtls_ecp_group_free)( mbedtls_ecp_group *grp ); 181 void (*_rom_mbedtls_ecp_keypair_free)( mbedtls_ecp_keypair *key ); 182 void (*_rom_mbedtls_ecp_restart_init)( mbedtls_ecp_restart_ctx *ctx ); 183 void (*_rom_mbedtls_ecp_restart_free)( mbedtls_ecp_restart_ctx *ctx ); 184 int (*_rom_mbedtls_ecp_copy)( mbedtls_ecp_point *P, const mbedtls_ecp_point *Q ); 185 int (*_rom_mbedtls_ecp_group_copy)( mbedtls_ecp_group *dst, const mbedtls_ecp_group *src ); 186 int (*_rom_mbedtls_ecp_set_zero)( mbedtls_ecp_point *pt ); 187 int (*_rom_mbedtls_ecp_is_zero)( mbedtls_ecp_point *pt ); 188 int (*_rom_mbedtls_ecp_point_cmp)( const mbedtls_ecp_point *P, const mbedtls_ecp_point *Q ); 189 int (*_rom_mbedtls_ecp_point_write_binary)( const mbedtls_ecp_group *grp, const mbedtls_ecp_point *P, int format, size_t *olen, unsigned char *buf, size_t buflen ); 190 int (*_rom_mbedtls_ecp_point_read_binary)( const mbedtls_ecp_group *grp, mbedtls_ecp_point *P, const unsigned char *buf, size_t ilen ); 191 int (*_rom_mbedtls_ecp_tls_read_point)( const mbedtls_ecp_group *grp, mbedtls_ecp_point *pt, const unsigned char **buf, size_t len ); 192 int (*_rom_mbedtls_ecp_tls_write_point)( const mbedtls_ecp_group *grp, const mbedtls_ecp_point *pt, int format, size_t *olen, unsigned char *buf, size_t blen ); 193 int (*_rom_mbedtls_ecp_group_load)( mbedtls_ecp_group *grp, mbedtls_ecp_group_id id ); 194 int (*_rom_mbedtls_ecp_tls_read_group)( mbedtls_ecp_group *grp, const unsigned char **buf, size_t len ); 195 int (*_rom_mbedtls_ecp_tls_read_group_id)( mbedtls_ecp_group_id *grp, const unsigned char **buf, size_t len ); 196 int (*_rom_mbedtls_ecp_tls_write_group)( const mbedtls_ecp_group *grp, size_t *olen, unsigned char *buf, size_t blen ); 197 int (*_rom_mbedtls_ecp_mul)( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, const mbedtls_mpi *m, const mbedtls_ecp_point *P, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); 198 int (*_rom_mbedtls_ecp_mul_restartable)( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, const mbedtls_mpi *m, const mbedtls_ecp_point *P, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, mbedtls_ecp_restart_ctx *rs_ctx ); 199 int (*_rom_mbedtls_ecp_muladd)( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, const mbedtls_mpi *m, const mbedtls_ecp_point *P, const mbedtls_mpi *n, const mbedtls_ecp_point *Q ); 200 int (*_rom_mbedtls_ecp_muladd_restartable)( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, const mbedtls_mpi *m, const mbedtls_ecp_point *P, const mbedtls_mpi *n, const mbedtls_ecp_point *Q, mbedtls_ecp_restart_ctx *rs_ctx ); 201 int (*_rom_mbedtls_ecp_check_pubkey)( const mbedtls_ecp_group *grp, const mbedtls_ecp_point *pt ); 202 int (*_rom_mbedtls_ecp_check_privkey)( const mbedtls_ecp_group *grp, const mbedtls_mpi *d ); 203 int (*_rom_mbedtls_ecp_gen_privkey)( const mbedtls_ecp_group *grp, mbedtls_mpi *d, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); 204 int (*_rom_mbedtls_ecp_gen_keypair_base)( mbedtls_ecp_group *grp, const mbedtls_ecp_point *G, mbedtls_mpi *d, mbedtls_ecp_point *Q, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); 205 int (*_rom_mbedtls_ecp_check_pub_priv)( const mbedtls_ecp_keypair *pub, const mbedtls_ecp_keypair *prv ); 206 int (*_rom_mbedtls_reserved0)(void); 207 int (*_rom_mbedtls_reserved1)(void); 208 int (*_rom_mbedtls_gcm_crypt_and_tag)( mbedtls_gcm_context *ctx, int mode, size_t length, const unsigned char *iv, size_t iv_len, const unsigned char *add, size_t add_len, const unsigned char *input, unsigned char *output, size_t tag_len, unsigned char *tag ); 209 int (*_rom_mbedtls_gcm_starts)( mbedtls_gcm_context *ctx, int mode, const unsigned char *iv, size_t iv_len, const unsigned char *add, size_t add_len ); 210 int (*_rom_mbedtls_gcm_update)( mbedtls_gcm_context *ctx, size_t length, const unsigned char *input, unsigned char *output ); 211 int (*_rom_mbedtls_gcm_finish)( mbedtls_gcm_context *ctx, unsigned char *tag, size_t tag_len ); 212 void (*_rom_mbedtls_hmac_drbg_init)( mbedtls_hmac_drbg_context *ctx ); 213 int (*_rom_mbedtls_hmac_drbg_seed_buf)( mbedtls_hmac_drbg_context *ctx, const mbedtls_md_info_t * md_info, const unsigned char *data, size_t data_len ); 214 int (*_rom_mbedtls_hmac_drbg_update_ret)( mbedtls_hmac_drbg_context *ctx, const unsigned char *additional, size_t add_len ); 215 int (*_rom_mbedtls_hmac_drbg_reseed)( mbedtls_hmac_drbg_context *ctx, const unsigned char *additional, size_t len ); 216 int (*_rom_mbedtls_hmac_drbg_random_with_add)( void *p_rng, unsigned char *output, size_t output_len, const unsigned char *additional, size_t add_len ); 217 int (*_rom_mbedtls_hmac_drbg_random)( void *p_rng, unsigned char *output, size_t out_len ); 218 void (*_rom_mbedtls_hmac_drbg_free)( mbedtls_hmac_drbg_context *ctx ); 219 const int *(*_rom_mbedtls_md_list)( void ); 220 void (*_rom_mbedtls_md_init)( mbedtls_md_context_t *ctx ); 221 void (*_rom_mbedtls_md_free)( mbedtls_md_context_t *ctx ); 222 int (*_rom_mbedtls_md_setup)( mbedtls_md_context_t *ctx, const mbedtls_md_info_t *md_info, int hmac ); 223 int (*_rom_mbedtls_md_clone)( mbedtls_md_context_t *dst, const mbedtls_md_context_t *src ); 224 unsigned char (*_rom_mbedtls_md_get_size)( const mbedtls_md_info_t *md_info ); 225 mbedtls_md_type_t (*_rom_mbedtls_md_get_type)( const mbedtls_md_info_t *md_info ); 226 int (*_rom_mbedtls_md_starts)( mbedtls_md_context_t *ctx ); 227 int (*_rom_mbedtls_md_update)( mbedtls_md_context_t *ctx, const unsigned char *input, size_t ilen ); 228 int (*_rom_mbedtls_md_finish)( mbedtls_md_context_t *ctx, unsigned char *output ); 229 int (*_rom_mbedtls_md)( const mbedtls_md_info_t *md_info, const unsigned char *input, size_t ilen, unsigned char *output ); 230 int (*_rom_mbedtls_md_hmac_starts)( mbedtls_md_context_t *ctx, const unsigned char *key, size_t keylen ); 231 int (*_rom_mbedtls_md_hmac_update)( mbedtls_md_context_t *ctx, const unsigned char *input, size_t ilen ); 232 int (*_rom_mbedtls_md_hmac_finish)( mbedtls_md_context_t *ctx, unsigned char *output); 233 int (*_rom_mbedtls_md_hmac_reset)( mbedtls_md_context_t *ctx ); 234 int (*_rom_mbedtls_oid_get_x509_ext_type)( const mbedtls_asn1_buf *oid, int *ext_type ); 235 int (*_rom_mbedtls_oid_get_pk_alg)( const mbedtls_asn1_buf *oid, mbedtls_pk_type_t *pk_alg ); 236 int (*_rom_mbedtls_oid_get_ec_grp)( const mbedtls_asn1_buf *oid, mbedtls_ecp_group_id *grp_id ); 237 int (*_rom_mbedtls_oid_get_sig_alg)( const mbedtls_asn1_buf *oid, mbedtls_md_type_t *md_alg, mbedtls_pk_type_t *pk_alg ); 238 int (*_rom_mbedtls_oid_get_md_alg)( const mbedtls_asn1_buf *oid, mbedtls_md_type_t *md_alg ); 239 int (*_rom_mbedtls_oid_get_md_hmac)( const mbedtls_asn1_buf *oid, mbedtls_md_type_t *md_hmac ); 240 int (*_rom_mbedtls_oid_get_oid_by_md)( mbedtls_md_type_t md_alg, const char **oid, size_t *olen ); 241 int (*_rom_mbedtls_oid_get_cipher_alg)( const mbedtls_asn1_buf *oid, mbedtls_cipher_type_t *cipher_alg ); 242 int (*_rom_mbedtls_oid_get_pkcs12_pbe_alg)( const mbedtls_asn1_buf *oid, mbedtls_md_type_t *md_alg, mbedtls_cipher_type_t *cipher_alg ); 243 void (*_rom_mbedtls_pem_init)( void *ctx ); 244 void (*_rom_mbedtls_pem_free)( void *ctx ); 245 int (*_rom_mbedtls_pkcs12_pbe_sha1_rc4_128)( mbedtls_asn1_buf *pbe_params, int mode, const unsigned char *pwd, size_t pwdlen, const unsigned char *input, size_t len, unsigned char *output ); 246 int (*_rom_mbedtls_pkcs12_pbe)( mbedtls_asn1_buf *pbe_params, int mode, mbedtls_cipher_type_t cipher_type, mbedtls_md_type_t md_type, const unsigned char *pwd, size_t pwdlen, const unsigned char *input, size_t len, unsigned char *output ); 247 int (*_rom_mbedtls_pkcs12_derivation)( unsigned char *data, size_t datalen, const unsigned char *pwd, size_t pwdlen, const unsigned char *salt, size_t saltlen, mbedtls_md_type_t mbedtls_md, int id, int iterations ); 248 int (*_rom_mbedtls_pkcs5_pbes2)( const mbedtls_asn1_buf *pbe_params, int mode, const unsigned char *pwd, size_t pwdlen, const unsigned char *data, size_t datalen, unsigned char *output ); 249 int (*_rom_mbedtls_pkcs5_pbkdf2_hmac)( mbedtls_md_context_t *ctx, const unsigned char *password, size_t plen, const unsigned char *salt, size_t slen, unsigned int iteration_count, uint32_t key_length, unsigned char *output ); 250 const mbedtls_pk_info_t *(*_rom_mbedtls_pk_info_from_type)( mbedtls_pk_type_t pk_type ); 251 void (*_rom_mbedtls_pk_init)( mbedtls_pk_context *ctx ); 252 void (*_rom_mbedtls_pk_free)( mbedtls_pk_context *ctx ); 253 void (*_rom_mbedtls_pk_restart_init)( mbedtls_pk_restart_ctx *ctx ); 254 void (*_rom_mbedtls_pk_restart_free)( mbedtls_pk_restart_ctx *ctx ); 255 int (*_rom_mbedtls_pk_setup)( mbedtls_pk_context *ctx, const mbedtls_pk_info_t *info ); 256 int (*_rom_mbedtls_pk_can_do)( const mbedtls_pk_context *ctx, mbedtls_pk_type_t type ); 257 int (*_rom_mbedtls_pk_verify)( mbedtls_pk_context *ctx, mbedtls_md_type_t md_alg, const unsigned char *hash, size_t hash_len, const unsigned char *sig, size_t sig_len ); 258 int (*_rom_mbedtls_pk_verify_restartable)( mbedtls_pk_context *ctx, mbedtls_md_type_t md_alg, const unsigned char *hash, size_t hash_len, const unsigned char *sig, size_t sig_len, mbedtls_pk_restart_ctx *rs_ctx ); 259 int (*_rom_mbedtls_pk_verify_ext)( mbedtls_pk_type_t type, const void *options, mbedtls_pk_context *ctx, mbedtls_md_type_t md_alg, const unsigned char *hash, size_t hash_len, const unsigned char *sig, size_t sig_len ); 260 int (*_rom_mbedtls_pk_sign_restartable)( mbedtls_pk_context *ctx, mbedtls_md_type_t md_alg, const unsigned char *hash, size_t hash_len, unsigned char *sig, size_t *sig_len, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, mbedtls_pk_restart_ctx *rs_ctx ); 261 int (*_rom_mbedtls_pk_encrypt)( mbedtls_pk_context *ctx, const unsigned char *input, size_t ilen, unsigned char *output, size_t *olen, size_t osize, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); 262 mbedtls_pk_type_t (*_rom_mbedtls_pk_get_type)( const mbedtls_pk_context *ctx ); 263 int (*_rom_mbedtls_pk_parse_subpubkey)( unsigned char **p, const unsigned char *end, mbedtls_pk_context *pk ); 264 void (*_rom_mbedtls_rsa_init)( mbedtls_rsa_context *ctx ); 265 int (*_rom_mbedtls_rsa_import)( mbedtls_rsa_context *ctx, const mbedtls_mpi *N, const mbedtls_mpi *P, const mbedtls_mpi *Q, const mbedtls_mpi *D, const mbedtls_mpi *E ); 266 int (*_rom_mbedtls_rsa_import_raw)( mbedtls_rsa_context *ctx, unsigned char const *N, size_t N_len, unsigned char const *P, size_t P_len, unsigned char const *Q, size_t Q_len, unsigned char const *D, size_t D_len, unsigned char const *E, size_t E_len ); 267 int (*_rom_mbedtls_rsa_complete)( mbedtls_rsa_context *ctx ); 268 int (*_rom_mbedtls_rsa_set_padding)( mbedtls_rsa_context *ctx, int padding, mbedtls_md_type_t hash_id ); 269 size_t (*_rom_mbedtls_rsa_get_len)( const mbedtls_rsa_context *ctx ); 270 int (*_rom_mbedtls_rsa_check_pubkey)( const mbedtls_rsa_context *ctx ); 271 int (*_rom_mbedtls_rsa_check_privkey)( const mbedtls_rsa_context *ctx ); 272 int (*_rom_mbedtls_rsa_check_pub_priv)( const mbedtls_rsa_context *pub, const mbedtls_rsa_context *prv ); 273 int (*_rom_mbedtls_rsa_public)( mbedtls_rsa_context *ctx, const unsigned char *input, unsigned char *output ); 274 int (*_rom_mbedtls_rsa_private)( mbedtls_rsa_context *ctx, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, const unsigned char *input, unsigned char *output ); 275 int (*_rom_mbedtls_rsa_pkcs1_encrypt)( mbedtls_rsa_context *ctx, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, size_t ilen, const unsigned char *input, unsigned char *output ); 276 int (*_rom_mbedtls_rsa_rsaes_pkcs1_v15_encrypt)( mbedtls_rsa_context *ctx, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, size_t ilen, const unsigned char *input, unsigned char *output ); 277 int (*_rom_mbedtls_rsa_rsaes_oaep_encrypt)( mbedtls_rsa_context *ctx, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, const unsigned char *label, size_t label_len, size_t ilen, const unsigned char *input, unsigned char *output ); 278 int (*_rom_mbedtls_rsa_pkcs1_decrypt)( mbedtls_rsa_context *ctx, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, size_t *olen, const unsigned char *input, unsigned char *output, size_t output_max_len ); 279 int (*_rom_mbedtls_rsa_rsaes_pkcs1_v15_decrypt)( mbedtls_rsa_context *ctx, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, size_t *olen, const unsigned char *input, unsigned char *output, size_t output_max_len ); 280 int (*_rom_mbedtls_rsa_rsaes_oaep_decrypt)( mbedtls_rsa_context *ctx, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, const unsigned char *label, size_t label_len, size_t *olen, const unsigned char *input, unsigned char *output, size_t output_max_len ); 281 int (*_rom_mbedtls_rsa_pkcs1_sign)( mbedtls_rsa_context *ctx, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, mbedtls_md_type_t md_alg, unsigned int hashlen, const unsigned char *hash, unsigned char *sig ); 282 int (*_rom_mbedtls_rsa_rsassa_pkcs1_v15_sign)( mbedtls_rsa_context *ctx, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, mbedtls_md_type_t md_alg, unsigned int hashlen, const unsigned char *hash, unsigned char *sig ); 283 int (*_rom_mbedtls_rsa_rsassa_pss_sign)( mbedtls_rsa_context *ctx, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, mbedtls_md_type_t md_alg, unsigned int hashlen, const unsigned char *hash, unsigned char *sig ); 284 int (*_rom_mbedtls_rsa_pkcs1_verify)( mbedtls_rsa_context *ctx, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, mbedtls_md_type_t md_alg, unsigned int hashlen, const unsigned char *hash, const unsigned char *sig ); 285 int (*_rom_mbedtls_rsa_rsassa_pkcs1_v15_verify)( mbedtls_rsa_context *ctx, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, mbedtls_md_type_t md_alg, unsigned int hashlen, const unsigned char *hash, const unsigned char *sig ); 286 int (*_rom_mbedtls_rsa_rsassa_pss_verify)( mbedtls_rsa_context *ctx, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, mbedtls_md_type_t md_alg, unsigned int hashlen, const unsigned char *hash, const unsigned char *sig ); 287 int (*_rom_mbedtls_rsa_rsassa_pss_verify_ext)( mbedtls_rsa_context *ctx, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, mbedtls_md_type_t md_alg, unsigned int hashlen, const unsigned char *hash, mbedtls_md_type_t mgf1_hash_id, int expected_salt_len, const unsigned char *sig ); 288 void (*_rom_mbedtls_rsa_free)( mbedtls_rsa_context *ctx ); 289 int (*_rom_mbedtls_rsa_deduce_primes)( mbedtls_mpi const *N, mbedtls_mpi const *E, mbedtls_mpi const *D, mbedtls_mpi *P, mbedtls_mpi *Q ); 290 int (*_rom_mbedtls_rsa_deduce_private_exponent)( mbedtls_mpi const *P, mbedtls_mpi const *Q, mbedtls_mpi const *E, mbedtls_mpi *D ); 291 int (*_rom_mbedtls_rsa_deduce_crt)( const mbedtls_mpi *P, const mbedtls_mpi *Q, const mbedtls_mpi *D, mbedtls_mpi *DP, mbedtls_mpi *DQ, mbedtls_mpi *QP ); 292 int (*_rom_mbedtls_rsa_validate_params)( const mbedtls_mpi *N, const mbedtls_mpi *P, const mbedtls_mpi *Q, const mbedtls_mpi *D, const mbedtls_mpi *E, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); 293 int (*_rom_mbedtls_rsa_validate_crt)( const mbedtls_mpi *P, const mbedtls_mpi *Q, const mbedtls_mpi *D, const mbedtls_mpi *DP, const mbedtls_mpi *DQ, const mbedtls_mpi *QP ); 294 void (*_rom_mbedtls_sha1_init)( mbedtls_sha1_context *ctx ); 295 void (*_rom_mbedtls_sha1_free)( mbedtls_sha1_context *ctx ); 296 void (*_rom_mbedtls_sha1_clone)( mbedtls_sha1_context *dst, const mbedtls_sha1_context *src ); 297 int (*_rom_mbedtls_sha1_starts)( mbedtls_sha1_context *ctx ); 298 int (*_rom_mbedtls_sha1_finish)( mbedtls_sha1_context *ctx, unsigned char output[20] ); 299 void (*_rom_mbedtls_sha256_init)( mbedtls_sha256_context *ctx ); 300 void (*_rom_mbedtls_sha256_free)( mbedtls_sha256_context *ctx ); 301 void (*_rom_mbedtls_sha256_clone)( mbedtls_sha256_context *dst, const mbedtls_sha256_context *src ); 302 int (*_rom_mbedtls_sha256_starts)( mbedtls_sha256_context *ctx, int is224 ); 303 int (*_rom_mbedtls_sha256_finish)( mbedtls_sha256_context *ctx, unsigned char output[32] ); 304 int (*_rom_mbedtls_sha256)( const unsigned char *input, size_t ilen, unsigned char output[32], int is224 ); 305 void (*_rom_mbedtls_sha512_init)( mbedtls_sha512_context *ctx ); 306 void (*_rom_mbedtls_sha512_free)( mbedtls_sha512_context *ctx ); 307 void (*_rom_mbedtls_sha512_clone)( mbedtls_sha512_context *dst, const mbedtls_sha512_context *src ); 308 int (*_rom_mbedtls_sha512_starts)( mbedtls_sha512_context *ctx, int is384 ); 309 int (*_rom_mbedtls_sha512_update)( mbedtls_sha512_context *ctx, const unsigned char *input, size_t ilen ); 310 int (*_rom_mbedtls_sha512_finish)( mbedtls_sha512_context *ctx, unsigned char output[64] ); 311 int (*_rom_mbedtls_internal_sha512_process)( mbedtls_sha512_context *ctx, const unsigned char data[128] ); 312 int (*_rom_mbedtls_sha512)( const unsigned char *input, size_t ilen, unsigned char output[64], int is384 ); 313 void (*_rom_mbedtls_ssl_conf_endpoint)( mbedtls_ssl_config *conf, int endpoint ); 314 void (*_rom_mbedtls_ssl_conf_transport)( mbedtls_ssl_config *conf, int transport ); 315 void (*_rom_mbedtls_ssl_set_bio)( mbedtls_ssl_context *ssl, void *p_bio, mbedtls_ssl_send_t *f_send, mbedtls_ssl_recv_t *f_recv, mbedtls_ssl_recv_timeout_t *f_recv_timeout ); 316 int (*_rom_mbedtls_ssl_conf_dh_param_bin)( mbedtls_ssl_config *conf, const unsigned char *dhm_P, size_t P_len, const unsigned char *dhm_G, size_t G_len ); 317 size_t (*_rom_mbedtls_ssl_get_max_frag_len)( const mbedtls_ssl_context *ssl ); 318 int (*_rom_mbedtls_ssl_get_max_out_record_payload)( const mbedtls_ssl_context *ssl ); 319 int (*_rom_mbedtls_ssl_handshake)( mbedtls_ssl_context *ssl ); 320 int (*_rom_mbedtls_ssl_handshake_step)( mbedtls_ssl_context *ssl ); 321 int (*_rom_mbedtls_ssl_renegotiate)( mbedtls_ssl_context *ssl ); 322 int (*_rom_mbedtls_ssl_send_alert_message)( mbedtls_ssl_context *ssl, unsigned char level, unsigned char message ); 323 int (*_rom_mbedtls_ssl_config_defaults)( mbedtls_ssl_config *conf, int endpoint, int transport, int preset ); 324 void (*_rom_mbedtls_ssl_session_init)( mbedtls_ssl_session *session ); 325 void (*_rom_mbedtls_ssl_session_free)( mbedtls_ssl_session *session ); 326 void (*_rom_mbedtls_ssl_transform_free)( mbedtls_ssl_transform *transform ); 327 void (*_rom_mbedtls_ssl_handshake_free)( mbedtls_ssl_context *ssl ); 328 int (*_rom_mbedtls_ssl_handshake_client_step)( mbedtls_ssl_context *ssl ); 329 void (*_rom_mbedtls_ssl_handshake_wrapup)( mbedtls_ssl_context *ssl ); 330 int (*_rom_mbedtls_ssl_derive_keys)( mbedtls_ssl_context *ssl ); 331 int (*_rom_mbedtls_ssl_handle_message_type)( mbedtls_ssl_context *ssl ); 332 int (*_rom_mbedtls_ssl_prepare_handshake_record)( mbedtls_ssl_context *ssl ); 333 void (*_rom_mbedtls_ssl_update_handshake_status)( mbedtls_ssl_context *ssl ); 334 int (*_rom_mbedtls_ssl_read_record)( mbedtls_ssl_context *ssl, unsigned update_hs_digest ); 335 int (*_rom_mbedtls_ssl_fetch_input)( mbedtls_ssl_context *ssl, size_t nb_want ); 336 int (*_rom_mbedtls_ssl_write_handshake_msg)( mbedtls_ssl_context *ssl ); 337 int (*_rom_mbedtls_ssl_write_record)( mbedtls_ssl_context *ssl, uint8_t force_flush ); 338 int (*_rom_mbedtls_ssl_flush_output)( mbedtls_ssl_context *ssl ); 339 int (*_rom_mbedtls_ssl_parse_certificate)( mbedtls_ssl_context *ssl ); 340 int (*_rom_mbedtls_ssl_write_certificate)( mbedtls_ssl_context *ssl ); 341 int (*_rom_mbedtls_ssl_parse_change_cipher_spec)( mbedtls_ssl_context *ssl ); 342 int (*_rom_mbedtls_ssl_write_change_cipher_spec)( mbedtls_ssl_context *ssl ); 343 int (*_rom_mbedtls_ssl_parse_finished)( mbedtls_ssl_context *ssl ); 344 int (*_rom_mbedtls_ssl_write_finished)( mbedtls_ssl_context *ssl ); 345 void (*_rom_mbedtls_ssl_optimize_checksum)( mbedtls_ssl_context *ssl, const mbedtls_ssl_ciphersuite_t *ciphersuite_info ); 346 int (*_rom_mbedtls_ssl_psk_derive_premaster)( mbedtls_ssl_context *ssl, mbedtls_key_exchange_type_t key_ex ); 347 unsigned char (*_rom_mbedtls_ssl_sig_from_pk)( mbedtls_pk_context *pk ); 348 mbedtls_pk_type_t (*_rom_mbedtls_ssl_pk_alg_from_sig)( unsigned char sig ); 349 mbedtls_md_type_t (*_rom_mbedtls_ssl_md_alg_from_hash)( unsigned char hash ); 350 unsigned char (*_rom_mbedtls_ssl_hash_from_md_alg)( int md ); 351 int (*_rom_mbedtls_ssl_check_curve)( const mbedtls_ssl_context *ssl, mbedtls_ecp_group_id grp_id ); 352 int (*_rom_mbedtls_ssl_check_sig_hash)( const mbedtls_ssl_context *ssl, mbedtls_md_type_t md ); 353 void (*_rom_mbedtls_ssl_write_version)( int major, int minor, int transport, unsigned char ver[2] ); 354 void (*_rom_mbedtls_ssl_read_version)( int *major, int *minor, int transport, const unsigned char ver[2] ); 355 int (*_rom_mbedtls_ssl_get_key_exchange_md_ssl_tls)( mbedtls_ssl_context *ssl, unsigned char *output, unsigned char *data, size_t data_len ); 356 int (*_rom_mbedtls_ssl_get_key_exchange_md_tls1_2)( mbedtls_ssl_context *ssl, unsigned char *hash, size_t *hashlen, unsigned char *data, size_t data_len, mbedtls_md_type_t md_alg ); 357 int (*_rom_mbedtls_ssl_cf_hmac)( mbedtls_md_context_t *ctx, const unsigned char *add_data, size_t add_data_len, const unsigned char *data, size_t data_len_secret, size_t min_data_len, size_t max_data_len, unsigned char *output ); 358 void (*_rom_mbedtls_ssl_cf_memcpy_offset)( unsigned char *dst, const unsigned char *src_base, size_t offset_secret, size_t offset_min, size_t offset_max, size_t len ); 359 int (*_rom_mbedtls_x509_crt_parse_der)( mbedtls_x509_crt *chain, const unsigned char *buf, size_t buflen ); 360 int (*_rom_mbedtls_x509_crt_verify_restartable)( mbedtls_x509_crt *crt, mbedtls_x509_crt *trust_ca, mbedtls_x509_crl *ca_crl, const mbedtls_x509_crt_profile *profile, const char *cn, uint32_t *flags, int (*f_vrfy)(void *, mbedtls_x509_crt *, int, uint32_t *), void *p_vrfy, mbedtls_x509_crt_restart_ctx *rs_ctx ); 361 int (*_rom_mbedtls_x509_crt_check_key_usage)( const mbedtls_x509_crt *crt, unsigned int usage ); 362 int (*_rom_mbedtls_x509_crt_check_extended_key_usage)( const mbedtls_x509_crt *crt, const char *usage_oid, size_t usage_len ); 363 int (*_rom_mbedtls_x509_crt_is_revoked)( const mbedtls_x509_crt *crt, const mbedtls_x509_crl *crl ); 364 void (*_rom_mbedtls_x509_crt_init)( mbedtls_x509_crt *crt ); 365 void (*_rom_mbedtls_x509_crt_free)( mbedtls_x509_crt *crt ); 366 void (*_rom_mbedtls_x509_crt_restart_init)( mbedtls_x509_crt_restart_ctx *ctx ); 367 void (*_rom_mbedtls_x509_crt_restart_free)( mbedtls_x509_crt_restart_ctx *ctx ); 368 int (*_rom_mbedtls_x509_get_name)( unsigned char **p, const unsigned char *end, mbedtls_x509_name *cur ); 369 int (*_rom_mbedtls_x509_get_alg_null)( unsigned char **p, const unsigned char *end, mbedtls_x509_buf *alg ); 370 int (*_rom_mbedtls_x509_get_alg)( unsigned char **p, const unsigned char *end, mbedtls_x509_buf *alg, mbedtls_x509_buf *params ); 371 int (*_rom_mbedtls_x509_get_rsassa_pss_params)( const mbedtls_x509_buf *params, mbedtls_md_type_t *md_alg, mbedtls_md_type_t *mgf_md, int *salt_len ); 372 int (*_rom_mbedtls_x509_get_sig)( unsigned char **p, const unsigned char *end, mbedtls_x509_buf *sig ); 373 int (*_rom_mbedtls_x509_get_sig_alg)( const mbedtls_x509_buf *sig_oid, const mbedtls_x509_buf *sig_params, mbedtls_md_type_t *md_alg, mbedtls_pk_type_t *pk_alg, void **sig_opts ); 374 int (*_rom_mbedtls_x509_get_time)( unsigned char **p, const unsigned char *end, mbedtls_x509_time *t ); 375 int (*_rom_mbedtls_x509_get_serial)( unsigned char **p, const unsigned char *end, mbedtls_x509_buf *serial ); 376 int (*_rom_mbedtls_x509_get_ext)( unsigned char **p, const unsigned char *end, mbedtls_x509_buf *ext, int tag ); 377 void (*_mbedtls_mutex_init)( mbedtls_threading_mutex_t *mutex ); 378 void (*_mbedtls_mutex_free)( mbedtls_threading_mutex_t *mutex ); 379 int (*_mbedtls_mutex_lock)( mbedtls_threading_mutex_t *mutex ); 380 int (*_mbedtls_mutex_unlock)( mbedtls_threading_mutex_t *mutex ); 381 bool (*_mbedtls_allow_unsupported_critical_ext)( void ); 382 const mbedtls_cipher_info_t *(*_mbedtls_cipher_info_from_type)( const mbedtls_cipher_type_t cipher_type ); 383 const mbedtls_cipher_info_t *(*_mbedtls_cipher_info_from_values)( const mbedtls_cipher_id_t cipher_id, int key_bitlen, const mbedtls_cipher_mode_t mode ); 384 void (*_mbedtls_cipher_free)( mbedtls_cipher_context_t *ctx ); 385 int (*_mbedtls_cipher_setup)( mbedtls_cipher_context_t *ctx, const mbedtls_cipher_info_t *cipher_info ); 386 int (*_mbedtls_cipher_setkey)( mbedtls_cipher_context_t *ctx, const unsigned char *key, int key_bitlen, const mbedtls_operation_t operation ); 387 int (*_mbedtls_cipher_set_iv)( mbedtls_cipher_context_t *ctx, const unsigned char *iv, size_t iv_len ); 388 int (*_mbedtls_cipher_update)( mbedtls_cipher_context_t *ctx, const unsigned char *input, size_t ilen, unsigned char *output, size_t *olen ); 389 int (*_mbedtls_cipher_auth_encrypt)( mbedtls_cipher_context_t *ctx, const unsigned char *iv, size_t iv_len, const unsigned char *ad, size_t ad_len, const unsigned char *input, size_t ilen, unsigned char *output, size_t *olen, unsigned char *tag, size_t tag_len ); 390 int (*_mbedtls_cipher_auth_decrypt)( mbedtls_cipher_context_t *ctx, const unsigned char *iv, size_t iv_len, const unsigned char *ad, size_t ad_len, const unsigned char *input, size_t ilen, unsigned char *output, size_t *olen, const unsigned char *tag, size_t tag_len ); 391 int (*_mbedtls_hardware_poll)( void *data, unsigned char *output, size_t len, size_t *olen ); 392 const mbedtls_md_info_t *(*_mbedtls_md_info_from_type)( mbedtls_md_type_t md_type ); 393 int (*_mbedtls_pem_read_buffer)( void *ctx, const char *header, const char *footer, const unsigned char *data, const unsigned char *pwd, size_t pwdlen, size_t *use_len ); 394 void *(*_mbedtls_calloc)( size_t n, size_t size ); 395 void (*_mbedtls_free)( void *ptr ); 396 int (*_mbedtls_sha1_update)( mbedtls_sha1_context *ctx, const unsigned char *input, size_t ilen ); 397 int (*_mbedtls_internal_sha1_process)( mbedtls_sha1_context *ctx, const unsigned char data[64] ); 398 int (*_mbedtls_sha256_update)( mbedtls_sha256_context *ctx, const unsigned char *input, size_t ilen ); 399 int (*_mbedtls_internal_sha256_process)( mbedtls_sha256_context *ctx, const unsigned char data[64] ); 400 const int *(*_mbedtls_ssl_list_ciphersuites)( void ); 401 const mbedtls_ssl_ciphersuite_t *(*_mbedtls_ssl_ciphersuite_from_id)( int ciphersuite_id ); 402 mbedtls_pk_type_t (*_mbedtls_ssl_get_ciphersuite_sig_pk_alg)( const mbedtls_ssl_ciphersuite_t *info ); 403 int (*_mbedtls_ssl_ciphersuite_uses_ec)( const mbedtls_ssl_ciphersuite_t *info ); 404 int (*_mbedtls_ssl_ciphersuite_uses_psk)( const mbedtls_ssl_ciphersuite_t *info ); 405 int (*_mbedtls_ssl_handshake_server_step)( mbedtls_ssl_context *ssl ); 406 int (*_mbedtls_ssl_check_cert_usage)( const mbedtls_x509_crt *cert, const mbedtls_ssl_ciphersuite_t *ciphersuite, int cert_endpoint, uint32_t *flags ); 407 int (*_mbedtls_x509_time_is_past)( const mbedtls_x509_time *to ); 408 int (*_mbedtls_x509_time_is_future)( const mbedtls_x509_time *from ); 409 } mbedtls_rom_funcs_t; 410 411 typedef struct mbedtls_rom_eco4_funcs { 412 // aes module 413 void (*_rom_mbedtls_aes_init)(mbedtls_aes_context *ctx); 414 void (*_rom_mbedtls_aes_free)(mbedtls_aes_context *ctx); 415 void (*_rom_mbedtls_aes_xts_init)(mbedtls_aes_xts_context *ctx); 416 void (*_rom_mbedtls_aes_xts_free)(mbedtls_aes_xts_context *ctx); 417 int (*_rom_mbedtls_aes_setkey_enc)(mbedtls_aes_context *ctx, const unsigned char *key, unsigned int keybits); 418 int (*_rom_mbedtls_aes_setkey_dec)(mbedtls_aes_context *ctx, const unsigned char *key, unsigned int keybits); 419 int (*_rom_mbedtls_aes_xts_setkey_enc)(mbedtls_aes_xts_context *ctx, const unsigned char *key, unsigned int keybits); 420 int (*_rom_mbedtls_aes_xts_setkey_dec)(mbedtls_aes_xts_context *ctx, const unsigned char *key, unsigned int keybits); 421 int (*_rom_mbedtls_aes_crypt_ecb)(mbedtls_aes_context *ctx, int mode, const unsigned char input[16], unsigned char output[16]); 422 int (*_rom_mbedtls_aes_crypt_cbc)(mbedtls_aes_context *ctx, int mode, size_t length, unsigned char iv[16], const unsigned char *input, unsigned char *output); 423 int (*_rom_mbedtls_aes_crypt_xts)(mbedtls_aes_xts_context *ctx, int mode, size_t length, const unsigned char data_unit[16], const unsigned char *input, unsigned char *output); 424 int (*_rom_mbedtls_aes_crypt_cfb128)(mbedtls_aes_context *ctx, int mode, size_t length, size_t *iv_off, unsigned char iv[16], const unsigned char *input, unsigned char *output); 425 int (*_rom_mbedtls_aes_crypt_ofb)(mbedtls_aes_context *ctx, size_t length, size_t *iv_off, unsigned char iv[16], const unsigned char *input, unsigned char *output); 426 int (*_rom_mbedtls_aes_crypt_ctr)(mbedtls_aes_context *ctx, size_t length, size_t *nc_off, unsigned char nonce_counter[16], unsigned char stream_block[16], const unsigned char *input, unsigned char *output); 427 int (*_rom_mbedtls_internal_aes_encrypt)(mbedtls_aes_context *ctx, const unsigned char input[16], unsigned char output[16]); 428 int (*_rom_mbedtls_internal_aes_decrypt)(mbedtls_aes_context *ctx, const unsigned char input[16], unsigned char output[16]); 429 // md5 module 430 void (*_rom_mbedtls_md5_init)(mbedtls_md5_context *ctx); 431 void (*_rom_mbedtls_md5_free)(mbedtls_md5_context *ctx); 432 void (*_rom_mbedtls_md5_clone)(mbedtls_md5_context *dst, const mbedtls_md5_context *src); 433 int (*_rom_mbedtls_md5_starts)(mbedtls_md5_context *ctx); 434 int (*_rom_mbedtls_md5_update)(mbedtls_md5_context *ctx, const unsigned char *input, size_t ilen); 435 int (*_rom_mbedtls_md5_finish)(mbedtls_md5_context *ctx, unsigned char output[16]); 436 int (*_rom_mbedtls_md5)(const unsigned char *input, size_t ilen, unsigned char output[16]); 437 // bignum module 438 void (*_rom_mbedtls_mpi_init)(mbedtls_mpi *X); 439 void (*_rom_mbedtls_mpi_free)(mbedtls_mpi *X); 440 int (*_rom_mbedtls_mpi_grow)(mbedtls_mpi *X, size_t nblimbs); 441 int (*_rom_mbedtls_mpi_shrink)(mbedtls_mpi *X, size_t nblimbs); 442 int (*_rom_mbedtls_mpi_copy)(mbedtls_mpi *X, const mbedtls_mpi *Y); 443 int (*_rom_mbedtls_mpi_safe_cond_assign)(mbedtls_mpi *X, const mbedtls_mpi *Y, unsigned char assign); 444 int (*_rom_mbedtls_mpi_safe_cond_swap)(mbedtls_mpi *X, mbedtls_mpi *Y, unsigned char swap); 445 int (*_rom_mbedtls_mpi_lset)(mbedtls_mpi *X, mbedtls_mpi_sint z); 446 int (*_rom_mbedtls_mpi_get_bit)(const mbedtls_mpi *X, size_t pos); 447 int (*_rom_mbedtls_mpi_set_bit)(mbedtls_mpi *X, size_t pos, unsigned char val); 448 size_t (*_rom_mbedtls_mpi_lsb)(const mbedtls_mpi *X); 449 size_t (*_rom_mbedtls_mpi_bitlen)(const mbedtls_mpi *X); 450 size_t (*_rom_mbedtls_mpi_size)(const mbedtls_mpi *X); 451 int (*_rom_mbedtls_mpi_read_binary)(mbedtls_mpi *X, const unsigned char *buf, size_t buflen); 452 int (*_rom_mbedtls_mpi_write_binary)(const mbedtls_mpi *X, unsigned char *buf, size_t buflen); 453 int (*_rom_mbedtls_mpi_shift_l)(mbedtls_mpi *X, size_t count); 454 int (*_rom_mbedtls_mpi_shift_r)(mbedtls_mpi *X, size_t count); 455 int (*_rom_mbedtls_mpi_cmp_abs)(const mbedtls_mpi *X, const mbedtls_mpi *Y); 456 int (*_rom_mbedtls_mpi_cmp_mpi)(const mbedtls_mpi *X, const mbedtls_mpi *Y); 457 int (*_rom_mbedtls_mpi_lt_mpi_ct)(const mbedtls_mpi *X, const mbedtls_mpi *Y, unsigned *ret); 458 int (*_rom_mbedtls_mpi_cmp_int)(const mbedtls_mpi *X, mbedtls_mpi_sint z); 459 int (*_rom_mbedtls_mpi_add_abs)(mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *B); 460 int (*_rom_mbedtls_mpi_sub_abs)(mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *B); 461 int (*_rom_mbedtls_mpi_add_mpi)(mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *B); 462 int (*_rom_mbedtls_mpi_sub_mpi)(mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *B); 463 int (*_rom_mbedtls_mpi_add_int)(mbedtls_mpi *X, const mbedtls_mpi *A, mbedtls_mpi_sint b); 464 int (*_rom_mbedtls_mpi_sub_int)(mbedtls_mpi *X, const mbedtls_mpi *A, mbedtls_mpi_sint b); 465 int (*_rom_mbedtls_mpi_mul_mpi)(mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *B); 466 int (*_rom_mbedtls_mpi_mul_int)(mbedtls_mpi *X, const mbedtls_mpi *A, mbedtls_mpi_uint b); 467 int (*_rom_mbedtls_mpi_div_mpi)(mbedtls_mpi *Q, mbedtls_mpi *R, const mbedtls_mpi *A, const mbedtls_mpi *B); 468 int (*_rom_mbedtls_mpi_div_int)(mbedtls_mpi *Q, mbedtls_mpi *R, const mbedtls_mpi *A, mbedtls_mpi_sint b); 469 int (*_rom_mbedtls_mpi_mod_mpi)(mbedtls_mpi *R, const mbedtls_mpi *A, const mbedtls_mpi *B); 470 int (*_rom_mbedtls_mpi_mod_int)(mbedtls_mpi_uint *r, const mbedtls_mpi *A, mbedtls_mpi_sint b); 471 int (*_rom_mbedtls_mpi_exp_mod)(mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *E, const mbedtls_mpi *N, mbedtls_mpi *prec_RR); 472 int (*_rom_mbedtls_mpi_fill_random)(mbedtls_mpi *X, size_t size, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng); 473 int (*_rom_mbedtls_mpi_gcd)(mbedtls_mpi *G, const mbedtls_mpi *A, const mbedtls_mpi *B); 474 int (*_rom_mbedtls_mpi_inv_mod)(mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *N); 475 int (*_rom_mbedtls_mpi_is_prime_ext)(const mbedtls_mpi *X, int rounds, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng); 476 // sha1 sha256 sha512 module 477 void (*_rom_mbedtls_sha1_init)(mbedtls_sha1_context *ctx); 478 void (*_rom_mbedtls_sha1_free)(mbedtls_sha1_context *ctx); 479 void (*_rom_mbedtls_sha1_clone)(mbedtls_sha1_context *dst, const mbedtls_sha1_context *src); 480 int (*_rom_mbedtls_sha1_starts)(mbedtls_sha1_context *ctx); 481 int (*_rom_mbedtls_sha1_finish)(mbedtls_sha1_context *ctx, unsigned char output[20]); 482 int (*_rom_mbedtls_sha1)(const unsigned char *input, size_t ilen, unsigned char output[20]); 483 void (*_rom_mbedtls_sha256_init)(mbedtls_sha256_context *ctx); 484 void (*_rom_mbedtls_sha256_free)(mbedtls_sha256_context *ctx); 485 void (*_rom_mbedtls_sha256_clone)(mbedtls_sha256_context *dst, const mbedtls_sha256_context *src); 486 int (*_rom_mbedtls_sha256_starts)(mbedtls_sha256_context *ctx, int is224); 487 int (*_rom_mbedtls_sha256_finish)(mbedtls_sha256_context *ctx, unsigned char *output); 488 int (*_rom_mbedtls_sha256)(const unsigned char *input, size_t ilen, unsigned char *output, int is224); 489 void (*_rom_mbedtls_sha512_init)(mbedtls_sha512_context *ctx); 490 void (*_rom_mbedtls_sha512_free)(mbedtls_sha512_context *ctx); 491 void (*_rom_mbedtls_sha512_clone)(mbedtls_sha512_context *dst, const mbedtls_sha512_context *src); 492 int (*_rom_mbedtls_sha512_starts)(mbedtls_sha512_context *ctx, int is384); 493 int (*_rom_mbedtls_sha512_update)(mbedtls_sha512_context *ctx, const unsigned char *input, size_t ilen); 494 int (*_rom_mbedtls_sha512_finish)(mbedtls_sha512_context *ctx, unsigned char *output); 495 int (*_rom_mbedtls_sha512)(const unsigned char *input, size_t ilen, unsigned char *output, int is384); 496 // ecp module 497 // asn1 module 498 int (*_rom_mbedtls_asn1_get_len)(unsigned char **p, const unsigned char *end, size_t *len); 499 int (*_rom_mbedtls_asn1_get_tag)(unsigned char **p, const unsigned char *end, size_t *len, int tag); 500 int (*_rom_mbedtls_asn1_get_bool)(unsigned char **p, const unsigned char *end, int *val); 501 int (*_rom_mbedtls_asn1_get_int)(unsigned char **p, const unsigned char *end, int *val); 502 int (*_rom_mbedtls_asn1_get_bitstring)(unsigned char **p, const unsigned char *end, mbedtls_asn1_bitstring *bs); 503 int (*_rom_mbedtls_asn1_get_bitstring_null)(unsigned char **p, const unsigned char *end, size_t *len); 504 int (*_rom_mbedtls_asn1_get_sequence_of)(unsigned char **p, const unsigned char *end, mbedtls_asn1_sequence *cur, int tag); 505 int (*_rom_mbedtls_asn1_get_mpi)(unsigned char **p, const unsigned char *end, mbedtls_mpi *X); 506 int (*_rom_mbedtls_asn1_get_alg)(unsigned char **p, const unsigned char *end, mbedtls_asn1_buf *alg, mbedtls_asn1_buf *params); 507 int (*_rom_mbedtls_asn1_get_alg_null)(unsigned char **p, const unsigned char *end, mbedtls_asn1_buf *alg); 508 // asn1write module 509 int (*_rom_mbedtls_asn1_write_len)(unsigned char **p, const unsigned char *start, size_t len); 510 int (*_rom_mbedtls_asn1_write_tag)(unsigned char **p, const unsigned char *start, unsigned char tag); 511 int (*_rom_mbedtls_asn1_write_mpi)(unsigned char **p, const unsigned char *start, const mbedtls_mpi *X); 512 // ccm module 513 void (*_rom_mbedtls_ccm_init)(mbedtls_ccm_context *ctx); 514 int (*_rom_mbedtls_ccm_setkey)(mbedtls_ccm_context *ctx, mbedtls_cipher_id_t cipher, const unsigned char *key, unsigned int keybits); 515 void (*_rom_mbedtls_ccm_free)(mbedtls_ccm_context *ctx); 516 int (*_rom_mbedtls_ccm_encrypt_and_tag)(mbedtls_ccm_context *ctx, size_t length, const unsigned char *iv, size_t iv_len, const unsigned char *ad, size_t ad_len, const unsigned char *input, unsigned char *output, unsigned char *tag, size_t tag_len); 517 int (*_rom_mbedtls_ccm_star_encrypt_and_tag)(mbedtls_ccm_context *ctx, size_t length, const unsigned char *iv, size_t iv_len, const unsigned char *ad, size_t ad_len, const unsigned char *input, unsigned char *output, unsigned char *tag, size_t tag_len); 518 int (*_rom_mbedtls_ccm_auth_decrypt)(mbedtls_ccm_context *ctx, size_t length, const unsigned char *iv, size_t iv_len, const unsigned char *ad, size_t ad_len, const unsigned char *input, unsigned char *output, const unsigned char *tag, size_t tag_len); 519 int (*_rom_mbedtls_ccm_star_auth_decrypt)(mbedtls_ccm_context *ctx, size_t length, const unsigned char *iv, size_t iv_len, const unsigned char *ad, size_t ad_len, const unsigned char *input, unsigned char *output, const unsigned char *tag, size_t tag_len); 520 // cipher module 521 void (*_rom_mbedtls_cipher_init)(mbedtls_cipher_context_t *ctx); 522 int (*_rom_mbedtls_cipher_set_padding_mode)(mbedtls_cipher_context_t *ctx, mbedtls_cipher_padding_t mode); 523 int (*_rom_mbedtls_cipher_reset)(mbedtls_cipher_context_t *ctx); 524 int (*_rom_mbedtls_cipher_finish)(mbedtls_cipher_context_t *ctx, unsigned char *output, size_t *olen); 525 int (*_rom_mbedtls_cipher_crypt)(mbedtls_cipher_context_t *ctx, const unsigned char *iv, size_t iv_len, const unsigned char *input, size_t ilen, unsigned char *output, size_t *olen); 526 int (*_rom_mbedtls_cipher_cmac_starts)(mbedtls_cipher_context_t *ctx, const unsigned char *key, size_t keybits); 527 int (*_rom_mbedtls_cipher_cmac_update)(mbedtls_cipher_context_t *ctx, const unsigned char *input, size_t ilen); 528 int (*_rom_mbedtls_cipher_cmac_finish)(mbedtls_cipher_context_t *ctx, unsigned char *output); 529 // ctr drbg module 530 void (*_rom_mbedtls_ctr_drbg_init)(mbedtls_ctr_drbg_context *ctx); 531 int (*_rom_mbedtls_ctr_drbg_seed)(mbedtls_ctr_drbg_context *ctx, int (*f_entropy)(void *, unsigned char *, size_t), void *p_entropy, const unsigned char *custom, size_t len); 532 void (*_rom_mbedtls_ctr_drbg_free)(mbedtls_ctr_drbg_context *ctx); 533 int (*_rom_mbedtls_ctr_drbg_reseed)(mbedtls_ctr_drbg_context *ctx, const unsigned char *additional, size_t len); 534 int (*_rom_mbedtls_ctr_drbg_random_with_add)(void *p_rng, unsigned char *output, size_t output_len, const unsigned char *additional, size_t add_len); 535 int (*_rom_mbedtls_ctr_drbg_random)(void *p_rng, unsigned char *output, size_t output_len); 536 // base64 module 537 int (*_rom_mbedtls_base64_decode)(unsigned char *dst, size_t dlen, size_t *olen, const unsigned char *src, size_t slen); 538 //*******************************************************************************************************************************************************************// 539 // aes module 540 int (*_rom_mbedtls_aes_crypt_cfb8)(mbedtls_aes_context *ctx, int mode, size_t length, unsigned char iv[16], const unsigned char *input, unsigned char *output); 541 // md5 module 542 // bignum module 543 void (*_rom_mbedtls_mpi_swap)(mbedtls_mpi *X, mbedtls_mpi *Y); 544 int (*_rom_mbedtls_mpi_read_string)(mbedtls_mpi *X, int radix, const char *s); 545 int (*_rom_mbedtls_mpi_write_string)(const mbedtls_mpi *X, int radix, char *buf, size_t buflen, size_t *olen); 546 int (*_rom_mbedtls_mpi_read_binary_le)(mbedtls_mpi *X, const unsigned char *buf, size_t buflen); 547 int (*_rom_mbedtls_mpi_write_binary_le)(const mbedtls_mpi *X, unsigned char *buf, size_t buflen); 548 int (*_rom_mbedtls_mpi_random)(mbedtls_mpi *X, mbedtls_mpi_sint min, const mbedtls_mpi *N, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng); 549 int (*_rom_mbedtls_mpi_gen_prime)(mbedtls_mpi *X, size_t nbits, int flags, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng); 550 // ecp module 551 int (*_rom_mbedtls_ecp_check_budget)(const mbedtls_ecp_group *grp, mbedtls_ecp_restart_ctx *rs_ctx, unsigned ops); 552 void (*_rom_mbedtls_ecp_set_max_ops)(unsigned max_ops); 553 int (*_rom_mbedtls_ecp_restart_is_enabled)(void); 554 mbedtls_ecp_curve_type (*_rom_mbedtls_ecp_get_type)(const mbedtls_ecp_group *grp); 555 const mbedtls_ecp_curve_info *(*_rom_mbedtls_ecp_curve_list)(void); 556 const mbedtls_ecp_group_id *(*_rom_mbedtls_ecp_grp_id_list)(void); 557 const mbedtls_ecp_curve_info *(*_rom_mbedtls_ecp_curve_info_from_grp_id)(mbedtls_ecp_group_id grp_id); 558 const mbedtls_ecp_curve_info *(*_rom_mbedtls_ecp_curve_info_from_tls_id)(uint16_t tls_id); 559 const mbedtls_ecp_curve_info *(*_rom_mbedtls_ecp_curve_info_from_name)(const char *name); 560 void (*_rom_mbedtls_ecp_point_init)(mbedtls_ecp_point *pt); 561 void (*_rom_mbedtls_ecp_group_init)(mbedtls_ecp_group *grp); 562 void (*_rom_mbedtls_ecp_keypair_init)(mbedtls_ecp_keypair *key); 563 void (*_rom_mbedtls_ecp_point_free)(mbedtls_ecp_point *pt); 564 void (*_rom_mbedtls_ecp_group_free)(mbedtls_ecp_group *grp); 565 void (*_rom_mbedtls_ecp_keypair_free)(mbedtls_ecp_keypair *key); 566 void (*_rom_mbedtls_ecp_restart_init)(mbedtls_ecp_restart_ctx *ctx); 567 void (*_rom_mbedtls_ecp_restart_free)(mbedtls_ecp_restart_ctx *ctx); 568 int (*_rom_mbedtls_ecp_copy)(mbedtls_ecp_point *P, const mbedtls_ecp_point *Q); 569 int (*_rom_mbedtls_ecp_group_copy)(mbedtls_ecp_group *dst, const mbedtls_ecp_group *src); 570 int (*_rom_mbedtls_ecp_set_zero)(mbedtls_ecp_point *pt); 571 int (*_rom_mbedtls_ecp_is_zero)(mbedtls_ecp_point *pt); 572 int (*_rom_mbedtls_ecp_point_cmp)(const mbedtls_ecp_point *P, const mbedtls_ecp_point *Q); 573 int (*_rom_mbedtls_ecp_point_read_string)(mbedtls_ecp_point *P, int radix, const char *x, const char *y); 574 int (*_rom_mbedtls_ecp_point_write_binary)(const mbedtls_ecp_group *grp, const mbedtls_ecp_point *P, int format, size_t *olen, unsigned char *buf, size_t buflen); 575 int (*_rom_mbedtls_ecp_point_read_binary)(const mbedtls_ecp_group *grp, mbedtls_ecp_point *P, const unsigned char *buf, size_t ilen); 576 int (*_rom_mbedtls_ecp_tls_read_point)(const mbedtls_ecp_group *grp, mbedtls_ecp_point *pt, const unsigned char **buf, size_t len); 577 int (*_rom_mbedtls_ecp_tls_write_point)(const mbedtls_ecp_group *grp, const mbedtls_ecp_point *pt, int format, size_t *olen, unsigned char *buf, size_t blen); 578 int (*_rom_mbedtls_ecp_group_load)(mbedtls_ecp_group *grp, mbedtls_ecp_group_id id); 579 int (*_rom_mbedtls_ecp_tls_read_group)(mbedtls_ecp_group *grp, const unsigned char **buf, size_t len); 580 int (*_rom_mbedtls_ecp_tls_read_group_id)(mbedtls_ecp_group_id *grp, const unsigned char **buf, size_t len); 581 int (*_rom_mbedtls_ecp_tls_write_group)(const mbedtls_ecp_group *grp, size_t *olen, unsigned char *buf, size_t blen); 582 int (*_rom_mbedtls_ecp_mul)(mbedtls_ecp_group *grp, mbedtls_ecp_point *R, const mbedtls_mpi *m, const mbedtls_ecp_point *P, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng); 583 int (*_rom_mbedtls_ecp_mul_restartable)(mbedtls_ecp_group *grp, mbedtls_ecp_point *R, const mbedtls_mpi *m, const mbedtls_ecp_point *P, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, mbedtls_ecp_restart_ctx *rs_ctx); 584 int (*_rom_mbedtls_ecp_muladd)(mbedtls_ecp_group *grp, mbedtls_ecp_point *R, const mbedtls_mpi *m, const mbedtls_ecp_point *P, const mbedtls_mpi *n, const mbedtls_ecp_point *Q); 585 int (*_rom_mbedtls_ecp_muladd_restartable)( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, const mbedtls_mpi *m, const mbedtls_ecp_point *P, const mbedtls_mpi *n, const mbedtls_ecp_point *Q, mbedtls_ecp_restart_ctx *rs_ctx); 586 int (*_rom_mbedtls_ecp_check_pubkey)(const mbedtls_ecp_group *grp, const mbedtls_ecp_point *pt); 587 int (*_rom_mbedtls_ecp_check_privkey)(const mbedtls_ecp_group *grp, const mbedtls_mpi *d); 588 int (*_rom_mbedtls_ecp_gen_privkey)(const mbedtls_ecp_group *grp, mbedtls_mpi *d, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng); 589 int (*_rom_mbedtls_ecp_gen_keypair_base)(mbedtls_ecp_group *grp, const mbedtls_ecp_point *G, mbedtls_mpi *d, mbedtls_ecp_point *Q, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng); 590 int (*_rom_mbedtls_ecp_gen_keypair)(mbedtls_ecp_group *grp, mbedtls_mpi *d, mbedtls_ecp_point *Q, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng); 591 int (*_rom_mbedtls_ecp_gen_key)(mbedtls_ecp_group_id grp_id, mbedtls_ecp_keypair *key, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng); 592 int (*_rom_mbedtls_ecp_read_key)(mbedtls_ecp_group_id grp_id, mbedtls_ecp_keypair *key, const unsigned char *buf, size_t buflen); 593 int (*_rom_mbedtls_ecp_write_key_ext)(const mbedtls_ecp_keypair *key, size_t *olen, unsigned char *buf, size_t buflen); 594 int (*_rom_mbedtls_ecp_check_pub_priv)( const mbedtls_ecp_keypair *pub, const mbedtls_ecp_keypair *prv, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng); 595 int (*_rom_mbedtls_ecp_export)(const mbedtls_ecp_keypair *key, mbedtls_ecp_group *grp, mbedtls_mpi *d, mbedtls_ecp_point *Q); 596 // asn1 module 597 int (*_rom_mbedtls_asn1_get_enum)(unsigned char **p, const unsigned char *end, int *val); 598 void (*_rom_mbedtls_asn1_sequence_free)(mbedtls_asn1_sequence *seq); 599 int (*_rom_mbedtls_asn1_traverse_sequence_of)( unsigned char **p, const unsigned char *end, unsigned char tag_must_mask, unsigned char tag_must_val, unsigned char tag_may_mask, unsigned char tag_may_val, int (*cb)(void *ctx, int tag, unsigned char *start, size_t len), void *ctx); 600 const mbedtls_asn1_named_data *(*_rom_mbedtls_asn1_find_named_data)(const mbedtls_asn1_named_data *list, const char *oid, size_t len); 601 void (*_rom_mbedtls_asn1_free_named_data_list)(mbedtls_asn1_named_data **head); 602 void (*_rom_mbedtls_asn1_free_named_data_list_shallow)(mbedtls_asn1_named_data *name); 603 // asn1write module 604 int (*_rom_mbedtls_asn1_write_raw_buffer)(unsigned char **p, const unsigned char *start, const unsigned char *buf, size_t size); 605 int (*_rom_mbedtls_asn1_write_null)(unsigned char **p, const unsigned char *start); 606 int (*_rom_mbedtls_asn1_write_oid)(unsigned char **p, const unsigned char *start, const char *oid, size_t oid_len); 607 int (*_rom_mbedtls_asn1_write_algorithm_identifier)(unsigned char **p, const unsigned char *start, const char *oid, size_t oid_len, size_t par_len); 608 int (*_rom_mbedtls_asn1_write_bool)(unsigned char **p, const unsigned char *start, int boolean); 609 int (*_rom_mbedtls_asn1_write_int)(unsigned char **p, const unsigned char *start, int val); 610 int (*_rom_mbedtls_asn1_write_enum)(unsigned char **p, const unsigned char *start, int val); 611 int (*_rom_mbedtls_asn1_write_tagged_string)(unsigned char **p, const unsigned char *start, int tag, const char *text, size_t text_len); 612 int (*_rom_mbedtls_asn1_write_printable_string)(unsigned char **p, const unsigned char *start, const char *text, size_t text_len); 613 int (*_rom_mbedtls_asn1_write_utf8_string)(unsigned char **p, const unsigned char *start, const char *text, size_t text_len); 614 int (*_rom_mbedtls_asn1_write_ia5_string)(unsigned char **p, const unsigned char *start, const char *text, size_t text_len); 615 int (*_rom_mbedtls_asn1_write_bitstring)(unsigned char **p, const unsigned char *start, const unsigned char *buf, size_t bits); 616 int (*_rom_mbedtls_asn1_write_named_bitstring)(unsigned char **p, const unsigned char *start, const unsigned char *buf, size_t bits); 617 int (*_rom_mbedtls_asn1_write_octet_string)(unsigned char **p, const unsigned char *start, const unsigned char *buf, size_t size); 618 mbedtls_asn1_named_data *(*_rom_mbedtls_asn1_store_named_data)(mbedtls_asn1_named_data **list, const char *oid, size_t oid_len, const unsigned char *val, size_t val_len); 619 // ccm module 620 int (*_rom_mbedtls_ccm_starts)(mbedtls_ccm_context *ctx, int mode, const unsigned char *iv, size_t iv_len); 621 int (*_rom_mbedtls_ccm_set_lengths)(mbedtls_ccm_context *ctx, size_t total_ad_len, size_t plaintext_len, size_t tag_len); 622 int (*_rom_mbedtls_ccm_update_ad)(mbedtls_ccm_context *ctx, const unsigned char *ad, size_t ad_len); 623 int (*_rom_mbedtls_ccm_update)(mbedtls_ccm_context *ctx, const unsigned char *input, size_t input_len, unsigned char *output, size_t output_size, size_t *output_len); 624 int (*_rom_mbedtls_ccm_finish)(mbedtls_ccm_context *ctx, unsigned char *tag, size_t tag_len); 625 // cipher module 626 const int *(*_rom_mbedtls_cipher_list)(void); 627 const mbedtls_cipher_info_t *(*_rom_mbedtls_cipher_info_from_string)(const char *cipher_name); 628 const mbedtls_cipher_info_t *(*_rom_mbedtls_cipher_info_from_type)(const mbedtls_cipher_type_t cipher_type); 629 const mbedtls_cipher_info_t *(*_rom_mbedtls_cipher_info_from_values)(const mbedtls_cipher_id_t cipher_id, int key_bitlen, const mbedtls_cipher_mode_t mode); 630 void (*_rom_mbedtls_cipher_free)(mbedtls_cipher_context_t *ctx); 631 int (*_rom_mbedtls_cipher_setup)(mbedtls_cipher_context_t *ctx, const mbedtls_cipher_info_t *cipher_info); 632 int (*_rom_mbedtls_cipher_setkey)(mbedtls_cipher_context_t *ctx, const unsigned char *key, int key_bitlen, const mbedtls_operation_t operation); 633 int (*_rom_mbedtls_cipher_set_iv)(mbedtls_cipher_context_t *ctx, const unsigned char *iv, size_t iv_len); 634 int (*_rom_mbedtls_cipher_update_ad)(mbedtls_cipher_context_t *ctx, const unsigned char *ad, size_t ad_len); 635 int (*_rom_mbedtls_cipher_update)(mbedtls_cipher_context_t *ctx, const unsigned char *input, size_t ilen, unsigned char *output, size_t *olen); 636 int (*_rom_mbedtls_cipher_write_tag)(mbedtls_cipher_context_t *ctx, unsigned char *tag, size_t tag_len); 637 int (*_rom_mbedtls_cipher_check_tag)(mbedtls_cipher_context_t *ctx, const unsigned char *tag, size_t tag_len); 638 int (*_rom_mbedtls_cipher_auth_encrypt_ext)(mbedtls_cipher_context_t *ctx, const unsigned char *iv, size_t iv_len, const unsigned char *ad, size_t ad_len, const unsigned char *input, size_t ilen, unsigned char *output, size_t output_len, size_t *olen, size_t tag_len); 639 int (*_rom_mbedtls_cipher_auth_decrypt_ext)(mbedtls_cipher_context_t *ctx, const unsigned char *iv, size_t iv_len, const unsigned char *ad, size_t ad_len, const unsigned char *input, size_t ilen, unsigned char *output, size_t output_len, size_t *olen, size_t tag_len); 640 int (*_rom_mbedtls_cipher_cmac_reset)(mbedtls_cipher_context_t *ctx); 641 int (*_rom_mbedtls_cipher_cmac)(const mbedtls_cipher_info_t *cipher_info, const unsigned char *key, size_t keylen, const unsigned char *input, size_t ilen, unsigned char *output); 642 int (*_rom_mbedtls_aes_cmac_prf_128)(const unsigned char *key, size_t key_len, const unsigned char *input, size_t in_len, unsigned char output[16]); 643 // ctr drbg module 644 void (*_rom_mbedtls_ctr_drbg_set_prediction_resistance)(mbedtls_ctr_drbg_context *ctx, int resistance); 645 void (*_rom_mbedtls_ctr_drbg_set_entropy_len)(mbedtls_ctr_drbg_context *ctx, size_t len); 646 int (*_rom_mbedtls_ctr_drbg_set_nonce_len)(mbedtls_ctr_drbg_context *ctx, size_t len); 647 void (*_rom_mbedtls_ctr_drbg_set_reseed_interval)(mbedtls_ctr_drbg_context *ctx, int interval); 648 int (*_rom_mbedtls_ctr_drbg_update)(mbedtls_ctr_drbg_context *ctx, const unsigned char *additional, size_t add_len); 649 // base64 module 650 int (*_rom_mbedtls_base64_encode)(unsigned char *dst, size_t dlen, size_t *olen, const unsigned char *src, size_t slen); 651 // sha1 sha256 sha512 module 652 int (*_rom_mbedtls_sha1_update)(mbedtls_sha1_context *ctx, const unsigned char *input, size_t ilen); 653 int (*_rom_mbedtls_sha256_update)(mbedtls_sha256_context *ctx, const unsigned char *input, size_t ilen); 654 // memory calloc free 655 void *(*_rom_mbedtls_mem_calloc)(size_t n, size_t size); 656 void (*_rom_mbedtls_mem_free)(void *ptr); 657 } mbedtls_rom_eco4_funcs_t; 658 659 #define STRUCT_OFFSET_CHECK(x, y, z) _Static_assert((offsetof(x,y)==(z)), "The variables type of "#x" before "#y" should be "#z) 660 #define STRUCT_SIZE_CHECK(x, y) _Static_assert((sizeof(x)==(y)), "The sizeof "#x" should be "#y) 661 662 #if (!defined(CONFIG_MBEDTLS_USE_CRYPTO_ROM_IMPL)) 663 #error "CONFIG_MBEDTLS_USE_CRYPTO_ROM_IMPL" 664 #endif 665 666 /* platform_util.c */ 667 #if (defined(MBEDTLS_PLATFORM_ZEROIZE_ALT)) 668 #error "MBEDTLS_PLATFORM_ZEROIZE_ALT" 669 #endif 670 671 /* sha1.c */ 672 STRUCT_OFFSET_CHECK(mbedtls_sha1_context, total, 0); 673 STRUCT_OFFSET_CHECK(mbedtls_sha1_context, state, 8); 674 STRUCT_OFFSET_CHECK(mbedtls_sha1_context, buffer, 28); 675 STRUCT_OFFSET_CHECK(mbedtls_sha1_context, first_block, 92); 676 STRUCT_OFFSET_CHECK(mbedtls_sha1_context, mode, 96); 677 STRUCT_OFFSET_CHECK(mbedtls_sha1_context, sha_state, 100); 678 STRUCT_SIZE_CHECK(mbedtls_sha1_context, 104); 679 #if (!defined(MBEDTLS_SHA1_C)) || \ 680 (!defined(MBEDTLS_SHA1_ALT)) || \ 681 (defined(MBEDTLS_SHA1_PROCESS_ALT)) 682 #error "MBEDTLS_SHA1_C" 683 #endif 684 685 /* sha256.c */ 686 STRUCT_OFFSET_CHECK(mbedtls_sha256_context, total, 0); 687 STRUCT_OFFSET_CHECK(mbedtls_sha256_context, state, 8); 688 STRUCT_OFFSET_CHECK(mbedtls_sha256_context, buffer, 40); 689 STRUCT_OFFSET_CHECK(mbedtls_sha256_context, first_block, 104); 690 STRUCT_OFFSET_CHECK(mbedtls_sha256_context, mode, 108); 691 STRUCT_OFFSET_CHECK(mbedtls_sha256_context, sha_state, 112); 692 STRUCT_SIZE_CHECK(mbedtls_sha256_context, 116); 693 #if (!defined(MBEDTLS_SHA256_C)) || \ 694 (!defined(MBEDTLS_SHA256_ALT)) || \ 695 (defined(MBEDTLS_SHA256_PROCESS_ALT)) || \ 696 (defined(MBEDTLS_SHA256_SMALLER)) 697 #error "!MBEDTLS_SHA256_C" 698 #endif 699 700 /* sha512.c */ 701 STRUCT_OFFSET_CHECK(mbedtls_sha512_context, MBEDTLS_PRIVATE(total), 0); 702 STRUCT_OFFSET_CHECK(mbedtls_sha512_context, MBEDTLS_PRIVATE(state), 16); 703 STRUCT_OFFSET_CHECK(mbedtls_sha512_context, MBEDTLS_PRIVATE(buffer), 80); 704 STRUCT_OFFSET_CHECK(mbedtls_sha512_context, MBEDTLS_PRIVATE(is384), 208); 705 STRUCT_SIZE_CHECK(mbedtls_sha512_context, 216); 706 #if (!defined(MBEDTLS_SHA512_C)) || \ 707 (defined(MBEDTLS_SHA512_ALT)) || \ 708 (defined(MBEDTLS_SHA512_PROCESS_ALT)) 709 #error "MBEDTLS_SHA256_C" 710 #endif 711 712 /* aes.c */ 713 STRUCT_OFFSET_CHECK(mbedtls_aes_context, MBEDTLS_PRIVATE(nr), 0); 714 STRUCT_OFFSET_CHECK(mbedtls_aes_context, MBEDTLS_PRIVATE(rk_offset), 4); 715 STRUCT_OFFSET_CHECK(mbedtls_aes_context, MBEDTLS_PRIVATE(buf), 8); 716 STRUCT_SIZE_CHECK(mbedtls_aes_context, 280); 717 STRUCT_OFFSET_CHECK(mbedtls_aes_xts_context, MBEDTLS_PRIVATE(crypt), 0); 718 STRUCT_OFFSET_CHECK(mbedtls_aes_xts_context, MBEDTLS_PRIVATE(tweak), 280); 719 STRUCT_SIZE_CHECK(mbedtls_aes_xts_context, 560); 720 #if (defined(MBEDTLS_HAVE_X86)) || \ 721 (defined(MBEDTLS_HAVE_X86_64)) 722 #error "MBEDTLS_HAVE_X86" 723 #endif 724 #if (!defined(MBEDTLS_AES_C)) || \ 725 (defined(MBEDTLS_AES_ALT)) || \ 726 (defined(MBEDTLS_AES_ENCRYPT_ALT)) || \ 727 (defined(MBEDTLS_AES_DECRYPT_ALT)) || \ 728 (defined(MBEDTLS_AES_SETKEY_ENC_ALT)) || \ 729 (defined(MBEDTLS_AES_SETKEY_DEC_ALT)) 730 #error "MBEDTLS_AES_C" 731 #endif 732 #if (!defined(MBEDTLS_AES_ROM_TABLES)) || \ 733 (defined(MBEDTLS_AES_FEWER_TABLES)) 734 #error "MBEDTLS_AES_ROM_TABLES" 735 #endif 736 #if (!defined(MBEDTLS_CIPHER_MODE_XTS)) || \ 737 (!defined(MBEDTLS_CIPHER_MODE_CBC)) || \ 738 (!defined(MBEDTLS_CIPHER_MODE_CFB)) || \ 739 (!defined(MBEDTLS_CIPHER_MODE_OFB)) || \ 740 (!defined(MBEDTLS_CIPHER_MODE_CTR)) 741 #error "MBEDTLS_CIPHER_MODE" 742 #endif 743 744 /* asn1parse.c asn1write.c */ 745 STRUCT_OFFSET_CHECK(mbedtls_asn1_buf, tag, 0); 746 STRUCT_OFFSET_CHECK(mbedtls_asn1_buf, len, 4); 747 STRUCT_OFFSET_CHECK(mbedtls_asn1_buf, p, 8); 748 STRUCT_SIZE_CHECK(mbedtls_asn1_buf, 12); 749 STRUCT_OFFSET_CHECK(mbedtls_asn1_bitstring, len, 0); 750 STRUCT_OFFSET_CHECK(mbedtls_asn1_bitstring, unused_bits, 4); 751 STRUCT_OFFSET_CHECK(mbedtls_asn1_bitstring, p, 8); 752 STRUCT_SIZE_CHECK(mbedtls_asn1_bitstring, 12); 753 STRUCT_OFFSET_CHECK(mbedtls_asn1_sequence, buf, 0); 754 STRUCT_OFFSET_CHECK(mbedtls_asn1_sequence, next, 12); 755 STRUCT_SIZE_CHECK(mbedtls_asn1_sequence, 16); 756 STRUCT_OFFSET_CHECK(mbedtls_asn1_named_data, oid, 0); 757 STRUCT_OFFSET_CHECK(mbedtls_asn1_named_data, val, 12); 758 STRUCT_OFFSET_CHECK(mbedtls_asn1_named_data, next, 24); 759 STRUCT_OFFSET_CHECK(mbedtls_asn1_named_data, MBEDTLS_PRIVATE(next_merged), 28); 760 STRUCT_SIZE_CHECK(mbedtls_asn1_named_data, 32); 761 #if (!defined(MBEDTLS_ASN1_PARSE_C)) 762 #error "MBEDTLS_ASN1_PARSE_C" 763 #endif 764 #if (!defined(MBEDTLS_ASN1_WRITE_C)) 765 #error "MBEDTLS_ASN1_PARSE_C" 766 #endif 767 768 /* base64.c */ 769 #if (!defined(MBEDTLS_BASE64_C)) 770 #error "MBEDTLS_BASE64_C" 771 #endif 772 773 /* md5.c */ 774 #if (defined(MBEDTLS_MD2_C)) || \ 775 (defined(MBEDTLS_MD4_C)) || \ 776 (!defined(MBEDTLS_MD5_C)) /* || \ 777 (defined(MBEDTLS_MD5_ALT)) */ 778 #error "MBEDTLS_MD_C" 779 #endif 780 #ifdef CONFIG_MBEDTLS_ROM_MD5 781 STRUCT_OFFSET_CHECK(mbedtls_md5_context, total, 0); 782 STRUCT_OFFSET_CHECK(mbedtls_md5_context, state, 8); 783 STRUCT_OFFSET_CHECK(mbedtls_md5_context, buffer, 24); 784 STRUCT_SIZE_CHECK(mbedtls_md5_context, 88); 785 #else 786 STRUCT_OFFSET_CHECK(mbedtls_md5_context, MBEDTLS_PRIVATE(total), 0); 787 STRUCT_OFFSET_CHECK(mbedtls_md5_context, MBEDTLS_PRIVATE(state), 8); 788 STRUCT_OFFSET_CHECK(mbedtls_md5_context, MBEDTLS_PRIVATE(buffer), 24); 789 STRUCT_SIZE_CHECK(mbedtls_md5_context, 88); 790 #endif 791 792 #ifdef __cplusplus 793 } 794 #endif 795