crypto: omap-sham - add support for export/import
authorTero Kristo <t-kristo@ti.com>
Mon, 19 Sep 2016 15:22:18 +0000 (18:22 +0300)
committerHerbert Xu <herbert@gondor.apana.org.au>
Thu, 22 Sep 2016 10:32:51 +0000 (18:32 +0800)
Now that the driver has been converted to use scatterlists for data
handling, add proper implementation for the export/import stubs also.

Signed-off-by: Tero Kristo <t-kristo@ti.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/omap-sham.c

index 412559e..8eefd79 100644 (file)
@@ -1418,12 +1418,21 @@ static void omap_sham_cra_exit(struct crypto_tfm *tfm)
 
 static int omap_sham_export(struct ahash_request *req, void *out)
 {
-       return -ENOTSUPP;
+       struct omap_sham_reqctx *rctx = ahash_request_ctx(req);
+
+       memcpy(out, rctx, sizeof(*rctx) + rctx->bufcnt);
+
+       return 0;
 }
 
 static int omap_sham_import(struct ahash_request *req, const void *in)
 {
-       return -ENOTSUPP;
+       struct omap_sham_reqctx *rctx = ahash_request_ctx(req);
+       const struct omap_sham_reqctx *ctx_in = in;
+
+       memcpy(rctx, in, sizeof(*rctx) + ctx_in->bufcnt);
+
+       return 0;
 }
 
 static struct ahash_alg algs_sha1_md5[] = {
@@ -2083,7 +2092,8 @@ static int omap_sham_probe(struct platform_device *pdev)
                        alg = &dd->pdata->algs_info[i].algs_list[j];
                        alg->export = omap_sham_export;
                        alg->import = omap_sham_import;
-                       alg->halg.statesize = sizeof(struct omap_sham_reqctx);
+                       alg->halg.statesize = sizeof(struct omap_sham_reqctx) +
+                                             BUFLEN;
                        err = crypto_register_ahash(alg);
                        if (err)
                                goto err_algs;