#define KEY_ID_INDEX_BITS 2
#define MAX_SERVER_KEYS (1U << KEY_ID_INDEX_BITS)
+#define FUTURE_KEYS 1
#define MIN_KEY_ROTATE_INTERVAL 1.0
goto error;
for (i = 0; i < MAX_SERVER_KEYS; i++) {
- index = (current_server_key + i + 1) % MAX_SERVER_KEYS;
+ index = (current_server_key + i + 1 + FUTURE_KEYS) % MAX_SERVER_KEYS;
if (key_length > sizeof (server_keys[index].key) ||
!UTI_BytesToHex(server_keys[index].key, key_length, buf, sizeof (buf)) ||
DEBUG_LOG("Loaded key %"PRIX32, id);
- current_server_key = index;
+ current_server_key = (index + MAX_SERVER_KEYS - FUTURE_KEYS) % MAX_SERVER_KEYS;
}
fclose(f);
key_timeout(void *arg)
{
current_server_key = (current_server_key + 1) % MAX_SERVER_KEYS;
- generate_key(current_server_key);
+ generate_key((current_server_key + FUTURE_KEYS) % MAX_SERVER_KEYS);
save_keys();
SCH_AddTimeoutByDelay(MAX(CNF_GetNtsRotate(), MIN_KEY_ROTATE_INTERVAL),
ntsserverkey tmp/server.key
ntsservercert tmp/server.crt
ntsprocesses 0
-ntsrotate 64
+ntsrotate 66
ntsdumpdir tmp
"
client_server_options="minpoll 6 maxpoll 6 nts"
check_source_selection || test_fail
check_sync || test_fail
-check_file_messages "20.*123\.1.* 111 111 1111" 89 93 measurements.log || test_fail
-check_file_messages "20.*123\.1.* 111 001 0000" 30 32 measurements.log || test_fail
-check_file_messages " 2 1 .* 11443 " 200 240 log.packets || test_fail
+check_file_messages "20.*123\.1.* 111 111 1111" 75 80 measurements.log || test_fail
+check_file_messages "20.*123\.1.* 111 001 0000" 37 39 measurements.log || test_fail
+check_file_messages " 2 1 .* 11443 " 260 300 log.packets || test_fail
check_file_messages "." 6 6 ntskeys || test_fail
rm -f tmp/measurements.log