[ntp:bk-ntp-dev-send] BitKeeper patch

Harlan Stenn stenn at mail.eecis.udel.edu
Mon Nov 7 00:17:06 PST 2005


This BitKeeper patch contains the following changesets:
stenn at deacon.udel.edu|ChangeSet|20051107081555|20559

# This is a BitKeeper patch.  What follows are the unified diffs for the
# set of deltas contained in the patch.  The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# ID:	stenn at whimsy.udel.edu|ChangeSet|19990526004811|57482|8983e65c737bb465
# User:	stenn
# Host:	deacon.udel.edu
# Root:	/deacon/backroom/ntp-dev

#
#--- 1.35/html/authopt.html	2005-11-02 06:53:56 -05:00
#+++ 1.36/html/authopt.html	2005-11-07 03:15:21 -05:00
#@@ -13,7 +13,7 @@
# 		<h3>Authentication Options</h3>
# 		<img src="pic/alice44.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/%7emills/pictures.html">from <i>Alice's Adventures in Wonderland</i>, Lewis Carroll</a>
# 		<p>Our resident cryptographer; now you see him, now you don't.</p>
#-		<p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="61">12:09</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="285">Thursday, October 27, 2005</csobj></p>
#+		<p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="61">04:49</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="308">Saturday, November 05, 2005</csobj></p>
# 		<br clear="left">
# 		<h4>Related Links</h4>
# 		<script type="text/javascript" language="javascript" src="scripts/links9.txt"></script>
#@@ -32,8 +32,8 @@
# 		<hr>
# 		<h4 id="auth">Authentication Support</h4>
# 		<p>Authentication support allows the NTP client to verify that the server is in fact known and trusted and not an intruder intending accidentally or on purpose to masquerade as that server. The NTPv3 specification RFC-1305 defines a scheme which provides cryptographic authentication of received NTP packets. Originally, this was done using the Data Encryption Standard (DES) algorithm operating in Cipher Block Chaining (CBC) mode, commonly called DES-CBC. Subsequently, this was replaced by the RSA Message Digest 5 (MD5) algorithm using a private key, commonly called keyed-MD5. Either algorithm computes a message digest, or one-way hash, which can be used to verify the server has the correct private key and key identifier.</p>
#-		<p>NTPv4 retains the NTPv3 scheme, properly described as symmetric key cryptography, and, in addition, provides a new Autokey scheme based on public key cryptography. Public key cryptography is generally considered more secure than symmetric key cryptography, since the security is based on a private value which is generated by each server and never revealed. With Autokey all key distribution and management functions involve only public values, which considerably simplifies key distribution and storage. Public key management is based on X.509 certificates, which can be provided by commercial services or produced by utility programs in the OpenSSL software library or the NTPv4 distribution.</p>
#-		<p>While the algorithms for symmetric key cryptography are included in the NTPv4 distribution, public key cryptography requires the OpenSSL software library to be installed before building the NTP distribution. Directions for doing that are on the <a href="build/build.html">Building and Installing the Distribution</a> page.</p>
#+		<p>NTPv4 retains the NTPv3 scheme, properly described as symmetric key cryptography, and, in addition, provides a new Autokey scheme based on public key cryptography. Public key cryptography is generally considered more secure than symmetric key cryptography, since the security is based on a private value which is generated by each host and never revealed. With the exception of the group key described later, all key distribution and management functions involve only public values, which considerably simplifies key distribution and storage. Public key management is based on X.509 certificates, which can be provided by commercial services or produced by utility programs in the OpenSSL software library or the NTPv4 distribution.</p>
#+		<p>While the algorithms for symmetric key cryptography are included in the NTPv4 distribution, public key cryptography requires the OpenSSL software library to be installed before building the NTP distribution. This library is available from <a href="http://www.openssl.org">http://www.openssl.org</a> and can be installed using the procedures outlined in the <a href="build/build.html">Building and Installing the Distribution</a> page. Once installed, the configure and build process automatically detects the library and links the library routines required.</p>
# 		<p>Authentication is configured separately for each association using the <tt>key</tt> or <tt>autokey</tt> subcommand on the <tt>peer</tt>, <tt>server</tt>, <tt>broadcast</tt> and <tt>manycastclient</tt> configuration commands as described in the <a href="confopt.html">Configuration Options</a> page. The authentication options described below specify the locations of the key files, if other than default, which symmetric keys are trusted and the interval between various operations, if other than default.</p>
# 		<p>Authentication is always enabled, although ineffective if not configured as described below. If a NTP packet arrives including a message authentication code (MAC), it is accepted only if it passes all cryptographic checks. The checks require correct key ID, key value and message digest. If the packet has been modified in any way or replayed by an intruder, it will fail one or more of these checks and be discarded. Furthermore, the Autokey scheme requires a preliminary protocol exchange to obtain the server certificate, verify its credentials and initialize the protocol</p>
# 		<p>The <tt>auth</tt> flag controls whether new associations or remote configuration commands require cryptographic authentication. This flag can be set or reset by the <tt>enable</tt> and <tt>disable</tt> commands and also by remote configuration commands sent by a <tt>ntpdc</tt> program running on another machine. If this flag is enabled, which is the default case, new broadcast/manycast client and symmetric passive associations and remote configuration commands must be cryptographically authenticated using either symmetric key or public key cryptography. If this flag is disabled, these operations are effective even if not cryptographic authenticated. It should be understood that operating with the <tt>auth</tt> flag disabled invites a significant vulnerability where a rogue hacker can masquerade as a truechimer and seriously disrupt system timekeeping. It is important to note that this flag has no purpose other than to allow or disallow a new association in response to 
 new broadcast and symmetric active messages and remote configuration commands and, in particular, the flag has no effect on the authentication process itself.</p>
