mirror of
				https://git.proxmox.com/git/mirror_zfs
				synced 2025-11-04 07:10:11 +00:00 
			
		
		
		
	The skeleton file module/icp/include/generic_impl.c can be used for iterating over different implementations of algorithms. It is used by SHA256, SHA512 and BLAKE3 currently. The Solaris SHA2 implementation got replaced with a version which is based on public domain code of cppcrypto v0.10. These assembly files are taken from current openssl master: - sha256-x86_64.S: x64, SSSE3, AVX, AVX2, SHA-NI (x86_64) - sha512-x86_64.S: x64, AVX, AVX2 (x86_64) - sha256-armv7.S: ARMv7, NEON, ARMv8-CE (arm) - sha512-armv7.S: ARMv7, NEON (arm) - sha256-armv8.S: ARMv7, NEON, ARMv8-CE (aarch64) - sha512-armv8.S: ARMv7, ARMv8-CE (aarch64) - sha256-ppc.S: Generic PPC64 LE/BE (ppc64) - sha512-ppc.S: Generic PPC64 LE/BE (ppc64) - sha256-p8.S: Power8 ISA Version 2.07 LE/BE (ppc64) - sha512-p8.S: Power8 ISA Version 2.07 LE/BE (ppc64) Tested-by: Rich Ercolani <rincebrain@gmail.com> Tested-by: Sebastian Gottschall <s.gottschall@dd-wrt.com> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Tino Reichardt <milky-zfs@mcmilk.de> Closes #13741
		
			
				
	
	
		
			62 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 * 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>
 | 
						|
 */
 | 
						|
 | 
						|
#include <sys/zio_checksum.h>
 | 
						|
#include <sys/zfs_context.h>
 | 
						|
#include <sys/zfs_impl.h>
 | 
						|
 | 
						|
#include <sys/blake3.h>
 | 
						|
#include <sys/sha2.h>
 | 
						|
 | 
						|
/*
 | 
						|
 * impl_ops - backend for implementations of algorithms
 | 
						|
 */
 | 
						|
const zfs_impl_t *impl_ops[] = {
 | 
						|
	&zfs_blake3_ops,
 | 
						|
	&zfs_sha256_ops,
 | 
						|
	&zfs_sha512_ops,
 | 
						|
	NULL
 | 
						|
};
 | 
						|
 | 
						|
/*
 | 
						|
 * zfs_impl_get_ops - Get the API functions for an impl backend
 | 
						|
 */
 | 
						|
const zfs_impl_t *
 | 
						|
zfs_impl_get_ops(const char *algo)
 | 
						|
{
 | 
						|
	const zfs_impl_t **ops = impl_ops;
 | 
						|
 | 
						|
	if (!algo || !*algo)
 | 
						|
		return (*ops);
 | 
						|
 | 
						|
	for (; *ops; ops++) {
 | 
						|
		if (strcmp(algo, (*ops)->name) == 0)
 | 
						|
			break;
 | 
						|
	}
 | 
						|
 | 
						|
	ASSERT3P(ops, !=, NULL);
 | 
						|
	return (*ops);
 | 
						|
}
 |