ecdsa.h

Go to the documentation of this file.
00001 
00023 #ifndef MBEDTLS_ECDSA_H
00024 #define MBEDTLS_ECDSA_H
00025 
00026 #include "ecp.h"
00027 #include "md.h"
00028 
00029 /*
00030  * RFC 4492 page 20:
00031  *
00032  *     Ecdsa-Sig-Value ::= SEQUENCE {
00033  *         r       INTEGER,
00034  *         s       INTEGER
00035  *     }
00036  *
00037  * Size is at most
00038  *    1 (tag) + 1 (len) + 1 (initial 0) + ECP_MAX_BYTES for each of r and s,
00039  *    twice that + 1 (tag) + 2 (len) for the sequence
00040  * (assuming ECP_MAX_BYTES is less than 126 for r and s,
00041  * and less than 124 (total len <= 255) for the sequence)
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 /* MBEDTLS_ECDSA_DETERMINISTIC */
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 /* MBEDTLS_DEPRECATED_REMOVED */
00185 #endif /* MBEDTLS_ECDSA_DETERMINISTIC */
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 /* ecdsa.h */

Generated on 11 Mar 2017 for mbed TLS v2.4.2 by  doxygen 1.4.7