#@@ -44,7 +44,6 @@
# 		<p>When <tt>ntpd</tt> is first started, it reads the key file specified in the <tt>keys</tt> configuration command and installs the keys in the key cache. However, individual keys must be activated with the <tt>trusted</tt> command before use. This allows, for instance, the installation of possibly several batches of keys and then activating or deactivating each batch remotely using <tt>ntpdc</tt>. This also provides a revocation capability that can be used if a key becomes compromised. The <tt>requestkey</tt> command selects the key used as the password for the <tt>ntpdc</tt> utility, while the <tt>controlkey</tt> command selects the key used as the password for the <tt>ntpq</tt> utility.</p>
# 		<h4 id="pub">Public Key Cryptography</h4>
# 		<p>NTPv4 supports the original NTPv3 symmetric key scheme described in RFC-1305 and in addition the Autokey protocol, which is based on public key cryptography. The Autokey Version 2 protocol described on the <a href="http://www.eecis.udel.edu/%7emills/proto.html">Autokey Protocol</a> page verifies packet integrity using MD5 message digests and verifies the source with digital signatures and any of several digest/signature schemes. Optional identity schemes described on the <a href="http://www.eecis.udel.edu/%7emills/ident.html">Identity Schemes</a> page and based on cryptographic challenge/response algorithms are also available. Using these schemes provides strong security against replay with or without modification, spoofing, masquerade and most forms of clogging attacks.</p>
#-		<p>The cryptographic means necessary for all Autokey operations is provided by the OpenSSL software library. This library is available from <a href="http://www.openssl.org">http://www.openssl.org</a> and can be installed using the procedures outlined in the <a href="build/build.html">Building and Installing the Distribution</a> page. Once installed, the configure and build process automatically detects the library and links the library routines required.</p>
# 		<p>The Autokey protocol has several modes of operation corresponding to the various NTP modes supported. Most modes use a special cookie which can be computed independently by the client and server, but encrypted in transmission. All modes use in addition a variant of the S-KEY scheme, in which a pseudo-random key list is generated and used in reverse order. These schemes are described along with an executive summary, current status, briefing slides and reading list on the <a href="http://www.eecis.udel.edu/%7emills/autokey.html">Autonomous Authentication</a> page.</p>
# 		<p>The specific cryptographic environment used by Autokey servers and clients is determined by a set of files and soft links generated by the <a href="keygen.html"><tt>ntp-keygen</tt></a> program. This includes a required host key file, required host certificate file and optional sign key file, leapsecond file and identity scheme files. The digest/signature scheme is specified in the X.509 certificate along with the matching sign key. There are several schemes available in the OpenSSL software library, each identified by a specific string such as <tt>md5WithRSAEncryption</tt>, which stands for the MD5 message digest with RSA encryption scheme. The current NTP distribution supports all the schemes in the OpenSSL library, including those based on RSA and DSA digital signatures.</p>
# 		<p>NTP secure groups can be used to define cryptographic compartments and security hierarchies. It is important that every host in the group be able to construct a certificate trail to one or more trusted hosts in the same group. Each group host runs the Autokey protocol to obtain the certificates for all hosts along the trail to one or more trusted hosts. This requires the configuration file in all hosts to be engineered so that, even under anticipated failure conditions, the NTP&nbsp;subnet will form such that every group host can find a trail to at least one trusted host.</p>
#
#--- 1.136/ntpd/ntp_config.c	2005-10-02 04:08:11 -04:00
#+++ 1.137/ntpd/ntp_config.c	2005-11-07 03:13:23 -05:00
#@@ -1608,10 +1608,10 @@
# 					break;
# 
# 				    case CONF_FDG_REFID:
#-					/* HMS: Endianness and 0 bytes? */
#-					/* XXX */
#-					strncpy((char *)&clock_stat.fudgeval2,
#-						tokens[++i], 4);
#+					i++;
#+					memcpy(&clock_stat.fudgeval2,
#+					    tokens[i], min(strlen(tokens[i]),
#+					    4));
# 					clock_stat.haveflags |= CLK_HAVEVAL2;
# 					break;
# 
#
#--- 1.85/ntpd/ntp_control.c	2005-10-24 04:35:10 -04:00
#+++ 1.86/ntpd/ntp_control.c	2005-11-07 03:13:23 -05:00
#@@ -1544,13 +1544,8 @@
# 
# 	case CP_REFID:
# 		if (peer->flags & FLAG_REFCLOCK) {
#-			if (peer->stratum > 0 && peer->stratum <
#-			    STRATUM_UNSPEC)
#-				ctl_putadr(peer_var[CP_REFID].text,
#-				    peer->refid, NULL);
#-			else
#-				ctl_putid(peer_var[CP_REFID].text,
#-				   (char *)&peer->refid);
#+			ctl_putid(peer_var[CP_REFID].text,
#+			   (char *)&peer->refid);
# 		} else {
# 			if (peer->stratum > 1 && peer->stratum <
# 			    STRATUM_UNSPEC)
#
#--- 1.107/ntpd/ntp_crypto.c	2005-10-27 21:57:52 -04:00
#+++ 1.108/ntpd/ntp_crypto.c	2005-11-07 03:13:23 -05:00
#@@ -3141,8 +3141,9 @@
# 	 * be retroactive.
# 	 */
# 	if (ret->first > ret->last || ret->first < fstamp) {
#-		msyslog(LOG_INFO, "cert_parse: invalid certificate %s",
#-		    ret->subject);
#+		msyslog(LOG_INFO,
#+		    "cert_parse: invalid certificate %s first %u last %u fstamp %u",
#+		    ret->subject, ret->first, ret->last, fstamp);
# 		cert_free(ret);
# 		X509_free(cert);
# 		return (NULL);
#@@ -3246,7 +3247,7 @@
# 
# 	/*
# 	 * Generate X509 certificate signed by this server. For this
#-	 * prupose the issuer name is the server name. Also copy any
#+	 * purpose the issuer name is the server name. Also copy any
# 	 * extensions that might be present.
# 	 */
# 	cert = X509_new();
#@@ -3414,8 +3415,10 @@
# 		for (xp = cinfo; xp != NULL; xp = xp->link) {
# 
# 			/*
#-			 * If issuer X matches subject Y, verify
#-			 * signature Y using public key X.
#+			 * If the issuer of certificate Y matches the
#+			 * subject of certificate X, verify the
#+			 * signature of Y using the public key of X. If
#+			 * so, X signs Y.
# 			 */
# 			if (strcmp(yp->issuer, xp->subject) != 0 ||
# 				xp->flags & CERT_ERROR)
#@@ -3427,29 +3430,15 @@
# 			}
# 
# 			/*
#-			 * Y signs X. Now check the lifetime. It is not
#-			 * necessarily an error if beyond the lifetime,
#-			 * since some other certificate might sign X. 
#+			 * The signature Y is valid only if it begins
#+			 * during the lifetime of X; however, it is not
#+			 * necessarily an error, since some other
#+			 * certificate might sign Y. 
# 			 */
# 			if (yp->first < xp->first || yp->first >
# 			    xp->last)
# 				continue;
# 
#-			/*
#-			 * For certificates generated by the ntp-keygen
#-			 * program the filestamp and first (not-before)
#-			 * on the certificate are the same. We use the
#-			 * filestamp from the signed to update the
#-			 * filestamp on the signer, if later. This is
#-			 * used to establish the beginning of the valid
#-			 * period for the entire trail. Very elegant.
#-			 */
#-			if (yp->cert.fstamp < xp->cert.fstamp) {
#-				yp->flags |= CERT_ERROR;
#-				continue;
#-			}
#-			if (yp->cert.fstamp > xp->cert.fstamp)
#-				xp->cert.fstamp = yp->cert.fstamp;
# 			yp->flags |= CERT_SIGN;
# 
# 			/*
#
#--- 1.73/ntpd/ntp_refclock.c	2005-10-14 16:06:08 -04:00
#+++ 1.74/ntpd/ntp_refclock.c	2005-11-07 03:13:24 -05:00
#@@ -1104,16 +1104,9 @@
# 		if (in->haveflags & CLK_HAVETIME2)
# 			pp->fudgetime2 = in->fudgetime2;
# 		if (in->haveflags & CLK_HAVEVAL1)
#-			pp->stratum = (u_char) in->fudgeval1;
#+			peer->stratum = pp->stratum = (u_char)in->fudgeval1;
# 		if (in->haveflags & CLK_HAVEVAL2)
#-			pp->refid = in->fudgeval2;
#-		peer->stratum = pp->stratum;
#-		if (peer->stratum == STRATUM_REFCLOCK || peer->stratum ==
#-		    STRATUM_UNSPEC)
#-			peer->refid = pp->refid;
#-		else
#-			peer->refid = ((struct
#-			    sockaddr_in*)&peer->srcadr)->sin_addr.s_addr;
#+			peer->refid = pp->refid = in->fudgeval2;
# 		if (in->haveflags & CLK_HAVEFLAG1) {
# 			pp->sloppyclockflag &= ~CLK_FLAG1;
# 			pp->sloppyclockflag |= in->flags & CLK_FLAG1;
#
#--- 1.53/ntpd/refclock_atom.c	2005-05-17 01:09:52 -04:00
#+++ 1.54/ntpd/refclock_atom.c	2005-11-07 03:13:24 -05:00
#@@ -502,11 +502,6 @@
# 		peer->stratum = sys_prefer->stratum;
# 	else
# 		peer->stratum = pp->stratum;
#-	if (peer->stratum == STRATUM_REFCLOCK || peer->stratum >=
#-	    STRATUM_UNSPEC)
#-		peer->refid = pp->refid;
#-	else
#-		peer->refid = addr2refid(&sys_prefer->srcadr);
# 	pp->lastref = pp->lastrec;
# 	refclock_receive(peer);
# }
#
#--- 1.9/ntpd/refclock_fg.c	2003-07-08 17:00:15 -04:00
#+++ 1.10/ntpd/refclock_fg.c	2005-11-07 03:13:24 -05:00
#@@ -323,9 +323,6 @@
#                 printf ("fg: time is %04d/%03d %02d:%02d:%02d UTC\n",
#                          pp->year, pp->day, pp->hour, pp->minute, pp->second);
# #endif
#-
#-        if (peer->stratum <= 1)
#-                peer->refid = pp->refid;
#         pp->disp =  (10e-6);
# 	pp->lastrec = rbufp->recv_time; /* Is it better than get_systime()? */
# 	/* pp->leap = LEAP_NOWARNING; */
#
#--- 1.14/ntpd/refclock_local.c	2005-10-04 02:51:47 -04:00
#+++ 1.15/ntpd/refclock_local.c	2005-11-07 03:13:24 -05:00
#@@ -162,7 +162,7 @@
# 	peer->stratum = STRATUM;
# 	pp->stratum = STRATUM;
# 	pp->clockdesc = DESCRIPTION;
#-	pp->refid = htonl(LOOPBACKADR);
#+	memcpy(&pp->refid, "LOCL", 4);
# 	poll_time = current_time;
# 	return (1);
# }
#
#--- 1.54/ntpd/refclock_wwv.c	2005-10-31 05:26:37 -05:00
#+++ 1.55/ntpd/refclock_wwv.c	2005-11-07 03:13:24 -05:00
#@@ -474,10 +474,11 @@
# 	double	syneng;		/* sync signal max 800 ms */
# 	double	synmax;		/* sync signal max 0 s */
# 	double	synsnr;		/* sync signal SNR */
#+	double	metric;		/* signal quality metric */
#+	int	reach;		/* reachability register */
# 	int	count;		/* bit counter */
#-	char	refid[5];	/* reference identifier */
# 	int	select;		/* select bits */
#-	int	reach;		/* reachability register */
#+	char	refid[5];	/* reference identifier */
# };
# 
# /*
#@@ -1212,8 +1213,8 @@
# 		struct chan *cp;
# 
# 		sp = up->sptr;
#-		if (wwv_metric(sp) >= TTHR && epoch == sp->mepoch %
#-		    SECOND) {
#+		if (sp->metric >= TTHR && epoch == sp->mepoch % SECOND)
#+		    {
# 			up->rsec = 60 - sp->mepoch / SECOND;
# 			up->rphase = 0;
# 			up->status |= MSYNC;
#@@ -1428,12 +1429,13 @@
# 			sp->count++;
# 			break;
# 		}
#+		sp->metric = wwv_metric(sp);
# 		if (pp->sloppyclockflag & CLK_FLAG4) {
# 			sprintf(tbuf,
# 			    "wwv8 %d %3d %s %d %5.0f %5.1f %5.0f %5ld %5d %ld",
# 			    up->port, up->gain, sp->refid, sp->count,
#-			    sp->synmax, sp->synsnr, wwv_metric(sp),
#-			    sp->pos, up->tepoch, epoch);
#+			    sp->synmax, sp->synsnr, sp->metric, sp->pos,
#+			    up->tepoch, epoch);
# 			record_clock_stats(&peer->srcadr, tbuf);
# #ifdef DEBUG
# 			if (debug)
#@@ -1893,6 +1895,7 @@
# 			sp->reach |= 1;
# 			sp->count++;
# 		}
#+		sp->metric = wwv_metric(sp);
# 
# 		/*
# 		 * WWVH station
#@@ -1907,6 +1910,7 @@
# 			rp->reach |= 1;
# 			rp->count++;
# 		}
#+		rp->metric = wwv_metric(rp);
# 
# 		/*
# 		 * Set up for next minute.
#@@ -1918,9 +1922,9 @@
# 			    up->epomax, up->eposnr, up->sigsig,
# 			    up->datsnr,
# 			    sp->refid, sp->reach & 0xffff,
#-			    wwv_metric(sp), sp->synmax, sp->synsnr,
#+			    sp->metric, sp->synmax, sp->synsnr,
# 			    rp->refid, rp->reach & 0xffff,
#-			    wwv_metric(rp), rp->synmax, rp->synsnr);
#+			    rp->metric, rp->synmax, rp->synsnr);
# 			record_clock_stats(&peer->srcadr, tbuf);
# #ifdef DEBUG
# 			if (debug)
#@@ -1931,15 +1935,19 @@
# 		up->alarm = 0;
# 
# 		/*
#-		 * Before synchronizing to a station bail out if no
#-		 * stations are heard or the watchcat exceeds the DATA
#-		 * timeout (4 min) and too many bad data bits or the
#-		 * watchcat exceeds the SYNCH timeout (30 min).
#+		 * We are at the end of the minute scan. It's very
#+		 * important to know when to move on. Before first
#+		 * synchronizing to a station, step to the next channel
#+		 * immediately if no station has been heard. Step after
#+		 * the DATA timeout (4 min) if a station has been heard,
#+		 * but too few good data bits have been found. In any
#+		 * case, step after the SYNCH timeout (30 min).
# 		 *
# 		 * After synchronizing to a station, report the data
#-		 * unless the watchcat exceeds the SYNCH timeout (30
#-		 * min). Bail out if the watchcat exceeds the PANIC
#-		 * timeout (2 days).
#+		 * only if less than the SYNCH timeout. After that, do
#+		 * not report the data, but step to the next channel
#+		 * after the SYNCH timeout. In any case, step after the
#+		 * PANIC timeout (2 days).
# 		 */
# 		if (!(up->status & INSYNC)) {
# 			if (!wwv_newchan(peer)) {
#@@ -2589,24 +2597,32 @@
# 	rank = 0;
# 	for (i = 0; i < NCHAN; i++) {
# 		rp = &up->mitig[i].wwvh;
#-		dtemp = wwv_metric(rp);
#+		dtemp = rp->metric;
# 		if (dtemp >= rank) {
# 			rank = dtemp;
# 			sp = rp;
# 			j = i;
# 		}
# 		rp = &up->mitig[i].wwv;
#-		dtemp = wwv_metric(rp);
#+		dtemp = rp->metric;
# 		if (dtemp >= rank) {
# 			rank = dtemp;
# 			sp = rp;
# 			j = i;
# 		}
# 	}
#+
#+	/*
#+	 * If the clock has been set, stick with the best channel, but
#+	 * only if signal quality is above thresholds. Otherwise, if
#+	 * minute sync is lit, reset to 15 MHz and kill the V/H bits.
#+	 * Otherwise, set the refid and kill the V/H bits.
#+	 */
#+
# 	if ((!(up->status & INSYNC) && rank >= MTHR) || rank >= TTHR) {
# 		up->dchan = j;
# 		up->sptr = sp;
#-		memcpy(&pp->refid, sp->refid, 4);
#+		pp->refid = sp->refid;
# 		up->status |= sp->select & (SELV | SELH);
# 	} else if (up->status & MSYNC) {
# 		up->dchan = DCHAN;
#@@ -2617,7 +2633,7 @@
# 		memcpy(&pp->refid, "SCAN", 4);
# 		up->status &= ~(SELV | SELH);
# 	}
#-	memcpy(&peer->refid, &pp->refid, 4);
#+	peer->refid = pp->refid;
# 	return (up->status & (SELV | SELH));
# }
# 
#@@ -2804,7 +2820,7 @@
# 	 */
# 	sp = up->sptr;
# 	sprintf(cptr, " %d %d %s %.0f %d %.1f %d", up->watch,
#-	    up->mitig[up->dchan].gain, sp->refid, wwv_metric(sp),
#+	    up->mitig[up->dchan].gain, sp->refid, sp->metric,
# 	    up->errbit, up->freq / SECOND * 1e6, up->avgint);
# 	strcat(ptr, cptr);
# 	return (strlen(ptr));
#
#--- 1.33/util/ntp-keygen.c	2005-08-26 17:12:02 -04:00
#+++ 1.34/util/ntp-keygen.c	2005-11-07 03:12:02 -05:00
#@@ -1791,8 +1791,8 @@
# 	ASN1_INTEGER_set(serial, epoch + JAN_1970);
# 	X509_set_serialNumber(cert, serial);
# 	ASN1_INTEGER_free(serial);
#-	X509_gmtime_adj(X509_get_notBefore(cert), 0L);
#-	X509_gmtime_adj(X509_get_notAfter(cert), YEAR);
#+	X509_time_adj(X509_get_notBefore(cert), 0L, &epoch);
#+	X509_time_adj(X509_get_notAfter(cert), YEAR, &epoch);
# 	subj = X509_get_subject_name(cert);
# 	X509_NAME_add_entry_by_txt(subj, "commonName", MBSTRING_ASC,
# 	    (unsigned char *) hostname, strlen(hostname), -1, 0);
#

