#include <crypto/internal/aead.h>
#include <crypto/internal/hash.h>
#include <crypto/internal/skcipher.h>
#include <crypto/authenc.h>
#include <crypto/scatterwalk.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/rtnetlink.h>
#include <linux/spinlock.h>
struct authenc_esn_instance_ctx {
struct crypto_ahash_spawn auth;
struct crypto_skcipher_spawn enc;
struct crypto_authenc_esn_ctx {
struct crypto_ahash *auth;
struct crypto_skcipher *enc;
struct crypto_sync_skcipher *null;
struct authenc_esn_request_ctx {
struct scatterlist src[2];
struct scatterlist dst[2];
static void authenc_esn_request_complete(struct aead_request *req, int err)
aead_request_complete(req, err);
static int crypto_authenc_esn_setauthsize(struct crypto_aead *authenc_esn,
if (authsize > 0 && authsize < 4)
static int crypto_authenc_esn_setkey(struct crypto_aead *authenc_esn, const u8 *key,