mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-12 13:55:32 +00:00
![Kees Cook](/assets/img/avatar_default.png)
The crypto glue performed function prototype casting via macros to make indirect calls to assembly routines. Instead of performing casts at the call sites (which trips Control Flow Integrity prototype checking), switch each prototype to a common standard set of arguments which allows the removal of the existing macros. In order to keep pointer math unchanged, internal casting between u128 pointers and u8 pointers is added. Co-developed-by: João Moreira <joao.moreira@intel.com> Signed-off-by: João Moreira <joao.moreira@intel.com> Signed-off-by: Kees Cook <keescook@chromium.org> Reviewed-by: Eric Biggers <ebiggers@kernel.org> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
25 lines
953 B
C
25 lines
953 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef ASM_X86_TWOFISH_H
|
|
#define ASM_X86_TWOFISH_H
|
|
|
|
#include <linux/crypto.h>
|
|
#include <crypto/twofish.h>
|
|
#include <crypto/b128ops.h>
|
|
|
|
/* regular block cipher functions from twofish_x86_64 module */
|
|
asmlinkage void twofish_enc_blk(const void *ctx, u8 *dst, const u8 *src);
|
|
asmlinkage void twofish_dec_blk(const void *ctx, u8 *dst, const u8 *src);
|
|
|
|
/* 3-way parallel cipher functions */
|
|
asmlinkage void __twofish_enc_blk_3way(const void *ctx, u8 *dst, const u8 *src,
|
|
bool xor);
|
|
asmlinkage void twofish_dec_blk_3way(const void *ctx, u8 *dst, const u8 *src);
|
|
|
|
/* helpers from twofish_x86_64-3way module */
|
|
extern void twofish_dec_blk_cbc_3way(const void *ctx, u8 *dst, const u8 *src);
|
|
extern void twofish_enc_blk_ctr(const void *ctx, u8 *dst, const u8 *src,
|
|
le128 *iv);
|
|
extern void twofish_enc_blk_ctr_3way(const void *ctx, u8 *dst, const u8 *src,
|
|
le128 *iv);
|
|
|
|
#endif /* ASM_X86_TWOFISH_H */
|