mbedtls ported to mbed-classic
Fork of mbedtls by
ecdh.h File Reference
Elliptic curve Diffie-Hellman. More...
Go to the source code of this file.
Data Structures | |
struct | mbedtls_ecdh_context |
ECDH context structure. More... | |
Enumerations | |
enum | mbedtls_ecdh_side |
When importing from an EC key, select if it is our key or the peer's key. More... | |
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. | |
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. | |
void | mbedtls_ecdh_init (mbedtls_ecdh_context *ctx) |
Initialize context. | |
void | mbedtls_ecdh_free (mbedtls_ecdh_context *ctx) |
Free context. | |
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. | |
int | mbedtls_ecdh_read_params (mbedtls_ecdh_context *ctx, const unsigned char **buf, const unsigned char *end) |
Parse and procress a TLS ServerKeyExhange payload. | |
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. | |
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. | |
int | mbedtls_ecdh_read_public (mbedtls_ecdh_context *ctx, const unsigned char *buf, size_t blen) |
Parse and process a TLS ClientKeyExchange payload. | |
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. |
Detailed Description
Elliptic curve Diffie-Hellman.
Copyright (C) 2006-2015, ARM Limited, All Rights Reserved SPDX-License-Identifier: Apache-2.0
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
This file is part of mbed TLS (https://tls.mbed.org)
Definition in file ecdh.h.
Enumeration Type Documentation
enum mbedtls_ecdh_side |
Function Documentation
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:
-
ctx ECDH context olen number of bytes written buf destination buffer blen buffer length f_rng RNG function, see notes for mbedtls_ecdh_compute_shared()
p_rng RNG parameter
- Returns:
- 0 if successful, or an MBEDTLS_ERR_ECP_XXX error code
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:
-
grp ECP group z Destination MPI (shared secret) Q Public key from other party d Our secret exponent (private key) f_rng RNG function (see notes) p_rng RNG 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.
void mbedtls_ecdh_free | ( | mbedtls_ecdh_context * | ctx ) |
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:
-
grp ECP group d Destination MPI (secret exponent, aka private key) Q Destination point (public key) f_rng RNG function p_rng RNG parameter
- Returns:
- 0 if successful, or a MBEDTLS_ERR_ECP_XXX or MBEDTLS_MPI_XXX error code
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:
-
ctx ECDH constext to set key EC key to use side Is it our key (1) or the peer's key (0) ?
- Returns:
- 0 if successful, or an MBEDTLS_ERR_ECP_XXX error code
void mbedtls_ecdh_init | ( | mbedtls_ecdh_context * | ctx ) |
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:
-
ctx ECDH context olen number of chars written buf destination buffer blen length of buffer f_rng RNG function p_rng RNG 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
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:
-
ctx ECDH context olen number of bytes actually written buf destination buffer blen size of destination buffer f_rng RNG function p_rng RNG parameter
- Returns:
- 0 if successful, or an MBEDTLS_ERR_ECP_XXX error code
int mbedtls_ecdh_read_params | ( | mbedtls_ecdh_context * | ctx, |
const unsigned char ** | buf, | ||
const unsigned char * | end | ||
) |
int mbedtls_ecdh_read_public | ( | mbedtls_ecdh_context * | ctx, |
const unsigned char * | buf, | ||
size_t | blen | ||
) |
Generated on Tue Jul 12 2022 12:52:51 by 1.7.2