OpenWrt – Rev 3

Subversion Repositories:
Rev:
--- a/drivers/crypto/mxs-dcp.c
+++ b/drivers/crypto/mxs-dcp.c
@@ -770,6 +770,24 @@ static void dcp_sha_cra_exit(struct cryp
 {
 }
 
+static int dcp_sha_export(struct ahash_request *req, void *out)
+{
+       struct dcp_sha_req_ctx *rctx = ahash_request_ctx(req);
+
+       memcpy(out, rctx, sizeof(struct dcp_sha_req_ctx));
+
+       return 0;
+}
+
+static int dcp_sha_import(struct ahash_request *req, const void *in)
+{
+       struct dcp_sha_req_ctx *rctx = ahash_request_ctx(req);
+
+       memcpy(rctx, in, sizeof(struct dcp_sha_req_ctx));
+
+       return 0;
+}
+
 /* AES 128 ECB and AES 128 CBC */
 static struct crypto_alg dcp_aes_algs[] = {
        {
@@ -829,8 +847,11 @@ static struct ahash_alg dcp_sha1_alg = {
        .final  = dcp_sha_final,
        .finup  = dcp_sha_finup,
        .digest = dcp_sha_digest,
+       .import = dcp_sha_import,
+       .export = dcp_sha_export,
        .halg   = {
                .digestsize     = SHA1_DIGEST_SIZE,
+               .statesize      = sizeof(struct dcp_sha_req_ctx),
                .base           = {
                        .cra_name               = "sha1",
                        .cra_driver_name        = "sha1-dcp",
@@ -853,8 +874,11 @@ static struct ahash_alg dcp_sha256_alg =
        .final  = dcp_sha_final,
        .finup  = dcp_sha_finup,
        .digest = dcp_sha_digest,
+       .import = dcp_sha_import,
+       .export = dcp_sha_export,
        .halg   = {
                .digestsize     = SHA256_DIGEST_SIZE,
+               .statesize      = sizeof(struct dcp_sha_req_ctx),
                .base           = {
                        .cra_name               = "sha256",
                        .cra_driver_name        = "sha256-dcp",