[Git][NTPsec/ntpsec][nts.c] 4 commits: ntpd/nts_cookie.c: Remove tabs, Single line /* comments to //

Hal Murray (@hal.murray) gitlab at mg.gitlab.com
Thu Aug 6 18:02:26 UTC 2026



Hal Murray pushed to branch nts.c at NTPsec / ntpsec


Commits:
d0c7791a by Gary E. Miller at 2026-08-06T10:31:20-07:00
ntpd/nts_cookie.c: Remove tabs, Single line /* comments to //

- - - - -
76bc1031 by Gary E. Miller at 2026-08-06T10:51:10-07:00
ntpd/nts_client.c: Remove tabs, Single line /* comments to //

- - - - -
8b3d9503 by Gary E. Miller at 2026-08-06T11:01:57-07:00
ntpd/nts.c: Remove tabs, Single line /* comments to //

No functional changes.

- - - - -
8428fc54 by Gary E. Miller at 2026-08-06T11:01:57-07:00
ntpd/nts.c: restore previous comment indents

No functional changes.

- - - - -


3 changed files:

- ntpd/nts.c
- ntpd/nts_client.c
- ntpd/nts_cookie.c


Changes:

=====================================
ntpd/nts.c
=====================================
@@ -33,50 +33,50 @@ struct nts_counters nts_cnt, old_nts_cnt;
 struct ntske_counters ntske_cnt, old_ntske_cnt;
 
 struct ntsconfig_t ntsconfig = {
-	.ntsenable = false,
-	.mintls = NULL,
-	.maxtls = NULL,
-	.tlsciphersuites = NULL,
-	.tlsecdhcurves = NULL,
-	.cert = NULL,
-	.key = NULL,
-	.KI = NULL,
-	.ca = NULL,
-	.aead = NULL,
-	.tlscipherserverpreference = false,
+        .ntsenable = false,
+        .mintls = NULL,
+        .maxtls = NULL,
+        .tlsciphersuites = NULL,
+        .tlsecdhcurves = NULL,
+        .cert = NULL,
+        .key = NULL,
+        .KI = NULL,
+        .ca = NULL,
+        .aead = NULL,
+        .tlscipherserverpreference = false,
 };
 
 void nts_log_version(void);
 
-/*****************************************************/
+// ***************************************************
 
-/* More SSL initialization in ssl_init() from libntp/ssl_init.c */
+// More SSL initialization in ssl_init() from libntp/ssl_init.c
 
 void nts_init(void) {
-	bool ok = true;
-	nts_log_version();
-	if (ntsconfig.ntsenable) {
-		ok &= nts_server_init();
-	}
-	ok &= nts_client_init();
-	ok &= nts_cookie_init();
-	ok &= extens_init();
-	if (!ok) {
-		msyslog(LOG_ERR, "NTS: troubles during init.  Bailing.");
-		exit(1);
-	}
+        bool ok = true;
+        nts_log_version();
+        if (ntsconfig.ntsenable) {
+                ok &= nts_server_init();
+        }
+        ok &= nts_client_init();
+        ok &= nts_cookie_init();
+        ok &= extens_init();
+        if (!ok) {
+                msyslog(LOG_ERR, "NTS: troubles during init.  Bailing.");
+                exit(1);
+        }
 }
 
 void nts_init2(void) {
-	bool ok = true;
-	if (ntsconfig.ntsenable) {
-		ok &= nts_server_init2();
-		ok &= nts_cookie_init2();
-	}
-	if (!ok) {
-		msyslog(LOG_ERR, "NTS: troubles during init2.  Bailing.");
-		exit(1);
-	}
+        bool ok = true;
+        if (ntsconfig.ntsenable) {
+                ok &= nts_server_init2();
+                ok &= nts_cookie_init2();
+        }
+        if (!ok) {
+                msyslog(LOG_ERR, "NTS: troubles during init2.  Bailing.");
+                exit(1);
+        }
 }
 
 /* There are 2 cases:
@@ -84,212 +84,212 @@ void nts_init2(void) {
  *  2: mismatch, log both build and run
  */
 void nts_log_version(void) {
-	unsigned long buildVersion = OPENSSL_VERSION_NUMBER;
-	const char * text = OpenSSL_version(OPENSSL_VERSION);
-	bool match = (buildVersion == OpenSSL_version_num()) &&
-		(0 == strcmp(OPENSSL_VERSION_TEXT, text));
-	if (match) {
-		/* Case 1 */
-		msyslog(LOG_INFO, "INIT: %s, %lx",
-			OPENSSL_VERSION_TEXT, buildVersion);
-	} else {
-                /* Case 2 */
-		msyslog(LOG_INFO, "INIT: Built with %s, %lx",
-			OPENSSL_VERSION_TEXT, buildVersion);
-		msyslog(LOG_INFO, "INIT: Running with %s, %lx",
-			OpenSSL_version(OPENSSL_VERSION),
-			OpenSSL_version_num());
-		if (buildVersion > OpenSSL_version_num()) {
-			msyslog(LOG_ERR, "INIT: Old OpenSSL library, bailing");
-			exit(1);
-		}
-	}
-	/*
-	 * If the runtime OpenSSL is 1.1.1a, then bail, since we'll run into errors with the
-	 * TLSv1.3 maximum label length
-	 */
-	if (OpenSSL_version_num() == 0x1010101fL) {
-		msyslog(LOG_ERR, "INIT: OpenSSL 1.1.1a has a maximum label length bug, bailing");
-		exit(1);
-	}
-}
-
-/*****************************************************/
+        unsigned long buildVersion = OPENSSL_VERSION_NUMBER;
+        const char * text = OpenSSL_version(OPENSSL_VERSION);
+        bool match = (buildVersion == OpenSSL_version_num()) &&
+                (0 == strcmp(OPENSSL_VERSION_TEXT, text));
+        if (match) {
+                // Case 1
+                msyslog(LOG_INFO, "INIT: %s, %lx",
+                        OPENSSL_VERSION_TEXT, buildVersion);
+        } else {
+                // Case 2
+                msyslog(LOG_INFO, "INIT: Built with %s, %lx",
+                        OPENSSL_VERSION_TEXT, buildVersion);
+                msyslog(LOG_INFO, "INIT: Running with %s, %lx",
+                        OpenSSL_version(OPENSSL_VERSION),
+                        OpenSSL_version_num());
+                if (buildVersion > OpenSSL_version_num()) {
+                        msyslog(LOG_ERR, "INIT: Old OpenSSL library, bailing");
+                        exit(1);
+                }
+        }
+        /*
+         * If the runtime OpenSSL is 1.1.1a, then bail, since we'll run into errors with the
+         * TLSv1.3 maximum label length
+         */
+        if (OpenSSL_version_num() == 0x1010101fL) {
+                msyslog(LOG_ERR, "INIT: OpenSSL 1.1.1a has a maximum label length bug, bailing");
+                exit(1);
+        }
+}
+
+// ***************************************************
 
 void nts_timer(void) {
-	nts_cert_timer();
-	nts_cookie_timer();
+        nts_cert_timer();
+        nts_cookie_timer();
 }
 
-/*****************************************************/
+// ***************************************************
 
-/* 0 is default, -1 is error */
+// 0 is default, -1 is error
 int nts_translate_version(const char *arg) {
-	if (NULL == arg) {
-		return 0;
-	}
-	if (0 == strcmp(arg, "TLS1.3")) {
-		return TLS1_3_VERSION;
-	}
-	msyslog(LOG_ERR, "NTS: TLS unrecognized version string: %s.", arg);
-	return -1;
+        if (NULL == arg) {
+                return 0;
+        }
+        if (0 == strcmp(arg, "TLS1.3")) {
+                return TLS1_3_VERSION;
+        }
+        msyslog(LOG_ERR, "NTS: TLS unrecognized version string: %s.", arg);
+        return -1;
 }
 
-/* Translate text to AEAD code.  NO_AEAD for none/error */
+// Translate text to AEAD code.  NO_AEAD for none/error
 uint16_t nts_string_to_aead(const char* text) {
-	if (false) {
-	} else if (0 == strcmp(text, "AES_SIV_CMAC_256")) {
-		return AEAD_AES_SIV_CMAC_256;
-	} else if (0 == strcmp(text, "AES_SIV_CMAC_384")) {
-		return AEAD_AES_SIV_CMAC_384;
-	} else if (0 == strcmp(text, "AES_SIV_CMAC_512")) {
-		return AEAD_AES_SIV_CMAC_512;
-	} else {
-		return NO_AEAD;
-	}
-}
-
-/* returns key length, 0 if unknown arg */
+        if (false) {
+        } else if (0 == strcmp(text, "AES_SIV_CMAC_256")) {
+                return AEAD_AES_SIV_CMAC_256;
+        } else if (0 == strcmp(text, "AES_SIV_CMAC_384")) {
+                return AEAD_AES_SIV_CMAC_384;
+        } else if (0 == strcmp(text, "AES_SIV_CMAC_512")) {
+                return AEAD_AES_SIV_CMAC_512;
+        } else {
+                return NO_AEAD;
+        }
+}
+
+// returns key length, 0 if unknown arg
 int nts_get_key_length(uint16_t aead) {
-	switch (aead) {
-	    case AEAD_AES_SIV_CMAC_256:
-		return AEAD_AES_SIV_CMAC_256_KEYLEN;
-	    case AEAD_AES_SIV_CMAC_384:
-		return AEAD_AES_SIV_CMAC_384_KEYLEN;
-	    case AEAD_AES_SIV_CMAC_512:
-		return AEAD_AES_SIV_CMAC_512_KEYLEN;
-	    default:
-		return 0;
-	}
+        switch (aead) {
+            case AEAD_AES_SIV_CMAC_256:
+                return AEAD_AES_SIV_CMAC_256_KEYLEN;
+            case AEAD_AES_SIV_CMAC_384:
+                return AEAD_AES_SIV_CMAC_384_KEYLEN;
+            case AEAD_AES_SIV_CMAC_512:
+                return AEAD_AES_SIV_CMAC_512_KEYLEN;
+            default:
+                return 0;
+        }
 }
 
 
