PolarSSL v1.1.4
Data Structures | Defines | Functions
dhm.h File Reference

Diffie-Hellman-Merkle key exchange. More...

#include "bignum.h"
Include dependency graph for dhm.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  dhm_context
 DHM context structure. More...

Defines

#define POLARSSL_ERR_DHM_BAD_INPUT_DATA   -0x3080
 Bad input parameters to function.
#define POLARSSL_ERR_DHM_READ_PARAMS_FAILED   -0x3100
 Reading of the DHM parameters failed.
#define POLARSSL_ERR_DHM_MAKE_PARAMS_FAILED   -0x3180
 Making of the DHM parameters failed.
#define POLARSSL_ERR_DHM_READ_PUBLIC_FAILED   -0x3200
 Reading of the public values failed.
#define POLARSSL_ERR_DHM_MAKE_PUBLIC_FAILED   -0x3280
 Making of the public value failed.
#define POLARSSL_ERR_DHM_CALC_SECRET_FAILED   -0x3300
 Calculation of the DHM secret failed.

Functions

int dhm_read_params (dhm_context *ctx, unsigned char **p, const unsigned char *end)
 Parse the ServerKeyExchange parameters.
int dhm_make_params (dhm_context *ctx, int x_size, unsigned char *output, size_t *olen, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng)
 Setup and write the ServerKeyExchange parameters.
int dhm_read_public (dhm_context *ctx, const unsigned char *input, size_t ilen)
 Import the peer's public value G^Y.
int dhm_make_public (dhm_context *ctx, int x_size, unsigned char *output, size_t olen, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng)
 Create own private value X and export G^X.
int dhm_calc_secret (dhm_context *ctx, unsigned char *output, size_t *olen)
 Derive and export the shared secret (G^Y)^X mod P.
void dhm_free (dhm_context *ctx)
int dhm_self_test (int verbose)
 Checkup routine.

Detailed Description

Diffie-Hellman-Merkle key exchange.

Copyright (C) 2006-2010, 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 dhm.h.


Define Documentation

#define POLARSSL_ERR_DHM_BAD_INPUT_DATA   -0x3080

Bad input parameters to function.

Definition at line 35 of file dhm.h.

Calculation of the DHM secret failed.

Definition at line 40 of file dhm.h.

Making of the DHM parameters failed.

Definition at line 37 of file dhm.h.

Making of the public value failed.

Definition at line 39 of file dhm.h.

Reading of the DHM parameters failed.

Definition at line 36 of file dhm.h.

Reading of the public values failed.

Definition at line 38 of file dhm.h.


Function Documentation

int dhm_calc_secret ( dhm_context ctx,
unsigned char *  output,
size_t *  olen 
)

Derive and export the shared secret (G^Y)^X mod P.

Parameters:
ctxDHM context
outputdestination buffer
olennumber of chars written
Returns:
0 if successful, or an POLARSSL_ERR_DHM_XXX error code

Referenced by FCT_BGN().

void dhm_free ( dhm_context ctx)

Referenced by FCT_BGN().

int dhm_make_params ( dhm_context ctx,
int  x_size,
unsigned char *  output,
size_t *  olen,
int(*)(void *, unsigned char *, size_t)  f_rng,
void *  p_rng 
)

Setup and write the ServerKeyExchange parameters.

Parameters:
ctxDHM context
x_sizeprivate value size in bytes
outputdestination buffer
olennumber of chars written
f_rngRNG function
p_rngRNG parameter
Note:
This function assumes that ctx->P and ctx->G have already been properly set (for example using mpi_read_string or mpi_read_binary).
Returns:
0 if successful, or an POLARSSL_ERR_DHM_XXX error code

Referenced by FCT_BGN().

int dhm_make_public ( dhm_context ctx,
int  x_size,
unsigned char *  output,
size_t  olen,
int(*)(void *, unsigned char *, size_t)  f_rng,
void *  p_rng 
)

Create own private value X and export G^X.

Parameters:
ctxDHM context
x_sizeprivate value size in bytes
outputdestination buffer
olenmust be equal to ctx->P.len
f_rngRNG function
p_rngRNG parameter
Returns:
0 if successful, or an POLARSSL_ERR_DHM_XXX error code

Referenced by FCT_BGN().

int dhm_read_params ( dhm_context ctx,
unsigned char **  p,
const unsigned char *  end 
)

Parse the ServerKeyExchange parameters.

Parameters:
ctxDHM context
p&(start of input buffer)
endend of buffer
Returns:
0 if successful, or an POLARSSL_ERR_DHM_XXX error code

Referenced by FCT_BGN().

int dhm_read_public ( dhm_context ctx,
const unsigned char *  input,
size_t  ilen 
)

Import the peer's public value G^Y.

Parameters:
ctxDHM context
inputinput buffer
ilensize of buffer
Returns:
0 if successful, or an POLARSSL_ERR_DHM_XXX error code

Referenced by FCT_BGN().

int dhm_self_test ( int  verbose)

Checkup routine.

Returns:
0 if successful, or 1 if the test failed