Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 25 Jun 2013 04:51:41 GMT
From:      def@FreeBSD.org
To:        svn-soc-all@FreeBSD.org
Subject:   socsvn commit: r253474 - in soc2013/def: . crashdump-head/sbin/savecore crashdump-head/sys/kern crashdump-head/sys/sys
Message-ID:  <201306250451.r5P4pf6W047072@socsvn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: def
Date: Tue Jun 25 04:51:41 2013
New Revision: 253474
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=253474

Log:
  Extend kerneldumpheader and dumperinfo to use Rijndael. Read new values in savecore.

Modified:
  soc2013/def/   (props changed)
  soc2013/def/crashdump-head/sbin/savecore/Makefile
  soc2013/def/crashdump-head/sbin/savecore/savecore.c
  soc2013/def/crashdump-head/sys/kern/kern_shutdown.c
  soc2013/def/crashdump-head/sys/sys/conf.h
  soc2013/def/crashdump-head/sys/sys/kerneldump.h

Modified: soc2013/def/crashdump-head/sbin/savecore/Makefile
==============================================================================
--- soc2013/def/crashdump-head/sbin/savecore/Makefile	Tue Jun 25 03:57:27 2013	(r253473)
+++ soc2013/def/crashdump-head/sbin/savecore/Makefile	Tue Jun 25 04:51:41 2013	(r253474)
@@ -4,5 +4,6 @@
 DPADD=	${LIBZ}
 LDADD=	-lz
 MAN=	savecore.8
+CFLAGS+=-I/home/def/soc13/vm/usr/include
 
 .include <bsd.prog.mk>

Modified: soc2013/def/crashdump-head/sbin/savecore/savecore.c
==============================================================================
--- soc2013/def/crashdump-head/sbin/savecore/savecore.c	Tue Jun 25 03:57:27 2013	(r253473)
+++ soc2013/def/crashdump-head/sbin/savecore/savecore.c	Tue Jun 25 04:51:41 2013	(r253474)
@@ -121,6 +121,7 @@
 	fprintf(f, "  Panic String: %s\n", h->panicstring);
 	fprintf(f, "  Dump Parity: %u\n", h->parity);
 	fprintf(f, "  Bounds: %d\n", bounds);
