mirror of
https://gitlab.com/chrony/chrony.git
synced 2025-12-04 10:35:08 -05:00
test: improve nts_ntp_auth test
This commit is contained in:
@@ -39,6 +39,18 @@ test_unit(void)
|
|||||||
int i, j, r, packet_length, nonce_length, key_length;
|
int i, j, r, packet_length, nonce_length, key_length;
|
||||||
int plaintext_length, plaintext2_length, min_ef_length;
|
int plaintext_length, plaintext2_length, min_ef_length;
|
||||||
|
|
||||||
|
TEST_CHECK(get_padding_length(0) == 0);
|
||||||
|
TEST_CHECK(get_padding_length(1) == 3);
|
||||||
|
TEST_CHECK(get_padding_length(2) == 2);
|
||||||
|
TEST_CHECK(get_padding_length(3) == 1);
|
||||||
|
TEST_CHECK(get_padding_length(4) == 0);
|
||||||
|
TEST_CHECK(get_padded_length(0) == 0);
|
||||||
|
TEST_CHECK(get_padded_length(1) == 4);
|
||||||
|
TEST_CHECK(get_padded_length(2) == 4);
|
||||||
|
TEST_CHECK(get_padded_length(3) == 4);
|
||||||
|
TEST_CHECK(get_padded_length(4) == 4);
|
||||||
|
TEST_CHECK(get_padded_length(5) == 8);
|
||||||
|
|
||||||
for (algo = 1; algo < 100; algo++) {
|
for (algo = 1; algo < 100; algo++) {
|
||||||
siv = SIV_CreateInstance(algo);
|
siv = SIV_CreateInstance(algo);
|
||||||
if (!siv) {
|
if (!siv) {
|
||||||
@@ -102,20 +114,37 @@ test_unit(void)
|
|||||||
r = NNA_GenerateAuthEF(&packet, &info, siv, nonce, nonce_length, plaintext,
|
r = NNA_GenerateAuthEF(&packet, &info, siv, nonce, nonce_length, plaintext,
|
||||||
plaintext_length, min_ef_length);
|
plaintext_length, min_ef_length);
|
||||||
TEST_CHECK(r);
|
TEST_CHECK(r);
|
||||||
|
TEST_CHECK(info.ext_fields == 1);
|
||||||
TEST_CHECK(info.length - packet_length >= min_ef_length);
|
TEST_CHECK(info.length - packet_length >= min_ef_length);
|
||||||
|
TEST_CHECK(info.length - packet_length == get_padded_length(min_ef_length) ||
|
||||||
|
info.length - packet_length == 4 + 4 +
|
||||||
|
get_padded_length(MAX(MIN(16, SIV_GetMaxNonceLength(siv)), nonce_length)) +
|
||||||
|
get_padded_length(plaintext_length) + SIV_GetTagLength(siv));
|
||||||
|
|
||||||
r = NNA_DecryptAuthEF(&packet, &info, siv, packet_length, plaintext2,
|
r = NNA_DecryptAuthEF(&packet, &info, siv, packet_length, plaintext2,
|
||||||
-1, &plaintext2_length);
|
-1, &plaintext2_length);
|
||||||
TEST_CHECK(!r);
|
TEST_CHECK(!r);
|
||||||
|
|
||||||
|
if (random() % 2) {
|
||||||
|
for (j = 0; j < get_padding_length(nonce_length); j++)
|
||||||
|
((unsigned char *)&packet)[packet_length + 4 + 4 + nonce_length + j]++;
|
||||||
|
for (j = packet_length + 4 + 4 + get_padded_length(nonce_length) +
|
||||||
|
plaintext_length + SIV_GetTagLength(siv); j < sizeof (packet); j++)
|
||||||
|
((unsigned char *)&packet)[j]++;
|
||||||
|
}
|
||||||
|
|
||||||
r = NNA_DecryptAuthEF(&packet, &info, siv, packet_length, plaintext2,
|
r = NNA_DecryptAuthEF(&packet, &info, siv, packet_length, plaintext2,
|
||||||
sizeof (plaintext2), &plaintext2_length);
|
sizeof (plaintext2), &plaintext2_length);
|
||||||
TEST_CHECK(r);
|
TEST_CHECK(r);
|
||||||
TEST_CHECK(plaintext_length == plaintext2_length);
|
TEST_CHECK(plaintext_length == plaintext2_length);
|
||||||
TEST_CHECK(memcmp(plaintext, plaintext2, plaintext_length) == 0);
|
TEST_CHECK(memcmp(plaintext, plaintext2, plaintext_length) == 0);
|
||||||
|
|
||||||
j = random() % (packet_length + plaintext_length +
|
if (random() % 2) {
|
||||||
nonce_length + SIV_GetTagLength(siv) + 8) / 4 * 4;
|
j = random() % (packet_length + 4 + 4 + nonce_length);
|
||||||
|
} else {
|
||||||
|
j = packet_length + 4 + 4 + get_padded_length(nonce_length);
|
||||||
|
j += random() % (plaintext_length + SIV_GetTagLength(siv));
|
||||||
|
}
|
||||||
((unsigned char *)&packet)[j]++;
|
((unsigned char *)&packet)[j]++;
|
||||||
r = NNA_DecryptAuthEF(&packet, &info, siv, packet_length, plaintext2,
|
r = NNA_DecryptAuthEF(&packet, &info, siv, packet_length, plaintext2,
|
||||||
sizeof (plaintext2), &plaintext2_length);
|
sizeof (plaintext2), &plaintext2_length);
|
||||||
|
|||||||
Reference in New Issue
Block a user