Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
ecdh.h File Reference
Elliptic curve Diffie-Hellman. More...
Go to the source code of this file.
Data Structures | |
| struct | ecdh_context |
| ECDH context structure. More... | |
Enumerations | |
| enum | ecdh_side |
When importing from an EC key, select if it is our key or the peer's key. More... | |
Functions | |
| int | ecdh_gen_public (ecp_group *grp, mpi *d, ecp_point *Q, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng) |
| Generate a public key. | |
| int | ecdh_compute_shared (ecp_group *grp, mpi *z, const ecp_point *Q, const mpi *d, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng) |
| Compute shared secret. | |
| void | ecdh_init (ecdh_context *ctx) |
| Initialize context. | |
| void | ecdh_free (ecdh_context *ctx) |
| Free context. | |
| int | ecdh_make_params (ecdh_context *ctx, size_t *olen, unsigned char *buf, size_t blen, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng) |
| Setup and write the ServerKeyExhange parameters. | |
| int | ecdh_read_params (ecdh_context *ctx, const unsigned char **buf, const unsigned char *end) |
| Parse the ServerKeyExhange parameters. | |
| int | ecdh_get_params (ecdh_context *ctx, const ecp_keypair *key, ecdh_side side) |
| Setup an ECDH context from an EC key. | |
| int | ecdh_make_public (ecdh_context *ctx, size_t *olen, unsigned char *buf, size_t blen, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng) |
| Setup and export the client's public value. | |
| int | ecdh_read_public (ecdh_context *ctx, const unsigned char *buf, size_t blen) |
| Parse and import the client's public value. | |
| int | ecdh_calc_secret (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. | |
| int | ecdh_self_test (int verbose) |
| Checkup routine. | |
Detailed Description
Elliptic curve Diffie-Hellman.
Copyright (C) 2006-2013, Brainspark B.V.
This file is part of PolarSSL (http://www.polarssl.org) Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
All rights reserved.
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Definition in file ecdh.h.
Enumeration Type Documentation
| enum ecdh_side |
Function Documentation
| int ecdh_calc_secret | ( | 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.
- Parameters:
-
ctx ECDH context olen number of bytes written buf destination buffer blen buffer length f_rng RNG function, see notes for ecdh_compute_shared()p_rng RNG parameter
- Returns:
- 0 if successful, or an POLARSSL_ERR_ECP_XXX error code
| int ecdh_compute_shared | ( | ecp_group * | grp, |
| mpi * | z, | ||
| const ecp_point * | Q, | ||
| const mpi * | d, | ||
| int(*)(void *, unsigned char *, size_t) | f_rng, | ||
| void * | p_rng | ||
| ) |
Compute shared secret.
- Parameters:
-
grp ECP group z Destination MPI (shared secret) Q Public key from other party d Our secret exponent f_rng RNG function (see notes) p_rng RNG parameter
- Returns:
- 0 if successful, or a POLARSSL_ERR_ECP_XXX or POLARSSL_MPI_XXX error code
- Note:
- If f_rng is not NULL, it is used to implement countermeasures against potential elaborate timing attacks, see
ecp_mul()for details.
| void ecdh_free | ( | ecdh_context * | ctx ) |
| int ecdh_get_params | ( | ecdh_context * | ctx, |
| const ecp_keypair * | key, | ||
| ecdh_side | side | ||
| ) |
| void ecdh_init | ( | ecdh_context * | ctx ) |
| int ecdh_make_params | ( | ecdh_context * | ctx, |
| size_t * | olen, | ||
| unsigned char * | buf, | ||
| size_t | blen, | ||
| int(*)(void *, unsigned char *, size_t) | f_rng, | ||
| void * | p_rng | ||
| ) |
Setup and write the ServerKeyExhange parameters.
- 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 ecp_use_known_dp).
- Returns:
- 0 if successful, or an POLARSSL_ERR_ECP_XXX error code
| int ecdh_make_public | ( | ecdh_context * | ctx, |
| size_t * | olen, | ||
| unsigned char * | buf, | ||
| size_t | blen, | ||
| int(*)(void *, unsigned char *, size_t) | f_rng, | ||
| void * | p_rng | ||
| ) |
Setup and export the client's public value.
- 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 POLARSSL_ERR_ECP_XXX error code
| int ecdh_read_params | ( | ecdh_context * | ctx, |
| const unsigned char ** | buf, | ||
| const unsigned char * | end | ||
| ) |
| int ecdh_read_public | ( | ecdh_context * | ctx, |
| const unsigned char * | buf, | ||
| size_t | blen | ||
| ) |
Generated on Tue Jul 12 2022 19:40:22 by
1.7.2