#include <crypto/scatterwalk.h>
#include <crypto/skcipher.h>
#include <crypto/if_alg.h>
#include <linux/init.h>
#include <linux/list.h>
#include <linux/kernel.h>
#include <linux/mm.h>
#include <linux/module.h>
#include <linux/net.h>
#include <net/sock.h>
static int skcipher_sendmsg(struct socket *sock, struct msghdr *msg,
size_t size)
{ … }
static int algif_skcipher_export(struct sock *sk, struct skcipher_request *req)
{ … }
static void algif_skcipher_done(void *data, int err)
{ … }
static int _skcipher_recvmsg(struct socket *sock, struct msghdr *msg,
size_t ignored, int flags)
{ … }
static int skcipher_recvmsg(struct socket *sock, struct msghdr *msg,
size_t ignored, int flags)
{ … }
static struct proto_ops algif_skcipher_ops = …;
static int skcipher_check_key(struct socket *sock)
{ … }
static int skcipher_sendmsg_nokey(struct socket *sock, struct msghdr *msg,
size_t size)
{ … }
static int skcipher_recvmsg_nokey(struct socket *sock, struct msghdr *msg,
size_t ignored, int flags)
{ … }
static struct proto_ops algif_skcipher_ops_nokey = …;
static void *skcipher_bind(const char *name, u32 type, u32 mask)
{ … }
static void skcipher_release(void *private)
{ … }
static int skcipher_setkey(void *private, const u8 *key, unsigned int keylen)
{ … }
static void skcipher_sock_destruct(struct sock *sk)
{ … }
static int skcipher_accept_parent_nokey(void *private, struct sock *sk)
{ … }
static int skcipher_accept_parent(void *private, struct sock *sk)
{ … }
static const struct af_alg_type algif_type_skcipher = …;
static int __init algif_skcipher_init(void)
{ … }
static void __exit algif_skcipher_exit(void)
{ … }
module_init(…) …;
module_exit(algif_skcipher_exit);
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;