crypto: caam - Use new crypto_engine_op interface
Use the new crypto_engine_op interface where the callback is stored in the algorithm object. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
d33a6a3f5a
commit
623814c040
File diff suppressed because it is too large
Load Diff
@ -66,8 +66,12 @@
|
||||
#include "key_gen.h"
|
||||
#include "caamhash_desc.h"
|
||||
#include <crypto/internal/engine.h>
|
||||
#include <crypto/internal/hash.h>
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/string.h>
|
||||
|
||||
#define CAAM_CRA_PRIORITY 3000
|
||||
|
||||
@ -89,7 +93,6 @@ static struct list_head hash_list;
|
||||
|
||||
/* ahash per-session context */
|
||||
struct caam_hash_ctx {
|
||||
struct crypto_engine_ctx enginectx;
|
||||
u32 sh_desc_update[DESC_HASH_MAX_USED_LEN] ____cacheline_aligned;
|
||||
u32 sh_desc_update_first[DESC_HASH_MAX_USED_LEN] ____cacheline_aligned;
|
||||
u32 sh_desc_fin[DESC_HASH_MAX_USED_LEN] ____cacheline_aligned;
|
||||
@ -1750,7 +1753,7 @@ static struct caam_hash_template driver_hash[] = {
|
||||
struct caam_hash_alg {
|
||||
struct list_head entry;
|
||||
int alg_type;
|
||||
struct ahash_alg ahash_alg;
|
||||
struct ahash_engine_alg ahash_alg;
|
||||
};
|
||||
|
||||
static int caam_hash_cra_init(struct crypto_tfm *tfm)
|
||||
@ -1762,7 +1765,7 @@ static int caam_hash_cra_init(struct crypto_tfm *tfm)
|
||||
struct ahash_alg *alg =
|
||||
container_of(halg, struct ahash_alg, halg);
|
||||
struct caam_hash_alg *caam_hash =
|
||||
container_of(alg, struct caam_hash_alg, ahash_alg);
|
||||
container_of(alg, struct caam_hash_alg, ahash_alg.base);
|
||||
struct caam_hash_ctx *ctx = crypto_ahash_ctx_dma(ahash);
|
||||
/* Sizes for MDHA running digests: MD5, SHA1, 224, 256, 384, 512 */
|
||||
static const u8 runninglen[] = { HASH_MSG_LEN + MD5_DIGEST_SIZE,
|
||||
@ -1853,8 +1856,6 @@ static int caam_hash_cra_init(struct crypto_tfm *tfm)
|
||||
sh_desc_digest) -
|
||||
sh_desc_update_offset;
|
||||
|
||||
ctx->enginectx.op.do_one_request = ahash_do_one_req;
|
||||
|
||||
crypto_ahash_set_reqsize_dma(ahash, sizeof(struct caam_hash_state));
|
||||
|
||||
/*
|
||||
@ -1887,7 +1888,7 @@ void caam_algapi_hash_exit(void)
|
||||
return;
|
||||
|
||||
list_for_each_entry_safe(t_alg, n, &hash_list, entry) {
|
||||
crypto_unregister_ahash(&t_alg->ahash_alg);
|
||||
crypto_engine_unregister_ahash(&t_alg->ahash_alg);
|
||||
list_del(&t_alg->entry);
|
||||
kfree(t_alg);
|
||||
}
|
||||
@ -1905,8 +1906,8 @@ caam_hash_alloc(struct caam_hash_template *template,
|
||||
if (!t_alg)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
t_alg->ahash_alg = template->template_ahash;
|
||||
halg = &t_alg->ahash_alg;
|
||||
t_alg->ahash_alg.base = template->template_ahash;
|
||||
halg = &t_alg->ahash_alg.base;
|
||||
alg = &halg->halg.base;
|
||||
|
||||
if (keyed) {
|
||||
@ -1919,7 +1920,7 @@ caam_hash_alloc(struct caam_hash_template *template,
|
||||
template->name);
|
||||
snprintf(alg->cra_driver_name, CRYPTO_MAX_ALG_NAME, "%s",
|
||||
template->driver_name);
|
||||
t_alg->ahash_alg.setkey = NULL;
|
||||
halg->setkey = NULL;
|
||||
}
|
||||
alg->cra_module = THIS_MODULE;
|
||||
alg->cra_init = caam_hash_cra_init;
|
||||
@ -1931,6 +1932,7 @@ caam_hash_alloc(struct caam_hash_template *template,
|
||||
alg->cra_flags = CRYPTO_ALG_ASYNC | CRYPTO_ALG_ALLOCATES_MEMORY;
|
||||
|
||||
t_alg->alg_type = template->alg_type;
|
||||
t_alg->ahash_alg.op.do_one_request = ahash_do_one_req;
|
||||
|
||||
return t_alg;
|
||||
}
|
||||
@ -1992,10 +1994,10 @@ int caam_algapi_hash_init(struct device *ctrldev)
|
||||
continue;
|
||||
}
|
||||
|
||||
err = crypto_register_ahash(&t_alg->ahash_alg);
|
||||
err = crypto_engine_register_ahash(&t_alg->ahash_alg);
|
||||
if (err) {
|
||||
pr_warn("%s alg registration failed: %d\n",
|
||||
t_alg->ahash_alg.halg.base.cra_driver_name,
|
||||
t_alg->ahash_alg.base.halg.base.cra_driver_name,
|
||||
err);
|
||||
kfree(t_alg);
|
||||
} else
|
||||
@ -2012,10 +2014,10 @@ int caam_algapi_hash_init(struct device *ctrldev)
|
||||
continue;
|
||||
}
|
||||
|
||||
err = crypto_register_ahash(&t_alg->ahash_alg);
|
||||
err = crypto_engine_register_ahash(&t_alg->ahash_alg);
|
||||
if (err) {
|
||||
pr_warn("%s alg registration failed: %d\n",
|
||||
t_alg->ahash_alg.halg.base.cra_driver_name,
|
||||
t_alg->ahash_alg.base.halg.base.cra_driver_name,
|
||||
err);
|
||||
kfree(t_alg);
|
||||
} else
|
||||
|
@ -18,7 +18,10 @@
|
||||
#include "caampkc.h"
|
||||
#include <crypto/internal/engine.h>
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/string.h>
|
||||
|
||||
#define DESC_RSA_PUB_LEN (2 * CAAM_CMD_SZ + SIZEOF_RSA_PUB_PDB)
|
||||
#define DESC_RSA_PRIV_F1_LEN (2 * CAAM_CMD_SZ + \
|
||||
@ -39,7 +42,7 @@ static u8 *zero_buffer;
|
||||
static bool init_done;
|
||||
|
||||
struct caam_akcipher_alg {
|
||||
struct akcipher_alg akcipher;
|
||||
struct akcipher_engine_alg akcipher;
|
||||
bool registered;
|
||||
};
|
||||
|
||||
@ -1124,8 +1127,6 @@ static int caam_rsa_init_tfm(struct crypto_akcipher *tfm)
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
ctx->enginectx.op.do_one_request = akcipher_do_one_req;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1142,7 +1143,7 @@ static void caam_rsa_exit_tfm(struct crypto_akcipher *tfm)
|
||||
}
|
||||
|
||||
static struct caam_akcipher_alg caam_rsa = {
|
||||
.akcipher = {
|
||||
.akcipher.base = {
|
||||
.encrypt = caam_rsa_enc,
|
||||
.decrypt = caam_rsa_dec,
|
||||
.set_pub_key = caam_rsa_set_pub_key,
|
||||
@ -1158,7 +1159,10 @@ static struct caam_akcipher_alg caam_rsa = {
|
||||
.cra_ctxsize = sizeof(struct caam_rsa_ctx) +
|
||||
CRYPTO_DMA_PADDING,
|
||||
},
|
||||
}
|
||||
},
|
||||
.akcipher.op = {
|
||||
.do_one_request = akcipher_do_one_req,
|
||||
},
|
||||
};
|
||||
|
||||
/* Public Key Cryptography module initialization handler */
|
||||
@ -1196,12 +1200,12 @@ int caam_pkc_init(struct device *ctrldev)
|
||||
if (!zero_buffer)
|
||||
return -ENOMEM;
|
||||
|
||||
err = crypto_register_akcipher(&caam_rsa.akcipher);
|
||||
err = crypto_engine_register_akcipher(&caam_rsa.akcipher);
|
||||
|
||||
if (err) {
|
||||
kfree(zero_buffer);
|
||||
dev_warn(ctrldev, "%s alg registration failed\n",
|
||||
caam_rsa.akcipher.base.cra_driver_name);
|
||||
caam_rsa.akcipher.base.base.cra_driver_name);
|
||||
} else {
|
||||
init_done = true;
|
||||
caam_rsa.registered = true;
|
||||
@ -1217,7 +1221,7 @@ void caam_pkc_exit(void)
|
||||
return;
|
||||
|
||||
if (caam_rsa.registered)
|
||||
crypto_unregister_akcipher(&caam_rsa.akcipher);
|
||||
crypto_engine_unregister_akcipher(&caam_rsa.akcipher);
|
||||
|
||||
kfree(zero_buffer);
|
||||
}
|
||||
|
@ -12,7 +12,6 @@
|
||||
#define _PKC_DESC_H_
|
||||
#include "compat.h"
|
||||
#include "pdb.h"
|
||||
#include <crypto/engine.h>
|
||||
|
||||
/**
|
||||
* caam_priv_key_form - CAAM RSA private key representation
|
||||
@ -88,13 +87,11 @@ struct caam_rsa_key {
|
||||
|
||||
/**
|
||||
* caam_rsa_ctx - per session context.
|
||||
* @enginectx : crypto engine context
|
||||
* @key : RSA key in DMA zone
|
||||
* @dev : device structure
|
||||
* @padding_dma : dma address of padding, for adding it to the input
|
||||
*/
|
||||
struct caam_rsa_ctx {
|
||||
struct crypto_engine_ctx enginectx;
|
||||
struct caam_rsa_key key;
|
||||
struct device *dev;
|
||||
dma_addr_t padding_dma;
|
||||
|
Loading…
Reference in New Issue
Block a user