00001
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef MBEDTLS_ECDSA_H
00032 #define MBEDTLS_ECDSA_H
00033
00034 #include "ecp.h"
00035 #include "md.h"
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051 #if MBEDTLS_ECP_MAX_BYTES > 124
00052 #error "MBEDTLS_ECP_MAX_BYTES bigger than expected, please fix MBEDTLS_ECDSA_MAX_LEN"
00053 #endif
00054
00055 #define MBEDTLS_ECDSA_MAX_LEN ( 3 + 2 * ( 3 + MBEDTLS_ECP_MAX_BYTES ) )
00056
00060 typedef mbedtls_ecp_keypair mbedtls_ecdsa_context;
00061
00062 #ifdef __cplusplus
00063 extern "C" {
00064 #endif
00065
00092 int mbedtls_ecdsa_sign( mbedtls_ecp_group *grp, mbedtls_mpi *r, mbedtls_mpi *s,
00093 const mbedtls_mpi *d, const unsigned char *buf, size_t blen,
00094 int (*f_rng)(void *, unsigned char *, size_t), void *p_rng );
00095
00096 #if defined(MBEDTLS_ECDSA_DETERMINISTIC)
00097
00124 int mbedtls_ecdsa_sign_det( mbedtls_ecp_group *grp, mbedtls_mpi *r, mbedtls_mpi *s,
00125 const mbedtls_mpi *d, const unsigned char *buf, size_t blen,
00126 mbedtls_md_type_t md_alg );
00127 #endif
00128
00153 int mbedtls_ecdsa_verify( mbedtls_ecp_group *grp,
00154 const unsigned char *buf, size_t blen,
00155 const mbedtls_ecp_point *Q, const mbedtls_mpi *r, const mbedtls_mpi *s);
00156
00198 int mbedtls_ecdsa_write_signature( mbedtls_ecdsa_context *ctx, mbedtls_md_type_t md_alg,
00199 const unsigned char *hash, size_t hlen,
00200 unsigned char *sig, size_t *slen,
00201 int (*f_rng)(void *, unsigned char *, size_t),
00202 void *p_rng );
00203
00204 #if defined(MBEDTLS_ECDSA_DETERMINISTIC)
00205 #if ! defined(MBEDTLS_DEPRECATED_REMOVED)
00206 #if defined(MBEDTLS_DEPRECATED_WARNING)
00207 #define MBEDTLS_DEPRECATED __attribute__((deprecated))
00208 #else
00209 #define MBEDTLS_DEPRECATED
00210 #endif
00211
00250 int mbedtls_ecdsa_write_signature_det( mbedtls_ecdsa_context *ctx,
00251 const unsigned char *hash, size_t hlen,
00252 unsigned char *sig, size_t *slen,
00253 mbedtls_md_type_t md_alg ) MBEDTLS_DEPRECATED;
00254 #undef MBEDTLS_DEPRECATED
00255 #endif
00256 #endif
00257
00282 int mbedtls_ecdsa_read_signature( mbedtls_ecdsa_context *ctx,
00283 const unsigned char *hash, size_t hlen,
00284 const unsigned char *sig, size_t slen );
00285
00300 int mbedtls_ecdsa_genkey( mbedtls_ecdsa_context *ctx, mbedtls_ecp_group_id gid,
00301 int (*f_rng)(void *, unsigned char *, size_t), void *p_rng );
00302
00314 int mbedtls_ecdsa_from_keypair( mbedtls_ecdsa_context *ctx, const mbedtls_ecp_keypair *key );
00315
00321 void mbedtls_ecdsa_init( mbedtls_ecdsa_context *ctx );
00322
00328 void mbedtls_ecdsa_free( mbedtls_ecdsa_context *ctx );
00329
00330 #ifdef __cplusplus
00331 }
00332 #endif
00333
00334 #endif