linux/include/crypto/internal/skcipher.h

/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * Symmetric key ciphers.
 * 
 * Copyright (c) 2007 Herbert Xu <[email protected]>
 */

#ifndef _CRYPTO_INTERNAL_SKCIPHER_H
#define _CRYPTO_INTERNAL_SKCIPHER_H

#include <crypto/algapi.h>
#include <crypto/internal/cipher.h>
#include <crypto/skcipher.h>
#include <linux/list.h>
#include <linux/types.h>

/*
 * Set this if your algorithm is sync but needs a reqsize larger
 * than MAX_SYNC_SKCIPHER_REQSIZE.
 *
 * Reuse bit that is specific to hash algorithms.
 */
#define CRYPTO_ALG_SKCIPHER_REQSIZE_LARGE

struct aead_request;
struct rtattr;

struct skcipher_instance {};

struct lskcipher_instance {};

struct crypto_skcipher_spawn {};

struct crypto_lskcipher_spawn {};

struct skcipher_walk {};

static inline struct crypto_instance *skcipher_crypto_instance(
	struct skcipher_instance *inst)
{}

static inline struct crypto_instance *lskcipher_crypto_instance(
	struct lskcipher_instance *inst)
{}

static inline struct skcipher_instance *skcipher_alg_instance(
	struct crypto_skcipher *skcipher)
{}

static inline struct lskcipher_instance *lskcipher_alg_instance(
	struct crypto_lskcipher *lskcipher)
{}

static inline void *skcipher_instance_ctx(struct skcipher_instance *inst)
{}

static inline void *lskcipher_instance_ctx(struct lskcipher_instance *inst)
{}

static inline void skcipher_request_complete(struct skcipher_request *req, int err)
{}

int crypto_grab_skcipher(struct crypto_skcipher_spawn *spawn,
			 struct crypto_instance *inst,
			 const char *name, u32 type, u32 mask);

int crypto_grab_lskcipher(struct crypto_lskcipher_spawn *spawn,
			  struct crypto_instance *inst,
			  const char *name, u32 type, u32 mask);

static inline void crypto_drop_skcipher(struct crypto_skcipher_spawn *spawn)
{}

static inline void crypto_drop_lskcipher(struct crypto_lskcipher_spawn *spawn)
{}

static inline struct lskcipher_alg *crypto_lskcipher_spawn_alg(
	struct crypto_lskcipher_spawn *spawn)
{}

static inline struct skcipher_alg_common *crypto_spawn_skcipher_alg_common(
	struct crypto_skcipher_spawn *spawn)
{}

static inline struct lskcipher_alg *crypto_spawn_lskcipher_alg(
	struct crypto_lskcipher_spawn *spawn)
{}

static inline struct crypto_skcipher *crypto_spawn_skcipher(
	struct crypto_skcipher_spawn *spawn)
{}

static inline struct crypto_lskcipher *crypto_spawn_lskcipher(
	struct crypto_lskcipher_spawn *spawn)
{}

static inline void crypto_skcipher_set_reqsize(
	struct crypto_skcipher *skcipher, unsigned int reqsize)
{}

static inline void crypto_skcipher_set_reqsize_dma(
	struct crypto_skcipher *skcipher, unsigned int reqsize)
{}

int crypto_register_skcipher(struct skcipher_alg *alg);
void crypto_unregister_skcipher(struct skcipher_alg *alg);
int crypto_register_skciphers(struct skcipher_alg *algs, int count);
void crypto_unregister_skciphers(struct skcipher_alg *algs, int count);
int skcipher_register_instance(struct crypto_template *tmpl,
			       struct skcipher_instance *inst);

int crypto_register_lskcipher(struct lskcipher_alg *alg);
void crypto_unregister_lskcipher(struct lskcipher_alg *alg);
int crypto_register_lskciphers(struct lskcipher_alg *algs, int count);
void crypto_unregister_lskciphers(struct lskcipher_alg *algs, int count);
int lskcipher_register_instance(struct crypto_template *tmpl,
				struct lskcipher_instance *inst);

int skcipher_walk_done(struct skcipher_walk *walk, int err);
int skcipher_walk_virt(struct skcipher_walk *walk,
		       struct skcipher_request *req,
		       bool atomic);
int skcipher_walk_async(struct skcipher_walk *walk,
			struct skcipher_request *req);
int skcipher_walk_aead_encrypt(struct skcipher_walk *walk,
			       struct aead_request *req, bool atomic);
int skcipher_walk_aead_decrypt(struct skcipher_walk *walk,
			       struct aead_request *req, bool atomic);
void skcipher_walk_complete(struct skcipher_walk *walk, int err);

static inline void skcipher_walk_abort(struct skcipher_walk *walk)
{}

static inline void *crypto_skcipher_ctx(struct crypto_skcipher *tfm)
{}

static inline void *crypto_lskcipher_ctx(struct crypto_lskcipher *tfm)
{}

static inline void *crypto_skcipher_ctx_dma(struct crypto_skcipher *tfm)
{}

static inline void *skcipher_request_ctx(struct skcipher_request *req)
{}

static inline void *skcipher_request_ctx_dma(struct skcipher_request *req)
{}

static inline u32 skcipher_request_flags(struct skcipher_request *req)
{}

/* Helpers for simple block cipher modes of operation */
struct skcipher_ctx_simple {};
static inline struct crypto_cipher *
skcipher_cipher_simple(struct crypto_skcipher *tfm)
{}

struct skcipher_instance *skcipher_alloc_instance_simple(
	struct crypto_template *tmpl, struct rtattr **tb);

static inline struct crypto_alg *skcipher_ialg_simple(
	struct skcipher_instance *inst)
{}

static inline struct crypto_lskcipher *lskcipher_cipher_simple(
	struct crypto_lskcipher *tfm)
{}

struct lskcipher_instance *lskcipher_alloc_instance_simple(
	struct crypto_template *tmpl, struct rtattr **tb);

static inline struct lskcipher_alg *lskcipher_ialg_simple(
	struct lskcipher_instance *inst)
{}

#endif	/* _CRYPTO_INTERNAL_SKCIPHER_H */