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 *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
|
||||
*
|
||||
|
@ -273,6 +273,17 @@ int ecdsa_read_signature( ecdsa_context *ctx,
|
||||
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
|
||||
*/
|
||||
|
@ -95,9 +95,7 @@ void ecdsa_write_read_random( int id )
|
||||
TEST_ASSERT( rnd_pseudo_rand( &rnd_info, hash, sizeof( hash ) ) == 0 );
|
||||
|
||||
/* generate signing key */
|
||||
TEST_ASSERT( ecp_use_known_dp( &ctx.grp, id ) == 0 );
|
||||
TEST_ASSERT( ecp_gen_keypair( &ctx.grp, &ctx.d, &ctx.Q,
|
||||
&rnd_pseudo_rand, &rnd_info ) == 0 );
|
||||
TEST_ASSERT( ecdsa_genkey( &ctx, id, &rnd_pseudo_rand, &rnd_info ) == 0 );
|
||||
|
||||
/* generate and write signature, then read and verify it */
|
||||
TEST_ASSERT( ecdsa_write_signature( &ctx, hash, sizeof( hash ),
|
||||
|
Loading…
Reference in New Issue
Block a user