#include "aes-internal.h"
#include "chacha-internal.h"
-#include "gcm.h"
-#include "gcm-internal.h"
+#include "ghash-internal.h"
#include "fat-setup.h"
/* Defines from arch/powerpc/include/uapi/asm/cputable.h in Linux kernel */
DECLARE_FAT_FUNC_VAR(aes_decrypt, aes_crypt_internal_func, c)
DECLARE_FAT_FUNC_VAR(aes_decrypt, aes_crypt_internal_func, ppc64)
-DECLARE_FAT_FUNC(_nettle_gcm_init_key, gcm_init_key_func)
-DECLARE_FAT_FUNC_VAR(gcm_init_key, gcm_init_key_func, c)
-DECLARE_FAT_FUNC_VAR(gcm_init_key, gcm_init_key_func, ppc64)
+DECLARE_FAT_FUNC(_nettle_ghash_set_key, ghash_set_key_func)
+DECLARE_FAT_FUNC_VAR(ghash_set_key, ghash_set_key_func, c)
+DECLARE_FAT_FUNC_VAR(ghash_set_key, ghash_set_key_func, ppc64)
-DECLARE_FAT_FUNC(_nettle_gcm_hash, gcm_hash_func)
-DECLARE_FAT_FUNC_VAR(gcm_hash, gcm_hash_func, c)
-DECLARE_FAT_FUNC_VAR(gcm_hash, gcm_hash_func, ppc64)
+DECLARE_FAT_FUNC(_nettle_ghash_update, ghash_update_func)
+DECLARE_FAT_FUNC_VAR(ghash_update, ghash_update_func, c)
+DECLARE_FAT_FUNC_VAR(ghash_update, ghash_update_func, ppc64)
DECLARE_FAT_FUNC(_nettle_chacha_core, chacha_core_func)
DECLARE_FAT_FUNC_VAR(chacha_core, chacha_core_func, c);
_nettle_aes_encrypt_vec = _nettle_aes_encrypt_ppc64;
_nettle_aes_decrypt_vec = _nettle_aes_decrypt_ppc64;
- /* Make sure _nettle_gcm_init_key_vec function is compatible
- with _nettle_gcm_hash_vec function e.g. _nettle_gcm_init_key_c()
+ /* Make sure _nettle_ghash_set_key_vec function is compatible
+ with _nettle_ghash_update_vec function e.g. _nettle_ghash_key_c()
fills gcm_key table with values that are incompatible with
- _nettle_gcm_hash_ppc64() */
- _nettle_gcm_init_key_vec = _nettle_gcm_init_key_ppc64;
- _nettle_gcm_hash_vec = _nettle_gcm_hash_ppc64;
+ _nettle_ghash_update_arm64() */
+ _nettle_ghash_set_key_vec = _nettle_ghash_set_key_ppc64;
+ _nettle_ghash_update_vec = _nettle_ghash_update_ppc64;
}
else
{
_nettle_aes_encrypt_vec = _nettle_aes_encrypt_c;
_nettle_aes_decrypt_vec = _nettle_aes_decrypt_c;
- _nettle_gcm_init_key_vec = _nettle_gcm_init_key_c;
- _nettle_gcm_hash_vec = _nettle_gcm_hash_c;
+ _nettle_ghash_set_key_vec = _nettle_ghash_set_key_c;
+ _nettle_ghash_update_vec = _nettle_ghash_update_c;
}
if (features.have_altivec)
{
const uint8_t *src),
(rounds, keys, T, length, dst, src))
-DEFINE_FAT_FUNC(_nettle_gcm_init_key, void,
- (union nettle_block16 *table),
- (table))
-
-DEFINE_FAT_FUNC(_nettle_gcm_hash, void,
- (const struct gcm_key *key, union nettle_block16 *x,
- size_t length, const uint8_t *data),
- (key, x, length, data))
+DEFINE_FAT_FUNC(_nettle_ghash_set_key, void,
+ (struct gcm_key *ctx, const union nettle_block16 *key),
+ (ctx, key))
+DEFINE_FAT_FUNC(_nettle_ghash_update, const uint8_t *,
+ (const struct gcm_key *ctx, union nettle_block16 *state,
+ size_t blocks, const uint8_t *data),
+ (ctx, state, blocks, data))
DEFINE_FAT_FUNC(_nettle_chacha_core, void,
(uint32_t *dst, const uint32_t *src, unsigned rounds),
--- /dev/null
+C powerpc64/fat/ghash-update.asm
+
+ifelse(`
+ Copyright (C) 2020 Mamone Tarsha
+
+ This file is part of GNU Nettle.
+
+ GNU Nettle is free software: you can redistribute it and/or
+ modify it under the terms of either:
+
+ * the GNU Lesser General Public License as published by the Free
+ Software Foundation; either version 3 of the License, or (at your
+ option) any later version.
+
+ or
+
+ * the GNU General Public License as published by the Free
+ Software Foundation; either version 2 of the License, or (at your
+ option) any later version.
+
+ or both in parallel, as here.
+
+ GNU Nettle is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received copies of the GNU General Public License and
+ the GNU Lesser General Public License along with this program. If
+ not, see http://www.gnu.org/licenses/.
+')
+
+dnl picked up by configure
+dnl PROLOGUE(_nettle_ghash_update)
+
+define(`fat_transform', `$1_ppc64')
+include_src(`powerpc64/p8/ghash-update.asm')