extern void msyslog (int, const char *, ...)
__attribute__((__format__(__printf__, 2, 3)));
+/*
+ * When building without OpenSSL, use one constant #define, NID_md5,
+ * for the keytype. MD5 is the only digest supported without OpenSSL.
+ */
+#ifndef OPENSSL
+#define NID_md5 4 /* from openssl/objects.h */
+#endif
+
extern void auth_delkeys (void);
extern int auth_havekey (keyid_t);
extern int authdecrypt (keyid_t, u_int32 *, int, int);
/*
- * MD5 interface for rsaref2.0
- *
- * These routines implement an interface for the RSA Laboratories
- * implementation of the Message Digest 5 (MD5) algorithm. This
- * algorithm is included in the rsaref2.0 package available from RSA in
- * the US and foreign countries. Further information is available at
- * www.rsa.com.
+ * digest support for NTP, MD5 and with OpenSSL more
*/
#ifdef HAVE_CONFIG_H
#include "ntp_fp.h"
#include "ntp_string.h"
#include "ntp_stdlib.h"
-
-#undef OPENSSL /* disable OpenSSL for test */
-
+#include "ntp_assert.h"
#include "ntp.h"
-#include "global.h"
#ifdef OPENSSL
#include "openssl/evp.h"
#else
int length /* packet length */
)
{
- u_char digest[20];
- int len;
+ u_char digest[20];
+ unsigned len;
#ifdef OPENSSL
- EVP_MD_CTX ctx;
+ const EVP_MD * digest_type;
+ EVP_MD_CTX ctx;
#else
- MD5_CTX md5;
+ MD5_CTX md5;
#endif /* OPENSSL */
/*
* MD5 with key identifier concatenated with packet.
*/
#ifdef OPENSSL
- EVP_DigestInit(&ctx, EVP_get_digestbynid(type));
+ digest_type = EVP_get_digestbynid(type);
+ NTP_INSIST(digest_type != NULL);
+ EVP_DigestInit(&ctx, digest_type);
EVP_DigestUpdate(&ctx, key, (u_int)cache_keylen);
EVP_DigestUpdate(&ctx, (u_char *)pkt, (u_int)length);
EVP_DigestFinal(&ctx, digest, &len);
int size /* MAC size */
)
{
- u_char digest[20];
- int len;
+ u_char digest[20];
+ unsigned len;
#ifdef OPENSSL
- EVP_MD_CTX ctx;
+ EVP_MD_CTX ctx;
#else
- MD5_CTX md5;
+ MD5_CTX md5;
#endif /* OPENSSL */
/*
MD5Final(digest, &md5);
len = 16;
#endif /* OPENSSL */
- if (size != len + 4)
+ if ((unsigned)size != len + 4)
return (0);
return (!memcmp(digest, (char *)pkt + length + 4, len));
u_int32
addr2refid(sockaddr_u *addr)
{
- u_char digest[20];
- u_int32 addr_refid;
+ u_char digest[20];
+ u_int32 addr_refid;
#ifdef OPENSSL
- EVP_MD_CTX ctx;
- int len;
+ EVP_MD_CTX ctx;
+ unsigned len;
#else
MD5_CTX md5;
#endif /* OPENSSL */
return (NSRCADR(addr));
#ifdef OPENSSL
- EVP_DigestInit(&ctx, EVP_md5());
- EVP_DigestUpdate(&ctx, (u_char *)PSOCK_ADDR6(addr),
+ EVP_DigestInit(&ctx, EVP_md5());
+ EVP_DigestUpdate(&ctx, (u_char *)PSOCK_ADDR6(addr),
sizeof(struct in6_addr));
- EVP_DigestFinal(&ctx, digest, &len);
+ EVP_DigestFinal(&ctx, digest, &len);
#else
MD5Init(&md5);
MD5Update(&md5, (u_char *)PSOCK_ADDR6(addr),
/*
* authreadkeys.c - routines to support the reading of the key file
*/
+#include <config.h>
#include <stdio.h>
#include <ctype.h>
#include "ntp_syslog.h"
#include "ntp_stdlib.h"
-#undef OPENSSL /* disable OpenSSL for text */
-
#ifdef OPENSSL
#include "openssl/objects.h"
#endif /* OPENSSL *.
while ((line = fgets(buf, sizeof buf, fp)) != NULL) {
token = nexttok(&line);
if (token == NULL)
- continue;
+ continue;
/*
* First is key number. See if it is okay.
*/
keyno = atoi(token);
- if (keyno == NULL) {
+ if (keyno == 0) {
msyslog(LOG_ERR,
"cannot change key %s", token);
continue;
"invalid key type for key %ld", keyno);
continue;
}
-#else
+#else /* !OPENSSL */
/*
* The key type is unused, but is required to be 'M' or
"invalid key type for key %ld", keyno);
continue;
}
-#endif /* OPENSSL */
+ keytype = NID_md5;
+#endif /* !OPENSSL */
/*
* Finally, get key and insert it
# LDADD might need RESLIB and ADJLIB
LDADD= version.o ../libntp/libntp.a
+ntpdate_LDADD= $(LDADD) @LCRYPTO@
DISTCLEANFILES= .version version.c stamp-v
noinst_HEADERS= ntpdate.h
ETAGS_ARGS= Makefile.am
-I$(top_srcdir)/lib/isc/nothreads/include \
-I$(top_srcdir)/lib/isc/unix/include $(LIBOPTS_CFLAGS)
# LDADD might need RESLIB and ADJLIB
-ntpdc_LDADD= version.o @EDITLINE_LIBS@ $(LIBOPTS_LDADD) ../libntp/libntp.a
+ntpdc_LDADD= version.o @LCRYPTO@ @EDITLINE_LIBS@ $(LIBOPTS_LDADD) \
+ ../libntp/libntp.a
# ntpdc-layout doesn't need any additional libraries at all
ntpdc_layout_LDADD=
DISTCLEANFILES= .version version.c
-I$(top_srcdir)/lib/isc/unix/include $(LIBOPTS_CFLAGS)
# LDADD might need RESLIB and ADJLIB
-ntpq_LDADD= version.o @EDITLINE_LIBS@ $(LIBOPTS_LDADD) ../libntp/libntp.a
+ntpq_LDADD= version.o @LCRYPTO@ @EDITLINE_LIBS@ $(LIBOPTS_LDADD) \
+ ../libntp/libntp.a
noinst_HEADERS= ntpq.h
noinst_LIBRARIES= libntpq.a
# HMS: I don't think we need libntpq_a_LIBADD...
# ADD BSC32 /nologo\r
LINK32=link.exe\r
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386\r
-# ADD LINK32 kernel32.lib user32.lib advapi32.lib ws2_32.lib /nologo /subsystem:console /pdb:"bin/Release/ntpdate.pdb" /machine:I386 /out:"bin/Release/ntpdate.exe" /pdbtype:sept\r
+# ADD LINK32 kernel32.lib user32.lib advapi32.lib ws2_32.lib $(OPENSSL_LIB)\libeay32.lib /nologo /subsystem:console /pdb:"bin/Release/ntpdate.pdb" /machine:I386 /out:"bin/Release/ntpdate.exe" /pdbtype:sept\r
\r
!ELSEIF "$(CFG)" == "ntpdate - Win32 Debug"\r
\r
# ADD BSC32 /nologo\r
LINK32=link.exe\r
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept\r
-# ADD LINK32 kernel32.lib user32.lib advapi32.lib ws2_32.lib /nologo /subsystem:console /pdb:"bin/Debug/ntpdate.pdb" /debug /machine:I386 /out:"bin/Debug/ntpdate.exe" /pdbtype:sept\r
+# ADD LINK32 kernel32.lib user32.lib advapi32.lib ws2_32.lib $(OPENSSL_LIB)\libeay32.lib /nologo /subsystem:console /pdb:"bin/Debug/ntpdate.pdb" /debug /machine:I386 /out:"bin/Debug/ntpdate.exe" /pdbtype:sept\r
# SUBTRACT LINK32 /pdb:none\r
\r
!ENDIF \r
# ADD BSC32 /nologo\r
LINK32=link.exe\r
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386\r
-# ADD LINK32 kernel32.lib user32.lib ws2_32.lib advapi32.lib /nologo /subsystem:console /pdb:"bin/Release/ntpdc.pdb" /machine:I386 /out:"bin/Release/ntpdc.exe" /pdbtype:sept\r
+# ADD LINK32 kernel32.lib user32.lib ws2_32.lib advapi32.lib $(OPENSSL_LIB)\libeay32.lib /nologo /subsystem:console /pdb:"bin/Release/ntpdc.pdb" /machine:I386 /out:"bin/Release/ntpdc.exe" /pdbtype:sept\r
\r
!ELSEIF "$(CFG)" == "ntpdc - Win32 Debug"\r
\r
# ADD BSC32 /nologo\r
LINK32=link.exe\r
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept\r
-# ADD LINK32 kernel32.lib user32.lib ws2_32.lib advapi32.lib /nologo /subsystem:console /pdb:"bin/Debug/ntpdc.pdb" /debug /machine:I386 /out:"bin/Debug/ntpdc.exe" /pdbtype:sept\r
+# ADD LINK32 kernel32.lib user32.lib ws2_32.lib advapi32.lib $(OPENSSL_LIB)\libeay32.lib /nologo /subsystem:console /pdb:"bin/Debug/ntpdc.pdb" /debug /machine:I386 /out:"bin/Debug/ntpdc.exe" /pdbtype:sept\r
\r
!ENDIF \r
\r
# ADD BSC32 /nologo\r
LINK32=link.exe\r
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386\r
-# ADD LINK32 kernel32.lib user32.lib ws2_32.lib advapi32.lib /nologo /subsystem:console /pdb:"bin/Release/ntpq.pdb" /machine:I386 /out:"bin/Release/ntpq.exe" /pdbtype:sept\r
+# ADD LINK32 kernel32.lib user32.lib ws2_32.lib advapi32.lib $(OPENSSL_LIB)\libeay32.lib /nologo /subsystem:console /pdb:"bin/Release/ntpq.pdb" /machine:I386 /out:"bin/Release/ntpq.exe" /pdbtype:sept\r
\r
!ELSEIF "$(CFG)" == "ntpq - Win32 Debug"\r
\r
# ADD BSC32 /nologo\r
LINK32=link.exe\r
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept\r
-# ADD LINK32 kernel32.lib user32.lib ws2_32.lib advapi32.lib /nologo /subsystem:console /pdb:"bin/Debug/ntpq.pdb" /debug /machine:I386 /out:"bin/Debug/ntpq.exe" /pdbtype:sept\r
+# ADD LINK32 kernel32.lib user32.lib ws2_32.lib advapi32.lib $(OPENSSL_LIB)\libeay32.lib /nologo /subsystem:console /pdb:"bin/Debug/ntpq.pdb" /debug /machine:I386 /out:"bin/Debug/ntpq.exe" /pdbtype:sept\r
\r
!ENDIF \r
\r
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib"
+ AdditionalDependencies="ws2_32.lib $(OPENSSL_LIB)\libeay32.lib"
OutputFile="bin/Debug/ntpdate.exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib"
+ AdditionalDependencies="ws2_32.lib $(OPENSSL_LIB)\libeay32.lib"
OutputFile="bin/Release/ntpdate.exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib"
+ AdditionalDependencies="ws2_32.lib $(OPENSSL_LIB)\libeay32.lib"
OutputFile="bin/Debug/ntpdc.exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib"
+ AdditionalDependencies="ws2_32.lib $(OPENSSL_LIB)\libeay32.lib"
OutputFile="bin/Release/ntpdc.exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib"
+ AdditionalDependencies="ws2_32.lib $(OPENSSL_LIB)\libeay32.lib"
OutputFile="bin/Release/ntpq.exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib"
+ AdditionalDependencies="ws2_32.lib $(OPENSSL_LIB)\libeay32.lib"
OutputFile="bin/Debug/ntpq.exe"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib"
+ AdditionalDependencies="ws2_32.lib $(OPENSSL_LIB)\libeay32.lib"
OutputFile="bin/Debug/ntpdate.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib"
+ AdditionalDependencies="ws2_32.lib $(OPENSSL_LIB)\libeay32.lib"
OutputFile="bin/Release/ntpdate.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib"
+ AdditionalDependencies="ws2_32.lib $(OPENSSL_LIB)\libeay32.lib"
OutputFile="bin/Debug/ntpdc.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib"
+ AdditionalDependencies="ws2_32.lib $(OPENSSL_LIB)\libeay32.lib"
OutputFile="bin/Release/ntpdc.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib"
+ AdditionalDependencies="ws2_32.lib $(OPENSSL_LIB)\libeay32.lib"
OutputFile="bin/Release/ntpq.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib"
+ AdditionalDependencies="ws2_32.lib $(OPENSSL_LIB)\libeay32.lib"
OutputFile="bin/Debug/ntpq.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib"
+ AdditionalDependencies="ws2_32.lib $(OPENSSL_LIB)\vc\libeay32MDd.lib"
OutputFile="..\bin\Debug\ntpdate.exe"
Version="0x0400"
LinkIncremental="1"
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib"
+ AdditionalDependencies="ws2_32.lib $(OPENSSL_LIB)\vc\libeay32MD.lib"
OutputFile="..\bin\Release\ntpdate.exe"
Version="0x0400"
LinkIncremental="1"
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib"
+ AdditionalDependencies="ws2_32.lib $(OPENSSL_LIB)\vc\libeay32MDd.lib"
OutputFile="..\bin\Debug\ntpdc.exe"
Version="0x0400"
LinkIncremental="1"
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib"
+ AdditionalDependencies="ws2_32.lib $(OPENSSL_LIB)\vc\libeay32MD.lib"
OutputFile="..\bin\Release\ntpdc.exe"
Version="0x0400"
LinkIncremental="1"
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib"
+ AdditionalDependencies="ws2_32.lib $(OPENSSL_LIB)\vc\libeay32MD.lib"
OutputFile="..\bin\Release\ntpq.exe"
Version="0x0400"
LinkIncremental="1"
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib"
+ AdditionalDependencies="ws2_32.lib $(OPENSSL_LIB)\vc\libeay32MDd.lib"
OutputFile="..\bin\Debug\ntpq.exe"
Version="0x0400"
LinkIncremental="1"