RetroArch
Functions
ecdh.c File Reference
#include "mbedtls/config.h"
#include "mbedtls/ecdh.h"
#include <string.h>
Include dependency graph for ecdh.c:

Functions

int mbedtls_ecdh_gen_public (mbedtls_ecp_group *grp, mbedtls_mpi *d, mbedtls_ecp_point *Q, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng)
 Generate a public key. Raw function that only does the core computation. More...
 
int mbedtls_ecdh_compute_shared (mbedtls_ecp_group *grp, mbedtls_mpi *z, const mbedtls_ecp_point *Q, const mbedtls_mpi *d, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng)
 Compute shared secret Raw function that only does the core computation. More...
 
void mbedtls_ecdh_init (mbedtls_ecdh_context *ctx)
 Initialize context. More...
 
void mbedtls_ecdh_free (mbedtls_ecdh_context *ctx)
 Free context. More...
 
int mbedtls_ecdh_make_params (mbedtls_ecdh_context *ctx, size_t *olen, unsigned char *buf, size_t blen, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng)
 Generate a public key and a TLS ServerKeyExchange payload. (First function used by a TLS server for ECDHE.) More...
 
int mbedtls_ecdh_read_params (mbedtls_ecdh_context *ctx, const unsigned char **buf, const unsigned char *end)
 Parse and procress a TLS ServerKeyExhange payload. (First function used by a TLS client for ECDHE.) More...
 
int mbedtls_ecdh_get_params (mbedtls_ecdh_context *ctx, const mbedtls_ecp_keypair *key, mbedtls_ecdh_side side)
 Setup an ECDH context from an EC key. (Used by clients and servers in place of the ServerKeyEchange for static ECDH: import ECDH parameters from a certificate's EC key information.) More...
 
int 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)
 Generate a public key and a TLS ClientKeyExchange payload. (Second function used by a TLS client for ECDH(E).) More...
 
int mbedtls_ecdh_read_public (mbedtls_ecdh_context *ctx, const unsigned char *buf, size_t blen)
 Parse and process a TLS ClientKeyExchange payload. (Second function used by a TLS server for ECDH(E).) More...
 
int 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)
 Derive and export the shared secret. (Last function used by both TLS client en servers.) More...
 

Function Documentation

◆ mbedtls_ecdh_calc_secret()

int mbedtls_ecdh_calc_secret ( mbedtls_ecdh_context ctx,
size_t *  olen,
unsigned char *  buf,
size_t  blen,
int(*)(void *, unsigned char *, size_t)  f_rng,
void p_rng 
)

Derive and export the shared secret. (Last function used by both TLS client en servers.)

Parameters
ctxECDH context
olennumber of bytes written
bufdestination buffer
blenbuffer length
f_rngRNG function, see notes for mbedtls_ecdh_compute_shared()
p_rngRNG parameter
Returns
0 if successful, or an MBEDTLS_ERR_ECP_XXX error code
Here is the call graph for this function:
Here is the caller graph for this function:

◆ mbedtls_ecdh_compute_shared()

int mbedtls_ecdh_compute_shared ( mbedtls_ecp_group grp,
mbedtls_mpi z,
const mbedtls_ecp_point Q,
const mbedtls_mpi d,
int(*)(void *, unsigned char *, size_t)  f_rng,
void p_rng 
)

Compute shared secret Raw function that only does the core computation.

Parameters
grpECP group
zDestination MPI (shared secret)
QPublic key from other party
dOur secret exponent (private key)
f_rngRNG function (see notes)
p_rngRNG parameter
Returns
0 if successful, or a MBEDTLS_ERR_ECP_XXX or MBEDTLS_MPI_XXX error code
Note
If f_rng is not NULL, it is used to implement countermeasures against potential elaborate timing attacks, see mbedtls_ecp_mul() for details.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ mbedtls_ecdh_free()

void mbedtls_ecdh_free ( mbedtls_ecdh_context ctx)

Free context.

Parameters
ctxContext to free
Here is the call graph for this function:
Here is the caller graph for this function:

◆ mbedtls_ecdh_gen_public()

