The scalar multiplication function in Mbed TLS accepts a random
number generator (RNG) as an optional argument and, if provided,
uses it to protect against some attacks.
It is the caller's responsibility to provide a RNG if protection
against side-channel attacks is desired; however two groups of
functions in Mbed TLS itself fail to pass a RNG:
- mbedtls_pk_parse_key() and mbedtls_pk_parse_keyfile()
- mbedtls_ecp_check_pub_priv() and mbedtls_pk_check_pair()
When those functions are called, scalar multiplication is computed
without randomisation, a number of old and new attacks apply,
allowing a powerful local attacker to fully recover the private
key.