00001
00023 #ifndef MBEDTLS_ECDSA_H
00024 #define MBEDTLS_ECDSA_H
00025
00026 #include "ecp.h"
00027 #include "md.h"
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043 #if MBEDTLS_ECP_MAX_BYTES > 124
00044 #error "MBEDTLS_ECP_MAX_BYTES bigger than expected, please fix MBEDTLS_ECDSA_MAX_LEN"
00045 #endif
00046
00047 #define MBEDTLS_ECDSA_MAX_LEN ( 3 + 2 * ( 3 + MBEDTLS_ECP_MAX_BYTES ) )
00048
00052 typedef mbedtls_ecp_keypair mbedtls_ecdsa_context;
00053
00054 #ifdef __cplusplus
00055 extern "C" {
00056 #endif
00057
00075 int mbedtls_ecdsa_sign( mbedtls_ecp_group *grp, mbedtls_mpi *r, mbedtls_mpi *s,
00076 const mbedtls_mpi *d, const unsigned char *buf, size_t blen,
00077 int (*f_rng)(void *, unsigned char *, size_t), void *p_rng );
00078
00079 #if defined(MBEDTLS_ECDSA_DETERMINISTIC)
00080
00095 int mbedtls_ecdsa_sign_det( mbedtls_ecp_group *grp, mbedtls_mpi *r, mbedtls_mpi *s,
00096 const mbedtls_mpi *d, const unsigned char *buf, size_t blen,
00097 mbedtls_md_type_t md_alg );
00098 #endif
00099
00114 int mbedtls_ecdsa_verify( mbedtls_ecp_group *grp,
00115 const unsigned char *buf, size_t blen,
00116 const mbedtls_ecp_point *Q, const mbedtls_mpi *r, const mbedtls_mpi *s);
00117
00143 int mbedtls_ecdsa_write_signature( mbedtls_ecdsa_context *ctx, mbedtls_md_type_t md_alg,
00144 const unsigned char *hash, size_t hlen,
00145 unsigned char *sig, size_t *slen,
00146 int (*f_rng)(void *, unsigned char *, size_t),
00147 void *p_rng );
00148
00149 #if defined(MBEDTLS_ECDSA_DETERMINISTIC)
00150 #if ! defined(MBEDTLS_DEPRECATED_REMOVED)
00151 #if defined(MBEDTLS_DEPRECATED_WARNING)
00152 #define MBEDTLS_DEPRECATED __attribute__((deprecated))
00153 #else
00154 #define MBEDTLS_DEPRECATED
00155 #endif
00156
00179 int mbedtls_ecdsa_write_signature_det( mbedtls_ecdsa_context *ctx,
00180 const unsigned char *hash, size_t hlen,
00181 unsigned char *sig, size_t *slen,
00182 mbedtls_md_type_t md_alg ) MBEDTLS_DEPRECATED;
00183 #undef MBEDTLS_DEPRECATED
00184 #endif
00185 #endif
00186
00202 int mbedtls_ecdsa_read_signature( mbedtls_ecdsa_context *ctx,
00203 const unsigned char *hash, size_t hlen,
00204 const unsigned char *sig, size_t slen );
00205
00217 int mbedtls_ecdsa_genkey( mbedtls_ecdsa_context *ctx, mbedtls_ecp_group_id gid,
00218 int (*f_rng)(void *, unsigned char *, size_t), void *p_rng );
00219
00228 int mbedtls_ecdsa_from_keypair( mbedtls_ecdsa_context *ctx, const mbedtls_ecp_keypair *key );
00229
00235 void mbedtls_ecdsa_init( mbedtls_ecdsa_context *ctx );
00236
00242 void mbedtls_ecdsa_free( mbedtls_ecdsa_context *ctx );
00243
00244 #ifdef __cplusplus
00245 }
00246 #endif
00247
00248 #endif