# Diff checksum=1f687b92


# Patch vers:	1.3
# Patch type:	REGULAR

== ChangeSet ==
stenn at whimsy.udel.edu|ChangeSet|19990526004811|57482|8983e65c737bb465
mayer at pogo.udel.edu|ChangeSet|20051106221515|21190
D 1.1433 05/11/07 03:15:55-05:00 stenn at deacon.udel.edu +10 -0
B stenn at whimsy.udel.edu|ChangeSet|19990526004811|57482|8983e65c737bb465
C
c Fixes from Dave Mills
K 20559
P ChangeSet
------------------------------------------------

0a0
> stenn at whimsy.udel.edu|html/authopt.htm|19990526004812|01635|3aed0663 stenn at deacon.udel.edu|html/authopt.html|20051107081521|53692
> stenn at whimsy.udel.edu|ntpd/ntp_config.c|19990526004817|01635|3aed0663 stenn at deacon.udel.edu|ntpd/ntp_config.c|20051107081323|60100
> stenn at whimsy.udel.edu|ntpd/ntp_control.c|19990526004817|01635|3aed0663 stenn at deacon.udel.edu|ntpd/ntp_control.c|20051107081323|60692
> stenn at whimsy.udel.edu|ntpd/ntp_crypto.c|20000314033844|01769|47dd06e9 stenn at deacon.udel.edu|ntpd/ntp_crypto.c|20051107081323|37836
> stenn at whimsy.udel.edu|ntpd/ntp_refclock.c|19990526004817|01635|3aed0663 stenn at deacon.udel.edu|ntpd/ntp_refclock.c|20051107081324|06503
> stenn at whimsy.udel.edu|ntpd/refclock_atom.c|19990526004818|01635|3aed0663 stenn at deacon.udel.edu|ntpd/refclock_atom.c|20051107081324|23492
> stenn at whimsy.udel.edu|ntpd/refclock_fg.c|19991229230032|30865|7b877891 stenn at deacon.udel.edu|ntpd/refclock_fg.c|20051107081324|55887
> stenn at whimsy.udel.edu|ntpd/refclock_local.c|19990526004817|01635|3aed0663 stenn at deacon.udel.edu|ntpd/refclock_local.c|20051107081324|47210
> stenn at whimsy.udel.edu|ntpd/refclock_wwv.c|19991207002135|33019|278b80fb stenn at deacon.udel.edu|ntpd/refclock_wwv.c|20051107081324|57235
> stenn at whimsy.udel.edu|util/genkeys.c|20010815091259|22861|beaa24ac572f8c26 stenn at deacon.udel.edu|util/ntp-keygen.c|20051107081202|33618

