#include <crypto/lrw.h>
#include <crypto/xts.h>
-#if defined(CONFIG_CRYPTO_LRW) || defined(CONFIG_CRYPTO_LRW_MODULE)
-#define HAS_LRW
-#endif
-
-#if defined(CONFIG_CRYPTO_XTS) || defined(CONFIG_CRYPTO_XTS_MODULE)
-#define HAS_XTS
-#endif
-
/* regular block cipher functions from twofish_x86_64 module */
asmlinkage void twofish_enc_blk(struct twofish_ctx *ctx, u8 *dst,
const u8 *src);
},
};
-#if defined(HAS_LRW) || defined(HAS_XTS)
-
static void encrypt_callback(void *priv, u8 *srcdst, unsigned int nbytes)
{
const unsigned int bsize = TF_BLOCK_SIZE;
twofish_dec_blk(ctx, srcdst, srcdst);
}
-#endif
-
-#ifdef HAS_LRW
-
struct twofish_lrw_ctx {
struct lrw_table_ctx lrw_table;
struct twofish_ctx twofish_ctx;
},
};
-#endif
-
-#ifdef HAS_XTS
-
struct twofish_xts_ctx {
struct twofish_ctx tweak_ctx;
struct twofish_ctx crypt_ctx;
},
};
-#endif
-
int __init init(void)
{
int err;
err = crypto_register_alg(&blk_ctr_alg);
if (err)
goto ctr_err;
-#ifdef HAS_LRW
err = crypto_register_alg(&blk_lrw_alg);
if (err)
goto blk_lrw_err;
-#endif
-#ifdef HAS_XTS
err = crypto_register_alg(&blk_xts_alg);
if (err)
goto blk_xts_err;
-#endif
return 0;
-#ifdef HAS_XTS
crypto_unregister_alg(&blk_xts_alg);
blk_xts_err:
-#endif
-#ifdef HAS_LRW
crypto_unregister_alg(&blk_lrw_alg);
blk_lrw_err:
-#endif
crypto_unregister_alg(&blk_ctr_alg);
ctr_err:
crypto_unregister_alg(&blk_cbc_alg);
void __exit fini(void)
{
-#ifdef HAS_XTS
crypto_unregister_alg(&blk_xts_alg);
-#endif
-#ifdef HAS_LRW
crypto_unregister_alg(&blk_lrw_alg);
-#endif
crypto_unregister_alg(&blk_ctr_alg);
crypto_unregister_alg(&blk_cbc_alg);
crypto_unregister_alg(&blk_ecb_alg);