brintos

brintos / linux-shallow public Read only

0
0
Text · 3.7 KiB · 545dbef Raw
108 lines · c
1/* SPDX-License-Identifier: GPL-2.0-or-later */2/*3 * Crypto engine API4 *5 * Copyright (c) 2016 Baolin Wang <baolin.wang@linaro.org>6 */7#ifndef _CRYPTO_ENGINE_H8#define _CRYPTO_ENGINE_H9 10#include <crypto/aead.h>11#include <crypto/akcipher.h>12#include <crypto/hash.h>13#include <crypto/kpp.h>14#include <crypto/skcipher.h>15#include <linux/types.h>16 17struct crypto_engine;18struct device;19 20/*21 * struct crypto_engine_op - crypto hardware engine operations22 * @do_one_request: do encryption for current request23 */24struct crypto_engine_op {25	int (*do_one_request)(struct crypto_engine *engine,26			      void *areq);27};28 29struct aead_engine_alg {30	struct aead_alg base;31	struct crypto_engine_op op;32};33 34struct ahash_engine_alg {35	struct ahash_alg base;36	struct crypto_engine_op op;37};38 39struct akcipher_engine_alg {40	struct akcipher_alg base;41	struct crypto_engine_op op;42};43 44struct kpp_engine_alg {45	struct kpp_alg base;46	struct crypto_engine_op op;47};48 49struct skcipher_engine_alg {50	struct skcipher_alg base;51	struct crypto_engine_op op;52};53 54int crypto_transfer_aead_request_to_engine(struct crypto_engine *engine,55					   struct aead_request *req);56int crypto_transfer_akcipher_request_to_engine(struct crypto_engine *engine,57					       struct akcipher_request *req);58int crypto_transfer_hash_request_to_engine(struct crypto_engine *engine,59					       struct ahash_request *req);60int crypto_transfer_kpp_request_to_engine(struct crypto_engine *engine,61					  struct kpp_request *req);62int crypto_transfer_skcipher_request_to_engine(struct crypto_engine *engine,63					       struct skcipher_request *req);64void crypto_finalize_aead_request(struct crypto_engine *engine,65				  struct aead_request *req, int err);66void crypto_finalize_akcipher_request(struct crypto_engine *engine,67				      struct akcipher_request *req, int err);68void crypto_finalize_hash_request(struct crypto_engine *engine,69				  struct ahash_request *req, int err);70void crypto_finalize_kpp_request(struct crypto_engine *engine,71				 struct kpp_request *req, int err);72void crypto_finalize_skcipher_request(struct crypto_engine *engine,73				      struct skcipher_request *req, int err);74int crypto_engine_start(struct crypto_engine *engine);75int crypto_engine_stop(struct crypto_engine *engine);76struct crypto_engine *crypto_engine_alloc_init(struct device *dev, bool rt);77struct crypto_engine *crypto_engine_alloc_init_and_set(struct device *dev,78						       bool retry_support,79						       int (*cbk_do_batch)(struct crypto_engine *engine),80						       bool rt, int qlen);81void crypto_engine_exit(struct crypto_engine *engine);82 83int crypto_engine_register_aead(struct aead_engine_alg *alg);84void crypto_engine_unregister_aead(struct aead_engine_alg *alg);85int crypto_engine_register_aeads(struct aead_engine_alg *algs, int count);86void crypto_engine_unregister_aeads(struct aead_engine_alg *algs, int count);87 88int crypto_engine_register_ahash(struct ahash_engine_alg *alg);89void crypto_engine_unregister_ahash(struct ahash_engine_alg *alg);90int crypto_engine_register_ahashes(struct ahash_engine_alg *algs, int count);91void crypto_engine_unregister_ahashes(struct ahash_engine_alg *algs,92				      int count);93 94int crypto_engine_register_akcipher(struct akcipher_engine_alg *alg);95void crypto_engine_unregister_akcipher(struct akcipher_engine_alg *alg);96 97int crypto_engine_register_kpp(struct kpp_engine_alg *alg);98void crypto_engine_unregister_kpp(struct kpp_engine_alg *alg);99 100int crypto_engine_register_skcipher(struct skcipher_engine_alg *alg);101void crypto_engine_unregister_skcipher(struct skcipher_engine_alg *alg);102int crypto_engine_register_skciphers(struct skcipher_engine_alg *algs,103				     int count);104void crypto_engine_unregister_skciphers(struct skcipher_engine_alg *algs,105					int count);106 107#endif /* _CRYPTO_ENGINE_H */108