mbed TLS v2.2.0
|
Elliptic curve DSA.
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 ecdsa.h.
Go to the source code of this file.
Macros | |
#define | MBEDTLS_ECDSA_MAX_LEN ( 3 + 2 * ( 3 + MBEDTLS_ECP_MAX_BYTES ) ) |
Maximum size of an ECDSA signature in bytes. More... | |
Typedefs | |
typedef mbedtls_ecp_keypair | mbedtls_ecdsa_context |
ECDSA context structure. More... | |
Functions | |
int | mbedtls_ecdsa_sign (mbedtls_ecp_group *grp, mbedtls_mpi *r, mbedtls_mpi *s, const mbedtls_mpi *d, const unsigned char *buf, size_t blen, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng) |
Compute ECDSA signature of a previously hashed message. More... | |
int | mbedtls_ecdsa_verify (mbedtls_ecp_group *grp, const unsigned char *buf, size_t blen, const mbedtls_ecp_point *Q, const mbedtls_mpi *r, const mbedtls_mpi *s) |
Verify ECDSA signature of a previously hashed message. More... | |
int | mbedtls_ecdsa_write_signature (mbedtls_ecdsa_context *ctx, mbedtls_md_type_t md_alg, const unsigned char *hash, size_t hlen, unsigned char *sig, size_t *slen, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng) |
Compute ECDSA signature and write it to buffer, serialized as defined in RFC 4492 page 20. More... | |
int | mbedtls_ecdsa_read_signature (mbedtls_ecdsa_context *ctx, const unsigned char *hash, size_t hlen, const unsigned char *sig, size_t slen) |
Read and verify an ECDSA signature. More... | |
int | mbedtls_ecdsa_genkey (mbedtls_ecdsa_context *ctx, mbedtls_ecp_group_id gid, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng) |
Generate an ECDSA keypair on the given curve. More... | |
int | mbedtls_ecdsa_from_keypair (mbedtls_ecdsa_context *ctx, const mbedtls_ecp_keypair *key) |
Set an ECDSA context from an EC key pair. More... | |
void | mbedtls_ecdsa_init (mbedtls_ecdsa_context *ctx) |
Initialize context. More... | |
void | mbedtls_ecdsa_free (mbedtls_ecdsa_context *ctx) |
Free context. More... | |
#define MBEDTLS_ECDSA_MAX_LEN ( 3 + 2 * ( 3 + MBEDTLS_ECP_MAX_BYTES ) ) |
void mbedtls_ecdsa_free | ( | mbedtls_ecdsa_context * | ctx | ) |
Free context.
ctx | Context to free |
int mbedtls_ecdsa_from_keypair | ( | mbedtls_ecdsa_context * | ctx, |
const mbedtls_ecp_keypair * | key | ||
) |
Set an ECDSA context from an EC key pair.
ctx | ECDSA context to set |
key | EC key to use |
int mbedtls_ecdsa_genkey | ( | mbedtls_ecdsa_context * | ctx, |
mbedtls_ecp_group_id | gid, | ||
int(*)(void *, unsigned char *, size_t) | f_rng, | ||
void * | p_rng | ||
) |
Generate an ECDSA keypair on the given curve.
ctx | ECDSA context in which the keypair should be stored |
gid | Group (elliptic curve) to use. One of the various MBEDTLS_ECP_DP_XXX macros depending on configuration. |
f_rng | RNG function |
p_rng | RNG parameter |
void mbedtls_ecdsa_init | ( | mbedtls_ecdsa_context * | ctx | ) |
Initialize context.
ctx | Context to initialize |
int mbedtls_ecdsa_read_signature | ( | mbedtls_ecdsa_context * | ctx, |
const unsigned char * | hash, | ||
size_t | hlen, | ||
const unsigned char * | sig, | ||
size_t | slen | ||
) |
Read and verify an ECDSA signature.
ctx | ECDSA context |
hash | Message hash |
hlen | Size of hash |
sig | Signature to read and verify |
slen | Size of sig |
int mbedtls_ecdsa_sign | ( | mbedtls_ecp_group * | grp, |
mbedtls_mpi * | r, | ||
mbedtls_mpi * | s, | ||
const mbedtls_mpi * | d, | ||
const unsigned char * | buf, | ||
size_t | blen, | ||
int(*)(void *, unsigned char *, size_t) | f_rng, | ||
void * | p_rng | ||
) |
Compute ECDSA signature of a previously hashed message.
grp | ECP group |
r | First output integer |
s | Second output integer |
d | Private signing key |
buf | Message hash |
blen | Length of buf |
f_rng | RNG function |
p_rng | RNG parameter |
int mbedtls_ecdsa_verify | ( | mbedtls_ecp_group * | grp, |
const unsigned char * | buf, | ||
size_t | blen, | ||
const mbedtls_ecp_point * | Q, | ||
const mbedtls_mpi * | r, | ||
const mbedtls_mpi * | s | ||
) |
Verify ECDSA signature of a previously hashed message.
grp | ECP group |
buf | Message hash |
blen | Length of buf |
Q | Public key to use for verification |
r | First integer of the signature |
s | Second integer of the signature |
int mbedtls_ecdsa_write_signature | ( | mbedtls_ecdsa_context * | ctx, |
mbedtls_md_type_t | md_alg, | ||
const unsigned char * | hash, | ||
size_t | hlen, | ||
unsigned char * | sig, | ||
size_t * | slen, | ||
int(*)(void *, unsigned char *, size_t) | f_rng, | ||
void * | p_rng | ||
) |
Compute ECDSA signature and write it to buffer, serialized as defined in RFC 4492 page 20.
(Not thread-safe to use same context in multiple threads)
ctx | ECDSA context |
md_alg | Algorithm that was used to hash the message |
hash | Message hash |
hlen | Length of hash |
sig | Buffer that will hold the signature |
slen | Length of the signature written |
f_rng | RNG function |
p_rng | RNG parameter |