socsvn commit: r284997 - soc2013/def/crashdump-head/sbin/cryptcore

def at FreeBSD.org def at FreeBSD.org
Mon May 4 17:19:43 UTC 2015


Author: def
Date: Mon May  4 17:19:42 2015
New Revision: 284997
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=284997

Log:
  Use arc4random_buf(3).

Modified:
  soc2013/def/crashdump-head/sbin/cryptcore/cryptcore.c

Modified: soc2013/def/crashdump-head/sbin/cryptcore/cryptcore.c
==============================================================================
--- soc2013/def/crashdump-head/sbin/cryptcore/cryptcore.c	Mon May  4 16:59:09 2015	(r284996)
+++ soc2013/def/crashdump-head/sbin/cryptcore/cryptcore.c	Mon May  4 17:19:42 2015	(r284997)
@@ -9,13 +9,12 @@
 
 #include <fcntl.h>
 #include <stdbool.h>
+#include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
 
 #include <pjdlog.h>
 
-#define	CRYPTCORE_DEVRANDOM	"/dev/random"
-
 #define	CRYPTCORE_CMD_GENKEY	0x01
 #define	CRYPTCORE_CMD_DECRYPT	0x02
 
@@ -35,7 +34,7 @@
 	uint8_t ciphertext[KERNELDUMP_CIPHERTEXT_SIZE];
 	FILE *fp;
 	RSA *pubkey;
-	int err, fd, pubkeysize, size;
+	int err, pubkeysize;
 
 	PJDLOG_ASSERT(pubkeyfile != NULL);
 
@@ -43,18 +42,6 @@
 	if (pubkey == NULL)
 		pjdlog_exit(1, "Unable to allocate an RSA structure");
 
-	fd = open(CRYPTCORE_DEVRANDOM, O_RDONLY);
-	if (fd == -1)
-		pjdlog_exit(1, "Unable to open %s", CRYPTCORE_DEVRANDOM);
-	size = (int)read(fd, buf, KERNELDUMP_KEY_SIZE + KERNELDUMP_IV_SIZE);
-	err = errno;
-	close(fd);
-	if (size != KERNELDUMP_KEY_SIZE + KERNELDUMP_IV_SIZE) {
-		errno = err;
-		pjdlog_exit(1, "Unable to read data from %s",
-		    CRYPTCORE_DEVRANDOM);
-	}
-
 	fp = fopen(pubkeyfile, "r");
 	if (fp == NULL)
 		pjdlog_exit(1, "Unable to open %s", pubkeyfile);
@@ -71,6 +58,7 @@
 		    8 * KERNELDUMP_CIPHERTEXT_SIZE);
 	}
 
+	arc4random_buf(buf, sizeof(buf));
 	if (RSA_public_encrypt(KERNELDUMP_KEY_SIZE + KERNELDUMP_IV_SIZE, buf,
 	    ciphertext, pubkey, RSA_PKCS1_PADDING) != pubkeysize) {
 		pjdlog_exit(1, "Unable to encrypt the one-time key");


More information about the svn-soc-all mailing list