lkml.org 
[lkml]   [2021]   [Mar]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 08/18] crypto: rsa: Move rsapad_akcipher_setup_child and callback to rsa-common
    Date
    Pull out more common code from rsa-pkcs1pad into rsa-common.

    Signed-off-by: Varad Gautam <varad.gautam@suse.com>
    ---
    crypto/rsa-common.c | 31 +++++++++++++++++++++++++++
    crypto/rsa-pkcs1pad.c | 32 ----------------------------
    include/crypto/internal/rsa-common.h | 9 ++++++++
    3 files changed, 40 insertions(+), 32 deletions(-)

    diff --git a/crypto/rsa-common.c b/crypto/rsa-common.c
    index d70d7d405165..6ed258a78287 100644
    --- a/crypto/rsa-common.c
    +++ b/crypto/rsa-common.c
    @@ -75,6 +75,37 @@ const struct rsa_asn1_template *rsa_lookup_asn1(const char *name)
    return NULL;
    }

    +void rsapad_akcipher_req_complete(struct crypto_async_request *child_async_req,
    + int err, rsa_akcipher_complete_cb cb)
    +{
    + struct akcipher_request *req = child_async_req->data;
    + struct crypto_async_request async_req;
    +
    + if (err == -EINPROGRESS)
    + return;
    +
    + async_req.data = req->base.data;
    + async_req.tfm = crypto_akcipher_tfm(crypto_akcipher_reqtfm(req));
    + async_req.flags = child_async_req->flags;
    + req->base.complete(&async_req, cb(req, err));
    +}
    +
    +void rsapad_akcipher_setup_child(struct akcipher_request *req,
    + struct scatterlist *src_sg,
    + struct scatterlist *dst_sg,
    + unsigned int src_len,
    + unsigned int dst_len,
    + crypto_completion_t cb)
    +{
    + struct crypto_akcipher *tfm = crypto_akcipher_reqtfm(req);
    + struct rsapad_tfm_ctx *ctx = akcipher_tfm_ctx(tfm);
    + struct rsapad_akciper_req_ctx *req_ctx = akcipher_request_ctx(req);
    +
    + akcipher_request_set_tfm(&req_ctx->child_req, ctx->child);
    + akcipher_request_set_callback(&req_ctx->child_req, req->base.flags, cb, req);
    + akcipher_request_set_crypt(&req_ctx->child_req, src_sg, dst_sg, src_len, dst_len);
    +}
    +
    int rsapad_set_pub_key(struct crypto_akcipher *tfm, const void *key,
    unsigned int keylen)
    {
    diff --git a/crypto/rsa-pkcs1pad.c b/crypto/rsa-pkcs1pad.c
    index 30b0193b7352..6fa207732fcb 100644
    --- a/crypto/rsa-pkcs1pad.c
    +++ b/crypto/rsa-pkcs1pad.c
    @@ -9,38 +9,6 @@
    #include <linux/module.h>
    #include <linux/random.h>

    -typedef int (*rsa_akcipher_complete_cb)(struct akcipher_request *, int);
    -static void rsapad_akcipher_req_complete(struct crypto_async_request *child_async_req,
    - int err, rsa_akcipher_complete_cb cb)
    -{
    - struct akcipher_request *req = child_async_req->data;
    - struct crypto_async_request async_req;
    -
    - if (err == -EINPROGRESS)
    - return;
    -
    - async_req.data = req->base.data;
    - async_req.tfm = crypto_akcipher_tfm(crypto_akcipher_reqtfm(req));
    - async_req.flags = child_async_req->flags;
    - req->base.complete(&async_req, cb(req, err));
    -}
    -
    -static void rsapad_akcipher_setup_child(struct akcipher_request *req,
    - struct scatterlist *src_sg,
    - struct scatterlist *dst_sg,
    - unsigned int src_len,
    - unsigned int dst_len,
    - crypto_completion_t cb)
    -{
    - struct crypto_akcipher *tfm = crypto_akcipher_reqtfm(req);
    - struct rsapad_tfm_ctx *ctx = akcipher_tfm_ctx(tfm);
    - struct rsapad_akciper_req_ctx *req_ctx = akcipher_request_ctx(req);
    -
    - akcipher_request_set_tfm(&req_ctx->child_req, ctx->child);
    - akcipher_request_set_callback(&req_ctx->child_req, req->base.flags, cb, req);
    - akcipher_request_set_crypt(&req_ctx->child_req, src_sg, dst_sg, src_len, dst_len);
    -}
    -
    static int pkcs1pad_encrypt_sign_complete(struct akcipher_request *req, int err)
    {
    struct crypto_akcipher *tfm = crypto_akcipher_reqtfm(req);
    diff --git a/include/crypto/internal/rsa-common.h b/include/crypto/internal/rsa-common.h
    index a6f20cce610a..4fa3cf5a989c 100644
    --- a/include/crypto/internal/rsa-common.h
    +++ b/include/crypto/internal/rsa-common.h
    @@ -34,6 +34,15 @@ struct rsapad_akciper_req_ctx {
    struct akcipher_request child_req;
    };

    +typedef int (*rsa_akcipher_complete_cb)(struct akcipher_request *, int);
    +void rsapad_akcipher_req_complete(struct crypto_async_request *child_async_req,
    + int err, rsa_akcipher_complete_cb cb);
    +void rsapad_akcipher_setup_child(struct akcipher_request *req,
    + struct scatterlist *src_sg,
    + struct scatterlist *dst_sg,
    + unsigned int src_len,
    + unsigned int dst_len,
    + crypto_completion_t cb);
    int rsapad_set_pub_key(struct crypto_akcipher *tfm, const void *key,
    unsigned int keylen);
    int rsapad_set_priv_key(struct crypto_akcipher *tfm, const void *key,
    --
    2.30.2
    \
     
     \ /
      Last update: 2021-03-30 22:31    [W:3.090 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site