== html/authopt.html ==
stenn at whimsy.udel.edu|html/authopt.htm|19990526004812|01635|3aed0663
stenn at deacon.udel.edu|html/authopt.html|20051102115356|05643
D 1.36 05/11/07 03:15:21-05:00 stenn at deacon.udel.edu +3 -4
B stenn at whimsy.udel.edu|ChangeSet|19990526004811|57482|8983e65c737bb465
C
c Fixes from Dave Mills
K 53692
O -rw-rw-r--
P html/authopt.html
------------------------------------------------

D16 1
I16 1
		<p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="61">04:49</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="308">Saturday, November 05, 2005</csobj></p>
D35 2
I36 2
		<p>NTPv4 retains the NTPv3 scheme, properly described as symmetric key cryptography, and, in addition, provides a new Autokey scheme based on public key cryptography. Public key cryptography is generally considered more secure than symmetric key cryptography, since the security is based on a private value which is generated by each host and never revealed. With the exception of the group key described later, all key distribution and management functions involve only public values, which considerably simplifies key distribution and storage. Public key management is based on X.509 certificates, which can be provided by commercial services or produced by utility programs in the OpenSSL software library or the NTPv4 distribution.</p>
		<p>While the algorithms for symmetric key cryptography are included in the NTPv4 distribution, public key cryptography requires the OpenSSL software library to be installed before building the NTP distribution. This library is available from <a href="http://www.openssl.org">http://www.openssl.org</a> and can be installed using the procedures outlined in the <a href="build/build.html">Building and Installing the Distribution</a> page. Once installed, the configure and build process automatically detects the library and links the library routines required.</p>
