mbed TLS v2.2.0
|
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.
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()). More... | |
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. More... | |
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) More... | |
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) More... | |
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) More... | |
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) More... | |
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) More... | |
void | mbedtls_ecjpake_free (mbedtls_ecjpake_context *ctx) |
Free a context's content. More... | |
enum mbedtls_ecjpake_role |
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)
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 |
void mbedtls_ecjpake_free | ( | mbedtls_ecjpake_context * | ctx | ) |
Free a context's content.
ctx | context to free |
void mbedtls_ecjpake_init | ( | mbedtls_ecjpake_context * | ctx | ) |
Initialize a context (just makes it ready for setup() or free()).
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)
ctx | Context to use |
buf | Pointer to extension contents |
len | Extension length |
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)
ctx | Context to use |
buf | Pointer to the message |
len | Message length |
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.
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 |
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)
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 |
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)
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 |