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 #if !defined(MBEDTLS_CONFIG_FILE)
00035 #include "config.h"
00036 #else
00037 #include MBEDTLS_CONFIG_FILE
00038 #endif
00039
00040 #include "ecp.h"
00041 #include "md.h"
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057 #if MBEDTLS_ECP_MAX_BYTES > 124
00058 #error "MBEDTLS_ECP_MAX_BYTES bigger than expected, please fix MBEDTLS_ECDSA_MAX_LEN"
00059 #endif
00060
00061 #define MBEDTLS_ECDSA_MAX_LEN ( 3 + 2 * ( 3 + MBEDTLS_ECP_MAX_BYTES ) )
00062
00066 typedef mbedtls_ecp_keypair mbedtls_ecdsa_context;
00067
00068 #ifdef __cplusplus
00069 extern "C" {
00070 #endif
00071
00098 int mbedtls_ecdsa_sign( mbedtls_ecp_group *grp, mbedtls_mpi *r, mbedtls_mpi *s,
00099 const mbedtls_mpi *d, const unsigned char *buf, size_t blen,
00100 int (*f_rng)(void *, unsigned char *, size_t), void *p_rng );
00101
00102 #if defined(MBEDTLS_ECDSA_DETERMINISTIC)
00103
00130 int mbedtls_ecdsa_sign_det( mbedtls_ecp_group *grp, mbedtls_mpi *r, mbedtls_mpi *s,
00131 const mbedtls_mpi *d, const unsigned char *buf, size_t blen,
00132 mbedtls_md_type_t md_alg );
00133 #endif
00134
00159 int mbedtls_ecdsa_verify( mbedtls_ecp_group *grp,
00160 const unsigned char *buf, size_t blen,
00161 const mbedtls_ecp_point *Q, const mbedtls_mpi *r, const mbedtls_mpi *s);
00162
00204 int mbedtls_ecdsa_write_signature( mbedtls_ecdsa_context *ctx, mbedtls_md_type_t md_alg,
00205 const unsigned char *hash, size_t hlen,
00206 unsigned char *sig, size_t *slen,
00207 int (*f_rng)(void *, unsigned char *, size_t),
00208 void *p_rng );
00209
00210 #if defined(MBEDTLS_ECDSA_DETERMINISTIC)
00211 #if ! defined(MBEDTLS_DEPRECATED_REMOVED)
00212 #if defined(MBEDTLS_DEPRECATED_WARNING)
00213 #define MBEDTLS_DEPRECATED __attribute__((deprecated))
00214 #else
00215 #define MBEDTLS_DEPRECATED
00216 #endif
00217
00256 int mbedtls_ecdsa_write_signature_det( mbedtls_ecdsa_context *ctx,
00257 const unsigned char *hash, size_t hlen,
00258 unsigned char *sig, size_t *slen,
00259 mbedtls_md_type_t md_alg ) MBEDTLS_DEPRECATED;
00260 #undef MBEDTLS_DEPRECATED
00261 #endif
00262 #endif
00263
00288 int mbedtls_ecdsa_read_signature( mbedtls_ecdsa_context *ctx,
00289 const unsigned char *hash, size_t hlen,
00290 const unsigned char *sig, size_t slen );
00291
00306 int mbedtls_ecdsa_genkey( mbedtls_ecdsa_context *ctx, mbedtls_ecp_group_id gid,
00307 int (*f_rng)(void *, unsigned char *, size_t), void *p_rng );
00308
00320 int mbedtls_ecdsa_from_keypair( mbedtls_ecdsa_context *ctx, const mbedtls_ecp_keypair *key );
00321
00327 void mbedtls_ecdsa_init( mbedtls_ecdsa_context *ctx );
00328
00334 void mbedtls_ecdsa_free( mbedtls_ecdsa_context *ctx );
00335
00336 #ifdef __cplusplus
00337 }
00338 #endif
00339
00340 #endif