D47 1

== ntpd/ntp_config.c ==
stenn at whimsy.udel.edu|ntpd/ntp_config.c|19990526004817|01635|3aed0663
stenn at deacon.udel.edu|ntpd/ntp_config.c|20051002080811|61418
D 1.137 05/11/07 03:13:23-05:00 stenn at deacon.udel.edu +4 -4
B stenn at whimsy.udel.edu|ChangeSet|19990526004811|57482|8983e65c737bb465
C
c Fixes from Dave Mills
K 60100
O -rw-rw-r--
P ntpd/ntp_config.c
------------------------------------------------

D1611 4
I1614 4
					i++;
					memcpy(&clock_stat.fudgeval2,
					    tokens[i], min(strlen(tokens[i]),
					    4));

== ntpd/ntp_control.c ==
stenn at whimsy.udel.edu|ntpd/ntp_control.c|19990526004817|01635|3aed0663
stenn at deacon.udel.edu|ntpd/ntp_control.c|20051024083510|05384
D 1.86 05/11/07 03:13:23-05:00 stenn at deacon.udel.edu +2 -7
B stenn at whimsy.udel.edu|ChangeSet|19990526004811|57482|8983e65c737bb465
C
c Fixes from Dave Mills
K 60692
O -rw-rw-r--
P ntpd/ntp_control.c
------------------------------------------------

