コード例 #1
0
ファイル: ecdsa.c プロジェクト: MarceloSalazar/mbed-os
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 ) );
}
コード例 #2
0
ファイル: pk_wrap.c プロジェクト: MarceloSalazar/mbed-os
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 ) );
}
コード例 #3
0
ファイル: tt_ecdsa.c プロジェクト: newser/TitanSDK
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;
}