Blame SOURCES/ntp-4.2.6p5-fipsmd5.patch

6e16f6
diff -up ntp-4.2.6p5/libntp/a_md5encrypt.c.fipsmd5 ntp-4.2.6p5/libntp/a_md5encrypt.c
6e16f6
--- ntp-4.2.6p5/libntp/a_md5encrypt.c.fipsmd5	2011-12-01 03:55:17.000000000 +0100
6e16f6
+++ ntp-4.2.6p5/libntp/a_md5encrypt.c	2012-10-24 16:24:04.972358878 +0200
6e16f6
@@ -38,7 +38,11 @@ MD5authencrypt(
6e16f6
 	 * was creaded.
6e16f6
 	 */
6e16f6
 	INIT_SSL();
6e16f6
-	EVP_DigestInit(&ctx, EVP_get_digestbynid(type));
6e16f6
+	if (!EVP_DigestInit(&ctx, EVP_get_digestbynid(type))) {
6e16f6
+		msyslog(LOG_ERR,
6e16f6
+		    "MAC encrypt: digest init failed");
6e16f6
+		return (0);
6e16f6
+	}
6e16f6
 	EVP_DigestUpdate(&ctx, key, (u_int)cache_keylen);
6e16f6
 	EVP_DigestUpdate(&ctx, (u_char *)pkt, (u_int)length);
6e16f6
 	EVP_DigestFinal(&ctx, digest, &len;;
6e16f6
@@ -71,7 +75,11 @@ MD5authdecrypt(
6e16f6
 	 * was created.
6e16f6
 	 */
6e16f6
 	INIT_SSL();
6e16f6
-	EVP_DigestInit(&ctx, EVP_get_digestbynid(type));
6e16f6
+	if (!EVP_DigestInit(&ctx, EVP_get_digestbynid(type))) {
6e16f6
+		msyslog(LOG_ERR,
6e16f6
+		    "MAC decrypt: digest init failed");
6e16f6
+		return (0);
6e16f6
+	}
6e16f6
 	EVP_DigestUpdate(&ctx, key, (u_int)cache_keylen);
6e16f6
 	EVP_DigestUpdate(&ctx, (u_char *)pkt, (u_int)length);
6e16f6
 	EVP_DigestFinal(&ctx, digest, &len;;
6e16f6
@@ -101,7 +109,16 @@ addr2refid(sockaddr_u *addr)
6e16f6
 		return (NSRCADR(addr));
6e16f6
 
6e16f6
 	INIT_SSL();
6e16f6
-	EVP_DigestInit(&ctx, EVP_get_digestbynid(NID_md5));
6e16f6
+	EVP_MD_CTX_init(&ctx;;
6e16f6
+#ifdef EVP_MD_CTX_FLAG_NON_FIPS_ALLOW
6e16f6
+	/* MD5 is not used as a crypto hash here. */
6e16f6
+	EVP_MD_CTX_set_flags(&ctx, EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
6e16f6
+#endif
6e16f6
+	if (!EVP_DigestInit_ex(&ctx, EVP_md5(), NULL)) {
6e16f6
+		msyslog(LOG_ERR,
6e16f6
+		    "MD5 init failed");
6e16f6
+		exit(1);
6e16f6
+	}
6e16f6
 	EVP_DigestUpdate(&ctx, (u_char *)PSOCK_ADDR6(addr),
6e16f6
 	    sizeof(struct in6_addr));
6e16f6
 	EVP_DigestFinal(&ctx, digest, &len;;