From patchwork Thu Apr 21 16:24:55 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Horia Geanta X-Patchwork-Id: 8902791 X-Patchwork-Delegate: herbert@gondor.apana.org.au Return-Path: X-Original-To: patchwork-linux-crypto@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id E7F9FBF29F for ; Thu, 21 Apr 2016 16:25:24 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id C64162034F for ; Thu, 21 Apr 2016 16:25:23 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 5448F2034C for ; Thu, 21 Apr 2016 16:25:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752291AbcDUQZS (ORCPT ); Thu, 21 Apr 2016 12:25:18 -0400 Received: from mail-bn1on0083.outbound.protection.outlook.com ([157.56.110.83]:32768 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752059AbcDUQZR (ORCPT ); Thu, 21 Apr 2016 12:25:17 -0400 X-Greylist: delayed 167724 seconds by postgrey-1.27 at vger.kernel.org; Thu, 21 Apr 2016 12:25:16 EDT Received: from BLUPR03CA010.namprd03.prod.outlook.com (10.255.124.27) by BY2PR0301MB0711.namprd03.prod.outlook.com (10.160.63.153) with Microsoft SMTP Server (TLS) id 15.1.453.26; Thu, 21 Apr 2016 16:25:13 +0000 Received: from BN1BFFO11FD019.protection.gbl (10.255.124.4) by BLUPR03CA010.outlook.office365.com (10.255.124.27) with Microsoft SMTP Server (TLS) id 15.1.453.26 via Frontend Transport; Thu, 21 Apr 2016 16:25:12 +0000 Authentication-Results: spf=fail (sender IP is 192.88.158.2) smtp.mailfrom=nxp.com; davemloft.net; dkim=none (message not signed) header.d=none; davemloft.net; dmarc=none action=none header.from=nxp.com; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.158.2 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.158.2; helo=az84smr01.freescale.net; Received: from az84smr01.freescale.net (192.88.158.2) by BN1BFFO11FD019.mail.protection.outlook.com (10.58.144.82) with Microsoft SMTP Server (TLS) id 15.1.472.8 via Frontend Transport; Thu, 21 Apr 2016 16:25:11 +0000 Received: from enigma.ea.freescale.net (enigma.ea.freescale.net [10.171.77.120]) by az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id u3LGP8AZ021149; Thu, 21 Apr 2016 09:25:09 -0700 From: =?UTF-8?q?Horia=20Geant=C4=83?= To: Herbert Xu CC: , Jonas Eymann , "David S. Miller" Subject: [PATCH] crypto: talitos - fix ahash algorithms registration Date: Thu, 21 Apr 2016 19:24:55 +0300 Message-ID: <1461255895-13150-1-git-send-email-horia.geanta@nxp.com> X-Mailer: git-send-email 2.4.4 In-Reply-To: References: MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131057295115837951; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.158.2; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(105606002)(81166005)(36756003)(87936001)(229853001)(85426001)(50226001)(586003)(5008740100001)(33646002)(106466001)(1220700001)(47776003)(189998001)(1096002)(6806005)(76176999)(77096005)(50986999)(23676002)(104016004)(2950100001)(2906002)(19580405001)(19580395003)(50466002)(92566002)(2870700001)(86362001)(5820100001)(4326007); DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR0301MB0711; H:az84smr01.freescale.net; FPR:; SPF:Fail; MLV:sfv; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD019; 1:k+ZOgwUQVYB+QvNwHw4UYkbL+PnqB/NTFmgaffVtaGFxa7mCKE6n4YOy6uMmwzyXhVQgRFogjQHdn8KGHz++uW2561ZEDFdSfNw1WRSj2XXVQCeBsgFEK/M/rHSCw/tQV1HyCswzt+DyLcPZQC+BPKejY/Gv72wb61WRz8eWQ+Zj5AffemUsASSNRdPEVQCsPGv41kNc9i5Q3UG19bMJ8lI6NYA8/EHFyEAD9lKC0CBcONH8PXWSq9yP1nmASbcUXcIB3tcuu4xZzPcuzXjbb1hGGr1R+4KkV5ttVk+yfVk08yCIJkBZw57eS6PvtB70YsQpyhDAUzWqO+q6XCkM5BVV1xAmbojUCRg3ZmJx+WOTa90NBQJFOj2dyVyp22KV3cTovftO2h0mNaQB8Y0BTzSsE5T4ZZl64UOIwlZG3vVAjozzLwHT4hgi75VOtyjO+84Zi+HvJ8Rf8S5FlHI5HA7mr2rHqo3FuJh2ir0RsHpwI4vBY7w/JlB6rXpXRBFH0AyrHZEz/qcxGVlVwZFrNVZsP4xyR2jbFJnez9TlmX0+dfJCUqmu000W3jMVxLd/baWNgdNN+mXSum4RnavazM1MeQDQpj2oSNct8bkTIlA= X-MS-Office365-Filtering-Correlation-Id: e9ab781f-0abf-4322-5707-08d36a0182fe X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0711; 2:s4vcJIgHf0JonY9CG4cyU7DuvV5sUe2frSommL3m8MQNuiBHDZrTwitJ8uQbCHwWOCLwOTxCxCgpcT9exHlN8uKHqF2LW1GIjtSJwq+Y/OiYpMyDNepPFZ0k88DZmR8RLGKYHLDF7GVuJhPfH5RgnUwe9FnMcXYFTR5WuW9sJd6c9AGq446VGyD8/A07uf8j; 3:rZn/FH+nPNMqFuqKxAd/oSk4TVrRcVYMSH2WWCaKiHZofVUoqTs8P5F0t2+OybgcayryBURKHNLszn2riMYPyGanqz2RBo9Y4LmRSHRb2odEL6+QjeFXpBg3H0z4I3cQoJDUtJLGycXeGuNfBWQFsholGMbUJEyelxktnPeJUuHnVvtm5QcJfHwLhblGh86zMX1blxapBgXHKA3JD7tSMuYRu3pNaTcvZkOLYd83VGA= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BY2PR0301MB0711; X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0711; 25:SdP26SrTxQHO+Vkdk7P6xB4DNOHaZRb2+Dr1oXPt8MHI9HU8WyfNzWfHuZrUNLXHLEGs5JsmyysvWjXgan0hPl6ftJYIsvBYq7D7Q+UL5V8ov6mTa/MJwthr5/gfZzFqLZAMNbXBmgY8QfBE0NABFB8unu6SrrvVWktduhHj9ka/JFEz1Zk6Y3XKJK3rIPrwzfE29vvU0dMGp7J4zCqx85TGnVIz5HuqFzvbchDqv/jUZCw/OZA4bW+D1RdmcMRnBNaQkFUmHrgJ4XkaLU2fAR7sOIV0LdV3SDAD/cqOWiU6fRgymHB2LZsPt7Kz6fqqfCqybnhgB4xLIXvOC5GMKTKIK916XQY49jLP0r+2mW13UzryAOV6plKVVnlXx6mTKzai2/zVxEiqY+rdh/rTbEByxaxgHugWEAa+Qh2xdJkJIrVemydGHIuAgBtNi+JQ9PSSRxTIgTqelGgA69OhnqvI2/OIGhhNaCs4HFLKol1BZr4SRc3cWpbwNBmyRXWK2/grehg/3DW/MbJLqTYUC+4Z4v1SuWG7z7vDf5v2siAxeAWE4aeKsKcoMMNOwu/XdiIuQUlOI7TTUuUMVYgCshPqsgDE5eidnqddJ5VlWv4sAhpLR6x8CnmVHgmhWIvDhSFtyG3bp1J3WznvkVxciJmmh1AIEYGQ2ztmKAWOk2M= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(13023025)(13015025)(13018025)(13024025)(13017025)(8121501046)(5005006)(3002001)(10201501046)(6055026); SRVR:BY2PR0301MB0711; BCL:0; PCL:0; RULEID:(400006); SRVR:BY2PR0301MB0711; X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0711; 4:mkOHriSZf5Dd22MXfAZR4OuUXTEJWPHTXahF/vVCihIuVSJsARsv+08K1ukquOlAgwliCTXNJ8IHzka2Y7Yvb7/2KB1eRiENa2V5gAwK/tZsbYBeSpiuqzFZ8Bmd5vQkWciuPPhi9ri0UGwQMjoB2XDOu+Nxz8dyzZur41ReWmMKiF2bWQaZBsssVQ+bhIplzsmXGN2trDoedVDVsznLtO9rxiYDLXLuc1Qi7vycDuRYvLpdpjEkJFqGG40YgWjrGELWU3vyTGLn9g8KkYQWi4hcOsuHGOC3CpMTwd2F2aZDBPEsH9Tut855Xj4uaiXxupXdE9apBCnrqCvs5KS/T319w6cXKKtZw3y/aJUAppU/pn7CJORF+6Eh5pzYRGvsVsgjH5Up9rqx/e1uVv/WAjIEdQoRqc8WgDFrA+qwaMHfjiWd4BXNmPkdcwYg3KOK+mr25wfv/+G0XIxalYYh2tRlt6u+MI0pK9lCQi/yw30= X-Forefront-PRVS: 091949432C X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtCWTJQUjAzMDFNQjA3MTE7MjM6V2xCWVdnK3hoSkFrdWlTUk9BSkNsUkp1?= =?utf-8?B?NkNvRW5MUkFwRHl0UkpCYlZERkoxbUZhamUxY3VwMVlhc244UTBVd0hYUmZt?= =?utf-8?B?ZUh4T1ptTVpnM2Q1OVdlVENMQ1hFd05qcUF2L0kyZ3lEM01rdHZJZlduT29r?= =?utf-8?B?TmUzR3JBRjJqTUF2bXFrNDZNTTZJWWFVTHk5TkNUVHV4VEZpSldkT3Mzd0lH?= =?utf-8?B?cENCK1hYQThUVXZ0TU0zMlpjUWlJTjZmT0NOcVJvV2hWcHFlVWtXUmVWV3F2?= =?utf-8?B?Y3F0UFU4aTZtTWtvM3J0WXo5M3Zrd0diRVRZSmhtVjAwOWU0WFM5QStxT282?= =?utf-8?B?dm1mMlJLTlJWQmw1YjRCRUUrazU0TnowdTMzVEJXY2NEbDZLQ1NxSlU0QnZQ?= =?utf-8?B?ZzdydHViWk0yUU94blV6aVp5VnN6QmtQdUxZYlNIM3FUY3FpdzRXeFdSUVgv?= =?utf-8?B?aHRobXFxSnRobEo1bWMycStOcmo3L0FoSE5penI1UVlvWnF0cnEwaXViSWJY?= =?utf-8?B?TjZYK3c2SUZzVndtS3BLSkV2NkdFL0VVNUxvWmd0dEZMWDhkTkhDQURnb1VL?= =?utf-8?B?Q0xtTzc5WXBUQ242ZThReDFLSWZ3NFZmN1Jwc04wTmlmczBndUJKYzl3T0hx?= =?utf-8?B?S2VWaWZWSWV2ZFFUWmIxcmJueUxDd2twZ1ViY2Nxc2VPZVVjK1VZVlM3NU90?= =?utf-8?B?bG1BQmgrTVF6OUlIanREdEV1VlFuMHpodEZXZXh4OXlJOHFXT3ZZUXVreXVu?= =?utf-8?B?UG5hT1ZlVG9zUTU4a3BDNFdBVEdqTVFtd3E0SFhSVEM3WXJwdGdSdkRUaktO?= =?utf-8?B?OXZZVUEzSCtaQUNqV2ZUY3h0SmpkSDh4ODJocVpxOWZaTDNxbDhWajBtTzND?= =?utf-8?B?aTY5ZzdzSytQWTZuQWpyMFJjTGErTkNHUmlCWUM1SzVsU2ZzZHF1RG5aUTU1?= =?utf-8?B?cnIwbGpHaktCVmdIYitIeXFSaWxLMjJ0cFE2SEFwYk9IdzZ6cUEzVUhOWER2?= =?utf-8?B?V3dEamlrY3BYbHRlcGVKTjZiMHhLQndqK3NGdXRHb3o0ZVk2SGp4TnlJcmZt?= =?utf-8?B?QWdlSmZMSzZJSU5FejZLNFhzeHFpWG5ZU0l3VzMxWjMyM3NZZ3c4OHVpYnpq?= =?utf-8?B?KzFFMGRmWGF0TW1SVVBZT2FFenBkMy9Hay9WM0t3czk0VFRqUEpvaE5iVTZ2?= =?utf-8?B?OTZtRHRKSlh6cTlldjdNbVhGd2VVNzdZWlRZTnIyRVh3b2NsSWE5Zzl1WVRE?= =?utf-8?B?Ylg4bkVwLzRJRjdUc3FES1ZLZ2pGQk9GZWRKejd5YkNFSHNzdWRmamYyUFhi?= =?utf-8?Q?LLbInvUhEGoYCIupsbp+6RTXw71axo9GMM=3D?= X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0711; 5:K+cDEUDk19P5urgFyrDKTrdCq2m7iEUGLnSkIcMTaHuEnoswsbTQt8RoSIXZnsCoSResLK3JebFg8xgwDIkSfQyA9zkzsbJDUqwXlh1Bbam7CTVuZLH+GgN8MKxWIQcrV88y51uso/LzxAHlwIigqWqEOUQtlxvO4DUH/wmHtnc=; 24:n4/s7lcLkYIV4OMxlkDuAqGknRw6AP8beYzRlsfMP9gPmzPochwMXoTH8S2VN9tWkxpXqRFK3jMJlCJxOxZUMmnI/ry+b9NKZre472d04kU= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2016 16:25:11.2093 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.158.2]; Helo=[az84smr01.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR0301MB0711 Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org X-Spam-Status: No, score=-7.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Provide hardware state import/export functionality, as mandated by commit 8996eafdcbad ("crypto: ahash - ensure statesize is non-zero") Cc: # 4.3+ Reported-by: Jonas Eymann Signed-off-by: Horia Geant? --- drivers/crypto/talitos.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/drivers/crypto/talitos.c b/drivers/crypto/talitos.c index aae05547b924..b7ee8d30147d 100644 --- a/drivers/crypto/talitos.c +++ b/drivers/crypto/talitos.c @@ -835,6 +835,16 @@ struct talitos_ahash_req_ctx { struct scatterlist *psrc; }; +struct talitos_export_state { + u32 hw_context[TALITOS_MDEU_MAX_CONTEXT_SIZE / sizeof(u32)]; + u8 buf[HASH_MAX_BLOCK_SIZE]; + unsigned int swinit; + unsigned int first; + unsigned int last; + unsigned int to_hash_later; + unsigned int nbuf; +}; + static int aead_setkey(struct crypto_aead *authenc, const u8 *key, unsigned int keylen) { @@ -1981,6 +1991,46 @@ static int ahash_digest(struct ahash_request *areq) return ahash_process_req(areq, areq->nbytes); } +static int ahash_export(struct ahash_request *areq, void *out) +{ + struct talitos_ahash_req_ctx *req_ctx = ahash_request_ctx(areq); + struct talitos_export_state *export = out; + + memcpy(export->hw_context, req_ctx->hw_context, + req_ctx->hw_context_size); + memcpy(export->buf, req_ctx->buf, req_ctx->nbuf); + export->swinit = req_ctx->swinit; + export->first = req_ctx->first; + export->last = req_ctx->last; + export->to_hash_later = req_ctx->to_hash_later; + export->nbuf = req_ctx->nbuf; + + return 0; +} + +static int ahash_import(struct ahash_request *areq, const void *in) +{ + struct talitos_ahash_req_ctx *req_ctx = ahash_request_ctx(areq); + struct crypto_ahash *tfm = crypto_ahash_reqtfm(areq); + const struct talitos_export_state *export = in; + + memset(req_ctx, 0, sizeof(*req_ctx)); + req_ctx->hw_context_size = + (crypto_ahash_digestsize(tfm) <= SHA256_DIGEST_SIZE) + ? TALITOS_MDEU_CONTEXT_SIZE_MD5_SHA1_SHA256 + : TALITOS_MDEU_CONTEXT_SIZE_SHA384_SHA512; + memcpy(req_ctx->hw_context, export->hw_context, + req_ctx->hw_context_size); + memcpy(req_ctx->buf, export->buf, export->nbuf); + req_ctx->swinit = export->swinit; + req_ctx->first = export->first; + req_ctx->last = export->last; + req_ctx->to_hash_later = export->to_hash_later; + req_ctx->nbuf = export->nbuf; + + return 0; +} + struct keyhash_result { struct completion completion; int err; @@ -2458,6 +2508,7 @@ static struct talitos_alg_template driver_algs[] = { { .type = CRYPTO_ALG_TYPE_AHASH, .alg.hash = { .halg.digestsize = MD5_DIGEST_SIZE, + .halg.statesize = sizeof(struct talitos_export_state), .halg.base = { .cra_name = "md5", .cra_driver_name = "md5-talitos", @@ -2473,6 +2524,7 @@ static struct talitos_alg_template driver_algs[] = { { .type = CRYPTO_ALG_TYPE_AHASH, .alg.hash = { .halg.digestsize = SHA1_DIGEST_SIZE, + .halg.statesize = sizeof(struct talitos_export_state), .halg.base = { .cra_name = "sha1", .cra_driver_name = "sha1-talitos", @@ -2488,6 +2540,7 @@ static struct talitos_alg_template driver_algs[] = { { .type = CRYPTO_ALG_TYPE_AHASH, .alg.hash = { .halg.digestsize = SHA224_DIGEST_SIZE, + .halg.statesize = sizeof(struct talitos_export_state), .halg.base = { .cra_name = "sha224", .cra_driver_name = "sha224-talitos", @@ -2503,6 +2556,7 @@ static struct talitos_alg_template driver_algs[] = { { .type = CRYPTO_ALG_TYPE_AHASH, .alg.hash = { .halg.digestsize = SHA256_DIGEST_SIZE, + .halg.statesize = sizeof(struct talitos_export_state), .halg.base = { .cra_name = "sha256", .cra_driver_name = "sha256-talitos", @@ -2518,6 +2572,7 @@ static struct talitos_alg_template driver_algs[] = { { .type = CRYPTO_ALG_TYPE_AHASH, .alg.hash = { .halg.digestsize = SHA384_DIGEST_SIZE, + .halg.statesize = sizeof(struct talitos_export_state), .halg.base = { .cra_name = "sha384", .cra_driver_name = "sha384-talitos", @@ -2533,6 +2588,7 @@ static struct talitos_alg_template driver_algs[] = { { .type = CRYPTO_ALG_TYPE_AHASH, .alg.hash = { .halg.digestsize = SHA512_DIGEST_SIZE, + .halg.statesize = sizeof(struct talitos_export_state), .halg.base = { .cra_name = "sha512", .cra_driver_name = "sha512-talitos", @@ -2548,6 +2604,7 @@ static struct talitos_alg_template driver_algs[] = { { .type = CRYPTO_ALG_TYPE_AHASH, .alg.hash = { .halg.digestsize = MD5_DIGEST_SIZE, + .halg.statesize = sizeof(struct talitos_export_state), .halg.base = { .cra_name = "hmac(md5)", .cra_driver_name = "hmac-md5-talitos", @@ -2563,6 +2620,7 @@ static struct talitos_alg_template driver_algs[] = { { .type = CRYPTO_ALG_TYPE_AHASH, .alg.hash = { .halg.digestsize = SHA1_DIGEST_SIZE, + .halg.statesize = sizeof(struct talitos_export_state), .halg.base = { .cra_name = "hmac(sha1)", .cra_driver_name = "hmac-sha1-talitos", @@ -2578,6 +2636,7 @@ static struct talitos_alg_template driver_algs[] = { { .type = CRYPTO_ALG_TYPE_AHASH, .alg.hash = { .halg.digestsize = SHA224_DIGEST_SIZE, + .halg.statesize = sizeof(struct talitos_export_state), .halg.base = { .cra_name = "hmac(sha224)", .cra_driver_name = "hmac-sha224-talitos", @@ -2593,6 +2652,7 @@ static struct talitos_alg_template driver_algs[] = { { .type = CRYPTO_ALG_TYPE_AHASH, .alg.hash = { .halg.digestsize = SHA256_DIGEST_SIZE, + .halg.statesize = sizeof(struct talitos_export_state), .halg.base = { .cra_name = "hmac(sha256)", .cra_driver_name = "hmac-sha256-talitos", @@ -2608,6 +2668,7 @@ static struct talitos_alg_template driver_algs[] = { { .type = CRYPTO_ALG_TYPE_AHASH, .alg.hash = { .halg.digestsize = SHA384_DIGEST_SIZE, + .halg.statesize = sizeof(struct talitos_export_state), .halg.base = { .cra_name = "hmac(sha384)", .cra_driver_name = "hmac-sha384-talitos", @@ -2623,6 +2684,7 @@ static struct talitos_alg_template driver_algs[] = { { .type = CRYPTO_ALG_TYPE_AHASH, .alg.hash = { .halg.digestsize = SHA512_DIGEST_SIZE, + .halg.statesize = sizeof(struct talitos_export_state), .halg.base = { .cra_name = "hmac(sha512)", .cra_driver_name = "hmac-sha512-talitos", @@ -2814,6 +2876,8 @@ static struct talitos_crypto_alg *talitos_alg_alloc(struct device *dev, t_alg->algt.alg.hash.finup = ahash_finup; t_alg->algt.alg.hash.digest = ahash_digest; t_alg->algt.alg.hash.setkey = ahash_setkey; + t_alg->algt.alg.hash.import = ahash_import; + t_alg->algt.alg.hash.export = ahash_export; if (!(priv->features & TALITOS_FTR_HMAC_OK) && !strncmp(alg->cra_name, "hmac", 4)) {