unit-tests: test some zeroed ECDSA signatures that never should succeed
This commit is contained in:
parent
7e23f53242
commit
a88cab095d
|
@ -56,6 +56,65 @@ static void test_good_sig(private_key_t *privkey, public_key_t *pubkey)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Some special signatures that should never validate successfully
|
||||||
|
*/
|
||||||
|
static chunk_t invalid_sigs[] = {
|
||||||
|
chunk_from_chars(),
|
||||||
|
chunk_from_chars(0x00),
|
||||||
|
chunk_from_chars(0x00,0x00),
|
||||||
|
chunk_from_chars(0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00),
|
||||||
|
chunk_from_chars(0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00),
|
||||||
|
chunk_from_chars(0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00),
|
||||||
|
chunk_from_chars(0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00),
|
||||||
|
chunk_from_chars(0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00),
|
||||||
|
chunk_from_chars(0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00),
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check public key that it properly fails against some crafted sigs
|
||||||
|
*/
|
||||||
|
static void test_bad_sigs(public_key_t *pubkey)
|
||||||
|
{
|
||||||
|
chunk_t data = chunk_from_chars(0x01,0x02,0x03,0xFD,0xFE,0xFF);
|
||||||
|
int s, i;
|
||||||
|
|
||||||
|
for (s = 0; s < countof(schemes); s++)
|
||||||
|
{
|
||||||
|
if (schemes[s].key_size != 0 &&
|
||||||
|
schemes[s].scheme != pubkey->get_keysize(pubkey))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
for (i = 0; i < countof(invalid_sigs); i++)
|
||||||
|
{
|
||||||
|
fail_if(
|
||||||
|
pubkey->verify(pubkey, schemes[s].scheme, data, invalid_sigs[i]),
|
||||||
|
"bad %N sig accepted %B",
|
||||||
|
signature_scheme_names, schemes[s].scheme,
|
||||||
|
&invalid_sigs[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ECDSA key sizes to test
|
* ECDSA key sizes to test
|
||||||
*/
|
*/
|
||||||
|
@ -76,6 +135,8 @@ START_TEST(test_gen)
|
||||||
|
|
||||||
test_good_sig(privkey, pubkey);
|
test_good_sig(privkey, pubkey);
|
||||||
|
|
||||||
|
test_bad_sigs(pubkey);
|
||||||
|
|
||||||
pubkey->destroy(pubkey);
|
pubkey->destroy(pubkey);
|
||||||
privkey->destroy(privkey);
|
privkey->destroy(privkey);
|
||||||
}
|
}
|
||||||
|
@ -136,6 +197,8 @@ START_TEST(test_load)
|
||||||
|
|
||||||
test_good_sig(privkey, pubkey);
|
test_good_sig(privkey, pubkey);
|
||||||
|
|
||||||
|
test_bad_sigs(pubkey);
|
||||||
|
|
||||||
pubkey->destroy(pubkey);
|
pubkey->destroy(pubkey);
|
||||||
privkey->destroy(privkey);
|
privkey->destroy(privkey);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue