-
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.
The C files are generic public domain files which are mostly faster the the BSD ones - this depends on compiler and it's flags of cause ;) The assembly files are taken from current openssl master, and are licensed under the Apache License Version 2.0: - sha256-x86_64.S: SSSE3, AVX, AVX2, SHA-NI - sha512-x86_64.S: AVX, AVX2 - sha256-armv8.S: NEON, ARMv8 Cryptography Extension - sha512-armv8.S: ARMv8 Cryptography Extension - sha256-ppc.S: generic PPC64 LE/BE - sha512-ppc.S: generic PPC64 LE/BE - sha256-p8.S: Power ISA Version 2.07 LE/BE - sha512-p8.S: Power ISA Version 2.07 LE/BE Signed-off-by: Tino Reichardt <milky-zfs@mcmilk.de>
- Loading branch information
Showing
41 changed files
with
18,962 additions
and
1,899 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,107 @@ | ||
/* | ||
* 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 https://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) 2022 Tino Reichardt <milky-zfs@mcmilk.de> | ||
*/ | ||
|
||
#ifndef _SYS_SHA2_H | ||
#define _SYS_SHA2_H | ||
|
||
#ifdef _KERNEL | ||
#include <sys/types.h> | ||
#else | ||
#include <stdint.h> | ||
#include <stdlib.h> | ||
#endif | ||
|
||
#ifdef __cplusplus | ||
extern "C" { | ||
#endif | ||
|
||
#define SHA224_BLOCK_LENGTH 64 | ||
#define SHA256_BLOCK_LENGTH 64 | ||
#define SHA384_BLOCK_LENGTH 128 | ||
#define SHA512_BLOCK_LENGTH 128 | ||
|
||
#define SHA224_DIGEST_LENGTH 28 | ||
#define SHA256_DIGEST_LENGTH 32 | ||
#define SHA384_DIGEST_LENGTH 48 | ||
#define SHA512_DIGEST_LENGTH 64 | ||
|
||
#define SHA512_224_DIGEST_LENGTH 28 | ||
#define SHA512_256_DIGEST_LENGTH 32 | ||
|
||
/* sha256 context */ | ||
typedef struct { | ||
uint32_t state[8]; | ||
uint64_t count[2]; | ||
uint8_t wbuf[64]; | ||
|
||
/* const sha256_ops_t *ops */ | ||
const void *ops; | ||
} sha256_ctx; | ||
|
||
/* sha512 context */ | ||
typedef struct { | ||
uint64_t state[8]; | ||
uint64_t count[2]; | ||
uint8_t wbuf[128]; | ||
|
||
/* const sha256_ops_t *ops */ | ||
const void *ops; | ||
} sha512_ctx; | ||
|
||
/* SHA2 context */ | ||
typedef struct { | ||
union { | ||
sha256_ctx sha256; | ||
sha512_ctx sha512; | ||
}; | ||
|
||
/* algorithm type */ | ||
int algotype; | ||
} SHA2_CTX; | ||
|
||
/* SHA2 algorithm types */ | ||
enum sha2_algotype { | ||
SHA224 = 0, | ||
SHA256, | ||
SHA384, | ||
SHA512, | ||
SHA512_224, | ||
SHA512_256 | ||
}; | ||
|
||
/* SHA2 Init function */ | ||
extern void SHA2Init(SHA2_CTX *ctx, int algotype); | ||
|
||
/* SHA2 Update function */ | ||
extern void SHA2Update(SHA2_CTX *ctx, const void *data, size_t len); | ||
|
||
/* SHA2 Final function */ | ||
extern void SHA2Final(SHA2_CTX *ctx, void *digest); | ||
|
||
#ifdef __cplusplus | ||
} | ||
#endif | ||
|
||
#endif /* SYS_SHA2_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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
/* | ||
* 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 https://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) 2022 Tino Reichardt <milky-zfs@mcmilk.de> | ||
*/ | ||
|
||
#ifndef _SYS_ZFS_IMPL_H | ||
#define _SYS_ZFS_IMPL_H | ||
|
||
#ifdef __cplusplus | ||
extern "C" { | ||
#endif | ||
|
||
/* generic implementation backends */ | ||
typedef struct | ||
{ | ||
/* algorithm name */ | ||
const char *name; | ||
|
||
/* get number of supported implementations */ | ||
uint32_t (*getcnt)(void); | ||
|
||
/* get id of selected implementation */ | ||
uint32_t (*getid)(void); | ||
|
||
/* get name of selected implementation */ | ||
const char *(*getname)(void); | ||
|
||
/* setup id as fastest implementation */ | ||
void (*set_fastest)(uint32_t id); | ||
|
||
/* set implementation by id */ | ||
void (*setid)(uint32_t id); | ||
|
||
/* set implementation by name */ | ||
int (*setname)(const char *val); | ||
} zfs_impl_t; | ||
|
||
/* return some set of function pointer */ | ||
extern const zfs_impl_t *zfs_impl_get_ops(const char *algo); | ||
|
||
extern const zfs_impl_t zfs_blake3_ops; | ||
extern const zfs_impl_t zfs_sha256_ops; | ||
extern const zfs_impl_t zfs_sha512_ops; | ||
|
||
#ifdef __cplusplus | ||
} | ||
#endif | ||
|
||
#endif /* _SYS_ZFS_IMPL_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
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
Oops, something went wrong.