When working with MBETLS, it hangs on calling the static int ecdh_make_public_internal function (ecdh.c, 485) (=> client key exchange record)
I wrote about it in my post earlier
Printout and data analysis show incorrect data being passed in the function:
ctx->grp.nbits ← 0x209
ctx->grp.pbits ← 0x209
This hangup happens in low-level functions:
MBEDTLS_MPI_CHK(ecp_mul_comb( grp, R, m, P, f_rng, p_rng, rs_ctx));
MBEDTLS_MPI_CHK(ecp_mul_mxz( grp, R, m, P, f_rng, p_rng));
MBEDTLS_MPI_CHK(mbedtls_ecp_check_privkey(grp, m));
MBEDTLS_MPI_CHK(mbedtls_ecp_check_pubkey(grp, P));
spontaneous return from one function processor go to HardFault in next function.
If I correct the data as follows:
ctx->grp.nbits ← 0x100
ctx->grp.pbits ← 0x100
in static int ecdh_make_public_internal (ecdh.c, 485), this effect disappears completely. I believe that no input data should lead to a similar effect.