Path: blob/main/sys/contrib/openzfs/module/icp/include/modes/gcm_impl.h
48676 views
// SPDX-License-Identifier: CDDL-1.01/*2* CDDL HEADER START3*4* The contents of this file are subject to the terms of the5* Common Development and Distribution License (the "License").6* You may not use this file except in compliance with the License.7*8* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE9* or https://opensource.org/licenses/CDDL-1.0.10* See the License for the specific language governing permissions11* and limitations under the License.12*13* When distributing Covered Code, include this CDDL HEADER in each14* file and include the License file at usr/src/OPENSOLARIS.LICENSE.15* If applicable, add the following below this CDDL HEADER, with the16* fields enclosed by brackets "[]" replaced with your own identifying17* information: Portions Copyright [yyyy] [name of copyright owner]18*19* CDDL HEADER END20*/21/*22* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.23*/2425#ifndef _GCM_IMPL_H26#define _GCM_IMPL_H2728/*29* GCM function dispatcher.30*/3132#ifdef __cplusplus33extern "C" {34#endif3536#include <sys/zfs_context.h>37#include <sys/crypto/common.h>3839/*40* Methods used to define GCM implementation41*42* @gcm_mul_f Perform carry-less multiplication43* @gcm_will_work_f Function tests whether implementation will function44*/45typedef void (*gcm_mul_f)(uint64_t *, uint64_t *, uint64_t *);46typedef boolean_t (*gcm_will_work_f)(void);4748#define GCM_IMPL_NAME_MAX (16)4950typedef struct gcm_impl_ops {51gcm_mul_f mul;52gcm_will_work_f is_supported;53char name[GCM_IMPL_NAME_MAX];54} gcm_impl_ops_t;5556extern const gcm_impl_ops_t gcm_generic_impl;57#if defined(__x86_64) && defined(HAVE_PCLMULQDQ)58extern const gcm_impl_ops_t gcm_pclmulqdq_impl;59#endif6061/*62* Initializes fastest implementation63*/64void gcm_impl_init(void);6566/*67* Returns optimal allowed GCM implementation68*/69const struct gcm_impl_ops *gcm_impl_get_ops(void);7071#ifdef __cplusplus72}73#endif7475#endif /* _GCM_IMPL_H */767778