D1547 7
I1553 2
			ctl_putid(peer_var[CP_REFID].text,
			   (char *)&peer->refid);

== ntpd/ntp_crypto.c ==
stenn at whimsy.udel.edu|ntpd/ntp_crypto.c|20000314033844|01769|47dd06e9
stenn at deacon.udel.edu|ntpd/ntp_crypto.c|20051028015752|01254
D 1.108 05/11/07 03:13:23-05:00 stenn at deacon.udel.edu +12 -23
B stenn at whimsy.udel.edu|ChangeSet|19990526004811|57482|8983e65c737bb465
C
c Fixes from Dave Mills
K 37836
O -rw-rw-r--
P ntpd/ntp_crypto.c
------------------------------------------------

D3144 2
I3145 3
		msyslog(LOG_INFO,
		    "cert_parse: invalid certificate %s first %u last %u fstamp %u",
		    ret->subject, ret->first, ret->last, fstamp);
D3249 1
I3249 1
	 * purpose the issuer name is the server name. Also copy any
D3417 2
I3418 4
			 * If the issuer of certificate Y matches the
			 * subject of certificate X, verify the
			 * signature of Y using the public key of X. If
			 * so, X signs Y.
D3430 3
I3432 4
			 * The signature Y is valid only if it begins
			 * during the lifetime of X; however, it is not
			 * necessarily an error, since some other
			 * certificate might sign Y. 
