nts: make server key access more readable
Get a pointer to the server key instead of repeated indexing.
This commit is contained in:
parent
790a336eb2
commit
4e1ce88981
1 changed files with 15 additions and 14 deletions
|
@ -154,6 +154,7 @@ handle_helper_request(int fd, int event, void *arg)
|
||||||
SCK_Message *message;
|
SCK_Message *message;
|
||||||
HelperRequest *req;
|
HelperRequest *req;
|
||||||
IPSockAddr client_addr;
|
IPSockAddr client_addr;
|
||||||
|
ServerKey *key;
|
||||||
int sock_fd;
|
int sock_fd;
|
||||||
|
|
||||||
/* Receive the helper request with the NTS-KE session socket.
|
/* Receive the helper request with the NTS-KE session socket.
|
||||||
|
@ -181,15 +182,14 @@ handle_helper_request(int fd, int event, void *arg)
|
||||||
req = message->data;
|
req = message->data;
|
||||||
|
|
||||||
/* Extract the current server key and client address from the request */
|
/* Extract the current server key and client address from the request */
|
||||||
server_keys[current_server_key].id = ntohl(req->key_id);
|
key = &server_keys[current_server_key];
|
||||||
assert(sizeof (server_keys[current_server_key].key) == sizeof (req->key));
|
key->id = ntohl(req->key_id);
|
||||||
memcpy(server_keys[current_server_key].key, req->key,
|
assert(sizeof (key->key) == sizeof (req->key));
|
||||||
sizeof (server_keys[current_server_key].key));
|
memcpy(key->key, req->key, sizeof (key->key));
|
||||||
UTI_IPNetworkToHost(&req->client_addr, &client_addr.ip_addr);
|
UTI_IPNetworkToHost(&req->client_addr, &client_addr.ip_addr);
|
||||||
client_addr.port = ntohs(req->client_port);
|
client_addr.port = ntohs(req->client_port);
|
||||||
|
|
||||||
if (!SIV_SetKey(server_keys[current_server_key].siv, server_keys[current_server_key].key,
|
if (!SIV_SetKey(key->siv, key->key, SIV_GetKeyLength(SERVER_COOKIE_SIV)))
|
||||||
SIV_GetKeyLength(SERVER_COOKIE_SIV)))
|
|
||||||
LOG_FATAL("Could not set SIV key");
|
LOG_FATAL("Could not set SIV key");
|
||||||
|
|
||||||
if (!handle_client(sock_fd, &client_addr)) {
|
if (!handle_client(sock_fd, &client_addr)) {
|
||||||
|
@ -471,28 +471,29 @@ handle_message(void *arg)
|
||||||
static void
|
static void
|
||||||
generate_key(int index)
|
generate_key(int index)
|
||||||
{
|
{
|
||||||
|
ServerKey *key;
|
||||||
int key_length;
|
int key_length;
|
||||||
|
|
||||||
if (index < 0 || index >= MAX_SERVER_KEYS)
|
if (index < 0 || index >= MAX_SERVER_KEYS)
|
||||||
assert(0);
|
assert(0);
|
||||||
|
|
||||||
|
key = &server_keys[index];
|
||||||
key_length = SIV_GetKeyLength(SERVER_COOKIE_SIV);
|
key_length = SIV_GetKeyLength(SERVER_COOKIE_SIV);
|
||||||
if (key_length > sizeof (server_keys[index].key))
|
if (key_length > sizeof (key->key))
|
||||||
assert(0);
|
assert(0);
|
||||||
|
|
||||||
UTI_GetRandomBytesUrandom(server_keys[index].key, key_length);
|
UTI_GetRandomBytesUrandom(key->key, key_length);
|
||||||
|
|
||||||
if (!server_keys[index].siv ||
|
if (!key->siv || !SIV_SetKey(key->siv, key->key, key_length))
|
||||||
!SIV_SetKey(server_keys[index].siv, server_keys[index].key, key_length))
|
|
||||||
LOG_FATAL("Could not set SIV key");
|
LOG_FATAL("Could not set SIV key");
|
||||||
|
|
||||||
UTI_GetRandomBytes(&server_keys[index].id, sizeof (server_keys[index].id));
|
UTI_GetRandomBytes(&key->id, sizeof (key->id));
|
||||||
|
|
||||||
/* Encode the index in the lowest bits of the ID */
|
/* Encode the index in the lowest bits of the ID */
|
||||||
server_keys[index].id &= -1U << KEY_ID_INDEX_BITS;
|
key->id &= -1U << KEY_ID_INDEX_BITS;
|
||||||
server_keys[index].id |= index;
|
key->id |= index;
|
||||||
|
|
||||||
DEBUG_LOG("Generated server key %"PRIX32, server_keys[index].id);
|
DEBUG_LOG("Generated server key %"PRIX32, key->id);
|
||||||
|
|
||||||
last_server_key_ts = SCH_GetLastEventMonoTime();
|
last_server_key_ts = SCH_GetLastEventMonoTime();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue