24 #ifndef POLARSSL_ECDSA_H
25 #define POLARSSL_ECDSA_H
45 #define POLARSSL_ECDSA_MAX_LEN ( 3 + 2 * ( 3 + POLARSSL_ECP_MAX_BYTES ) )
86 const mpi *d,
const unsigned char *buf,
size_t blen,
87 int (*f_rng)(
void *,
unsigned char *,
size_t),
void *p_rng );
89 #if defined(POLARSSL_ECDSA_DETERMINISTIC)
110 const mpi *d,
const unsigned char *buf,
size_t blen,
133 const unsigned char *buf,
size_t blen,
162 const unsigned char *hash,
size_t hlen,
163 unsigned char *sig,
size_t *slen,
164 int (*f_rng)(
void *,
unsigned char *,
size_t),
167 #if defined(POLARSSL_ECDSA_DETERMINISTIC)
190 const unsigned char *hash,
size_t hlen,
191 unsigned char *sig,
size_t *slen,
215 const unsigned char *hash,
size_t hlen,
216 const unsigned char *sig,
size_t slen );
230 int (*f_rng)(
void *,
unsigned char *,
size_t),
void *p_rng );
int ecdsa_from_keypair(ecdsa_context *ctx, const ecp_keypair *key)
Set an ECDSA context from an EC key pair.
int ecdsa_verify(ecp_group *grp, const unsigned char *buf, size_t blen, const ecp_point *Q, const mpi *r, const mpi *s)
Verify ECDSA signature of a previously hashed message.
Elliptic curves over GF(p)
int ecdsa_write_signature(ecdsa_context *ctx, 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...
int ecdsa_sign(ecp_group *grp, mpi *r, mpi *s, const 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.
int ecdsa_self_test(int verbose)
Checkup routine.
ECP point structure (jacobian coordinates)
int ecdsa_read_signature(ecdsa_context *ctx, const unsigned char *hash, size_t hlen, const unsigned char *sig, size_t slen)
Read and verify an ECDSA signature.
void ecdsa_init(ecdsa_context *ctx)
Initialize context.
Generic message digest wrapper.
ecp_group_id
Domain parameters (curve, subgroup and generator) identifiers.
int ecdsa_genkey(ecdsa_context *ctx, ecp_group_id gid, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng)
Generate an ECDSA keypair on the given curve.
int ecdsa_sign_det(ecp_group *grp, mpi *r, mpi *s, const mpi *d, const unsigned char *buf, size_t blen, md_type_t md_alg)
Compute ECDSA signature of a previously hashed message (deterministic version)
void ecdsa_free(ecdsa_context *ctx)
Free context.
int ecdsa_write_signature_det(ecdsa_context *ctx, const unsigned char *hash, size_t hlen, unsigned char *sig, size_t *slen, md_type_t md_alg)
Compute ECDSA signature and write it to buffer, serialized as defined in RFC 4492 page 20...