-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
OpenZFS - 4185 add new cryptographic checksums to ZFS: SHA-512, Skein…
…, Edon-R Reviewed by: George Wilson <[email protected]> Reviewed by: Prakash Surya <[email protected]> Reviewed by: Saso Kiselkov <[email protected]> Reviewed by: Richard Lowe <[email protected]> Approved by: Garrett D'Amore <[email protected]> Ported by: Tony Hutter <[email protected]> OpenZFS-issue: https://www.illumos.org/issues/4185 OpenZFS-commit: openzfs/openzfs@45818ee Porting Notes: This code is ported on top of the Illumos Crypto Framework code: b5e030c The list of porting changes includes: - Copied module/icp/include/sha2/sha2.h directly from illumos - Removed from module/icp/algs/sha2/sha2.c: #pragma inline(SHA256Init, SHA384Init, SHA512Init) - Added 'ctx' to lib/libzfs/libzfs_sendrecv.c:zio_checksum_SHA256() since it now takes in an extra parameter. - Added CTASSERT() to assert.h from for module/zfs/edonr_zfs.c - Added skein & edonr to libicp/Makefile.am - Added sha512.S. It was generated from sha512-x86_64.pl in Illumos. - Updated ztest.c with new fletcher_4_*() args; used NULL for new CTX argument. - In icp/algs/edonr/edonr_byteorder.h, Removed the #if defined(__linux) section to not #include the non-existant endian.h. - In skein_test.c, renane NULL to 0 in "no test vector" array entries to get around a compiler warning. - Fixup test files: - Rename <sys/varargs.h> -> <varargs.h>, <strings.h> -> <string.h>, - Remove <note.h> and define NOTE() as NOP. - Define u_longlong_t - Rename "#!/usr/bin/ksh" -> "#!/bin/ksh -p" - Rename NULL to 0 in "no test vector" array entries to get around a compiler warning. - Remove "for isa in $($ISAINFO); do" stuff - Add/update Makefiles - Add some userspace headers like stdio.h/stdlib.h in places of sys/types.h. - EXPORT_SYMBOL *_Init/*_Update/*_Final... routines in ICP modules. - Update scripts/zfs2zol-patch.sed
- Loading branch information
1 parent
fe9c5a8
commit 5958eb2
Showing
70 changed files
with
8,852 additions
and
190 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,98 @@ | ||
/* | ||
* IDI,NTNU | ||
* | ||
* CDDL HEADER START | ||
* | ||
* The contents of this file are subject to the terms of the | ||
* Common Development and Distribution License (the "License"). | ||
* You may not use this file except in compliance with the License. | ||
* | ||
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE | ||
* or http://opensource.org/licenses/CDDL-1.0. | ||
* See the License for the specific language governing permissions | ||
* and limitations under the License. | ||
* | ||
* When distributing Covered Code, include this CDDL HEADER in each | ||
* file and include the License file at usr/src/OPENSOLARIS.LICENSE. | ||
* If applicable, add the following below this CDDL HEADER, with the | ||
* fields enclosed by brackets "[]" replaced with your own identifying | ||
* information: Portions Copyright [yyyy] [name of copyright owner] | ||
* | ||
* CDDL HEADER END | ||
* | ||
* Copyright (C) 2009, 2010, Jorn Amundsen <[email protected]> | ||
* | ||
* Tweaked Edon-R implementation for SUPERCOP, based on NIST API. | ||
* | ||
* $Id: edonr.h 517 2013-02-17 20:34:39Z joern $ | ||
*/ | ||
/* | ||
* Portions copyright (c) 2013, Saso Kiselkov, All rights reserved | ||
*/ | ||
|
||
#ifndef _SYS_EDONR_H_ | ||
#define _SYS_EDONR_H_ | ||
|
||
#ifdef __cplusplus | ||
extern "C" { | ||
#endif | ||
|
||
#ifdef _KERNEL | ||
#include <sys/types.h> | ||
#else | ||
#include <stdint.h> /* uint32_t... */ | ||
#include <stdlib.h> /* size_t ... */ | ||
#endif | ||
|
||
/* | ||
* EdonR allows to call EdonRUpdate() consecutively only if the total length | ||
* of stored unprocessed data and the new supplied data is less than or equal | ||
* to the BLOCK_SIZE on which the compression functions operates. | ||
* Otherwise an assertion failure is invoked. | ||
*/ | ||
|
||
/* Specific algorithm definitions */ | ||
#define EdonR224_DIGEST_SIZE 28 | ||
#define EdonR224_BLOCK_SIZE 64 | ||
#define EdonR256_DIGEST_SIZE 32 | ||
#define EdonR256_BLOCK_SIZE 64 | ||
#define EdonR384_DIGEST_SIZE 48 | ||
#define EdonR384_BLOCK_SIZE 128 | ||
#define EdonR512_DIGEST_SIZE 64 | ||
#define EdonR512_BLOCK_SIZE 128 | ||
|
||
#define EdonR256_BLOCK_BITSIZE 512 | ||
#define EdonR512_BLOCK_BITSIZE 1024 | ||
|
||
typedef struct { | ||
uint32_t DoublePipe[16]; | ||
uint8_t LastPart[EdonR256_BLOCK_SIZE * 2]; | ||
} EdonRData256; | ||
typedef struct { | ||
uint64_t DoublePipe[16]; | ||
uint8_t LastPart[EdonR512_BLOCK_SIZE * 2]; | ||
} EdonRData512; | ||
|
||
typedef struct { | ||
size_t hashbitlen; | ||
|
||
/* + algorithm specific parameters */ | ||
int unprocessed_bits; | ||
uint64_t bits_processed; | ||
union { | ||
EdonRData256 p256[1]; | ||
EdonRData512 p512[1]; | ||
} pipe[1]; | ||
} EdonRState; | ||
|
||
void EdonRInit(EdonRState *state, size_t hashbitlen); | ||
void EdonRUpdate(EdonRState *state, const uint8_t *data, size_t databitlen); | ||
void EdonRFinal(EdonRState *state, uint8_t *hashval); | ||
void EdonRHash(size_t hashbitlen, const uint8_t *data, size_t databitlen, | ||
uint8_t *hashval); | ||
|
||
#ifdef __cplusplus | ||
} | ||
#endif | ||
|
||
#endif /* _SYS_EDONR_H_ */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.