-/*****************************************************/
+// ***************************************************
 
 bool nts_load_versions(SSL_CTX *ctx) {
-	int minver, maxver;
-	minver = nts_translate_version(ntsconfig.mintls);
-	maxver = nts_translate_version(ntsconfig.maxtls);
-	if ((-1 == minver) || (-1 == maxver))
-		return false;
-	if(0 == minver) minver = TLS1_3_VERSION;   // 3.
-	SSL_CTX_set_min_proto_version(ctx, minver);
-	SSL_CTX_set_max_proto_version(ctx, maxver);
-	return true;
+        int minver, maxver;
+        minver = nts_translate_version(ntsconfig.mintls);
+        maxver = nts_translate_version(ntsconfig.maxtls);
+        if ((-1 == minver) || (-1 == maxver))
+                return false;
+        if(0 == minver) minver = TLS1_3_VERSION;   // 3.
+        SSL_CTX_set_min_proto_version(ctx, minver);
+        SSL_CTX_set_max_proto_version(ctx, maxver);
+        return true;
 }
 
 bool nts_load_ciphers(SSL_CTX *ctx) {
-	/* SSL set_ciphers(uites) ignores typos or ciphers it doesn't support.
-	 * There is no SSL_CTX_get_cipher_list, so we can't easily read back
-	 * the ciphers to see what it took.
-	 * We could make a dummy SSL, read the list, then free it.
-	 * man SSL_CTX_set_ciphersuites() has info.
-	 */
-	if (NULL == ntsconfig.tlsciphersuites) {
-		return true;
-	}
-	/*  This used to set server-preference See #797 */
-	if (1 != SSL_CTX_set_ciphersuites(ctx, ntsconfig.tlsciphersuites)) {
-		msyslog(LOG_ERR, "NTS: troubles setting ciphersuites.");
-		return false;
-	} else {
-		msyslog(LOG_INFO, "NTS: set ciphersuites %s.", ntsconfig.tlsciphersuites);
-	}
-	return true;
+        /* SSL set_ciphers(uites) ignores typos or ciphers it doesn't support.
+         * There is no SSL_CTX_get_cipher_list, so we can't easily read back
+         * the ciphers to see what it took.
+         * We could make a dummy SSL, read the list, then free it.
+         * man SSL_CTX_set_ciphersuites() has info.
+         */
+        if (NULL == ntsconfig.tlsciphersuites) {
+                return true;
+        }
+        // This used to set server-preference See #797
+        if (1 != SSL_CTX_set_ciphersuites(ctx, ntsconfig.tlsciphersuites)) {
+                msyslog(LOG_ERR, "NTS: troubles setting ciphersuites.");
+                return false;
+        } else {
+                msyslog(LOG_INFO, "NTS: set ciphersuites %s.", ntsconfig.tlsciphersuites);
+        }
+        return true;
 }
 
 bool nts_load_ecdhcurves(SSL_CTX *ctx) {
-	/* SSL_CTX_set1_groups_list ignores typos or curves it doesn't support.
-	 * There is no SSL_CTX_get_groups_list, so we can't easily read back
-	 * the ecdhcurves to see what it took.
-	 * We could make a dummy SSL, read the list, then free it.
-	 */
-	if (NULL != ntsconfig.tlsecdhcurves) {
-		/* FIXME -- const bug in OpenSSL */
-		char *copy = estrdup(ntsconfig.tlsecdhcurves);
-		if (1 != SSL_CTX_set1_groups_list(ctx, copy)) {
-			msyslog(LOG_ERR, "NTS: troubles setting ecdhcurves.");
-			free(copy);
-			return false;
-		} else {
-			msyslog(LOG_INFO, "NTS: set ecdhcurves %s.", ntsconfig.tlsecdhcurves);
-		}
-		free(copy);
-	}
-	return true;
+        /* SSL_CTX_set1_groups_list ignores typos or curves it doesn't support.
+         * There is no SSL_CTX_get_groups_list, so we can't easily read back
+         * the ecdhcurves to see what it took.
+         * We could make a dummy SSL, read the list, then free it.
+         */
+        if (NULL != ntsconfig.tlsecdhcurves) {
+                // FIXME -- const bug in OpenSSL
+                char *copy = estrdup(ntsconfig.tlsecdhcurves);
+                if (1 != SSL_CTX_set1_groups_list(ctx, copy)) {
+                        msyslog(LOG_ERR, "NTS: troubles setting ecdhcurves.");
+                        free(copy);
+                        return false;
+                } else {
+                        msyslog(LOG_INFO, "NTS: set ecdhcurves %s.", ntsconfig.tlsecdhcurves);
+                }
+                free(copy);
+        }
+        return true;
 }
 
 bool nts_set_cipher_order(SSL_CTX *ctx) {
-	if (ntsconfig.tlscipherserverpreference)
-		SSL_CTX_set_options(ctx, SSL_OP_CIPHER_SERVER_PREFERENCE);
-	return true;
+        if (ntsconfig.tlscipherserverpreference)
+                SSL_CTX_set_options(ctx, SSL_OP_CIPHER_SERVER_PREFERENCE);
+        return true;
 }
 
 
 static struct stat certfile_stat;
 
 void nts_reload_certificate(SSL_CTX *ctx) {
-	struct stat temp_stat;
-	const char *cert = NTS_CERT_FILE;
+        struct stat temp_stat;
+        const char *cert = NTS_CERT_FILE;
 
-	if (NULL != ntsconfig.cert)
-		cert = ntsconfig.cert;
+        if (NULL != ntsconfig.cert)
+                cert = ntsconfig.cert;
 
-	if (0 != stat(cert, &temp_stat)) {
-		return;
-	}
+        if (0 != stat(cert, &temp_stat)) {
+                return;
+        }
 
-	if ((certfile_stat.st_mtime == temp_stat.st_mtime)
+        if ((certfile_stat.st_mtime == temp_stat.st_mtime)
             && (certfile_stat.st_ctime == temp_stat.st_ctime)) {
-		return;  /* avoid clutter in log file */
-	}
+                return;  // avoid clutter in log file
+        }
 
-	nts_load_certificate(ctx);
+        nts_load_certificate(ctx);
 
 }
 
 bool nts_load_certificate(SSL_CTX *ctx) {
-	const char *cert = NTS_CERT_FILE;
-	const char *key = NTS_KEY_FILE;
+        const char *cert = NTS_CERT_FILE;
+        const char *key = NTS_KEY_FILE;
         char errbuf[100];
 
-	if (NULL != ntsconfig.cert)
-		cert = ntsconfig.cert;
-	if (NULL != ntsconfig.key)
-		key = ntsconfig.key;
-
-	/* for reload checking */
-	if (0 != stat(cert, &certfile_stat)) {
-		ntp_strerror_r(errno, errbuf, sizeof(errbuf));
-		msyslog(LOG_ERR, "NTSs: can't stat certificate (chain) from %s: %s", cert, errbuf);
-		return false;
-	}
-
-	if (1 != SSL_CTX_use_certificate_chain_file(ctx, cert)) {
-		msyslog(LOG_ERR, "NTSs: can't load certificate (chain) from %s", cert);
-		nts_log_ssl_error();
-		return false;
-	} else {
-		msyslog(LOG_ERR, "NTSs: loaded certificate (chain) from %s", cert);
-	}
-	if (1 != SSL_CTX_use_PrivateKey_file(ctx, key, SSL_FILETYPE_PEM)) {
-		msyslog(LOG_ERR, "NTSs: can't load private key from %s", key);
-		nts_log_ssl_error();
-		return false;
-	} else {
-		msyslog(LOG_ERR, "NTSs: loaded private key from %s", key);
-	}
-
-	if (1 != SSL_CTX_check_private_key(ctx)) {
-		msyslog(LOG_ERR, "NTSs: Private Key doesn't work ******");
-		return false;
-	} else {
-		msyslog(LOG_INFO, "NTSs: Private Key OK");
-	}
-	return true;
-}
-
-/* scan partial(?) buffer for end marker */
+        if (NULL != ntsconfig.cert)
+                cert = ntsconfig.cert;
+        if (NULL != ntsconfig.key)
+                key = ntsconfig.key;
+
+        // for reload checking
+        if (0 != stat(cert, &certfile_stat)) {
+                ntp_strerror_r(errno, errbuf, sizeof(errbuf));
+                msyslog(LOG_ERR, "NTSs: can't stat certificate (chain) from %s: %s", cert, errbuf);
+                return false;
+        }
+
+        if (1 != SSL_CTX_use_certificate_chain_file(ctx, cert)) {
+                msyslog(LOG_ERR, "NTSs: can't load certificate (chain) from %s", cert);
+                nts_log_ssl_error();
+                return false;
+        } else {
+                msyslog(LOG_ERR, "NTSs: loaded certificate (chain) from %s", cert);
+        }
+        if (1 != SSL_CTX_use_PrivateKey_file(ctx, key, SSL_FILETYPE_PEM)) {
+                msyslog(LOG_ERR, "NTSs: can't load private key from %s", key);
+                nts_log_ssl_error();
+                return false;
+        } else {
+                msyslog(LOG_ERR, "NTSs: loaded private key from %s", key);
+        }
+
+        if (1 != SSL_CTX_check_private_key(ctx)) {
+                msyslog(LOG_ERR, "NTSs: Private Key doesn't work ******");
+                return false;
+        } else {
+                msyslog(LOG_INFO, "NTSs: Private Key OK");
+        }
+        return true;
+}
+
+// scan partial(?) buffer for end marker
 static bool find_end_marker(uint8_t *buff, int bytes) {
   while (NTS_KE_HDR_LNG<=bytes) {
     uint16_t *buff16 = (uint16_t *)buff;
@@ -381,131 +381,131 @@ int nts_ssl_write(SSL *ssl, uint8_t *buff, int buff_length, const char** errtxt)
   return bytes_written;
 }
 
-/* Each thread has it's own queue of errors */
+// Each thread has it's own queue of errors
 void nts_get_ssl_error(char *errbuf, int errlng) {
   int err = ERR_get_error();
   ERR_error_string_n(err, errbuf, errlng);
 }
 
 void nts_log_ssl_error(void) {
-	char buff[256];
-	int err = ERR_get_error();
-	SSL_load_error_strings();        /* Needed on NetBSD */
-	while (0 != err) {
-		ERR_error_string_n(err, buff, sizeof(buff));
-		msyslog(LOG_INFO, "NTS: %s", buff);
-		err = ERR_get_error();
-	}
+        char buff[256];
+        int err = ERR_get_error();
+        SSL_load_error_strings();        // Needed on NetBSD
+        while (0 != err) {
+                ERR_error_string_n(err, buff, sizeof(buff));
+                msyslog(LOG_INFO, "NTS: %s", buff);
+                err = ERR_get_error();
+        }
 }
 
-/*****************************************************/
+// ***************************************************
 
-/* NB: KE length is body length, Extension length includes header. */
+// NB: KE length is body length, Extension length includes header.
 
-/* Troubles with signed/unsigned compares when using sizeof() */
+// Troubles with signed/unsigned compares when using sizeof()
 
 void ke_append_record_null(BufCtl* buf, uint16_t type) {
-	append_header(buf, type, 0);
+        append_header(buf, type, 0);
 }
 
 void ke_append_record_uint16(BufCtl* buf, uint16_t type, uint16_t data) {
-	if (NTS_KE_HDR_LNG+NTS_KE_U16_LNG > buf->left)
-		return;
-	append_header(buf, type, NTS_KE_U16_LNG);
-	append_uint16(buf, data);
+        if (NTS_KE_HDR_LNG+NTS_KE_U16_LNG > buf->left)
+                return;
+        append_header(buf, type, NTS_KE_U16_LNG);
+        append_uint16(buf, data);
 }
 
 void ke_append_record_bytes(BufCtl* buf, uint16_t type, uint8_t *data, int length) {
-	if (NTS_KE_HDR_LNG+length > buf->left)
-		return;
-	append_header(buf, type, length);
-	append_bytes(buf, data, length);
+        if (NTS_KE_HDR_LNG+length > buf->left)
+                return;
+        append_header(buf, type, length);
+        append_bytes(buf, data, length);
 }
 
 void ex_append_record_null(BufCtl* buf, uint16_t type) {
-	append_header(buf, type, NTS_KE_HDR_LNG);
+        append_header(buf, type, NTS_KE_HDR_LNG);
 }
 
 void ex_append_record_uint16(BufCtl* buf, uint16_t type, uint16_t data) {
-	if (NTS_KE_HDR_LNG+NTS_KE_U16_LNG > buf->left)
-		return;
-	append_header(buf, type, NTS_KE_HDR_LNG+NTS_KE_U16_LNG);
-	append_uint16(buf, data);
+        if (NTS_KE_HDR_LNG+NTS_KE_U16_LNG > buf->left)
+                return;
+        append_header(buf, type, NTS_KE_HDR_LNG+NTS_KE_U16_LNG);
+        append_uint16(buf, data);
 }
 
 void ex_append_record_bytes(BufCtl* buf, uint16_t type, uint8_t *data, int length) {
-	if (NTS_KE_HDR_LNG+length > buf->left)
-		return;
-	append_header(buf, type, NTS_KE_HDR_LNG+length);
-	append_bytes(buf, data, length);
+        if (NTS_KE_HDR_LNG+length > buf->left)
+                return;
+        append_header(buf, type, NTS_KE_HDR_LNG+length);
+        append_bytes(buf, data, length);
 }
 
 void ex_append_header(BufCtl* buf, uint16_t type, uint16_t length) {
-	append_header(buf, type, NTS_KE_HDR_LNG+length);
+        append_header(buf, type, NTS_KE_HDR_LNG+length);
 }
 
 void append_header(BufCtl* buf, uint16_t type, uint16_t length) {
-	uint16_t * ptr = (uint16_t *)buf->next;
-	if (NTS_KE_HDR_LNG > buf->left)
-		return;
-	*ptr++ = htons(type);
-	*ptr++ = htons(length);
-	buf->next += NTS_KE_HDR_LNG;
-	buf->left -= NTS_KE_HDR_LNG;
-	/* leaves buf pointing to where data will go */
+        uint16_t * ptr = (uint16_t *)buf->next;
+        if (NTS_KE_HDR_LNG > buf->left)
+                return;
+        *ptr++ = htons(type);
+        *ptr++ = htons(length);
+        buf->next += NTS_KE_HDR_LNG;
+        buf->left -= NTS_KE_HDR_LNG;
+        // leaves buf pointing to where data will go
 }
 
 void append_uint16(BufCtl* buf, uint16_t data) {
-	uint16_t * ptr = (uint16_t *)buf->next;
-	if (NTS_KE_U16_LNG > buf->left)
-		return;
-	*ptr++ = htons(data);
-	buf->next += NTS_KE_U16_LNG;
-	buf->left -= NTS_KE_U16_LNG;
+        uint16_t * ptr = (uint16_t *)buf->next;
+        if (NTS_KE_U16_LNG > buf->left)
+                return;
+        *ptr++ = htons(data);
+        buf->next += NTS_KE_U16_LNG;
+        buf->left -= NTS_KE_U16_LNG;
 }
 
 void append_bytes(BufCtl* buf, uint8_t *data, int length) {
-	if (length > buf->left)
-		return;
-	memcpy(buf->next, data, length);
-	buf->next += length;
-	buf->left -= length;
+        if (length > buf->left)
+                return;
+        memcpy(buf->next, data, length);
+        buf->next += length;
+        buf->left -= length;
 }
 
-/* Reads type and length of the next record, and moves cursor to the data */
+// Reads type and length of the next record, and moves cursor to the data
 uint16_t ke_next_record(BufCtl* buf, int *length) {
-	uint16_t *ptr = (uint16_t *)buf->next;
-	uint16_t type = ntohs(*ptr++);
-	*length = ntohs(*ptr++);
-	buf->next += NTS_KE_HDR_LNG;
-	buf->left -= NTS_KE_HDR_LNG;
-	return type;
+        uint16_t *ptr = (uint16_t *)buf->next;
+        uint16_t type = ntohs(*ptr++);
+        *length = ntohs(*ptr++);
+        buf->next += NTS_KE_HDR_LNG;
+        buf->left -= NTS_KE_HDR_LNG;
+        return type;
 }
 
 uint16_t ex_next_record(BufCtl* buf, int *length) {
-	uint16_t *ptr = (uint16_t *)buf->next;
-	uint16_t type = ntohs(*ptr++);
-	*length = ntohs(*ptr++)-NTS_KE_HDR_LNG;
-	buf->next += NTS_KE_HDR_LNG;
-	buf->left -= NTS_KE_HDR_LNG;
-	return type;
+        uint16_t *ptr = (uint16_t *)buf->next;
+        uint16_t type = ntohs(*ptr++);
+        *length = ntohs(*ptr++)-NTS_KE_HDR_LNG;
+        buf->next += NTS_KE_HDR_LNG;
+        buf->left -= NTS_KE_HDR_LNG;
+        return type;
 }
 
-/* Reads a uint16 from the record and advances to the next data */
+// Reads a uint16 from the record and advances to the next data
 uint16_t next_uint16(BufCtl* buf) {
-	uint16_t *ptr = (uint16_t *)buf->next;
-	uint16_t data = ntohs(*ptr++);
-	buf->next += NTS_KE_U16_LNG;
-	buf->left -= NTS_KE_U16_LNG;
-	return data;
+        uint16_t *ptr = (uint16_t *)buf->next;
+        uint16_t data = ntohs(*ptr++);
+        buf->next += NTS_KE_U16_LNG;
+        buf->left -= NTS_KE_U16_LNG;
+        return data;
 }
 
-/* Reads a string of bytes from the record and advances to the next data */
+// Reads a string of bytes from the record and advances to the next data
 uint16_t next_bytes(BufCtl* buf, uint8_t *data, int length) {
-	memcpy(data, buf->next, length);
-	buf->next += length;
-	buf->left -= length;
-	return length;
+        memcpy(data, buf->next, length);
+        buf->next += length;
+        buf->left -= length;
+        return length;
 }
 
-/* end */
+// end


=====================================
ntpd/nts_client.c
=====================================
@@ -52,218 +52,218 @@ bool nts_server_lookup(char *server, sockaddr_u *addr, int af);
 
 static SSL_CTX *client_ctx = NULL;
 
-/* Ugly global variables passed from worker thread back to main thread. */
+// Ugly global variables passed from worker thread back to main thread.
 static sockaddr_u sockaddr;
 static bool addrOK;
 
 
 bool nts_client_init(void) {
 
-	client_ctx = make_ssl_client_ctx(ntsconfig.ca);
+        client_ctx = make_ssl_client_ctx(ntsconfig.ca);
 
 
-/* Ugly global variables passed from worker thread back to main thread. */
-	return true;
+// Ugly global variables passed from worker thread back to main thread.
+        return true;
 }
 
 bool nts_probe(struct peer * peer) {
-	struct timeval timeout = {.tv_sec = NTS_KE_TIMEOUT, .tv_usec = 0};
-	const char *hostname = peer->hostname;
-	char hostbuf[100];
-	char errbuf[100];
-	SSL     *ssl;
-	int      server;
-	struct timespec start, finish;
-	int      err;
-
-	if (NULL == client_ctx)
-		return false;
-
-	addrOK = false;
-	clock_gettime(CLOCK_MONOTONIC, &start);
-
-	if (NULL == hostname) {
-		/* IP Address case */
-		int af = AF(&peer->srcadr);
-		switch (af) {
-		    case AF_INET:
-			inet_ntop(af, PSOCK_ADDR4(&peer->srcadr), hostbuf, sizeof(hostbuf));
-			break;
-		    case AF_INET6:
-			/* Add [] in case [xxx]:port */
-			hostbuf[0] = '[';
-			inet_ntop(af, PSOCK_ADDR6(&peer->srcadr), hostbuf+1, sizeof(hostbuf)-1);
-			strlcat(hostbuf, "]", sizeof(hostbuf));
-			break;
-		    default:
-			return false;
-		}
-		hostname = hostbuf;
-//		msyslog(LOG_INFO, "NTSc: Address Literal: %s", hostbuf);
-	}
-
-	server = open_TCP_socket(peer, hostname);
-	if (-1 == server) {
-		ntske_cnt.probes_bad++;
-		return false;
-	}
-
-	err = setsockopt(server, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof(timeout));
-	if (0 > err) {
-		ntp_strerror_r(errno, errbuf, sizeof(errbuf));
-		msyslog(LOG_ERR, "NTSc: can't set recv timeout: %s", errbuf);
-		close(server);
-		ntske_cnt.probes_bad++;
-		return false;
-	}
-	err = setsockopt(server, SOL_SOCKET, SO_SNDTIMEO, &timeout, sizeof(timeout));
-	if (0 > err) {
-		ntp_strerror_r(errno, errbuf, sizeof(errbuf));
-		msyslog(LOG_ERR, "NTSc: can't set send timeout: %s", errbuf);
-		close(server);
-		ntske_cnt.probes_bad++;
-		return false;
-	}
-
-	if (NULL == peer->cfg.nts_cfg.ca)
-		ssl = SSL_new(client_ctx);
-	else {
-		SSL_CTX *ctx;
-		ctx = make_ssl_client_ctx(peer->cfg.nts_cfg.ca);
-		if (NULL == ctx) {
-			close(server);
-			return false;
-		}
-		ssl = SSL_new(ctx);
-		SSL_CTX_free(ctx);
-	}
-	if (NULL == ssl) {
-		msyslog(LOG_ERR, "NTSc: SSL_new failed");
-		nts_log_ssl_error();
-		close(server);
-		ntske_cnt.probes_bad++;
-		return false;
-	}
-	set_hostname(ssl, hostname);
-	SSL_set_fd(ssl, server);
-
-	if (1 != SSL_connect(ssl)) {
-		msyslog(LOG_INFO, "NTSc: SSL_connect failed");
-		nts_log_ssl_error();
-		goto bail;
-	}
-	if (1 != SSL_do_handshake(ssl)) {
-		msyslog(LOG_INFO, "NTSc: SSL_do_handshake failed");
-		nts_log_ssl_error();
-		goto bail;
-	}
-
-	/* This may be clutter, but this is how to do it. */
-	msyslog(LOG_INFO, "NTSc: Using %s, %s (%d)",
-		SSL_get_version(ssl),
-		SSL_get_cipher_name(ssl),
-		SSL_get_cipher_bits(ssl, NULL));
-
-	if (!check_certificate(ssl, peer))
-		goto bail;
-	if (!check_alpn(ssl, peer, hostname))
-		goto bail;
-
-	if (!nts_client_send_request(ssl, peer))
-		goto bail;
-	if (!nts_client_process_response(ssl, peer))
-		goto bail;
-
-	/* We are using AEAD_AES_SIV_CMAC_xxx, from RFC 5297
-	 * key length depends upon which key is selected */
-	peer->nts_state.keylen = nts_get_key_length(peer->nts_state.aead);
-	if (0 == peer->nts_state.keylen) {
-		msyslog(LOG_ERR, "NTSc: Unknown AEAD code: %d", peer->nts_state.aead);
-		goto bail;
-	}
-	if (!nts_make_keys(ssl,
-			   peer->nts_state.aead,
-			   peer->nts_state.c2s,
-			   peer->nts_state.s2c,
-			   peer->nts_state.keylen))
-		goto bail;
-
-	addrOK = true;
-	ntske_cnt.probes_good++;
+        struct timeval timeout = {.tv_sec = NTS_KE_TIMEOUT, .tv_usec = 0};
+        const char *hostname = peer->hostname;
+        char hostbuf[100];
+        char errbuf[100];
+        SSL     *ssl;
+        int      server;
+        struct timespec start, finish;
+        int      err;
+
+        if (NULL == client_ctx)
+                return false;
+
+        addrOK = false;
+        clock_gettime(CLOCK_MONOTONIC, &start);
+
+        if (NULL == hostname) {
+                // IP Address case
+                int af = AF(&peer->srcadr);
+                switch (af) {
+                    case AF_INET:
+                        inet_ntop(af, PSOCK_ADDR4(&peer->srcadr), hostbuf, sizeof(hostbuf));
+                        break;
+                    case AF_INET6:
+                        // Add [] in case [xxx]:port
+                        hostbuf[0] = '[';
+                        inet_ntop(af, PSOCK_ADDR6(&peer->srcadr), hostbuf+1, sizeof(hostbuf)-1);
+                        strlcat(hostbuf, "]", sizeof(hostbuf));
+                        break;
+                    default:
+                        return false;
+                }
+                hostname = hostbuf;
+//              msyslog(LOG_INFO, "NTSc: Address Literal: %s", hostbuf);
+        }
+
+        server = open_TCP_socket(peer, hostname);
+        if (-1 == server) {
+                ntske_cnt.probes_bad++;
+                return false;
+        }
+
+        err = setsockopt(server, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof(timeout));
+        if (0 > err) {
+                ntp_strerror_r(errno, errbuf, sizeof(errbuf));
+                msyslog(LOG_ERR, "NTSc: can't set recv timeout: %s", errbuf);
+                close(server);
+                ntske_cnt.probes_bad++;
+                return false;
+        }
+        err = setsockopt(server, SOL_SOCKET, SO_SNDTIMEO, &timeout, sizeof(timeout));
+        if (0 > err) {
+                ntp_strerror_r(errno, errbuf, sizeof(errbuf));
+                msyslog(LOG_ERR, "NTSc: can't set send timeout: %s", errbuf);
+                close(server);
+                ntske_cnt.probes_bad++;
+                return false;
+        }
+
+        if (NULL == peer->cfg.nts_cfg.ca)
+                ssl = SSL_new(client_ctx);
+        else {
+                SSL_CTX *ctx;
+                ctx = make_ssl_client_ctx(peer->cfg.nts_cfg.ca);
+                if (NULL == ctx) {
+                        close(server);
+                        return false;
+                }
+                ssl = SSL_new(ctx);
+                SSL_CTX_free(ctx);
+        }
+        if (NULL == ssl) {
+                msyslog(LOG_ERR, "NTSc: SSL_new failed");
+                nts_log_ssl_error();
+                close(server);
+                ntske_cnt.probes_bad++;
+                return false;
+        }
+        set_hostname(ssl, hostname);
+        SSL_set_fd(ssl, server);
+
+        if (1 != SSL_connect(ssl)) {
+                msyslog(LOG_INFO, "NTSc: SSL_connect failed");
+                nts_log_ssl_error();
+                goto bail;
+        }
+        if (1 != SSL_do_handshake(ssl)) {
+                msyslog(LOG_INFO, "NTSc: SSL_do_handshake failed");
+                nts_log_ssl_error();
+                goto bail;
+        }
+
+        // This may be clutter, but this is how to do it.
+        msyslog(LOG_INFO, "NTSc: Using %s, %s (%d)",
+                SSL_get_version(ssl),
+                SSL_get_cipher_name(ssl),
+                SSL_get_cipher_bits(ssl, NULL));
+
+        if (!check_certificate(ssl, peer))
+                goto bail;
+        if (!check_alpn(ssl, peer, hostname))
+                goto bail;
+
+        if (!nts_client_send_request(ssl, peer))
+                goto bail;
+        if (!nts_client_process_response(ssl, peer))
+                goto bail;
+
+        /* We are using AEAD_AES_SIV_CMAC_xxx, from RFC 5297
+         * key length depends upon which key is selected */
+        peer->nts_state.keylen = nts_get_key_length(peer->nts_state.aead);
+        if (0 == peer->nts_state.keylen) {
+                msyslog(LOG_ERR, "NTSc: Unknown AEAD code: %d", peer->nts_state.aead);
+                goto bail;
+        }
+        if (!nts_make_keys(ssl,
+                           peer->nts_state.aead,
+                           peer->nts_state.c2s,
+                           peer->nts_state.s2c,
+                           peer->nts_state.keylen))
+                goto bail;
+
+        addrOK = true;
+        ntske_cnt.probes_good++;
 
   bail:
-	if (!addrOK) {
-		ntske_cnt.probes_bad++;
-		peer->nts_state.count = -1;
-	}
-	SSL_shutdown(ssl);
-	SSL_free(ssl);
-	close(server);
-
-	clock_gettime(CLOCK_MONOTONIC, &finish);
-	finish = sub_tspec(finish, start);
-	msyslog(LOG_INFO, "NTSc: NTS-KE req to %s took %.3f sec, %s",
-		hostname, tspec_to_d(finish),
-		addrOK? "OK" : "fail");
-
-	return addrOK;
+        if (!addrOK) {
+                ntske_cnt.probes_bad++;
+                peer->nts_state.count = -1;
+        }
+        SSL_shutdown(ssl);
+        SSL_free(ssl);
+        close(server);
+
+        clock_gettime(CLOCK_MONOTONIC, &finish);
+        finish = sub_tspec(finish, start);
+        msyslog(LOG_INFO, "NTSc: NTS-KE req to %s took %.3f sec, %s",
+                hostname, tspec_to_d(finish),
+                addrOK? "OK" : "fail");
+
+        return addrOK;
 }
 
 bool nts_check(struct peer *peer) {
-	if (0) {
-		char errbuf[100];
-		sockporttoa_r(&sockaddr, errbuf, sizeof(errbuf));
-		msyslog(LOG_INFO, "NTSc: nts_check %s, %d", errbuf, addrOK);
-	}
-	if (addrOK) {
-		if (peer->cast_flags & MDF_POOL) {
-			dns_take_pool(peer, &sockaddr);
-			dns_take_status(peer, DNS_NTS_pool);
-		} else {
-			dns_take_server(peer, &sockaddr);
-			dns_take_status(peer, DNS_good);
-		}
-	} else
-		dns_take_status(peer, DNS_error);
-	return addrOK;
+        if (0) {
+                char errbuf[100];
+                sockporttoa_r(&sockaddr, errbuf, sizeof(errbuf));
+                msyslog(LOG_INFO, "NTSc: nts_check %s, %d", errbuf, addrOK);
+        }
+        if (addrOK) {
+                if (peer->cast_flags & MDF_POOL) {
+                        dns_take_pool(peer, &sockaddr);
+                        dns_take_status(peer, DNS_NTS_pool);
+                } else {
+                        dns_take_server(peer, &sockaddr);
+                        dns_take_status(peer, DNS_good);
+                }
+        } else
+                dns_take_status(peer, DNS_error);
+        return addrOK;
 }
 
 SSL_CTX* make_ssl_client_ctx(const char * filename) {
-	bool ok = true;
-	SSL_CTX *ctx;
-
-	ctx = SSL_CTX_new(TLS_client_method());
-	if (NULL == ctx) {
-		/* Happens if no ciphers */
-		msyslog(LOG_ERR, "NTSc: NULL ctx");
-		nts_log_ssl_error();
-		return NULL;
-	}
-
-	{
-		// 4., ALPN, RFC 7301
-		static unsigned char alpn [] = { 7, 'n', 't', 's', 'k', 'e', '/', '1' };
-		SSL_CTX_set_alpn_protos(ctx, alpn, sizeof(alpn));
-	}
-
-	SSL_CTX_set_session_cache_mode(ctx, SSL_SESS_CACHE_OFF);
-	SSL_CTX_set_timeout(ctx, NTS_KE_TIMEOUT);   /* session lifetime */
-
-	ok &= nts_load_versions(ctx);
-	ok &= nts_load_ciphers(ctx);
-	ok &= nts_load_ecdhcurves(ctx);
-	ok &= nts_set_cert_search(ctx, filename);
-
-	if (!ok) {
-		msyslog(LOG_ERR, "NTSc: Troubles setting up client SSL CTX");
-		SSL_CTX_free(ctx);
-		return NULL;
-	};
-
-	return ctx;
+        bool ok = true;
+        SSL_CTX *ctx;
+
+        ctx = SSL_CTX_new(TLS_client_method());
+        if (NULL == ctx) {
+                // Happens if no ciphers
+                msyslog(LOG_ERR, "NTSc: NULL ctx");
+                nts_log_ssl_error();
+                return NULL;
+        }
+
+        {
+                // 4., ALPN, RFC 7301
+                static unsigned char alpn [] = { 7, 'n', 't', 's', 'k', 'e', '/', '1' };
+                SSL_CTX_set_alpn_protos(ctx, alpn, sizeof(alpn));
+        }
+
+        SSL_CTX_set_session_cache_mode(ctx, SSL_SESS_CACHE_OFF);
+        SSL_CTX_set_timeout(ctx, NTS_KE_TIMEOUT);   // session lifetime
+
+        ok &= nts_load_versions(ctx);
+        ok &= nts_load_ciphers(ctx);
+        ok &= nts_load_ecdhcurves(ctx);
+        ok &= nts_set_cert_search(ctx, filename);
+
+        if (!ok) {
+                msyslog(LOG_ERR, "NTSc: Troubles setting up client SSL CTX");
+                SSL_CTX_free(ctx);
+                return NULL;
+        };
+
+        return ctx;
 }
 
-/* FIXME - split out DNS work. */
+// FIXME - split out DNS work.
 
 /* Note that there are 2 DNS lookups.
  *   One for the NTS-KE server and another for the NTP server.
@@ -279,129 +279,129 @@ SSL_CTX* make_ssl_client_ctx(const char * filename) {
  * for most servers.
  */
 
-/* return -1 on error */
+// return -1 on error
 int open_TCP_socket(struct peer *peer, const char *hostname) {
-	char host[256], port[32];
-	char errbuf[100];
-	char *tmp;
-	struct addrinfo hints;
-	struct addrinfo *answer, *worker;
-	int gai_rc;
-	int sockfd;
-	struct timespec start, finish;
-
-	/* FIXME -- const bug in OpenSSL */
-	strlcpy(host, hostname, sizeof(host));
-
-	/* handle xxx:port case */
-	if ('[' == host[0]) {
-		/* IPv6 case, drop [], start search after ] */
-		SET_AF(&peer->srcadr, AF_INET6);
-		strlcpy(host, hostname+1, sizeof(host));
-		tmp = strchr(host, ']');
-		if (NULL == tmp) {
-		  msyslog(LOG_ERR, "NTSc: open_TCP_socket: missing ']': %s",
-		    hostname);
-		  return -1;
-		}
-		*tmp++ = 0;
-		/* We have chopped off the [] around the host literal.
-		 * There should be nothing left or :<port> */
-		if ((0 != *tmp) && (':' != *tmp)) {
-		  msyslog(LOG_ERR, "NTSc: open_TCP_socket: missing ':': %s",
-		    hostname);
-		  return -1;
-		}
-		if (0 == *tmp) tmp = NULL; /* no : */
-	} else {
-		tmp = strchr(host, ':');
-	}
-	if (NULL == tmp) {
-		/* simple case, no : */
-		strlcpy(port, NTS_KE_PORTA, sizeof(port));
-	} else {
-		/* Complicated case, found a : */
-		*tmp++ = 0;
-		strlcpy(port, tmp, sizeof(port));
-		msyslog(LOG_INFO, "NTSc: open_TCP_socket: found port %s", port);
-	}
-
-	ZERO(hints);
-	hints.ai_protocol = IPPROTO_TCP;
-	hints.ai_socktype = SOCK_STREAM;
-	hints.ai_family = AF(&peer->srcadr);  /* -4, -6 switch */
-	clock_gettime(CLOCK_MONOTONIC, &start);
-	gai_rc = getaddrinfo(host, port, &hints, &answer);
-	if (0 != gai_rc) {
-		msyslog(LOG_INFO, "NTSc: open_TCP_socket: DNS error trying to contact %s, %d, %s",
-			hostname, gai_rc, gai_strerror(gai_rc));
-		return -1;
-	}
-	clock_gettime(CLOCK_MONOTONIC, &finish);
-	finish = sub_tspec(finish, start);
-	msyslog(LOG_INFO, "NTSc: DNS lookup of %s (%d) took %.3f sec",
-		hostname, hints.ai_family, tspec_to_d(finish));
-
-	/* sockaddr is global for NTP address
-	 * also use as temp for printing here */
-	if (NULL == peer->hostname) {
-		/* Address literal case, use first/only answer */
-		worker = answer;
-	} else {
-		worker = find_best_addr(answer);
-		if (NULL == worker) {
-			msyslog(LOG_INFO, "NTSc: All addresses in use.");
-			freeaddrinfo(answer);
-			return -1;
-		}
-	}
-	memcpy(&sockaddr, worker->ai_addr, worker->ai_addrlen);
-	sockporttoa_r(&sockaddr, errbuf, sizeof(errbuf));
-	msyslog(LOG_INFO, "NTSc: connecting to %s+%s => %s",
-		host, port, errbuf);
-
-	/* setup default NTP port now
-	 *   in case of server-name:port later on
-	 */
-	SET_PORT(&sockaddr, NTP_PORT);
-	sockfd = socket(worker->ai_family, SOCK_STREAM, 0);
-	if (-1 == sockfd) {
-		ntp_strerror_r(errno, errbuf, sizeof(errbuf));
-		msyslog(LOG_INFO, "NTSc: open_TCP_socket: no socket: %s", errbuf);
-	} else {
-		if (!connect_TCP_socket(sockfd, worker)) {
-			close(sockfd);
-			sockfd = -1;
-		}
-	}
-
-	freeaddrinfo(answer);
-	return sockfd;
+        char host[256], port[32];
+        char errbuf[100];
+        char *tmp;
+        struct addrinfo hints;
+        struct addrinfo *answer, *worker;
+        int gai_rc;
+        int sockfd;
+        struct timespec start, finish;
+
+        // FIXME -- const bug in OpenSSL
+        strlcpy(host, hostname, sizeof(host));
+
+        // handle xxx:port case
+        if ('[' == host[0]) {
+                // IPv6 case, drop [], start search after ]
+                SET_AF(&peer->srcadr, AF_INET6);
+                strlcpy(host, hostname+1, sizeof(host));
+                tmp = strchr(host, ']');
+                if (NULL == tmp) {
+                  msyslog(LOG_ERR, "NTSc: open_TCP_socket: missing ']': %s",
+                    hostname);
+                  return -1;
+                }
+                *tmp++ = 0;
+                /* We have chopped off the [] around the host literal.
+                 * There should be nothing left or :<port> */
+                if ((0 != *tmp) && (':' != *tmp)) {
+                  msyslog(LOG_ERR, "NTSc: open_TCP_socket: missing ':': %s",
+                    hostname);
+                  return -1;
+                }
+                if (0 == *tmp) tmp = NULL;  // no :
+        } else {
+                tmp = strchr(host, ':');
+        }
+        if (NULL == tmp) {
+                // simple case, no :
+                strlcpy(port, NTS_KE_PORTA, sizeof(port));
+        } else {
+                // Complicated case, found a :
+                *tmp++ = 0;
+                strlcpy(port, tmp, sizeof(port));
+                msyslog(LOG_INFO, "NTSc: open_TCP_socket: found port %s", port);
+        }
+
+        ZERO(hints);
+        hints.ai_protocol = IPPROTO_TCP;
+        hints.ai_socktype = SOCK_STREAM;
+        hints.ai_family = AF(&peer->srcadr);  // -4, -6 switch
+        clock_gettime(CLOCK_MONOTONIC, &start);
+        gai_rc = getaddrinfo(host, port, &hints, &answer);
+        if (0 != gai_rc) {
+                msyslog(LOG_INFO, "NTSc: open_TCP_socket: DNS error trying to contact %s, %d, %s",
+                        hostname, gai_rc, gai_strerror(gai_rc));
+                return -1;
+        }
+        clock_gettime(CLOCK_MONOTONIC, &finish);
+        finish = sub_tspec(finish, start);
+        msyslog(LOG_INFO, "NTSc: DNS lookup of %s (%d) took %.3f sec",
+                hostname, hints.ai_family, tspec_to_d(finish));
+
+        /* sockaddr is global for NTP address
+         * also use as temp for printing here */
+        if (NULL == peer->hostname) {
+                // Address literal case, use first/only answer
+                worker = answer;
+        } else {
+                worker = find_best_addr(answer);
+                if (NULL == worker) {
+                        msyslog(LOG_INFO, "NTSc: All addresses in use.");
+                        freeaddrinfo(answer);
+                        return -1;
+                }
+        }
+        memcpy(&sockaddr, worker->ai_addr, worker->ai_addrlen);
+        sockporttoa_r(&sockaddr, errbuf, sizeof(errbuf));
+        msyslog(LOG_INFO, "NTSc: connecting to %s+%s => %s",
+                host, port, errbuf);
+
+        /* setup default NTP port now
+         *   in case of server-name:port later on
+         */
+        SET_PORT(&sockaddr, NTP_PORT);
+        sockfd = socket(worker->ai_family, SOCK_STREAM, 0);
+        if (-1 == sockfd) {
+                ntp_strerror_r(errno, errbuf, sizeof(errbuf));
+                msyslog(LOG_INFO, "NTSc: open_TCP_socket: no socket: %s", errbuf);
+        } else {
+                if (!connect_TCP_socket(sockfd, worker)) {
+                        close(sockfd);
+                        sockfd = -1;
+                }
+        }
+
+        freeaddrinfo(answer);
+        return sockfd;
 
 }
 
 struct addrinfo *find_best_addr(struct addrinfo *answer) {
-	for ( ; NULL != answer; answer = answer->ai_next) {
-		sockaddr_u addr;
-		struct peer *pp;
-		if (sizeof(sockaddr_u) < answer->ai_addrlen)
-			continue;  /* Weird */
-		memcpy(&addr, answer->ai_addr, answer->ai_addrlen);
-		/* findexistingpeer checks port too */
-		for (pp = peer_list; NULL != pp; pp = pp->p_link) {
- 			if (MDF_POOL & pp->cast_flags) continue;
- 			if (FLAG_LOOKUP & pp->cfg.flags) continue;
-			if (SOCK_EQ(&addr, &pp->srcadr)) break;
-		}
-		if (NULL != pp) {
-			char errbuf[200];
-			socktoa_r(&addr, errbuf, sizeof(errbuf));
-			msyslog(LOG_INFO, "NTSc: Skipping %s", errbuf);
-			continue;  /* already in use */
-		}
-		break; 
-	}
-	return(answer);
+        for ( ; NULL != answer; answer = answer->ai_next) {
+                sockaddr_u addr;
+                struct peer *pp;
+                if (sizeof(sockaddr_u) < answer->ai_addrlen)
+                        continue;  // Weird
+                memcpy(&addr, answer->ai_addr, answer->ai_addrlen);
+                // findexistingpeer checks port too
+                for (pp = peer_list; NULL != pp; pp = pp->p_link) {
+                        if (MDF_POOL & pp->cast_flags) continue;
+                        if (FLAG_LOOKUP & pp->cfg.flags) continue;
+                        if (SOCK_EQ(&addr, &pp->srcadr)) break;
+                }
+                if (NULL != pp) {
+                        char errbuf[200];
+                        socktoa_r(&addr, errbuf, sizeof(errbuf));
+                        msyslog(LOG_INFO, "NTSc: Skipping %s", errbuf);
+                        continue;  // already in use
+                }
+                break; 
+        }
+        return(answer);
 }
 
 
@@ -411,108 +411,108 @@ struct addrinfo *find_best_addr(struct addrinfo *answer) {
  * Use man 3 connect.
  */
 bool connect_TCP_socket(int sockfd, struct addrinfo *addr) {
-	char errbuf[100];
-	int err;
-	fd_set fdset;
-	struct timeval timeout;
-	int so_error;
-	socklen_t so_len = sizeof(so_error);
-
-	err = fcntl(sockfd, F_SETFL, O_NONBLOCK);
-	if (-1 == err) {
-		ntp_strerror_r(errno, errbuf, sizeof(errbuf));
-		msyslog(LOG_INFO, "NTSc: can't set O_NONBLOCK %s", errbuf);
-		return false;
-	}
-	err = connect(sockfd, addr->ai_addr, addr->ai_addrlen);
-	/* The usual nonblocking case is -1 and errno == EINPROGRESS.
-	 * A fast local connection can also succeed immediately.
-	 * Getting connected should be possible if the scheduler
-	 * avoids us for long enough.
-	 * Other errors may be possible.  No route?
-	 * I haven't seen that yet.  HGM, 2020 Jan 19
-	 */
-	if (-1 == err && EINPROGRESS != errno) {
-		ntp_strerror_r(errno, errbuf, sizeof(errbuf));
-		msyslog(LOG_INFO, "NTSc: connect_TCP_socket: connect failed: %s", errbuf);
-		return false;
-	}
-
-	if (-1 == err) {
-		FD_ZERO(&fdset);
-		FD_SET(sockfd, &fdset);
-		timeout.tv_sec = NTS_KE_TIMEOUT;
-		timeout.tv_usec = 0;
-
-		if (0 == select(sockfd + 1, NULL, &fdset, NULL, &timeout)) {
-			msyslog(LOG_INFO, "NTSc: connect_TCP_socket: timeout");
-			return false;
-		}
-
-		/* It's ready, either connected or error. */
-		if (-1 == getsockopt(sockfd, SOL_SOCKET, SO_ERROR, &so_error, &so_len)) {
-			ntp_strerror_r(errno, errbuf, sizeof(errbuf));
-			msyslog(LOG_INFO, "NTSc: connect_TCP_socket: getsockopt failed: %s", errbuf);
-			return false;
-		}
-
-		if (0 != so_error) {
-			ntp_strerror_r(so_error, errbuf, sizeof(errbuf));
-			msyslog(LOG_INFO, "NTSc: connect_TCP_socket: connect failed: %s", errbuf);
-			return false;
-		}
-	}
-
-	err = fcntl(sockfd, F_SETFL, 0); /* turn off O_NONBLOCK */
-	if (-1 == err) {
-		ntp_strerror_r(errno, errbuf, sizeof(errbuf));
-		msyslog(LOG_INFO, "NTSc: can't unset O_NONBLOCK %s", errbuf);
-		return false;
-	}
-
-	return true;
+        char errbuf[100];
+        int err;
+        fd_set fdset;
+        struct timeval timeout;
+        int so_error;
+        socklen_t so_len = sizeof(so_error);
+
+        err = fcntl(sockfd, F_SETFL, O_NONBLOCK);
+        if (-1 == err) {
+                ntp_strerror_r(errno, errbuf, sizeof(errbuf));
+                msyslog(LOG_INFO, "NTSc: can't set O_NONBLOCK %s", errbuf);
+                return false;
+        }
+        err = connect(sockfd, addr->ai_addr, addr->ai_addrlen);
+        /* The usual nonblocking case is -1 and errno == EINPROGRESS.
+         * A fast local connection can also succeed immediately.
+         * Getting connected should be possible if the scheduler
+         * avoids us for long enough.
+         * Other errors may be possible.  No route?
+         * I haven't seen that yet.  HGM, 2020 Jan 19
+         */
+        if (-1 == err && EINPROGRESS != errno) {
+                ntp_strerror_r(errno, errbuf, sizeof(errbuf));
+                msyslog(LOG_INFO, "NTSc: connect_TCP_socket: connect failed: %s", errbuf);
+                return false;
+        }
+
+        if (-1 == err) {
+                FD_ZERO(&fdset);
+                FD_SET(sockfd, &fdset);
+                timeout.tv_sec = NTS_KE_TIMEOUT;
+                timeout.tv_usec = 0;
+
+                if (0 == select(sockfd + 1, NULL, &fdset, NULL, &timeout)) {
+                        msyslog(LOG_INFO, "NTSc: connect_TCP_socket: timeout");
+                        return false;
+                }
+
+                // It's ready, either connected or error.
+                if (-1 == getsockopt(sockfd, SOL_SOCKET, SO_ERROR, &so_error, &so_len)) {
+                        ntp_strerror_r(errno, errbuf, sizeof(errbuf));
+                        msyslog(LOG_INFO, "NTSc: connect_TCP_socket: getsockopt failed: %s", errbuf);
+                        return false;
+                }
+
+                if (0 != so_error) {
+                        ntp_strerror_r(so_error, errbuf, sizeof(errbuf));
+                        msyslog(LOG_INFO, "NTSc: connect_TCP_socket: connect failed: %s", errbuf);
+                        return false;
+                }
+        }
+
+        err = fcntl(sockfd, F_SETFL, 0);  // turn off O_NONBLOCK
+        if (-1 == err) {
+                ntp_strerror_r(errno, errbuf, sizeof(errbuf));
+                msyslog(LOG_INFO, "NTSc: can't unset O_NONBLOCK %s", errbuf);
+                return false;
+        }
+
+        return true;
 }
 
 
 void set_hostname(SSL *ssl, const char *hostname) {
-	char host[256], *tmp;
-
-	/* chop off [] and trailing :port */
-	strlcpy(host, hostname, sizeof(host));
-	if ('[' == host[0]) {
-	  /* IPv6 literal, [...] format */
-	  strlcpy(host, hostname+1, sizeof(host));
-	  tmp = strchr(host, ']');
-	  if (NULL != tmp) *tmp = 0;
-	} else {
-	  /* not IPv6 [...] format */
-	  tmp = strchr(host, ':');
-	  if (NULL != tmp) {
-	    *tmp = 0;
-	  }
-	}
+        char host[256], *tmp;
+
+        // chop off [] and trailing :port
+        strlcpy(host, hostname, sizeof(host));
+        if ('[' == host[0]) {
+          // IPv6 literal, [...] format
+          strlcpy(host, hostname+1, sizeof(host));
+          tmp = strchr(host, ']');
+          if (NULL != tmp) *tmp = 0;
+        } else {
+          // not IPv6 [...] format
+          tmp = strchr(host, ':');
+          if (NULL != tmp) {
+            *tmp = 0;
+          }
+        }
 
 /* https://wiki.openssl.org/index.php/Hostname_validation
  * draft-ietf-uta-rfc6125bis section 3 relaxes the restrictions around the use
  * of wildcards to make it clear that they're permitted unless specifically
  * prohibited in an RFC
  */
-	SSL_set_hostflags(ssl, X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS);
+        SSL_set_hostflags(ssl, X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS);
 #if OPENSSL_VERSION_NUMBER >= 0x40000000L
 {
-	sockaddr_u addr;
-	if (is_ip_address(host, AF_UNSPEC, &addr))
-	  SSL_set1_ipaddr(ssl, host);
-	else {
-	  SSL_set1_dnsname(ssl, host);
-	  SSL_set_tlsext_host_name(ssl, host);
-	}
+        sockaddr_u addr;
+        if (is_ip_address(host, AF_UNSPEC, &addr))
+          SSL_set1_ipaddr(ssl, host);
+        else {
+          SSL_set1_dnsname(ssl, host);
+          SSL_set_tlsext_host_name(ssl, host);
+        }
 }
 #else
-	SSL_set1_host(ssl, host);  /* DEPRECATED in OpenSSL 4.0 */
-	SSL_set_tlsext_host_name(ssl, host);
+        SSL_set1_host(ssl, host);  // DEPRECATED in OpenSSL 4.0
+        SSL_set_tlsext_host_name(ssl, host);
 #endif
-	msyslog(LOG_DEBUG, "NTSc: set cert host: %s", host);
+        msyslog(LOG_DEBUG, "NTSc: set cert host: %s", host);
 
 }
 
@@ -521,394 +521,394 @@ void set_hostname(SSL *ssl, const char *hostname) {
 //    DNS:*.time.nl, DNS:time.nl
 
 bool check_certificate(SSL *ssl, struct peer* peer) {
-	X509 *cert = SSL_get_peer_certificate(ssl);
-	const X509_NAME *certname;
-	GENERAL_NAMES *gens;
-	char name[200];
-	int certok;
-	int numgens = 0;
-
-	if (NULL == cert) {
-		msyslog(LOG_INFO, "NTSc: No certificate");
-		if (!(FLAG_NTS_NOVAL & peer->cfg.flags))
-			return false;
-		return true;
-	}
-
-	certname = X509_get_subject_name(cert);
-	X509_NAME_oneline(certname, name, sizeof(name));
-	msyslog(LOG_INFO, "NTSc: certificate subject name: %s", name);
-	certname = X509_get_issuer_name(cert);
-	X509_NAME_oneline(certname, name, sizeof(name));
-	msyslog(LOG_INFO, "NTSc: certificate issuer name: %s", name);
-	/* print SAN:DNS strings */
-	gens = X509_get_ext_d2i(cert, NID_subject_alt_name, 0, 0);
-	if (gens) {
-	  char buff[150];
-	  numgens = sk_GENERAL_NAME_num(gens);
-	  buff[0] = 0;
-	  for (int i = 0; i<numgens; i++) {
-	    const GENERAL_NAME *gen;
-	    const char *dnsname;
-	    unsigned int len;
-	    gen = sk_GENERAL_NAME_value(gens, i);
-	    if (gen->type != GEN_DNS)
-	      continue;
-	    // string is NUL terminated but may have internal NULs
-	    len = (unsigned int)ASN1_STRING_length(gen->d.ia5);
-	    dnsname = (const char *)ASN1_STRING_get0_data(gen->d.ia5);
-	    if (0 != buff[0])
-	      strlcat(buff, ", ", sizeof(buff));
-	    strlcat(buff, dnsname, sizeof(buff));
-	    if (len != strlen(dnsname))
-	      strlcat(buff, "??", sizeof(buff));
-	  }
-	  msyslog(LOG_INFO, "NTSc: SAN:DNS %s", buff);
-	  GENERAL_NAMES_free(gens);
-	}
-	if (0 == numgens) {
-	  const char *peername = SSL_get0_peername(ssl);
-	  msyslog(LOG_INFO, "NTSc: matching with subject:CN %s", peername);
-	} else if (1 > numgens) {
-	  const char *peername = SSL_get0_peername(ssl);
-	  msyslog(LOG_INFO, "NTSc: matching with SAN:DNS: %s", peername);
-	}
-	X509_free(cert);
-	certok = SSL_get_verify_result(ssl);
-	if (X509_V_OK == certok) {
-		msyslog(LOG_INFO, "NTSc: certificate is valid.");
-	} else {
-		msyslog(LOG_ERR, "NTSc: certificate invalid: %d=>%s",
-			certok, X509_verify_cert_error_string(certok));
-		if (FLAG_NTS_NOVAL & peer->cfg.flags) {
-			msyslog(LOG_INFO, "NTSc: noval - accepting invalid cert.");
-			return true;
-		}
-		return false;
-	}
-	return true;
+        X509 *cert = SSL_get_peer_certificate(ssl);
+        const X509_NAME *certname;
+        GENERAL_NAMES *gens;
+        char name[200];
+        int certok;
+        int numgens = 0;
+
+        if (NULL == cert) {
+                msyslog(LOG_INFO, "NTSc: No certificate");
+                if (!(FLAG_NTS_NOVAL & peer->cfg.flags))
+                        return false;
+                return true;
+        }
+
+        certname = X509_get_subject_name(cert);
+        X509_NAME_oneline(certname, name, sizeof(name));
+        msyslog(LOG_INFO, "NTSc: certificate subject name: %s", name);
+        certname = X509_get_issuer_name(cert);
+        X509_NAME_oneline(certname, name, sizeof(name));
+        msyslog(LOG_INFO, "NTSc: certificate issuer name: %s", name);
+        // print SAN:DNS strings
+        gens = X509_get_ext_d2i(cert, NID_subject_alt_name, 0, 0);
+        if (gens) {
+          char buff[150];
+          numgens = sk_GENERAL_NAME_num(gens);
+          buff[0] = 0;
+          for (int i = 0; i<numgens; i++) {
+            const GENERAL_NAME *gen;
+            const char *dnsname;
+            unsigned int len;
+            gen = sk_GENERAL_NAME_value(gens, i);
+            if (gen->type != GEN_DNS)
+              continue;
+            // string is NUL terminated but may have internal NULs
+            len = (unsigned int)ASN1_STRING_length(gen->d.ia5);
+            dnsname = (const char *)ASN1_STRING_get0_data(gen->d.ia5);
+            if (0 != buff[0])
+              strlcat(buff, ", ", sizeof(buff));
+            strlcat(buff, dnsname, sizeof(buff));
+            if (len != strlen(dnsname))
+              strlcat(buff, "??", sizeof(buff));
+          }
+          msyslog(LOG_INFO, "NTSc: SAN:DNS %s", buff);
+          GENERAL_NAMES_free(gens);
+        }
+        if (0 == numgens) {
+          const char *peername = SSL_get0_peername(ssl);
+          msyslog(LOG_INFO, "NTSc: matching with subject:CN %s", peername);
+        } else if (1 > numgens) {
+          const char *peername = SSL_get0_peername(ssl);
+          msyslog(LOG_INFO, "NTSc: matching with SAN:DNS: %s", peername);
+        }
+        X509_free(cert);
+        certok = SSL_get_verify_result(ssl);
+        if (X509_V_OK == certok) {
+                msyslog(LOG_INFO, "NTSc: certificate is valid.");
+        } else {
+                msyslog(LOG_ERR, "NTSc: certificate invalid: %d=>%s",
+                        certok, X509_verify_cert_error_string(certok));
+                if (FLAG_NTS_NOVAL & peer->cfg.flags) {
+                        msyslog(LOG_INFO, "NTSc: noval - accepting invalid cert.");
+                        return true;
+                }
+                return false;
+        }
+        return true;
 }
 
 bool check_alpn(SSL *ssl, struct peer* peer, const char *hostname) {
-	UNUSED_ARG(peer);
-	const unsigned char *data;
-	unsigned int len;
-	SSL_get0_alpn_selected(ssl, &data, &len);
-	if (0 == len) {
-		msyslog(LOG_DEBUG, "NTSc: No ALPN from %s (%s)",
-			hostname, SSL_get_version(ssl));
-		return false;
-	}
-	/* For now, we only support one version.
-	 * This will get more complicated when version 2 arrives. */
-	if (len != 7 ||
-	    0 != memcmp(data, "ntske/1", len)) {
-		/* copy data over so we can print it. */
-		/* don't read past end of data */
-		unsigned int i, l;
-		char buff [16];
-		l = min(len, sizeof(buff)-1);
-		memcpy(buff, data, l);
-		buff[l] = '\0';
-		for (i=0; i<l; i++) {
-			if (!isgraph((int)buff[i])) {
-			  buff[i] = '*'; /* fix non-printing crap */
-			}
-		}
-		msyslog(LOG_DEBUG, "NTSc: Strange ALPN %s (%u) from %s",
-			buff, len, hostname);
-		return false;
-	}
-	msyslog(LOG_DEBUG, "NTSc: Good ALPN from %s", hostname);
-
-	return true;
+        UNUSED_ARG(peer);
+        const unsigned char *data;
+        unsigned int len;
+        SSL_get0_alpn_selected(ssl, &data, &len);
+        if (0 == len) {
+                msyslog(LOG_DEBUG, "NTSc: No ALPN from %s (%s)",
+                        hostname, SSL_get_version(ssl));
+                return false;
+        }
+        /* For now, we only support one version.
+         * This will get more complicated when version 2 arrives. */
+        if (len != 7 ||
+            0 != memcmp(data, "ntske/1", len)) {
+                // copy data over so we can print it.
+                // don't read past end of data
+                unsigned int i, l;
+                char buff [16];
+                l = min(len, sizeof(buff)-1);
+                memcpy(buff, data, l);
+                buff[l] = '\0';
+                for (i=0; i<l; i++) {
+                        if (!isgraph((int)buff[i])) {
+                          buff[i] = '*';  // fix non-printing crap
+                        }
+                }
+                msyslog(LOG_DEBUG, "NTSc: Strange ALPN %s (%u) from %s",
+                        buff, len, hostname);
+                return false;
+        }
+        msyslog(LOG_DEBUG, "NTSc: Good ALPN from %s", hostname);
+
+        return true;
 }
 
 
 bool nts_make_keys(SSL *ssl, uint16_t aead, uint8_t *c2s, uint8_t *s2c, int keylen) {
-	const char *label = "EXPORTER-network-time-security";
-	unsigned char context[5];
-	context[0] = (nts_protocol_NTP >> 8) & 0xFF;
-	context[1] = nts_protocol_NTP & 0xFF;
-	context[2] = (aead >> 8) & 0xFF;
-	context[3] = aead & 0xFF;
-	context[4] = 0x00;
-	if (1 != SSL_export_keying_material(ssl, c2s, keylen,
-					    label, strlen(label),
-					    context, 5, 1)) {
-		msyslog(LOG_ERR, "NTS: Error making c2s\n");
-		nts_log_ssl_error();
-		return false;
-	}
-	context[4] = 0x01;
-	if (1 != SSL_export_keying_material(ssl, s2c, keylen,
-					    label, strlen(label),
-					    context, 5, 1)) {
-		msyslog(LOG_ERR, "NTS: Error making s2c\n");
-		nts_log_ssl_error();
-		return false;
-	}
-	return true;
+        const char *label = "EXPORTER-network-time-security";
+        unsigned char context[5];
+        context[0] = (nts_protocol_NTP >> 8) & 0xFF;
+        context[1] = nts_protocol_NTP & 0xFF;
+        context[2] = (aead >> 8) & 0xFF;
+        context[3] = aead & 0xFF;
+        context[4] = 0x00;
+        if (1 != SSL_export_keying_material(ssl, c2s, keylen,
+                                            label, strlen(label),
+                                            context, 5, 1)) {
+                msyslog(LOG_ERR, "NTS: Error making c2s\n");
+                nts_log_ssl_error();
+                return false;
+        }
+        context[4] = 0x01;
+        if (1 != SSL_export_keying_material(ssl, s2c, keylen,
+                                            label, strlen(label),
+                                            context, 5, 1)) {
+                msyslog(LOG_ERR, "NTS: Error making s2c\n");
+                nts_log_ssl_error();
+                return false;
+        }
+        return true;
 }
 
 bool nts_client_send_request(SSL *ssl, struct peer* peer) {
-	uint8_t buff[1000];
-	int     used, transferred;
-	bool    success;
-	const char *errtxt = NULL;
+        uint8_t buff[1000];
+        int     used, transferred;
+        bool    success;
+        const char *errtxt = NULL;
 
-	success = nts_client_send_request_core(buff, sizeof(buff), &used, peer);
-	if (!success) {
-		return false;
-	}
+        success = nts_client_send_request_core(buff, sizeof(buff), &used, peer);
+        if (!success) {
+                return false;
+        }
 
-	transferred = nts_ssl_write(ssl, buff, used, &errtxt);
-	if (used != transferred)
-		return false;
+        transferred = nts_ssl_write(ssl, buff, used, &errtxt);
+        if (used != transferred)
+                return false;
 
-	return true;
+        return true;
 }
 
 bool nts_client_send_request_core(uint8_t *buff, int buf_size, int *used, struct peer* peer) {
-	struct  BufCtl_t buf;
-	uint16_t aead = NO_AEAD;
-
-	buf.next = buff;
-	buf.left = buf_size;
-
-	/* 4.1.2 Next Protocol, 0 for NTP */
-	ke_append_record_uint16(&buf,
-				NTS_CRITICAL+nts_next_protocol_negotiation, nts_protocol_NTP);
-
-	/* 4.1.5 AEAD Algorithm List */
-	// FIXME should be : separated list
-
-	if ((NO_AEAD == aead) && (NULL != peer->cfg.nts_cfg.aead))
-		aead = nts_string_to_aead(peer->cfg.nts_cfg.aead);
-	if ((NO_AEAD == aead) && (NULL != ntsconfig.aead))
-		aead = nts_string_to_aead(ntsconfig.aead);
-	if (NO_AEAD == aead)
-		aead = AEAD_AES_SIV_CMAC_256;
-	ke_append_record_uint16(&buf, nts_algorithm_negotiation, aead);
-
-	/* 4.1.1: End, Critical */
-	ke_append_record_null(&buf, NTS_CRITICAL+nts_end_of_message);
-
-	*used = buf_size-buf.left;
-	if (*used >= (int)(buf_size - 10)) {
-		msyslog(LOG_ERR, "ERR-NTSc: buffer overflow: %d, %ld",
-			*used, (long)buf_size);
-		exit(2);
-	}
-	return true;
+        struct  BufCtl_t buf;
+        uint16_t aead = NO_AEAD;
+
+        buf.next = buff;
+        buf.left = buf_size;
+
+        // 4.1.2 Next Protocol, 0 for NTP
+        ke_append_record_uint16(&buf,
+                                NTS_CRITICAL+nts_next_protocol_negotiation, nts_protocol_NTP);
+
+        // 4.1.5 AEAD Algorithm List
+        // FIXME should be : separated list
+
+        if ((NO_AEAD == aead) && (NULL != peer->cfg.nts_cfg.aead))
+                aead = nts_string_to_aead(peer->cfg.nts_cfg.aead);
+        if ((NO_AEAD == aead) && (NULL != ntsconfig.aead))
+                aead = nts_string_to_aead(ntsconfig.aead);
+        if (NO_AEAD == aead)
+                aead = AEAD_AES_SIV_CMAC_256;
+        ke_append_record_uint16(&buf, nts_algorithm_negotiation, aead);
+
+        // 4.1.1: End, Critical
+        ke_append_record_null(&buf, NTS_CRITICAL+nts_end_of_message);
+
+        *used = buf_size-buf.left;
+        if (*used >= (int)(buf_size - 10)) {
+                msyslog(LOG_ERR, "ERR-NTSc: buffer overflow: %d, %ld",
+                        *used, (long)buf_size);
+                exit(2);
+        }
+        return true;
 }
 
 bool nts_client_process_response(SSL *ssl, struct peer* peer) {
-	uint8_t  buff[2048];  /* RFC 4. says SHOULD be 65K */
-	int transferred;
-	const char *errtxt = NULL;
+        uint8_t  buff[2048];  // RFC 4. says SHOULD be 65K
+        int transferred;
+        const char *errtxt = NULL;
 
-	transferred = nts_ssl_read(ssl, buff, sizeof(buff), &errtxt);
-	if (0 >= transferred)
-		return false;
-	msyslog(LOG_ERR, "NTSc: read %d bytes", transferred);
+        transferred = nts_ssl_read(ssl, buff, sizeof(buff), &errtxt);
+        if (0 >= transferred)
+                return false;
+        msyslog(LOG_ERR, "NTSc: read %d bytes", transferred);
 
-	return nts_client_process_response_core(buff, transferred, peer);
+        return nts_client_process_response_core(buff, transferred, peer);
 }
 
 bool nts_client_process_response_core(uint8_t *buff, int transferred, struct peer* peer) {
-	int idx;
-	struct BufCtl_t buf;
-
-	peer->nts_state.cookielen = 0;
-	peer->nts_state.aead = NO_AEAD;
-	peer->nts_state.keylen = 0;
-	peer->nts_state.writeIdx = 0;
-	peer->nts_state.readIdx = 0;
-	peer->nts_state.count = 0;
-
-	buf.next = buff;
-	buf.left = transferred;
-	while (buf.left >= NTS_KE_HDR_LNG) {
-		uint16_t type, data, port;
-		bool critical = false;
-		int length, keylength;
-		char errbuf[100];
+        int idx;
+        struct BufCtl_t buf;
+
+        peer->nts_state.cookielen = 0;
+        peer->nts_state.aead = NO_AEAD;
+        peer->nts_state.keylen = 0;
+        peer->nts_state.writeIdx = 0;
+        peer->nts_state.readIdx = 0;
+        peer->nts_state.count = 0;
+
+        buf.next = buff;
+        buf.left = transferred;
+        while (buf.left >= NTS_KE_HDR_LNG) {
+                uint16_t type, data, port;
+                bool critical = false;
+                int length, keylength;
+                char errbuf[100];
 #define MAX_SERVER 100
-		char server[MAX_SERVER];
-
-		type = ke_next_record(&buf, &length);
-		if (length > buf.left){
-			msyslog(LOG_ERR, "NTSc: Chunk too big: 0x%x, %d, %d", 
-				type, buf.left, length);
-			return false;
-		}
-		if (NTS_CRITICAL & type) {
-			critical = true;
-			type &= ~NTS_CRITICAL;
-		}
-		if (0) // Handy for debugging but very verbose
-			msyslog(LOG_ERR, "NTSc: Record: T=%d, L=%d, C=%d", type, length, critical);
-		switch (type) {
-		    case nts_error:
-			if (sizeof(data) != length) {
-				msyslog(LOG_ERR, "NTSc: wrong length on error: %d", length);
-				return false;
-			}
-			data = next_uint16(&buf);
-			msyslog(LOG_ERR, "NTSc: error: %d", data);
-			return false;
-		    case nts_next_protocol_negotiation:
-			if (sizeof(data) != length) {
-				msyslog(LOG_ERR, "NTSc: NPN-Wrong length: %d", length);
-				return false;
-			}
-			data = next_uint16(&buf);
-			if (data != nts_protocol_NTP) {
-				msyslog(LOG_ERR, "NTSc: NPN-Bad data: %d", data);
-				return false;
-			}
-			break;
-		    case nts_algorithm_negotiation:
-			if (sizeof(data) != length) {
-				msyslog(LOG_ERR, "NTSc: AN-Wrong length: %d", length);
-				return false;
-			}
-			data = next_uint16(&buf);
-			keylength = nts_get_key_length(data);
-			if (0 == keylength) {
-				msyslog(LOG_ERR, "NTSc: AN-Unsupported AEAN type: %d", data);
-				return false;
-			}
-			peer->nts_state.aead = data;
-			break;
-		    case nts_new_cookie:
-			if (NTS_MAX_COOKIELEN < length) {
-				msyslog(LOG_ERR, "NTSc: NC cookie too big: %d", length);
-				return false;
-			}
-			if (0 == peer->nts_state.cookielen)
-				peer->nts_state.cookielen = length;
-			if (length != peer->nts_state.cookielen) {
-				msyslog(LOG_ERR, "NTSc: Cookie length mismatch %d, %d.",
-					length, peer->nts_state.cookielen);
-				return false;
-			}
-			idx = peer->nts_state.writeIdx;
-			if (NTS_MAX_COOKIES <= peer->nts_state.count) {
-				msyslog(LOG_ERR, "NTSc: Extra cookie ignored.");
-				buf.next += length;
-				buf.left -= length;
-				break;
-			}
-			next_bytes(&buf, (uint8_t*)&peer->nts_state.cookies[idx], length);
-			peer->nts_state.writeIdx++;
-			peer->nts_state.writeIdx = peer->nts_state.writeIdx % NTS_MAX_COOKIES;
-			peer->nts_state.count++;
-			break;
-		    case nts_server_negotiation:
-			if (MAX_SERVER < (length+1)) {
-				msyslog(LOG_ERR, "NTSc: server string too long %d.", length);
-				return false;
-			}
-			next_bytes(&buf, (uint8_t *)server, length);
-			server[length] = '\0';
-			/* save port in case port specified before server */
-			port = SRCPORT(&sockaddr);
-			if (!nts_server_lookup(server, &sockaddr, AF(&peer->srcadr)))
-				return false;
-			SET_PORT(&sockaddr, port);
-			socktoa_r(&sockaddr, errbuf, sizeof(errbuf));
-			msyslog(LOG_ERR, "NTSc: Using server %s=>%s", server, errbuf);
-			break;
-		    case nts_port_negotiation:
-			if (sizeof(port) != length) {
-				msyslog(LOG_ERR, "NTSc: PN-Wrong length: %d, %d",
-					length, critical);
-				return false;
-			}
-			port = next_uint16(&buf);
-			SET_PORT(&sockaddr, port);
-			msyslog(LOG_ERR, "NTSc: Using port %d", port);
-			break;
-		    case nts_end_of_message:
-			if ((0 != length) || !critical) {
-				msyslog(LOG_ERR, "NTSc: EOM-Wrong length or not Critical: %d, %d",
-					length, critical);
-				return false;
-			}
-			if (0 != buf.left) {
-				msyslog(LOG_ERR, "NTSc: EOM not at end: %d", buf.left);
-				return false;
-			}
-			break;
-		    default:
-			msyslog(LOG_ERR, "NTSc: received strange type: T=%d, C=%d, L=%d",
-				type, critical, length);
-			if (critical) {
-				return false;
-			}
-			buf.next += length;
-			buf.left -= length;
-			break;
-		} /* case */
-	}   /* while */
-
-//	FIXME: Need to check for EOM -- read more??
-	if (buf.left > 0)
-		return false;
-
-	if (NO_AEAD == peer->nts_state.aead) {
-		msyslog(LOG_ERR, "NTSc: No AEAD algorithm.");
-		return false;
-	}
-	if (0 == peer->nts_state.count) {
-		msyslog(LOG_ERR, "NTSc: No cookies.");
-		return false;
-	}
-
-	msyslog(LOG_ERR, "NTSc: Got %d cookies, length %d, aead=%d.",
-		peer->nts_state.count, peer->nts_state.cookielen, peer->nts_state.aead);
-	return true;
+                char server[MAX_SERVER];
+
+                type = ke_next_record(&buf, &length);
+                if (length > buf.left){
+                        msyslog(LOG_ERR, "NTSc: Chunk too big: 0x%x, %d, %d", 
+                                type, buf.left, length);
+                        return false;
+                }
+                if (NTS_CRITICAL & type) {
+                        critical = true;
+                        type &= ~NTS_CRITICAL;
+                }
+                if (0) // Handy for debugging but very verbose
+                        msyslog(LOG_ERR, "NTSc: Record: T=%d, L=%d, C=%d", type, length, critical);
+                switch (type) {
+                    case nts_error:
+                        if (sizeof(data) != length) {
+                                msyslog(LOG_ERR, "NTSc: wrong length on error: %d", length);
+                                return false;
+                        }
+                        data = next_uint16(&buf);
+                        msyslog(LOG_ERR, "NTSc: error: %d", data);
+                        return false;
+                    case nts_next_protocol_negotiation:
+                        if (sizeof(data) != length) {
+                                msyslog(LOG_ERR, "NTSc: NPN-Wrong length: %d", length);
+                                return false;
+                        }
+                        data = next_uint16(&buf);
+                        if (data != nts_protocol_NTP) {
+                                msyslog(LOG_ERR, "NTSc: NPN-Bad data: %d", data);
+                                return false;
+                        }
+                        break;
+                    case nts_algorithm_negotiation:
+                        if (sizeof(data) != length) {
+                                msyslog(LOG_ERR, "NTSc: AN-Wrong length: %d", length);
+                                return false;
+                        }
+                        data = next_uint16(&buf);
+                        keylength = nts_get_key_length(data);
+                        if (0 == keylength) {
+                                msyslog(LOG_ERR, "NTSc: AN-Unsupported AEAN type: %d", data);
+                                return false;
+                        }
+                        peer->nts_state.aead = data;
+                        break;
+                    case nts_new_cookie:
+                        if (NTS_MAX_COOKIELEN < length) {
+                                msyslog(LOG_ERR, "NTSc: NC cookie too big: %d", length);
+                                return false;
+                        }
+                        if (0 == peer->nts_state.cookielen)
+                                peer->nts_state.cookielen = length;
+                        if (length != peer->nts_state.cookielen) {
+                                msyslog(LOG_ERR, "NTSc: Cookie length mismatch %d, %d.",
+                                        length, peer->nts_state.cookielen);
+                                return false;
+                        }
+                        idx = peer->nts_state.writeIdx;
+                        if (NTS_MAX_COOKIES <= peer->nts_state.count) {
+                                msyslog(LOG_ERR, "NTSc: Extra cookie ignored.");
+                                buf.next += length;
+                                buf.left -= length;
+                                break;
+                        }
+                        next_bytes(&buf, (uint8_t*)&peer->nts_state.cookies[idx], length);
+                        peer->nts_state.writeIdx++;
+                        peer->nts_state.writeIdx = peer->nts_state.writeIdx % NTS_MAX_COOKIES;
+                        peer->nts_state.count++;
+                        break;
+                    case nts_server_negotiation:
+                        if (MAX_SERVER < (length+1)) {
+                                msyslog(LOG_ERR, "NTSc: server string too long %d.", length);
+                                return false;
+                        }
+                        next_bytes(&buf, (uint8_t *)server, length);
+                        server[length] = '\0';
+                        // save port in case port specified before server
+                        port = SRCPORT(&sockaddr);
+                        if (!nts_server_lookup(server, &sockaddr, AF(&peer->srcadr)))
+                                return false;
+                        SET_PORT(&sockaddr, port);
+                        socktoa_r(&sockaddr, errbuf, sizeof(errbuf));
+                        msyslog(LOG_ERR, "NTSc: Using server %s=>%s", server, errbuf);
+                        break;
+                    case nts_port_negotiation:
+                        if (sizeof(port) != length) {
+                                msyslog(LOG_ERR, "NTSc: PN-Wrong length: %d, %d",
+                                        length, critical);
+                                return false;
+                        }
+                        port = next_uint16(&buf);
+                        SET_PORT(&sockaddr, port);
+                        msyslog(LOG_ERR, "NTSc: Using port %d", port);
+                        break;
+                    case nts_end_of_message:
+                        if ((0 != length) || !critical) {
+                                msyslog(LOG_ERR, "NTSc: EOM-Wrong length or not Critical: %d, %d",
+                                        length, critical);
+                                return false;
+                        }
+                        if (0 != buf.left) {
+                                msyslog(LOG_ERR, "NTSc: EOM not at end: %d", buf.left);
+                                return false;
+                        }
+                        break;
+                    default:
+                        msyslog(LOG_ERR, "NTSc: received strange type: T=%d, C=%d, L=%d",
+                                type, critical, length);
+                        if (critical) {
+                                return false;
+                        }
+                        buf.next += length;
+                        buf.left -= length;
+                        break;
+                }  // case
+        }   // while
+
+//      FIXME: Need to check for EOM -- read more??
+        if (buf.left > 0)
+                return false;
+
+        if (NO_AEAD == peer->nts_state.aead) {
+                msyslog(LOG_ERR, "NTSc: No AEAD algorithm.");
+                return false;
+        }
+        if (0 == peer->nts_state.count) {
+                msyslog(LOG_ERR, "NTSc: No cookies.");
+                return false;
+        }
+
+        msyslog(LOG_ERR, "NTSc: Got %d cookies, length %d, aead=%d.",
+                peer->nts_state.count, peer->nts_state.cookielen, peer->nts_state.aead);
+        return true;
 }
 
 bool nts_set_cert_search(SSL_CTX *ctx, const char *filename) {
-	struct stat statbuf;
-	char errbuf[100];
-	if (NULL == filename) {
-		msyslog(LOG_INFO, "NTSc: Using system default root certificates.");
-		SSL_CTX_set_default_verify_paths(ctx);   // Use system root certs
-		return true;
-	}
-	if (0 == stat(filename, &statbuf)) {
-		if (S_ISDIR(statbuf.st_mode)) {
-			if (1 != SSL_CTX_load_verify_locations(
-				ctx, NULL, filename)) {
-			msyslog(LOG_INFO, "NTSc: Can't use %s as dir for root certificates.", filename);
-			    nts_log_ssl_error();
-			    return false;
-			}
-			msyslog(LOG_INFO, "NTSc: Using dir %s for root certificates.", filename);
-			return true;
-		}
-		if (S_ISREG(statbuf.st_mode)) {
-			if (1 != SSL_CTX_load_verify_locations(
-				ctx, filename, NULL)) {
-			    msyslog(LOG_INFO, "NTSc: Can't use %s as file for root certificates.", filename);
-			    nts_log_ssl_error();
-			    return false;
-			}
-			msyslog(LOG_INFO, "NTSc: Using file %s for root certificates.", filename);
-			return true;
-		}
-		msyslog(LOG_ERR, "NTSc: cert dir/file isn't dir or file: %s. mode 0x%x",
-			filename, statbuf.st_mode);
-		return false;
-	}
-	ntp_strerror_r(errno, errbuf, sizeof(errbuf));
-	msyslog(LOG_ERR, "NTSc: can't stat cert dir/file: %s, %s",
-		filename, errbuf);
-	return false;
+        struct stat statbuf;
+        char errbuf[100];
+        if (NULL == filename) {
+                msyslog(LOG_INFO, "NTSc: Using system default root certificates.");
+                SSL_CTX_set_default_verify_paths(ctx);   // Use system root certs
+                return true;
+        }
+        if (0 == stat(filename, &statbuf)) {
+                if (S_ISDIR(statbuf.st_mode)) {
+                        if (1 != SSL_CTX_load_verify_locations(
+                                ctx, NULL, filename)) {
+                        msyslog(LOG_INFO, "NTSc: Can't use %s as dir for root certificates.", filename);
+                            nts_log_ssl_error();
+                            return false;
+                        }
+                        msyslog(LOG_INFO, "NTSc: Using dir %s for root certificates.", filename);
+                        return true;
+                }
+                if (S_ISREG(statbuf.st_mode)) {
+                        if (1 != SSL_CTX_load_verify_locations(
+                                ctx, filename, NULL)) {
+                            msyslog(LOG_INFO, "NTSc: Can't use %s as file for root certificates.", filename);
+                            nts_log_ssl_error();
+                            return false;
+                        }
+                        msyslog(LOG_INFO, "NTSc: Using file %s for root certificates.", filename);
+                        return true;
+                }
+                msyslog(LOG_ERR, "NTSc: cert dir/file isn't dir or file: %s. mode 0x%x",
+                        filename, statbuf.st_mode);
+                return false;
+        }
+        ntp_strerror_r(errno, errbuf, sizeof(errbuf));
+        msyslog(LOG_ERR, "NTSc: can't stat cert dir/file: %s, %s",
+                filename, errbuf);
+        return false;
 }
 /* The -4/-6 option is used for both the NTS-KE server and the NTP server.
  * That will break if the KE server returns a name that returns only an
@@ -916,31 +916,31 @@ bool nts_set_cert_search(SSL_CTX *ctx, const char *filename) {
  * We could fix that by trying again with AF_UNSPEC.
  */
 bool nts_server_lookup(char *server, sockaddr_u *addr, int af) {
-	struct addrinfo hints;
-	struct addrinfo *answer = NULL;  /* init to keep oss-fuzz happy */
-	int gai_rc;
+        struct addrinfo hints;
+        struct addrinfo *answer = NULL;  // init to keep oss-fuzz happy
+        int gai_rc;
 
-	ZERO(hints);
-	hints.ai_protocol = IPPROTO_UDP;
-	hints.ai_socktype = SOCK_DGRAM;
-	hints.ai_family = af;
+        ZERO(hints);
+        hints.ai_protocol = IPPROTO_UDP;
+        hints.ai_socktype = SOCK_DGRAM;
+        hints.ai_family = af;
 
-	gai_rc = getaddrinfo(server, NTS_KE_PORTA, &hints, &answer);
-	if (0 != gai_rc) {
-		msyslog(LOG_INFO, "NTSc: DNS error trying to lookup %s: %d, %s",
-			server, gai_rc, gai_strerror(gai_rc));
-		return false;
-	}
+        gai_rc = getaddrinfo(server, NTS_KE_PORTA, &hints, &answer);
+        if (0 != gai_rc) {
+                msyslog(LOG_INFO, "NTSc: DNS error trying to lookup %s: %d, %s",
+                        server, gai_rc, gai_strerror(gai_rc));
+                return false;
+        }
 
-	if (NULL == answer)
-		return false;
+        if (NULL == answer)
+                return false;
 
-	if (sizeof(sockaddr_u) >= answer->ai_addrlen)
-		memcpy(addr, answer->ai_addr, answer->ai_addrlen);
+        if (sizeof(sockaddr_u) >= answer->ai_addrlen)
+                memcpy(addr, answer->ai_addr, answer->ai_addrlen);
 
-	freeaddrinfo(answer);
+        freeaddrinfo(answer);
 
-	return true;
+        return true;
 }
 
-/* end */
+// end


=====================================
ntpd/nts_cookie.c
=====================================
@@ -81,7 +81,7 @@
  * #define is in include/nts.h
  */
 
-/* cookies use same AEAD algorithms as wire */
+// cookies use same AEAD algorithms as wire
 /* This determines which algorithm we use.
  * Valid choices are 32, 48, and 64
  * making this a variable rather than #define
@@ -90,7 +90,7 @@
  * You can change that by editing the keys file.
  */
 int K_length = AEAD_AES_SIV_CMAC_256_KEYLEN;
-time_t K_time = 0;	/* time K was created, 0 for none */
+time_t K_time = 0;      // time K was created, 0 for none
 struct NTS_Key nts_keys[NTS_nKEYS];
 int nts_nKeys = 0;
 
@@ -105,11 +105,11 @@ void nts_lock_cookielock(void);
 void nts_unlock_cookielock(void);
 
 // FIXME  AEAD_LENGTH
-/* Associated data: aead (rounded up to 4) plus NONCE */
+// Associated data: aead (rounded up to 4) plus NONCE
 #define AD_LENGTH 20
 #define AEAD_LENGTH 4
 
-/* cookie_ctx needed for client side */
+// cookie_ctx needed for client side
 bool nts_cookie_init(void) {
   cookie_ctx = AES_SIV_CTX_new();
   if (NULL == cookie_ctx) {
@@ -119,16 +119,16 @@ bool nts_cookie_init(void) {
   return true;
 }
 
-/* cookie key needed for server side */
+// cookie key needed for server side
 bool nts_cookie_init2(void) {
-	bool OK = true;
-	if (!nts_read_cookie_keys()) {
-		/* Can't read cookie file.  Make one */
-		nts_make_cookie_key();
-		K_time = time(NULL);
-		nts_write_cookie_keys();
-	}
-	return OK;
+        bool OK = true;
+        if (!nts_read_cookie_keys()) {
+                // Can't read cookie file.  Make one
+                nts_make_cookie_key();
+                K_time = time(NULL);
+                nts_write_cookie_keys();
+        }
+        return OK;
 }
 
 /* Rotate key -- 24 hours after last rotation
@@ -142,83 +142,83 @@ bool nts_cookie_init2(void) {
 // Just uncommenting the next line will generate a warning reminder.
 // #define SecondsPerDay 3600
 void nts_cookie_timer(void) {
-	time_t now;
-	if (0 == K_time) {
-		return;
-	}
-	now = time(NULL);
-	if (SecondsPerDay > (now-K_time)) {
-		return;
-	}
-	nts_make_cookie_key();
-	/* In case we were off for many days. */
-	while (SecondsPerDay < (now-K_time)) {
-		K_time += SecondsPerDay;
-	}
-	if (nts_write_cookie_keys() )
-		msyslog(LOG_INFO, "NTS: Wrote new cookie file, %d keys.", nts_nKeys);
-	else
-		msyslog(LOG_INFO, "NTS: Trouble writing new cookie file.");
-	return;
+        time_t now;
+        if (0 == K_time) {
+                return;
+        }
+        now = time(NULL);
+        if (SecondsPerDay > (now-K_time)) {
+                return;
+        }
+        nts_make_cookie_key();
+        // In case we were off for many days.
+        while (SecondsPerDay < (now-K_time)) {
+                K_time += SecondsPerDay;
+        }
+        if (nts_write_cookie_keys() )
+                msyslog(LOG_INFO, "NTS: Wrote new cookie file, %d keys.", nts_nKeys);
+        else
+                msyslog(LOG_INFO, "NTS: Trouble writing new cookie file.");
+        return;
 }
 
 
 bool nts_read_cookie_keys(void) {
-	const char *cookie_filename = NTS_COOKIE_KEY_FILE;
-	FILE *in;
-	unsigned long templ;
-	if (NULL != ntsconfig.KI)
-		cookie_filename = ntsconfig.KI;
-	in = fopen(cookie_filename, "r");
-	if (NULL == in) {
-		char errbuf[100];
-		if (ENOENT == errno)
-			return false;		/* File doesn't exist */
-		ntp_strerror_r(errno, errbuf, sizeof(errbuf));
-		msyslog(LOG_ERR, "NTSs: can't read old cookie file: %s=>%s",
-			cookie_filename, errbuf);
-		exit(1);
-	}
-	if (1 != fscanf(in, "T: %lu\n", &templ)) {
-		goto bail;
-	}
-	K_time = templ;
-	if (1 != fscanf(in, "L: %d\n", &K_length)) {
-		goto bail;
-	}
-	if ( !((32 == K_length) || (48 == K_length) || (64 == K_length))) {
-		goto bail;
-	}
-	nts_nKeys = 0;
-	for (int i=0; i<NTS_nKEYS; i++) {
-	  struct NTS_Key *key = &nts_keys[i];
-	  if (1 != fscanf(in, "I: %u\n", &key->I)) {
-		if (0 < nts_nKeys) break;
-		goto bail;
-	  }
-	  if (0 != fscanf(in, "K: ")) {
-		goto bail;
-	  }
-	  for (int j=0; j< K_length; j++) {
-		unsigned int temp;
-		if (1 != fscanf(in, "%02x", &temp)) {
-			goto bail;
-		}
-		key->K[j] = temp;
-	  }
-	  if (0 != fscanf(in, "\n")) {
-		goto bail;
-	  }
-	  nts_nKeys = i+1;
-	}
-	fclose(in);
-	msyslog(LOG_INFO, "NTS: Read cookie file, %d keys.", nts_nKeys);
-	return true;
+        const char *cookie_filename = NTS_COOKIE_KEY_FILE;
+        FILE *in;
+        unsigned long templ;
+        if (NULL != ntsconfig.KI)
+                cookie_filename = ntsconfig.KI;
+        in = fopen(cookie_filename, "r");
+        if (NULL == in) {
+                char errbuf[100];
+                if (ENOENT == errno)
+                        return false;           // File doesn't exist
+                ntp_strerror_r(errno, errbuf, sizeof(errbuf));
+                msyslog(LOG_ERR, "NTSs: can't read old cookie file: %s=>%s",
+                        cookie_filename, errbuf);
+                exit(1);
+        }
+        if (1 != fscanf(in, "T: %lu\n", &templ)) {
+                goto bail;
+        }
+        K_time = templ;
+        if (1 != fscanf(in, "L: %d\n", &K_length)) {
+                goto bail;
+        }
+        if ( !((32 == K_length) || (48 == K_length) || (64 == K_length))) {
+                goto bail;
+        }
+        nts_nKeys = 0;
+        for (int i=0; i<NTS_nKEYS; i++) {
+          struct NTS_Key *key = &nts_keys[i];
+          if (1 != fscanf(in, "I: %u\n", &key->I)) {
+                if (0 < nts_nKeys) break;
+                goto bail;
+          }
+          if (0 != fscanf(in, "K: ")) {
+                goto bail;
+          }
+          for (int j=0; j< K_length; j++) {
+                unsigned int temp;
+                if (1 != fscanf(in, "%02x", &temp)) {
+                        goto bail;
+                }
+                key->K[j] = temp;
+          }
+          if (0 != fscanf(in, "\n")) {
+                goto bail;
+          }
+          nts_nKeys = i+1;
+        }
+        fclose(in);
+        msyslog(LOG_INFO, "NTS: Read cookie file, %d keys.", nts_nKeys);
+        return true;
 
   bail:
-	msyslog(LOG_ERR, "ERR: Error parsing cookie keys file");
-	fclose(in);
-	return false;
+        msyslog(LOG_ERR, "ERR: Error parsing cookie keys file");
+        fclose(in);
+        return false;
 }
 
 /* RFC 8915 describes a ratchet mode to make new keys
@@ -229,241 +229,241 @@ bool nts_read_cookie_keys(void) {
  * they copy the key file to other systems and have them load it.
  */
 void nts_make_cookie_key(void) {
-	if (nts_nKeys < NTS_nKEYS) nts_nKeys++;
-	for (int i=nts_nKeys-1; i>0; i--) {
-	  nts_keys[i] = nts_keys[i-1];
-	}
-	ntp_RAND_priv_bytes(nts_keys[0].K, K_length);
-	ntp_RAND_bytes((uint8_t *)&nts_keys[0].I, sizeof(nts_keys[0].I));
-	return;
+        if (nts_nKeys < NTS_nKEYS) nts_nKeys++;
+        for (int i=nts_nKeys-1; i>0; i--) {
+          nts_keys[i] = nts_keys[i-1];
+        }
+        ntp_RAND_priv_bytes(nts_keys[0].K, K_length);
+        ntp_RAND_bytes((uint8_t *)&nts_keys[0].I, sizeof(nts_keys[0].I));
+        return;
 }
 
 bool nts_write_cookie_keys(void) {
-	const char *cookiefile = NTS_COOKIE_KEY_FILE;
-	char tempfile[PATH_MAX];
-	int fd;
-	FILE *out;
-	char errbuf[100];
-	if (NULL != ntsconfig.KI)
-		cookiefile = ntsconfig.KI;
-	strlcpy(tempfile, cookiefile, sizeof(tempfile));
-	strlcat(tempfile, "-tmp", sizeof(tempfile));
-	fd = open(tempfile, O_CREAT|O_WRONLY, S_IRUSR|S_IWUSR);
-	if (-1 == fd) {
-		ntp_strerror_r(errno, errbuf, sizeof(errbuf));
-		msyslog(LOG_ERR, "ERR: can't open %s: %s", tempfile, errbuf);
-		return false;
-	}
-	out = fdopen(fd, "w");
-	if (NULL == out) {
-		ntp_strerror_r(errno, errbuf, sizeof(errbuf));
-		msyslog(LOG_ERR, "ERR: can't fdopen %s: %s", tempfile, errbuf);
-		close(fd);
-		return false;
-	}
-
-	fprintf(out, "T: %lu\n", (unsigned long)K_time);
-	fprintf(out, "L: %d\n", K_length);
-	for (int i=0; i<nts_nKeys; i++) {
-	  struct NTS_Key *key = &nts_keys[i];
-	  fprintf(out, "I: %u\n", key->I);
-	  fprintf(out, "K: ");
-	    for (int j=0; j< K_length; j++) fprintf(out, "%02x", key->K[j]);
-	  fprintf(out, "\n");
-	  key++;
-	}
-	fclose(out);
+        const char *cookiefile = NTS_COOKIE_KEY_FILE;
+        char tempfile[PATH_MAX];
+        int fd;
+        FILE *out;
+        char errbuf[100];
+        if (NULL != ntsconfig.KI)
+                cookiefile = ntsconfig.KI;
+        strlcpy(tempfile, cookiefile, sizeof(tempfile));
+        strlcat(tempfile, "-tmp", sizeof(tempfile));
+        fd = open(tempfile, O_CREAT|O_WRONLY, S_IRUSR|S_IWUSR);
+        if (-1 == fd) {
+                ntp_strerror_r(errno, errbuf, sizeof(errbuf));
+                msyslog(LOG_ERR, "ERR: can't open %s: %s", tempfile, errbuf);
+                return false;
+        }
+        out = fdopen(fd, "w");
+        if (NULL == out) {
+                ntp_strerror_r(errno, errbuf, sizeof(errbuf));
+                msyslog(LOG_ERR, "ERR: can't fdopen %s: %s", tempfile, errbuf);
+                close(fd);
+                return false;
+        }
+
+        fprintf(out, "T: %lu\n", (unsigned long)K_time);
+        fprintf(out, "L: %d\n", K_length);
+        for (int i=0; i<nts_nKeys; i++) {
+          struct NTS_Key *key = &nts_keys[i];
+          fprintf(out, "I: %u\n", key->I);
+          fprintf(out, "K: ");
+            for (int j=0; j< K_length; j++) fprintf(out, "%02x", key->K[j]);
+          fprintf(out, "\n");
+          key++;
+        }
+        fclose(out);
         if (rename(tempfile, cookiefile)) {
-	    ntp_strerror_r(errno, errbuf, sizeof(errbuf));
+            ntp_strerror_r(errno, errbuf, sizeof(errbuf));
             msyslog(LOG_WARNING,
                     "LOG: Unable to rename temp cookie file %s to %s, %s",
                     tempfile, cookiefile, errbuf);
-	    return false;
-	}
-	return true;
+            return false;
+        }
+        return true;
 }
 
-/* returns actual length */
+// returns actual length
 int nts_make_cookie(uint8_t *cookie,
   uint16_t aead,
   uint8_t *c2s, uint8_t *s2c, int keylen) {
-	uint8_t plaintext[NTS_MAX_COOKIELEN];
-	uint8_t *nonce;
-	int used, plainlength;
-	bool ok;
-	uint8_t * finger;
-	uint32_t temp;	/* keep 4 byte alignment */
-	size_t left;
-
-	if (NULL == cookie_ctx)
-		return 0;		/* We aren't initialized yet. */
-
-	nts_cnt.cookie_make++;
-
-	INSIST(keylen <= NTS_MAX_KEYLEN);
-
-	/* collect plaintext
-	 * separate buffer avoids encrypt in place
-	 * but costs cache space
-	 */
-	finger = plaintext;
-	temp = aead;
-	memcpy(finger, &temp, AEAD_LENGTH);
-	finger += AEAD_LENGTH;
-	memcpy(finger, c2s, keylen);
-	finger += keylen;
-	memcpy(finger, s2c, keylen);
-	finger += keylen;
-	plainlength = finger-plaintext;
-
-	/* collect associated data */
-	finger = cookie;
-
-	memcpy(finger, &nts_keys[0].I, sizeof(nts_keys[0].I));
-	finger += sizeof(nts_keys[0].I);
-
-	nonce = finger;
-	ntp_RAND_bytes(finger, NONCE_LENGTH);
-	finger += NONCE_LENGTH;
-
-	used = finger-cookie;
-	left = NTS_MAX_COOKIELEN-used;
-
-	nts_lock_cookielock();
-
-	ok = AES_SIV_Encrypt(cookie_ctx,
-			     finger, &left,   /* left: in: max out length, out: length used */
-			     nts_keys[0].K, K_length,
-			     nonce, NONCE_LENGTH,
-			     plaintext, plainlength,
-			     cookie, AD_LENGTH);
-
-	nts_unlock_cookielock();
-
-	if (!ok) {
-		msyslog(LOG_ERR, "NTS: nts_make_cookie - Error from AES_SIV_Encrypt");
-		/* I don't think this should happen,
-		 * so crash rather than work incorrectly.
-		 * Hal, 2019-Feb-17
-		 * Similar code in ntp_extens
-		 */
-		exit(1);
-	}
-
-	used += left;
-	INSIST(used <= NTS_MAX_COOKIELEN);
-
-	return used;
+        uint8_t plaintext[NTS_MAX_COOKIELEN];
+        uint8_t *nonce;
+        int used, plainlength;
+        bool ok;
+        uint8_t * finger;
+        uint32_t temp;  // keep 4 byte alignment
+        size_t left;
+
+        if (NULL == cookie_ctx)
+                return 0;               // We aren't initialized yet.
+
+        nts_cnt.cookie_make++;
+
+        INSIST(keylen <= NTS_MAX_KEYLEN);
+
+        /* collect plaintext
+         * separate buffer avoids encrypt in place
+         * but costs cache space
+         */
+        finger = plaintext;
+        temp = aead;
+        memcpy(finger, &temp, AEAD_LENGTH);
+        finger += AEAD_LENGTH;
+        memcpy(finger, c2s, keylen);
+        finger += keylen;
+        memcpy(finger, s2c, keylen);
+        finger += keylen;
+        plainlength = finger-plaintext;
+
+        // collect associated data
+        finger = cookie;
+
+        memcpy(finger, &nts_keys[0].I, sizeof(nts_keys[0].I));
+        finger += sizeof(nts_keys[0].I);
+
+        nonce = finger;
+        ntp_RAND_bytes(finger, NONCE_LENGTH);
+        finger += NONCE_LENGTH;
+
+        used = finger-cookie;
+        left = NTS_MAX_COOKIELEN-used;
+
+        nts_lock_cookielock();
+
+        ok = AES_SIV_Encrypt(cookie_ctx,
+                             finger, &left,   // left: in: max out length, out: length used
+                             nts_keys[0].K, K_length,
+                             nonce, NONCE_LENGTH,
+                             plaintext, plainlength,
+                             cookie, AD_LENGTH);
+
+        nts_unlock_cookielock();
+
+        if (!ok) {
+                msyslog(LOG_ERR, "NTS: nts_make_cookie - Error from AES_SIV_Encrypt");
+                /* I don't think this should happen,
+                 * so crash rather than work incorrectly.
+                 * Hal, 2019-Feb-17
+                 * Similar code in ntp_extens
+                 */
+                exit(1);
+        }
+
+        used += left;
+        INSIST(used <= NTS_MAX_COOKIELEN);
+
+        return used;
 }
 
-/* can't decrypt in place - that would trash the unauthenticated packet */
+// can't decrypt in place - that would trash the unauthenticated packet
 bool nts_unpack_cookie(uint8_t *cookie, int cookielen,
   uint16_t *aead,
   uint8_t *c2s, uint8_t *s2c, int *keylen) {
-	uint8_t *finger;
-	uint8_t plaintext[NTS_MAX_COOKIELEN];
-	uint8_t *nonce;
-	uint32_t temp;
-	size_t plainlength;
-	int cipherlength;
-	bool ok;
-	struct NTS_Key *key;
-	int i;
-
-	if (NULL == cookie_ctx)
-		return false;	/* We aren't initialized yet. */
-
-	if (0 == nts_nKeys) {
-		nts_cnt.cookie_not_server++;
-		return false;  /* We are not a NTS enabled server. */
-	}
-
-	/* We may get garbage from the net */
-	if (cookielen > NTS_MAX_COOKIELEN)
-		return false;
-
-	finger = cookie;
-	key = NULL;		/* squash uninitialized warning */
-	for (i=0; i<nts_nKeys; i++) {
-	  key = &nts_keys[i];
-	  if (0 == memcmp(finger, &key->I, sizeof(key->I))) {
-		break;
-	  }
-	}
-	nts_cnt.cookie_decode_total++;  /* total attempts, includes too old */
-	if (nts_nKeys == i) {
-		nts_cnt.cookie_decode_too_old++;
-		return false;
+        uint8_t *finger;
+        uint8_t plaintext[NTS_MAX_COOKIELEN];
+        uint8_t *nonce;
+        uint32_t temp;
+        size_t plainlength;
+        int cipherlength;
+        bool ok;
+        struct NTS_Key *key;
+        int i;
+
+        if (NULL == cookie_ctx)
+                return false;   // We aren't initialized yet.
+
+        if (0 == nts_nKeys) {
+                nts_cnt.cookie_not_server++;
+                return false;  // We are not a NTS enabled server.
+        }
+
+        // We may get garbage from the net
+        if (cookielen > NTS_MAX_COOKIELEN)
+                return false;
+
+        finger = cookie;
+        key = NULL;             // squash uninitialized warning
+        for (i=0; i<nts_nKeys; i++) {
+          key = &nts_keys[i];
+          if (0 == memcmp(finger, &key->I, sizeof(key->I))) {
+                break;
+          }
+        }
+        nts_cnt.cookie_decode_total++;  // total attempts, includes too old
+        if (nts_nKeys == i) {
+                nts_cnt.cookie_decode_too_old++;
+                return false;
+        }
+        if (0 == i) {
+                nts_cnt.cookie_decode_current++;
+        } else if (1 == i) {
+                nts_cnt.cookie_decode_old++;
+        } else if (2 == i) {
+                nts_cnt.cookie_decode_old2++;
+        } else {
+                nts_cnt.cookie_decode_older++;
         }
-	if (0 == i) {
-		nts_cnt.cookie_decode_current++;
-	} else if (1 == i) {
-		nts_cnt.cookie_decode_old++;
-	} else if (2 == i) {
-		nts_cnt.cookie_decode_old2++;
-	} else {
-		nts_cnt.cookie_decode_older++;
-	}
 #if 0
-	if (1<i) {
-	  /* Hack for debugging */
-	  /* Beware: DoS possibility on a public server */
-	  msyslog(LOG_INFO, "NTS: Old cookie: %d days.", i);
-	}
+        if (1<i) {
+          // Hack for debugging
+          // Beware: DoS possibility on a public server
+          msyslog(LOG_INFO, "NTS: Old cookie: %d days.", i);
+        }
 #endif
 
-	finger += sizeof(key->I);
-	nonce = finger;
-	finger += NONCE_LENGTH;
-
-	// require(AD_LENGTH==finger-cookie);
+        finger += sizeof(key->I);
+        nonce = finger;
+        finger += NONCE_LENGTH;
 
-	cipherlength = cookielen - AD_LENGTH;
-	plainlength = NTS_MAX_COOKIELEN;
+        // require(AD_LENGTH==finger-cookie);
 
-	nts_lock_cookielock();
+        cipherlength = cookielen - AD_LENGTH;
+        plainlength = NTS_MAX_COOKIELEN;
 
-	ok = AES_SIV_Decrypt(cookie_ctx,
-			     plaintext, &plainlength,
-			     key->K, K_length,
-			     nonce, NONCE_LENGTH,
-			     finger, cipherlength,
-			     cookie, AD_LENGTH);
+        nts_lock_cookielock();
 
-	nts_unlock_cookielock();
+        ok = AES_SIV_Decrypt(cookie_ctx,
+                             plaintext, &plainlength,
+                             key->K, K_length,
+                             nonce, NONCE_LENGTH,
+                             finger, cipherlength,
+                             cookie, AD_LENGTH);
 
-	if (!ok) {
-		nts_cnt.cookie_decode_error++;
-		return false;
-	}
+        nts_unlock_cookielock();
 
-	*keylen = (plainlength-AEAD_LENGTH)/2;
-	finger = plaintext;
-	memcpy(&temp, finger, AEAD_LENGTH);
-	*aead = temp;
-	finger += AEAD_LENGTH;
-	memcpy(c2s, finger, *keylen);
-	finger += *keylen;
-	memcpy(s2c, finger, *keylen);
-	finger += *keylen;
+        if (!ok) {
+                nts_cnt.cookie_decode_error++;
+                return false;
+        }
 
-	return true;
+        *keylen = (plainlength-AEAD_LENGTH)/2;
+        finger = plaintext;
+        memcpy(&temp, finger, AEAD_LENGTH);
+        *aead = temp;
+        finger += AEAD_LENGTH;
+        memcpy(c2s, finger, *keylen);
+        finger += *keylen;
+        memcpy(s2c, finger, *keylen);
+        finger += *keylen;
+
+        return true;
 }
 
 void nts_lock_cookielock(void) {
-	int err = pthread_mutex_lock(&cookie_lock);
-	if (0 != err) {
-		msyslog(LOG_ERR, "ERR: Can't lock cookie_lock: %d", err);
-		exit(2);
-	}
+        int err = pthread_mutex_lock(&cookie_lock);
+        if (0 != err) {
+                msyslog(LOG_ERR, "ERR: Can't lock cookie_lock: %d", err);
+                exit(2);
+        }
 }
 
 void nts_unlock_cookielock(void) {
-	int err = pthread_mutex_unlock(&cookie_lock);
-	if (0 != err) {
-		msyslog(LOG_ERR, "ERR: Can't unlock cookie_lock: %d", err);
-		exit(2);
-	}
+        int err = pthread_mutex_unlock(&cookie_lock);
+        if (0 != err) {
+                msyslog(LOG_ERR, "ERR: Can't unlock cookie_lock: %d", err);
+                exit(2);
+        }
 }
 
-/* end */
+// end



View it on GitLab: https://gitlab.com/NTPsec/ntpsec/-/compare/eef2f18defca39254e253d0981f89592c39191e1...8428fc54404ded500900a2d9ae4a3bb0d833443e

-- 
View it on GitLab: https://gitlab.com/NTPsec/ntpsec/-/compare/eef2f18defca39254e253d0981f89592c39191e1...8428fc54404ded500900a2d9ae4a3bb0d833443e
You're receiving this email because of your account on gitlab.com. Manage all notifications: https://gitlab.com/-/profile/notifications | Help: https://gitlab.com/help


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.ntpsec.org/pipermail/vc/attachments/20260806/88dd631d/attachment-0001.htm>


More information about the vc mailing list