nts: allow missing SIV support

When compiled with NTS support, don't require a SIV cipher to be always
supported (e.g. due to a different version of a library used for
building). Handle this case with a fatal message instead of crash.
Also, check the support early in the client unit test to prevent a hang.
This commit is contained in:
Miroslav Lichvar 2020-06-03 11:03:00 +02:00
parent 15dc83420d
commit cf10ce1b68
3 changed files with 9 additions and 2 deletions

View file

@ -433,8 +433,11 @@ generate_key(int index)
assert(0);
UTI_GetRandomBytesUrandom(server_keys[index].key, key_length);
if (!SIV_SetKey(server_keys[index].siv, server_keys[index].key, key_length))
assert(0);
if (!server_keys[index].siv ||
!SIV_SetKey(server_keys[index].siv, server_keys[index].key, key_length)) {
LOG_FATAL("Could not set SIV key");
}
UTI_GetRandomBytes(&server_keys[index].id, sizeof (server_keys[index].id));

View file

@ -67,6 +67,8 @@ NNS_Initialise(void)
server = Malloc(sizeof (struct NtsServer));
server->siv = SIV_CreateInstance(SERVER_SIV);
if (!server->siv)
LOG_FATAL("Could not initialise SIV cipher");
}
/* ================================================== */

View file

@ -200,6 +200,8 @@ test_unit(void)
IPAddr ip_addr;
int i, j, prev_num_cookies, valid;
TEST_CHECK(SIV_GetKeyLength(AEAD_AES_SIV_CMAC_256) > 0);
SCK_GetLoopbackIPAddress(AF_INET, &addr.ip_addr);
addr.port = 0;