ecjpake.h File Reference

Elliptic curve J-PAKE. More...

#include "ecp.h"
#include "md.h"

Include dependency graph for ecjpake.h:

Go to the source code of this file.

Data Structures

struct  mbedtls_ecjpake_context
 EC J-PAKE context structure. More...

Enumerations

enum  mbedtls_ecjpake_role { MBEDTLS_ECJPAKE_CLIENT = 0, MBEDTLS_ECJPAKE_SERVER }
 Roles in the EC J-PAKE exchange. More...

Functions

void mbedtls_ecjpake_init (mbedtls_ecjpake_context *ctx)
 Initialize a context (just makes it ready for setup() or free()).
int mbedtls_ecjpake_setup (mbedtls_ecjpake_context *ctx, mbedtls_ecjpake_role role, mbedtls_md_type_t hash, mbedtls_ecp_group_id curve, const unsigned char *secret, size_t len)
 Set up a context for use.
int mbedtls_ecjpake_check (const mbedtls_ecjpake_context *ctx)
int mbedtls_ecjpake_write_round_one (mbedtls_ecjpake_context *ctx, unsigned char *buf, size_t len, size_t *olen, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng)
 Generate and write the first round message (TLS: contents of the Client/ServerHello extension, excluding extension type and length bytes).
int mbedtls_ecjpake_read_round_one (mbedtls_ecjpake_context *ctx, const unsigned char *buf, size_t len)
 Read and process the first round message (TLS: contents of the Client/ServerHello extension, excluding extension type and length bytes).
int mbedtls_ecjpake_write_round_two (mbedtls_ecjpake_context *ctx, unsigned char *buf, size_t len, size_t *olen, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng)
 Generate and write the second round message (TLS: contents of the Client/ServerKeyExchange).
int mbedtls_ecjpake_read_round_two (mbedtls_ecjpake_context *ctx, const unsigned char *buf, size_t len)
 Read and process the second round message (TLS: contents of the Client/ServerKeyExchange).
int mbedtls_ecjpake_derive_secret (mbedtls_ecjpake_context *ctx, unsigned char *buf, size_t len, size_t *olen, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng)
 Derive the shared secret (TLS: Pre-Master Secret).
void mbedtls_ecjpake_free (mbedtls_ecjpake_context *ctx)
 Free a context's content.
int mbedtls_ecjpake_self_test (int verbose)
 Checkup routine.


Detailed Description

Elliptic curve J-PAKE.

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 ecjpake.h.


Enumeration Type Documentation

enum mbedtls_ecjpake_role

Roles in the EC J-PAKE exchange.

Enumerator:
MBEDTLS_ECJPAKE_CLIENT  Client.
MBEDTLS_ECJPAKE_SERVER  Server.

Definition at line 53 of file ecjpake.h.


Function Documentation

int mbedtls_ecjpake_check ( const mbedtls_ecjpake_context ctx  ) 

int mbedtls_ecjpake_derive_secret ( mbedtls_ecjpake_context ctx,
unsigned char *  buf,
size_t  len,
size_t *  olen,
int(*)(void *, unsigned char *, size_t)  f_rng,
void *  p_rng 
)

Derive the shared secret (TLS: Pre-Master Secret).

Parameters:
ctx Context to use
buf Buffer to write the contents to
len Buffer size
olen Will be updated with the number of bytes written
f_rng RNG function
p_rng RNG parameter
Returns:
0 if successfull, a negative error code otherwise

void mbedtls_ecjpake_free ( mbedtls_ecjpake_context ctx  ) 

Free a context's content.

Parameters:
ctx context to free

void mbedtls_ecjpake_init ( mbedtls_ecjpake_context ctx  ) 

Initialize a context (just makes it ready for setup() or free()).

Parameters:
ctx context to initialize

int mbedtls_ecjpake_read_round_one ( mbedtls_ecjpake_context ctx,
const unsigned char *  buf,
size_t  len 
)

Read and process the first round message (TLS: contents of the Client/ServerHello extension, excluding extension type and length bytes).

Parameters:
ctx Context to use
buf Pointer to extension contents
len Extension length
Returns:
0 if successfull, a negative error code otherwise

int mbedtls_ecjpake_read_round_two ( mbedtls_ecjpake_context ctx,
const unsigned char *  buf,
size_t  len 
)

Read and process the second round message (TLS: contents of the Client/ServerKeyExchange).

Parameters:
ctx Context to use
buf Pointer to the message
len Message length
Returns:
0 if successfull, a negative error code otherwise

int mbedtls_ecjpake_self_test ( int  verbose  ) 

Checkup routine.

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

int mbedtls_ecjpake_setup ( mbedtls_ecjpake_context ctx,
mbedtls_ecjpake_role  role,
mbedtls_md_type_t  hash,
mbedtls_ecp_group_id  curve,
const unsigned char *  secret,
size_t  len 
)

Set up a context for use.

Note:
Currently the only values for hash/curve allowed by the standard are MBEDTLS_MD_SHA256/MBEDTLS_ECP_DP_SECP256R1.
Parameters:
ctx context to set up
role Our role: client or server
hash hash function to use (MBEDTLS_MD_XXX)
curve elliptic curve identifier (MBEDTLS_ECP_DP_XXX)
secret pre-shared secret (passphrase)
len length of the shared secret
Returns:
0 if successfull, a negative error code otherwise

int mbedtls_ecjpake_write_round_one ( mbedtls_ecjpake_context ctx,
unsigned char *  buf,
size_t  len,
size_t *  olen,
int(*)(void *, unsigned char *, size_t)  f_rng,
void *  p_rng 
)

Generate and write the first round message (TLS: contents of the Client/ServerHello extension, excluding extension type and length bytes).

Parameters:
ctx Context to use
buf Buffer to write the contents to
len Buffer size
olen Will be updated with the number of bytes written
f_rng RNG function
p_rng RNG parameter
Returns:
0 if successfull, a negative error code otherwise

int mbedtls_ecjpake_write_round_two ( mbedtls_ecjpake_context ctx,
unsigned char *  buf,
size_t  len,
size_t *  olen,
int(*)(void *, unsigned char *, size_t)  f_rng,
void *  p_rng 
)

Generate and write the second round message (TLS: contents of the Client/ServerKeyExchange).

Parameters:
ctx Context to use
buf Buffer to write the contents to
len Buffer size
olen Will be updated with the number of bytes written
f_rng RNG function
p_rng RNG parameter
Returns:
0 if successfull, a negative error code otherwise


Generated on 11 Mar 2017 for mbed TLS v2.4.2 by  doxygen 1.4.7