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>