[linux-yocto] [PATCH] cryptodev: replace deprecated ablkcipher APIs to skcipher APIs
Yang Shi
yang.shi at windriver.com
Wed Nov 16 17:01:02 PST 2016
Due to the upstream change [1], ablkcipher APIs have bene deprecated,
so replace it to the new skcipher APIs.
[1] https://www.spinics.net/lists/linux-crypto/msg18133.html
Signed-off-by: Yang Shi <yang.shi at windriver.com>
---
drivers/staging/crypto/cryptodev/cryptlib.c | 36 ++++++++++++++---------------
drivers/staging/crypto/cryptodev/cryptlib.h | 4 ++--
drivers/staging/crypto/cryptodev/ioctl.c | 3 ++-
3 files changed, 21 insertions(+), 22 deletions(-)
diff --git a/drivers/staging/crypto/cryptodev/cryptlib.c b/drivers/staging/crypto/cryptodev/cryptlib.c
index b68f460..a6b0564 100644
--- a/drivers/staging/crypto/cryptodev/cryptlib.c
+++ b/drivers/staging/crypto/cryptodev/cryptlib.c
@@ -132,19 +132,17 @@ int cryptodev_cipher_init(struct cipher_data *out, const char *alg_name,
uint8_t *keyp, size_t keylen, int stream, int aead)
{
int ret;
- struct crypto_skcipher *tfm;
if (aead == 0) {
- struct ablkcipher_alg *alg;
+ struct skcipher_alg *alg;
- tfm = crypto_alloc_skcipher(alg_name, 0, 0);
- out->async.s->base = tfm->base;
+ out->async.s = crypto_alloc_skcipher(alg_name, 0, 0);
if (unlikely(IS_ERR(out->async.s))) {
ddebug(1, "Failed to load cipher %s", alg_name);
return -EINVAL;
}
- alg = crypto_ablkcipher_alg(out->async.s);
+ alg = crypto_skcipher_alg(out->async.s);
if (alg != NULL) {
/* Was correct key length supplied? */
if (alg->max_keysize > 0 &&
@@ -157,11 +155,11 @@ int cryptodev_cipher_init(struct cipher_data *out, const char *alg_name,
}
}
- out->blocksize = crypto_ablkcipher_blocksize(out->async.s);
- out->ivsize = crypto_ablkcipher_ivsize(out->async.s);
- out->alignmask = crypto_ablkcipher_alignmask(out->async.s);
+ out->blocksize = crypto_skcipher_blocksize(out->async.s);
+ out->ivsize = crypto_skcipher_ivsize(out->async.s);
+ out->alignmask = crypto_skcipher_alignmask(out->async.s);
- ret = crypto_ablkcipher_setkey(out->async.s, keyp, keylen);
+ ret = crypto_skcipher_setkey(out->async.s, keyp, keylen);
} else {
out->async.as = crypto_alloc_aead(alg_name, 0, 0);
if (unlikely(IS_ERR(out->async.as))) {
@@ -194,14 +192,14 @@ int cryptodev_cipher_init(struct cipher_data *out, const char *alg_name,
init_completion(&out->async.result->completion);
if (aead == 0) {
- out->async.request = ablkcipher_request_alloc(out->async.s, GFP_KERNEL);
+ out->async.request = skcipher_request_alloc(out->async.s, GFP_KERNEL);
if (unlikely(!out->async.request)) {
derr(1, "error allocating async crypto request");
ret = -ENOMEM;
goto error;
}
- ablkcipher_request_set_callback(out->async.request,
+ skcipher_request_set_callback(out->async.request,
CRYPTO_TFM_REQ_MAY_BACKLOG,
cryptodev_complete, out->async.result);
} else {
@@ -222,9 +220,9 @@ int cryptodev_cipher_init(struct cipher_data *out, const char *alg_name,
error:
if (aead == 0) {
if (out->async.request)
- ablkcipher_request_free(out->async.request);
+ skcipher_request_free(out->async.request);
if (out->async.s)
- crypto_free_ablkcipher(out->async.s);
+ crypto_free_skcipher(out->async.s);
} else {
if (out->async.arequest)
aead_request_free(out->async.arequest);
@@ -241,9 +239,9 @@ void cryptodev_cipher_deinit(struct cipher_data *cdata)
if (cdata->init) {
if (cdata->aead == 0) {
if (cdata->async.request)
- ablkcipher_request_free(cdata->async.request);
+ skcipher_request_free(cdata->async.request);
if (cdata->async.s)
- crypto_free_ablkcipher(cdata->async.s);
+ crypto_free_skcipher(cdata->async.s);
} else {
if (cdata->async.arequest)
aead_request_free(cdata->async.arequest);
@@ -292,10 +290,10 @@ ssize_t cryptodev_cipher_encrypt(struct cipher_data *cdata,
reinit_completion(&cdata->async.result->completion);
if (cdata->aead == 0) {
- ablkcipher_request_set_crypt(cdata->async.request,
+ skcipher_request_set_crypt(cdata->async.request,
(struct scatterlist *)src, dst,
len, cdata->async.iv);
- ret = crypto_ablkcipher_encrypt(cdata->async.request);
+ ret = crypto_skcipher_encrypt(cdata->async.request);
} else {
aead_request_set_crypt(cdata->async.arequest,
(struct scatterlist *)src, dst,
@@ -314,10 +312,10 @@ ssize_t cryptodev_cipher_decrypt(struct cipher_data *cdata,
reinit_completion(&cdata->async.result->completion);
if (cdata->aead == 0) {
- ablkcipher_request_set_crypt(cdata->async.request,
+ skcipher_request_set_crypt(cdata->async.request,
(struct scatterlist *)src, dst,
len, cdata->async.iv);
- ret = crypto_ablkcipher_decrypt(cdata->async.request);
+ ret = crypto_skcipher_decrypt(cdata->async.request);
} else {
aead_request_set_crypt(cdata->async.arequest,
(struct scatterlist *)src, dst,
diff --git a/drivers/staging/crypto/cryptodev/cryptlib.h b/drivers/staging/crypto/cryptodev/cryptlib.h
index 0c20092..1b3e1e8 100644
--- a/drivers/staging/crypto/cryptodev/cryptlib.h
+++ b/drivers/staging/crypto/cryptodev/cryptlib.h
@@ -10,8 +10,8 @@ struct cipher_data {
int alignmask;
struct {
/* block ciphers */
- struct crypto_ablkcipher *s;
- struct ablkcipher_request *request;
+ struct crypto_skcipher *s;
+ struct skcipher_request *request;
/* AEAD ciphers */
struct crypto_aead *as;
diff --git a/drivers/staging/crypto/cryptodev/ioctl.c b/drivers/staging/crypto/cryptodev/ioctl.c
index b23f5fd..8177c68 100644
--- a/drivers/staging/crypto/cryptodev/ioctl.c
+++ b/drivers/staging/crypto/cryptodev/ioctl.c
@@ -47,6 +47,7 @@
#include <linux/scatterlist.h>
#include <linux/rtnetlink.h>
#include <crypto/authenc.h>
+#include <crypto/skcipher.h>
#include <linux/sysctl.h>
@@ -765,7 +766,7 @@ static int get_session_info(struct fcrypt *fcr, struct session_info_op *siop)
if (ses_ptr->cdata.init) {
if (ses_ptr->cdata.aead == 0)
- tfm = crypto_ablkcipher_tfm(ses_ptr->cdata.async.s);
+ tfm = crypto_skcipher_tfm(ses_ptr->cdata.async.s);
else
tfm = crypto_aead_tfm(ses_ptr->cdata.async.as);
tfm_info_to_alg_info(&siop->cipher_info, tfm);
--
2.7.4
More information about the linux-yocto
mailing list