New function mbedtls_ecp_keypair_get_group_id
Add a simple function to get the group id from a key object. This information is available via mbedtls_ecp_export, but that function consumes a lot of memory, which is a waste if all you need is to identify the curve. Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
This commit is contained in:
parent
69b290589b
commit
e6886102ef
3 changed files with 24 additions and 0 deletions
|
@ -1323,6 +1323,18 @@ int mbedtls_ecp_check_pub_priv(
|
||||||
const mbedtls_ecp_keypair *pub, const mbedtls_ecp_keypair *prv,
|
const mbedtls_ecp_keypair *pub, const mbedtls_ecp_keypair *prv,
|
||||||
int (*f_rng)(void *, unsigned char *, size_t), void *p_rng);
|
int (*f_rng)(void *, unsigned char *, size_t), void *p_rng);
|
||||||
|
|
||||||
|
/** \brief Query the group that a key pair belongs to.
|
||||||
|
*
|
||||||
|
* \param key The key pair to query.
|
||||||
|
*
|
||||||
|
* \return The group ID for the group registered in the key pair
|
||||||
|
* object.
|
||||||
|
* This is \c MBEDTLS_ECP_DP_NONE if no group has been set
|
||||||
|
* in the key pair object.
|
||||||
|
*/
|
||||||
|
mbedtls_ecp_group_id mbedtls_ecp_keypair_get_group_id(
|
||||||
|
const mbedtls_ecp_keypair *key);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief This function exports generic key-pair parameters.
|
* \brief This function exports generic key-pair parameters.
|
||||||
*
|
*
|
||||||
|
|
|
@ -3357,6 +3357,12 @@ cleanup:
|
||||||
}
|
}
|
||||||
#endif /* MBEDTLS_ECP_C */
|
#endif /* MBEDTLS_ECP_C */
|
||||||
|
|
||||||
|
mbedtls_ecp_group_id mbedtls_ecp_keypair_get_group_id(
|
||||||
|
const mbedtls_ecp_keypair *key)
|
||||||
|
{
|
||||||
|
return key->grp.id;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Export generic key-pair parameters.
|
* Export generic key-pair parameters.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1030,6 +1030,7 @@ void mbedtls_ecp_gen_key(int id)
|
||||||
&mbedtls_test_rnd_pseudo_rand,
|
&mbedtls_test_rnd_pseudo_rand,
|
||||||
&rnd_info) == 0);
|
&rnd_info) == 0);
|
||||||
|
|
||||||
|
TEST_EQUAL(mbedtls_ecp_keypair_get_group_id(&key), id);
|
||||||
TEST_ASSERT(mbedtls_ecp_check_pubkey(&key.grp, &key.Q) == 0);
|
TEST_ASSERT(mbedtls_ecp_check_pubkey(&key.grp, &key.Q) == 0);
|
||||||
TEST_ASSERT(mbedtls_ecp_check_privkey(&key.grp, &key.d) == 0);
|
TEST_ASSERT(mbedtls_ecp_check_privkey(&key.grp, &key.d) == 0);
|
||||||
|
|
||||||
|
@ -1052,6 +1053,7 @@ void mbedtls_ecp_read_key(int grp_id, data_t *in_key, int expected, int canonica
|
||||||
TEST_ASSERT(ret == expected);
|
TEST_ASSERT(ret == expected);
|
||||||
|
|
||||||
if (expected == 0) {
|
if (expected == 0) {
|
||||||
|
TEST_EQUAL(mbedtls_ecp_keypair_get_group_id(&key), grp_id);
|
||||||
ret = mbedtls_ecp_check_privkey(&key.grp, &key.d);
|
ret = mbedtls_ecp_check_privkey(&key.grp, &key.d);
|
||||||
TEST_ASSERT(ret == 0);
|
TEST_ASSERT(ret == 0);
|
||||||
|
|
||||||
|
@ -1233,6 +1235,10 @@ void ecp_export(int id, char *Qx, char *Qy, char *d, int expected_ret, int inval
|
||||||
TEST_EQUAL(mbedtls_ecp_point_cmp(&key.Q, &export_Q), 0);
|
TEST_EQUAL(mbedtls_ecp_point_cmp(&key.Q, &export_Q), 0);
|
||||||
TEST_EQUAL(mbedtls_mpi_cmp_mpi(&key.d, &export_d), 0);
|
TEST_EQUAL(mbedtls_mpi_cmp_mpi(&key.d, &export_d), 0);
|
||||||
TEST_EQUAL(mbedtls_ecp_group_cmp(&key.grp, &export_grp), 0);
|
TEST_EQUAL(mbedtls_ecp_group_cmp(&key.grp, &export_grp), 0);
|
||||||
|
|
||||||
|
/* Check consistency with the group id */
|
||||||
|
TEST_EQUAL(export_grp.id,
|
||||||
|
mbedtls_ecp_keypair_get_group_id(&key));
|
||||||
}
|
}
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue