cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

camellia.h (1983B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2#ifndef ASM_X86_CAMELLIA_H
      3#define ASM_X86_CAMELLIA_H
      4
      5#include <crypto/b128ops.h>
      6#include <linux/crypto.h>
      7#include <linux/kernel.h>
      8
      9#define CAMELLIA_MIN_KEY_SIZE	16
     10#define CAMELLIA_MAX_KEY_SIZE	32
     11#define CAMELLIA_BLOCK_SIZE	16
     12#define CAMELLIA_TABLE_BYTE_LEN	272
     13#define CAMELLIA_PARALLEL_BLOCKS 2
     14
     15struct crypto_skcipher;
     16
     17struct camellia_ctx {
     18	u64 key_table[CAMELLIA_TABLE_BYTE_LEN / sizeof(u64)];
     19	u32 key_length;
     20};
     21
     22extern int __camellia_setkey(struct camellia_ctx *cctx,
     23			     const unsigned char *key,
     24			     unsigned int key_len);
     25
     26/* regular block cipher functions */
     27asmlinkage void __camellia_enc_blk(const void *ctx, u8 *dst, const u8 *src,
     28				   bool xor);
     29asmlinkage void camellia_dec_blk(const void *ctx, u8 *dst, const u8 *src);
     30
     31/* 2-way parallel cipher functions */
     32asmlinkage void __camellia_enc_blk_2way(const void *ctx, u8 *dst, const u8 *src,
     33					bool xor);
     34asmlinkage void camellia_dec_blk_2way(const void *ctx, u8 *dst, const u8 *src);
     35
     36/* 16-way parallel cipher functions (avx/aes-ni) */
     37asmlinkage void camellia_ecb_enc_16way(const void *ctx, u8 *dst, const u8 *src);
     38asmlinkage void camellia_ecb_dec_16way(const void *ctx, u8 *dst, const u8 *src);
     39
     40asmlinkage void camellia_cbc_dec_16way(const void *ctx, u8 *dst, const u8 *src);
     41
     42static inline void camellia_enc_blk(const void *ctx, u8 *dst, const u8 *src)
     43{
     44	__camellia_enc_blk(ctx, dst, src, false);
     45}
     46
     47static inline void camellia_enc_blk_xor(const void *ctx, u8 *dst, const u8 *src)
     48{
     49	__camellia_enc_blk(ctx, dst, src, true);
     50}
     51
     52static inline void camellia_enc_blk_2way(const void *ctx, u8 *dst,
     53					 const u8 *src)
     54{
     55	__camellia_enc_blk_2way(ctx, dst, src, false);
     56}
     57
     58static inline void camellia_enc_blk_xor_2way(const void *ctx, u8 *dst,
     59					     const u8 *src)
     60{
     61	__camellia_enc_blk_2way(ctx, dst, src, true);
     62}
     63
     64/* glue helpers */
     65extern void camellia_decrypt_cbc_2way(const void *ctx, u8 *dst, const u8 *src);
     66
     67#endif /* ASM_X86_CAMELLIA_H */