+	fprintf(f, "  Key length: %d bits\n", h->keyLen);
 
 	switch(status) {
 	case STATUS_BAD:

Modified: soc2013/def/crashdump-head/sys/kern/kern_shutdown.c
==============================================================================
--- soc2013/def/crashdump-head/sys/kern/kern_shutdown.c	Tue Jun 25 03:57:27 2013	(r253473)
+++ soc2013/def/crashdump-head/sys/kern/kern_shutdown.c	Tue Jun 25 04:51:41 2013	(r253474)
@@ -86,6 +86,8 @@
 
 #include <sys/signalvar.h>
 
+#include <crypto/rijndael/rijndael-api-fst.h>
+
 #ifndef PANIC_REBOOT_WAIT_TIME
 #define PANIC_REBOOT_WAIT_TIME 15 /* default to 15 seconds */
 #endif
@@ -143,6 +145,8 @@
 int dumping;				/* system is dumping */
 int rebooting;				/* system is rebooting */
 static struct dumperinfo dumper;	/* our selected dumper */
+keyInstance dumper_key;
+cipherInstance dumper_cipher;
 
 /* Context information for dump-debuggers. */
 static struct pcb dumppcb;		/* Registers. */
@@ -847,6 +851,11 @@
 	if (dumper.dumper != NULL)
 		return (EBUSY);
 	dumper = *di;
+
+	dumper.key = &dumper_key;
+	dumper.cipher = &dumper_cipher;
+	kerneldump_crypto_init(&dumper);
+
 	wantcopy = strlcpy(dumpdevname, devname, sizeof(dumpdevname));
 	if (wantcopy >= sizeof(dumpdevname)) {
 		printf("set_dumper: device name truncated from '%s' -> '%s'\n",
@@ -873,6 +882,19 @@
 }
 
 void
+kerneldump_crypto_init(struct dumperinfo *di)
+{
+	char keyMaterial[KERNELDUMP_MAX_KEY_SIZE >> 3];
+	int i;
+
+	for (i = 0 ; i < KERNELDUMP_MAX_KEY_SIZE >> 3 ; i++)
+		keyMaterial[i] = i;
+
+	rijndael_makeKey(di->key, DIR_ENCRYPT, KERNELDUMP_MAX_KEY_SIZE, keyMaterial);
+	rijndael_cipherInit(di->cipher, MODE_ECB, NULL);
+}
+
+void
 mkdumpheader(struct kerneldumpheader *kdh, char *magic, uint32_t archver,
     uint64_t dumplen, uint32_t blksz)
 {
@@ -889,5 +911,9 @@
 	strncpy(kdh->versionstring, version, sizeof(kdh->versionstring));
 	if (panicstr != NULL)
 		strncpy(kdh->panicstring, panicstr, sizeof(kdh->panicstring));
+	kdh->keyLen = dumper_key.keyLen;
+	strncpy(kdh->keyMaterial, dumper_key.keyMaterial, kdh->keyLen);
+	kdh->mode = dumper_cipher.mode;
+	strncpy(kdh->IV, dumper_cipher.IV, KERNELDUMP_MAX_IV_SIZE);
 	kdh->parity = kerneldump_parity(kdh);
 }

Modified: soc2013/def/crashdump-head/sys/sys/conf.h
==============================================================================
--- soc2013/def/crashdump-head/sys/sys/conf.h	Tue Jun 25 03:57:27 2013	(r253473)
+++ soc2013/def/crashdump-head/sys/sys/conf.h	Tue Jun 25 04:51:41 2013	(r253474)
@@ -331,6 +331,8 @@
 	u_int	maxiosize;	/* Max size allowed for an individual I/O */
 	off_t   mediaoffset;	/* Initial offset in bytes. */
 	off_t   mediasize;	/* Space available in bytes. */
+	void	*key;		/* Key information. */
+	void	*cipher;	/* Cipher information. */
 };
 
 int set_dumper(struct dumperinfo *, const char *_devname);

Modified: soc2013/def/crashdump-head/sys/sys/kerneldump.h
==============================================================================
--- soc2013/def/crashdump-head/sys/sys/kerneldump.h	Tue Jun 25 03:57:27 2013	(r253473)
+++ soc2013/def/crashdump-head/sys/sys/kerneldump.h	Tue Jun 25 04:51:41 2013	(r253474)
@@ -75,12 +75,18 @@
 #define	KERNELDUMP_POWERPC_VERSION	1
 #define	KERNELDUMP_SPARC64_VERSION	1
 #define	KERNELDUMP_TEXT_VERSION		1
+#define KERNELDUMP_MAX_KEY_SIZE		256
+#define KERNELDUMP_MAX_IV_SIZE		128
 	uint64_t	dumplength;		/* excl headers */
 	uint64_t	dumptime;
 	uint32_t	blocksize;
 	char		hostname[64];
-	char		versionstring[192];
-	char		panicstring[192];
+	char		versionstring[164];
+	char		panicstring[164];
+	int		keyLen;
+	char		keyMaterial[KERNELDUMP_MAX_KEY_SIZE >> 3];
+	u_int8_t	mode;
+	u_int8_t	IV[KERNELDUMP_MAX_IV_SIZE >> 3];
 	uint32_t	parity;
 };
 
@@ -101,6 +107,8 @@
 }
 
 #ifdef _KERNEL
+void kerneldump_crypto_init(struct dumperinfo *di);
+
 void mkdumpheader(struct kerneldumpheader *kdh, char *magic, uint32_t archver,
     uint64_t dumplen, uint32_t blksz);
 #endif



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201306250451.r5P4pf6W047072>