mirror of
https://github.com/yuzu-emu/mbedtls.git
synced 2024-11-29 15:14:17 +01:00
Add an ecdsa_genkey() function
This commit is contained in:
parent
4846f5ecbc
commit
8eebd012b9
@ -125,6 +125,20 @@ int ecdsa_read_signature( ecdsa_context *ctx,
|
|||||||
const unsigned char *hash, size_t hlen,
|
const unsigned char *hash, size_t hlen,
|
||||||
const unsigned char *sig, size_t slen );
|
const unsigned char *sig, size_t slen );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Generate an ECDSA keypair on the given curve
|
||||||
|
*
|
||||||
|
* \param ctx ECDSA context in which the keypair should be stored
|
||||||
|
* \param grp Group (elliptic curve) to use. One of the various
|
||||||
|
* POLARSSL_ECP_DP_XXX macros depending on configuration.
|
||||||
|
* \param f_rng RNG function
|
||||||
|
* \param p_rng RNG parameter
|
||||||
|
*
|
||||||
|
* \return 0 on success, or a POLARSSL_ERR_ECP code.
|
||||||
|
*/
|
||||||
|
int ecdsa_genkey( ecdsa_context *ctx, ecp_group_id gid,
|
||||||
|
int (*f_rng)(void *, unsigned char *, size_t), void *p_rng );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Initialize context
|
* \brief Initialize context
|
||||||
*
|
*
|
||||||
|
@ -273,6 +273,17 @@ int ecdsa_read_signature( ecdsa_context *ctx,
|
|||||||
return( ecdsa_verify( &ctx->grp, hash, hlen, &ctx->Q, &ctx->r, &ctx->s ) );
|
return( ecdsa_verify( &ctx->grp, hash, hlen, &ctx->Q, &ctx->r, &ctx->s ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Generate key pair
|
||||||
|
*/
|
||||||
|
int ecdsa_genkey( ecdsa_context *ctx, ecp_group_id gid,
|
||||||
|
int (*f_rng)(void *, unsigned char *, size_t), void *p_rng )
|
||||||
|
{
|
||||||
|
return( ecp_use_known_dp( &ctx->grp, gid ) ||
|
||||||
|
ecp_gen_keypair( &ctx->grp, &ctx->d, &ctx->Q, f_rng, p_rng ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initialize context
|
* Initialize context
|
||||||
*/
|
*/
|
||||||
|
@ -95,9 +95,7 @@ void ecdsa_write_read_random( int id )
|
|||||||
TEST_ASSERT( rnd_pseudo_rand( &rnd_info, hash, sizeof( hash ) ) == 0 );
|
TEST_ASSERT( rnd_pseudo_rand( &rnd_info, hash, sizeof( hash ) ) == 0 );
|
||||||
|
|
||||||
/* generate signing key */
|
/* generate signing key */
|
||||||
TEST_ASSERT( ecp_use_known_dp( &ctx.grp, id ) == 0 );
|
TEST_ASSERT( ecdsa_genkey( &ctx, id, &rnd_pseudo_rand, &rnd_info ) == 0 );
|
||||||
TEST_ASSERT( ecp_gen_keypair( &ctx.grp, &ctx.d, &ctx.Q,
|
|
||||||
&rnd_pseudo_rand, &rnd_info ) == 0 );
|
|
||||||
|
|
||||||
/* generate and write signature, then read and verify it */
|
/* generate and write signature, then read and verify it */
|
||||||
TEST_ASSERT( ecdsa_write_signature( &ctx, hash, sizeof( hash ),
|
TEST_ASSERT( ecdsa_write_signature( &ctx, hash, sizeof( hash ),
|
||||||
|
Loading…
Reference in New Issue
Block a user