#include <crypto/internal/skcipher.h>
#include <crypto/scatterwalk.h>
#include <linux/err.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/scatterlist.h>
#include <linux/slab.h>
#include <crypto/b128ops.h>
#include <crypto/gf128mul.h>
#define LRW_BLOCK_SIZE …
struct lrw_tfm_ctx { … };
struct lrw_request_ctx { … };
static inline void lrw_setbit128_bbe(void *b, int bit)
{ … }
static int lrw_setkey(struct crypto_skcipher *parent, const u8 *key,
unsigned int keylen)
{ … }
static int lrw_next_index(u32 *counter)
{ … }
static int lrw_xor_tweak(struct skcipher_request *req, bool second_pass)
{ … }
static int lrw_xor_tweak_pre(struct skcipher_request *req)
{ … }
static int lrw_xor_tweak_post(struct skcipher_request *req)
{ … }
static void lrw_crypt_done(void *data, int err)
{ … }
static void lrw_init_crypt(struct skcipher_request *req)
{ … }
static int lrw_encrypt(struct skcipher_request *req)
{ … }
static int lrw_decrypt(struct skcipher_request *req)
{ … }
static int lrw_init_tfm(struct crypto_skcipher *tfm)
{ … }
static void lrw_exit_tfm(struct crypto_skcipher *tfm)
{ … }
static void lrw_free_instance(struct skcipher_instance *inst)
{ … }
static int lrw_create(struct crypto_template *tmpl, struct rtattr **tb)
{ … }
static struct crypto_template lrw_tmpl = …;
static int __init lrw_module_init(void)
{ … }
static void __exit lrw_module_exit(void)
{ … }
subsys_initcall(lrw_module_init);
module_exit(lrw_module_exit);
MODULE_LICENSE(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_ALIAS_CRYPTO(…) …;
MODULE_SOFTDEP(…) …;