From owner-svn-soc-all@FreeBSD.ORG Sat Jul 13 17:47:23 2013 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 153DFA0D for ; Sat, 13 Jul 2013 17:47:23 +0000 (UTC) (envelope-from def@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) by mx1.freebsd.org (Postfix) with ESMTP id EBB221AB9 for ; Sat, 13 Jul 2013 17:47:22 +0000 (UTC) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.14.7/8.14.7) with ESMTP id r6DHlMMM051186 for ; Sat, 13 Jul 2013 17:47:22 GMT (envelope-from def@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.14.7/8.14.6/Submit) id r6DHlMdJ051183 for svn-soc-all@FreeBSD.org; Sat, 13 Jul 2013 17:47:22 GMT (envelope-from def@FreeBSD.org) Date: Sat, 13 Jul 2013 17:47:22 GMT Message-Id: <201307131747.r6DHlMdJ051183@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to def@FreeBSD.org using -f From: def@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r254759 - in soc2013/def/crashdump-head/sys: kern sys MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 13 Jul 2013 17:47:23 -0000 Author: def Date: Sat Jul 13 17:47:22 2013 New Revision: 254759 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=254759 Log: Change the dumperinfo structure to store a key, a tweak and their context. Modify kerneldump_crypto_init to set context and mkdumpheader to write data in the new format. Modified: soc2013/def/crashdump-head/sys/kern/kern_shutdown.c soc2013/def/crashdump-head/sys/sys/conf.h Modified: soc2013/def/crashdump-head/sys/kern/kern_shutdown.c ============================================================================== --- soc2013/def/crashdump-head/sys/kern/kern_shutdown.c Sat Jul 13 17:42:51 2013 (r254758) +++ soc2013/def/crashdump-head/sys/kern/kern_shutdown.c Sat Jul 13 17:47:22 2013 (r254759) @@ -86,7 +86,7 @@ #include -#include +#include #ifndef PANIC_REBOOT_WAIT_TIME #define PANIC_REBOOT_WAIT_TIME 15 /* default to 15 seconds */ @@ -145,8 +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; +static rijndael_ctx dumper_tweak_ctx; +static rijndael_ctx dumper_data_ctx; /* Context information for dump-debuggers. */ static struct pcb dumppcb; /* Registers. */ @@ -852,8 +852,6 @@ return (EBUSY); dumper = *di; - dumper.key = &dumper_key; - dumper.cipher = &dumper_cipher; kerneldump_crypto_init(&dumper); wantcopy = strlcpy(dumpdevname, devname, sizeof(dumpdevname)); @@ -884,14 +882,14 @@ 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); + /* In the future the tweak will be set via sysctl. */ + arc4rand(kerneldumptweak, KERNELDUMP_TWEAK_SIZE, 0); + di->key = (char *)kerneldumpkey; + di->tweak = kerneldumptweak; + di->tweak_ctx = &dumper_tweak_ctx; + di->data_ctx = &dumper_data_ctx; + rijndael_set_key(di->tweak_ctx, di->key, KERNELDUMP_KEY_SIZE << 3); + rijndael_set_key(di->data_ctx, di->key, KERNELDUMP_KEY_SIZE << 3); } void @@ -911,9 +909,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->keysize = KERNELDUMP_KEY_SIZE; + strncpy(kdh->key, dumper.key, kdh->keysize); + kdh->tweaksize = KERNELDUMP_TWEAK_SIZE; + strncpy(kdh->tweak, dumper.tweak, kdh->tweaksize); kdh->parity = kerneldump_parity(kdh); } Modified: soc2013/def/crashdump-head/sys/sys/conf.h ============================================================================== --- soc2013/def/crashdump-head/sys/sys/conf.h Sat Jul 13 17:42:51 2013 (r254758) +++ soc2013/def/crashdump-head/sys/sys/conf.h Sat Jul 13 17:47:22 2013 (r254759) @@ -331,8 +331,10 @@ 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. */ + char *key; /* Key information. */ + char *tweak; /* Tweak. */ + void *tweak_ctx; + void *data_ctx; }; int set_dumper(struct dumperinfo *, const char *_devname);