13387e7d69048f5ab02729825f9611754850d9a87Jussi Kivilinna#ifndef ASM_X86_SERPENT_AVX_H 23387e7d69048f5ab02729825f9611754850d9a87Jussi Kivilinna#define ASM_X86_SERPENT_AVX_H 33387e7d69048f5ab02729825f9611754850d9a87Jussi Kivilinna 43387e7d69048f5ab02729825f9611754850d9a87Jussi Kivilinna#include <linux/crypto.h> 53387e7d69048f5ab02729825f9611754850d9a87Jussi Kivilinna#include <crypto/serpent.h> 63387e7d69048f5ab02729825f9611754850d9a87Jussi Kivilinna 73387e7d69048f5ab02729825f9611754850d9a87Jussi Kivilinna#define SERPENT_PARALLEL_BLOCKS 8 83387e7d69048f5ab02729825f9611754850d9a87Jussi Kivilinna 956d76c96a9f3e39ab733c5643b3ce5a1d4be242aJussi Kivilinnastruct serpent_lrw_ctx { 1056d76c96a9f3e39ab733c5643b3ce5a1d4be242aJussi Kivilinna struct lrw_table_ctx lrw_table; 1156d76c96a9f3e39ab733c5643b3ce5a1d4be242aJussi Kivilinna struct serpent_ctx serpent_ctx; 1256d76c96a9f3e39ab733c5643b3ce5a1d4be242aJussi Kivilinna}; 1356d76c96a9f3e39ab733c5643b3ce5a1d4be242aJussi Kivilinna 1456d76c96a9f3e39ab733c5643b3ce5a1d4be242aJussi Kivilinnastruct serpent_xts_ctx { 1556d76c96a9f3e39ab733c5643b3ce5a1d4be242aJussi Kivilinna struct serpent_ctx tweak_ctx; 1656d76c96a9f3e39ab733c5643b3ce5a1d4be242aJussi Kivilinna struct serpent_ctx crypt_ctx; 1756d76c96a9f3e39ab733c5643b3ce5a1d4be242aJussi Kivilinna}; 1856d76c96a9f3e39ab733c5643b3ce5a1d4be242aJussi Kivilinna 19facd416fbc1cdee357730909a414898934f16ae1Jussi Kivilinnaasmlinkage void serpent_ecb_enc_8way_avx(struct serpent_ctx *ctx, u8 *dst, 20facd416fbc1cdee357730909a414898934f16ae1Jussi Kivilinna const u8 *src); 21facd416fbc1cdee357730909a414898934f16ae1Jussi Kivilinnaasmlinkage void serpent_ecb_dec_8way_avx(struct serpent_ctx *ctx, u8 *dst, 223387e7d69048f5ab02729825f9611754850d9a87Jussi Kivilinna const u8 *src); 233387e7d69048f5ab02729825f9611754850d9a87Jussi Kivilinna 24facd416fbc1cdee357730909a414898934f16ae1Jussi Kivilinnaasmlinkage void serpent_cbc_dec_8way_avx(struct serpent_ctx *ctx, u8 *dst, 25facd416fbc1cdee357730909a414898934f16ae1Jussi Kivilinna const u8 *src); 26facd416fbc1cdee357730909a414898934f16ae1Jussi Kivilinnaasmlinkage void serpent_ctr_8way_avx(struct serpent_ctx *ctx, u8 *dst, 27facd416fbc1cdee357730909a414898934f16ae1Jussi Kivilinna const u8 *src, le128 *iv); 283387e7d69048f5ab02729825f9611754850d9a87Jussi Kivilinna 29a05248ed2d9a83ae7c3e6db7c4ef9331c3dedc81Jussi Kivilinnaasmlinkage void serpent_xts_enc_8way_avx(struct serpent_ctx *ctx, u8 *dst, 30a05248ed2d9a83ae7c3e6db7c4ef9331c3dedc81Jussi Kivilinna const u8 *src, le128 *iv); 31a05248ed2d9a83ae7c3e6db7c4ef9331c3dedc81Jussi Kivilinnaasmlinkage void serpent_xts_dec_8way_avx(struct serpent_ctx *ctx, u8 *dst, 32a05248ed2d9a83ae7c3e6db7c4ef9331c3dedc81Jussi Kivilinna const u8 *src, le128 *iv); 33a05248ed2d9a83ae7c3e6db7c4ef9331c3dedc81Jussi Kivilinna 3456d76c96a9f3e39ab733c5643b3ce5a1d4be242aJussi Kivilinnaextern void __serpent_crypt_ctr(void *ctx, u128 *dst, const u128 *src, 3556d76c96a9f3e39ab733c5643b3ce5a1d4be242aJussi Kivilinna le128 *iv); 3656d76c96a9f3e39ab733c5643b3ce5a1d4be242aJussi Kivilinna 3756d76c96a9f3e39ab733c5643b3ce5a1d4be242aJussi Kivilinnaextern void serpent_xts_enc(void *ctx, u128 *dst, const u128 *src, le128 *iv); 3856d76c96a9f3e39ab733c5643b3ce5a1d4be242aJussi Kivilinnaextern void serpent_xts_dec(void *ctx, u128 *dst, const u128 *src, le128 *iv); 3956d76c96a9f3e39ab733c5643b3ce5a1d4be242aJussi Kivilinna 4056d76c96a9f3e39ab733c5643b3ce5a1d4be242aJussi Kivilinnaextern int lrw_serpent_setkey(struct crypto_tfm *tfm, const u8 *key, 4156d76c96a9f3e39ab733c5643b3ce5a1d4be242aJussi Kivilinna unsigned int keylen); 4256d76c96a9f3e39ab733c5643b3ce5a1d4be242aJussi Kivilinna 4356d76c96a9f3e39ab733c5643b3ce5a1d4be242aJussi Kivilinnaextern void lrw_serpent_exit_tfm(struct crypto_tfm *tfm); 4456d76c96a9f3e39ab733c5643b3ce5a1d4be242aJussi Kivilinna 4556d76c96a9f3e39ab733c5643b3ce5a1d4be242aJussi Kivilinnaextern int xts_serpent_setkey(struct crypto_tfm *tfm, const u8 *key, 4656d76c96a9f3e39ab733c5643b3ce5a1d4be242aJussi Kivilinna unsigned int keylen); 4756d76c96a9f3e39ab733c5643b3ce5a1d4be242aJussi Kivilinna 483387e7d69048f5ab02729825f9611754850d9a87Jussi Kivilinna#endif 49