|
PolarSSL v1.3.1
|
Elliptic curve Diffie-Hellman. More...
#include "ecp.h"

Go to the source code of this file.
Data Structures | |
| struct | ecdh_context |
| ECDH context structure. 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_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. | |
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.
| 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.
| 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 |
| 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.
| 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 |
ecp_mul() for details. | void ecdh_free | ( | ecdh_context * | ctx | ) |
Free context.
| ctx | Context to free |
| int ecdh_gen_public | ( | ecp_group * | grp, |
| mpi * | d, | ||
| ecp_point * | Q, | ||
| int(*)(void *, unsigned char *, size_t) | f_rng, | ||
| void * | p_rng | ||
| ) |
Generate a public key.
| grp | ECP group |
| d | Destination MPI (secret exponent) |
| Q | Destination point (public key) |
| f_rng | RNG function |
| p_rng | RNG parameter |
| void ecdh_init | ( | ecdh_context * | ctx | ) |
Initialize context.
| ctx | Context to initialize |
| 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.
| ctx | ECDH context |
| olen | number of chars written |
| buf | destination buffer |
| blen | length of buffer |
| f_rng | RNG function |
| p_rng | RNG parameter |
| 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.
| 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 |
| int ecdh_read_params | ( | ecdh_context * | ctx, |
| const unsigned char ** | buf, | ||
| const unsigned char * | end | ||
| ) |
Parse the ServerKeyExhange parameters.
| ctx | ECDH context |
| buf | pointer to start of input buffer |
| end | one past end of buffer |
| int ecdh_read_public | ( | ecdh_context * | ctx, |
| const unsigned char * | buf, | ||
| size_t | blen | ||
| ) |
Parse and import the client's public value.
| ctx | ECDH context |
| buf | start of input buffer |
| blen | length of input buffer |
| int ecdh_self_test | ( | int | verbose | ) |
Checkup routine.
1.8.3