/* SPDX-License-Identifier: BSD-2-Clause */ /* * Copyright (c) 2017-2020, Linaro Limited */ #ifndef __GHASH_CE_CORE_H #define __GHASH_CE_CORE_H #include struct internal_ghash_key { uint64_t h[2]; uint64_t h2[2]; uint64_t h3[2]; uint64_t h4[2]; }; void pmull_ghash_update_p64(int blocks, uint64_t dg[2], const uint8_t *src, const struct internal_ghash_key *ghash_key, const uint8_t *head); void pmull_ghash_update_p8(int blocks, uint64_t dg[2], const uint8_t *src, const struct internal_ghash_key *ghash_key, const uint8_t *head); void pmull_gcm_load_round_keys(const uint64_t rk[30], int rounds); void pmull_gcm_encrypt(int blocks, uint64_t dg[2], uint8_t dst[], const uint8_t src[], const struct internal_ghash_key *ghash_key, uint64_t ctr[], const uint64_t rk[], int rounds, uint8_t ks[]); void pmull_gcm_decrypt(int blocks, uint64_t dg[2], uint8_t dst[], const uint8_t src[], const struct internal_ghash_key *ghash_key, uint64_t ctr[], const uint64_t rk[], int rounds); uint32_t pmull_gcm_aes_sub(uint32_t input); void pmull_gcm_encrypt_block(uint8_t dst[], const uint8_t src[], int rounds); #endif /*__GHASH_CE_CORE_H*/