D3438 15

== ntpd/ntp_refclock.c ==
stenn at whimsy.udel.edu|ntpd/ntp_refclock.c|19990526004817|01635|3aed0663
stenn at deacon.udel.edu|ntpd/ntp_refclock.c|20051014200608|21589
D 1.74 05/11/07 03:13:24-05:00 stenn at deacon.udel.edu +2 -9
B stenn at whimsy.udel.edu|ChangeSet|19990526004811|57482|8983e65c737bb465
C
c Fixes from Dave Mills
K 6503
O -rw-rw-r--
P ntpd/ntp_refclock.c
------------------------------------------------

D1107 1
I1107 1
			peer->stratum = pp->stratum = (u_char)in->fudgeval1;
D1109 8
I1116 1
			peer->refid = pp->refid = in->fudgeval2;

== ntpd/refclock_atom.c ==
stenn at whimsy.udel.edu|ntpd/refclock_atom.c|19990526004818|01635|3aed0663
stenn at whimsy.udel.edu|ntpd/refclock_atom.c|20050517050952|36399
D 1.54 05/11/07 03:13:24-05:00 stenn at deacon.udel.edu +0 -5
B stenn at whimsy.udel.edu|ChangeSet|19990526004811|57482|8983e65c737bb465
C
c Fixes from Dave Mills
K 23492
O -rw-rw-r--
P ntpd/refclock_atom.c
------------------------------------------------

D505 5

