Add a unit test for ECDSA

Add a basic unit test for the ECDSA part of the tinycrypt.
It generates keys, signs and verifies. Modified from tinycrypt
tests found in tinycrypt-repository.
This commit is contained in:
Jarno Lamsa 2019-08-26 13:34:45 +03:00
parent 7c5dc6b20a
commit 6c2f76e9cd
2 changed files with 27 additions and 0 deletions

View file

@ -1,2 +1,5 @@
Tinycrypt ECDH Tinycrypt ECDH
test_ecdh: test_ecdh:
Tinycrypt ECDSA
test_ecdsa:

View file

@ -33,3 +33,27 @@ void test_ecdh()
TEST_ASSERT( memcmp( secret1, secret2, sizeof( secret1 ) ) == 0 ); TEST_ASSERT( memcmp( secret1, secret2, sizeof( secret1 ) ) == 0 );
} }
/* END_CASE */ /* END_CASE */
/* BEGIN_CASE depends_on:MBEDTLS_USE_TINYCRYPT */
void test_ecdsa()
{
uint8_t private[NUM_ECC_BYTES] = {0};
uint8_t public[2*NUM_ECC_BYTES] = {0};
uint8_t hash[NUM_ECC_BYTES] = {0};
uint8_t sig[2*NUM_ECC_BYTES] = {0};
unsigned int hash_words[NUM_ECC_WORDS] = {0};
const struct uECC_Curve_t * curve = uECC_secp256r1();
uECC_generate_random_int( hash_words, curve->n,
BITS_TO_WORDS( curve->num_n_bits ) );
uECC_vli_nativeToBytes( hash, NUM_ECC_BYTES, hash_words );
TEST_ASSERT( uECC_make_key( public, private, curve ) != 0 );
TEST_ASSERT( uECC_sign( private, hash, sizeof( hash ), sig, curve ) != 0 );
TEST_ASSERT( uECC_verify( public, hash, sizeof( hash ), sig, curve ) != 0 );
}
/* END_CASE */