int mbedtls_ecdsa_write_signature_det( mbedtls_ecdsa_context *ctx, const unsigned char *hash, size_t hlen, unsigned char *sig, size_t *slen, mbedtls_md_type_t md_alg ) { return( mbedtls_ecdsa_write_signature( ctx, md_alg, hash, hlen, sig, slen, NULL, NULL ) ); }
static int ecdsa_sign_wrap( void *ctx, mbedtls_md_type_t md_alg, const unsigned char *hash, size_t hash_len, unsigned char *sig, size_t *sig_len, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ) { return( mbedtls_ecdsa_write_signature( (mbedtls_ecdsa_context *) ctx, md_alg, hash, hash_len, sig, sig_len, f_rng, p_rng ) ); }
tt_result_t tt_ecdsa_sign(IN tt_ecdsa_t *dsa, IN tt_u8_t *input, IN tt_u32_t len, IN tt_md_type_t md_type, IN tt_md_type_t sig_md, OUT tt_u8_t *sig, IN OUT tt_u32_t *sig_len) { mbedtls_ecdsa_context *ctx = &dsa->ctx; mbedtls_md_type_t t; const mbedtls_md_info_t *md_type_info; tt_u8_t hash[MBEDTLS_MD_MAX_SIZE]; tt_u32_t hashlen; size_t slen = *sig_len; int e; t = tt_g_md_type_map[md_type]; md_type_info = mbedtls_md_info_from_type(t); mbedtls_md(md_type_info, input, len, hash); hashlen = mbedtls_md_get_size(md_type_info); e = mbedtls_ecdsa_write_signature(ctx, tt_g_md_type_map[sig_md], hash, hashlen, sig, &slen, tt_ctr_drbg, tt_current_ctr_drbg()); if (e != 0) { tt_crypto_error("ecdsa sign failed"); return TT_FAIL; } *sig_len = (tt_u32_t)slen; return TT_SUCCESS; }