== ntpd/refclock_fg.c ==
stenn at whimsy.udel.edu|ntpd/refclock_fg.c|19991229230032|30865|7b877891
fredb at tautology.immanent.net|ntpd/refclock_fg.c|20030708210015|60652
D 1.10 05/11/07 03:13:24-05:00 stenn at deacon.udel.edu +0 -3
B stenn at whimsy.udel.edu|ChangeSet|19990526004811|57482|8983e65c737bb465
C
c Fixes from Dave Mills
K 55887
O -rw-rw-r--
P ntpd/refclock_fg.c
------------------------------------------------

D326 3

== ntpd/refclock_local.c ==
stenn at whimsy.udel.edu|ntpd/refclock_local.c|19990526004817|01635|3aed0663
stenn at deacon.udel.edu|ntpd/refclock_local.c|20051004065147|47427
D 1.15 05/11/07 03:13:24-05:00 stenn at deacon.udel.edu +1 -1
B stenn at whimsy.udel.edu|ChangeSet|19990526004811|57482|8983e65c737bb465
C
c Fixes from Dave Mills
K 47210
O -rw-rw-r--
P ntpd/refclock_local.c
------------------------------------------------

D165 1
I165 1
	memcpy(&pp->refid, "LOCL", 4);

== ntpd/refclock_wwv.c ==
stenn at whimsy.udel.edu|ntpd/refclock_wwv.c|19991207002135|33019|278b80fb
stenn at deacon.udel.edu|ntpd/refclock_wwv.c|20051031102637|10025
D 1.55 05/11/07 03:13:24-05:00 stenn at deacon.udel.edu +36 -20
B stenn at whimsy.udel.edu|ChangeSet|19990526004811|57482|8983e65c737bb465
C
c Fixes from Dave Mills
K 57235
O -rw-rw-r--
P ntpd/refclock_wwv.c
------------------------------------------------

I476 2
	double	metric;		/* signal quality metric */
	int	reach;		/* reachability register */
D478 1
D480 1
I480 1
	char	refid[5];	/* reference identifier */
D1215 2
I1216 2
		if (sp->metric >= TTHR && epoch == sp->mepoch % SECOND)
		    {
I1430 1
		sp->metric = wwv_metric(sp);
D1435 2
I1436 2
			    sp->synmax, sp->synsnr, sp->metric, sp->pos,
			    up->tepoch, epoch);
I1895 1
		sp->metric = wwv_metric(sp);
I1909 1
		rp->metric = wwv_metric(rp);
D1921 1
I1921 1
			    sp->metric, sp->synmax, sp->synsnr,
D1923 1
I1923 1
			    rp->metric, rp->synmax, rp->synsnr);
D1934 4
I1937 7
		 * We are at the end of the minute scan. It's very
		 * important to know when to move on. Before first
		 * synchronizing to a station, step to the next channel
		 * immediately if no station has been heard. Step after
		 * the DATA timeout (4 min) if a station has been heard,
		 * but too few good data bits have been found. In any
		 * case, step after the SYNCH timeout (30 min).
D1940 3
I1942 4
		 * only if less than the SYNCH timeout. After that, do
		 * not report the data, but step to the next channel
		 * after the SYNCH timeout. In any case, step after the
		 * PANIC timeout (2 days).
D2592 1
I2592 1
		dtemp = rp->metric;
D2599 1
I2599 1
		dtemp = rp->metric;
I2605 8
\
	/*
	 * If the clock has been set, stick with the best channel, but
	 * only if signal quality is above thresholds. Otherwise, if
	 * minute sync is lit, reset to 15 MHz and kill the V/H bits.
	 * Otherwise, set the refid and kill the V/H bits.
	 */
\
D2609 1
I2609 1
		pp->refid = sp->refid;
D2620 1
I2620 1
	peer->refid = pp->refid;
D2807 1
I2807 1
	    up->mitig[up->dchan].gain, sp->refid, sp->metric,

== util/ntp-keygen.c ==
stenn at whimsy.udel.edu|util/genkeys.c|20010815091259|22861|beaa24ac572f8c26
mayer at pogo.udel.edu|util/ntp-keygen.c|20050826211202|32760
D 1.34 05/11/07 03:12:02-05:00 stenn at deacon.udel.edu +2 -2
B stenn at whimsy.udel.edu|ChangeSet|19990526004811|57482|8983e65c737bb465
C
c Fixes from Dave Mills
K 33618
O -rw-rw-r--
P util/ntp-keygen.c
------------------------------------------------

D1794 2
I1795 2
	X509_time_adj(X509_get_notBefore(cert), 0L, &epoch);
	X509_time_adj(X509_get_notAfter(cert), YEAR, &epoch);

# Patch checksum=f4cd41c6


More information about the bk-ntp-dev-send mailing list