#include <crypto/internal/aead.h>
#include <crypto/internal/hash.h>
#include <crypto/internal/skcipher.h>
#include <crypto/scatterwalk.h>
#include <crypto/chacha.h>
#include <crypto/poly1305.h>
#include <linux/err.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
struct chachapoly_instance_ctx { … };
struct chachapoly_ctx { … };
struct poly_req { … };
struct chacha_req { … };
struct chachapoly_req_ctx { … };
static inline void async_done_continue(struct aead_request *req, int err,
int (*cont)(struct aead_request *))
{ … }
static void chacha_iv(u8 *iv, struct aead_request *req, u32 icb)
{ … }
static int poly_verify_tag(struct aead_request *req)
{ … }
static int poly_copy_tag(struct aead_request *req)
{ … }
static void chacha_decrypt_done(void *data, int err)
{ … }
static int chacha_decrypt(struct aead_request *req)
{ … }
static int poly_tail_continue(struct aead_request *req)
{ … }
static void poly_tail_done(void *data, int err)
{ … }
static int poly_tail(struct aead_request *req)
{ … }
static void poly_cipherpad_done(void *data, int err)
{ … }
static int poly_cipherpad(struct aead_request *req)
{ … }
static void poly_cipher_done(void *data, int err)
{ … }
static int poly_cipher(struct aead_request *req)
{ … }
static void poly_adpad_done(void *data, int err)
{ … }
static int poly_adpad(struct aead_request *req)
{ … }
static void poly_ad_done(void *data, int err)
{ … }
static int poly_ad(struct aead_request *req)
{ … }
static void poly_setkey_done(void *data, int err)
{ … }
static int poly_setkey(struct aead_request *req)
{ … }
static void poly_init_done(void *data, int err)
{ … }
static int poly_init(struct aead_request *req)
{ … }
static void poly_genkey_done(void *data, int err)
{ … }
static int poly_genkey(struct aead_request *req)
{ … }
static void chacha_encrypt_done(void *data, int err)
{ … }
static int chacha_encrypt(struct aead_request *req)
{ … }
static int chachapoly_encrypt(struct aead_request *req)
{ … }
static int chachapoly_decrypt(struct aead_request *req)
{ … }
static int chachapoly_setkey(struct crypto_aead *aead, const u8 *key,
unsigned int keylen)
{ … }
static int chachapoly_setauthsize(struct crypto_aead *tfm,
unsigned int authsize)
{ … }
static int chachapoly_init(struct crypto_aead *tfm)
{ … }
static void chachapoly_exit(struct crypto_aead *tfm)
{ … }
static void chachapoly_free(struct aead_instance *inst)
{ … }
static int chachapoly_create(struct crypto_template *tmpl, struct rtattr **tb,
const char *name, unsigned int ivsize)
{ … }
static int rfc7539_create(struct crypto_template *tmpl, struct rtattr **tb)
{ … }
static int rfc7539esp_create(struct crypto_template *tmpl, struct rtattr **tb)
{ … }
static struct crypto_template rfc7539_tmpls[] = …;
static int __init chacha20poly1305_module_init(void)
{ … }
static void __exit chacha20poly1305_module_exit(void)
{ … }
subsys_initcall(chacha20poly1305_module_init);
module_exit(chacha20poly1305_module_exit);
MODULE_LICENSE(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_ALIAS_CRYPTO(…) …;
MODULE_ALIAS_CRYPTO(…) …;