int mbedtls_ecdh_gen_public ( mbedtls_ecp_group grp,
mbedtls_mpi d,
mbedtls_ecp_point Q,
int(*)(void *, unsigned char *, size_t)  f_rng,
void p_rng 
)

Generate a public key. Raw function that only does the core computation.

Parameters
grpECP group
dDestination MPI (secret exponent, aka private key)
QDestination point (public key)
f_rngRNG function
p_rngRNG parameter
Returns
0 if successful, or a MBEDTLS_ERR_ECP_XXX or MBEDTLS_MPI_XXX error code
Here is the call graph for this function:
Here is the caller graph for this function:

◆ mbedtls_ecdh_get_params()

int mbedtls_ecdh_get_params ( mbedtls_ecdh_context ctx,
const mbedtls_ecp_keypair key,
mbedtls_ecdh_side  side 
)

Setup an ECDH context from an EC key. (Used by clients and servers in place of the ServerKeyEchange for static ECDH: import ECDH parameters from a certificate's EC key information.)

Parameters
ctxECDH constext to set
keyEC key to use
sideIs it our key (1) or the peer's key (0) ?
Returns
0 if successful, or an MBEDTLS_ERR_ECP_XXX error code
Here is the call graph for this function:
Here is the caller graph for this function:

◆ mbedtls_ecdh_init()

void mbedtls_ecdh_init ( mbedtls_ecdh_context ctx)

Initialize context.

Parameters
ctxContext to initialize
Here is the call graph for this function:
Here is the caller graph for this function:

◆ mbedtls_ecdh_make_params()

int mbedtls_ecdh_make_params ( mbedtls_ecdh_context ctx,
size_t *  olen,
unsigned char *  buf,
size_t  blen,
int(*)(void *, unsigned char *, size_t)  f_rng,
void p_rng 
)

Generate a public key and a TLS ServerKeyExchange payload. (First function used by a TLS server for ECDHE.)

Parameters
ctxECDH context
olennumber of chars written
bufdestination buffer
blenlength of buffer
f_rngRNG function
p_rngRNG parameter
Note
This function assumes that ctx->grp has already been properly set (for example using mbedtls_ecp_group_load).
Returns
0 if successful, or an MBEDTLS_ERR_ECP_XXX error code
Here is the call graph for this function:
Here is the caller graph for this function:

◆ mbedtls_ecdh_make_public()

int mbedtls_ecdh_make_public ( mbedtls_ecdh_context ctx,
size_t *  olen,
unsigned char *  buf,
size_t  blen,
int(*)(void *, unsigned char *, size_t)  f_rng,
void p_rng 
)

Generate a public key and a TLS ClientKeyExchange payload. (Second function used by a TLS client for ECDH(E).)

Parameters
ctxECDH context
olennumber of bytes actually written
bufdestination buffer
blensize of destination buffer
f_rngRNG function
p_rngRNG parameter
Returns
0 if successful, or an MBEDTLS_ERR_ECP_XXX error code
Here is the call graph for this function:
Here is the caller graph for this function:

◆ mbedtls_ecdh_read_params()

int mbedtls_ecdh_read_params ( mbedtls_ecdh_context ctx,
const unsigned char **  buf,
const unsigned char *  end 
)

Parse and procress a TLS ServerKeyExhange payload. (First function used by a TLS client for ECDHE.)

Parameters
ctxECDH context
bufpointer to start of input buffer
endone past end of buffer
Returns
0 if successful, or an MBEDTLS_ERR_ECP_XXX error code
Here is the call graph for this function:
Here is the caller graph for this function:

◆ mbedtls_ecdh_read_public()

int mbedtls_ecdh_read_public ( mbedtls_ecdh_context ctx,
const unsigned char *  buf,
size_t  blen 
)

Parse and process a TLS ClientKeyExchange payload. (Second function used by a TLS server for ECDH(E).)

Parameters
ctxECDH context
bufstart of input buffer
blenlength of input buffer
Returns
0 if successful, or an MBEDTLS_ERR_ECP_XXX error code
Here is the call graph for this function:
Here is the caller graph for this function: