-
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 <[email protected]>
- Loading branch information
Showing
41 changed files
with
18,963 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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -22,11 +22,11 @@ | |
/* | ||
* Based on BLAKE3 v1.3.1, https://github.com/BLAKE3-team/BLAKE3 | ||
* Copyright (c) 2019-2020 Samuel Neves and Jack O'Connor | ||
* Copyright (c) 2021 Tino Reichardt <[email protected]> | ||
* Copyright (c) 2021-2022 Tino Reichardt <[email protected]> | ||
*/ | ||
|
||
#ifndef BLAKE3_H | ||
#define BLAKE3_H | ||
#ifndef _SYS_BLAKE3_H | ||
#define _SYS_BLAKE3_H | ||
|
||
#ifdef _KERNEL | ||
#include <sys/types.h> | ||
|
@@ -72,7 +72,7 @@ typedef struct { | |
*/ | ||
uint8_t cv_stack[(BLAKE3_MAX_DEPTH + 1) * BLAKE3_OUT_LEN]; | ||
|
||
/* const blake3_impl_ops_t *ops */ | ||
/* const blake3_ops_t *ops */ | ||
const void *ops; | ||
} BLAKE3_CTX; | ||
|
||
|
@@ -97,29 +97,8 @@ extern void **blake3_per_cpu_ctx; | |
extern void blake3_per_cpu_ctx_init(void); | ||
extern void blake3_per_cpu_ctx_fini(void); | ||
|
||
/* return number of supported implementations */ | ||
extern int blake3_get_impl_count(void); | ||
|
||
/* return id of selected implementation */ | ||
extern int blake3_get_impl_id(void); | ||
|
||
/* return name of selected implementation */ | ||
extern const char *blake3_get_impl_name(void); | ||
|
||
/* setup id as fastest implementation */ | ||
extern void blake3_set_impl_fastest(uint32_t id); | ||
|
||
/* set implementation by id */ | ||
extern void blake3_set_impl_id(uint32_t id); | ||
|
||
/* set implementation by name */ | ||
extern int blake3_set_impl_name(const char *name); | ||
|
||
/* set startup implementation */ | ||
extern void blake3_setup_impl(void); | ||
|
||
#ifdef __cplusplus | ||
} | ||
#endif | ||
|
||
#endif /* BLAKE3_H */ | ||
#endif /* _SYS_BLAKE3_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,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 <[email protected]> | ||
*/ | ||
|
||
#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 <[email protected]> | ||
*/ | ||
|
||
#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.