From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DB3BBC433F5 for ; Mon, 15 Nov 2021 07:01:25 +0000 (UTC) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 5C42661C14 for ; Mon, 15 Nov 2021 07:01:25 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 5C42661C14 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=nxp.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=lists.denx.de Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id E2EF8835CB; Mon, 15 Nov 2021 08:01:16 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="p1n4TYEJ"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 280AB83559; Mon, 15 Nov 2021 08:01:12 +0100 (CET) Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04on0623.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0e::623]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 67559835E2 for ; Mon, 15 Nov 2021 08:01:04 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=gaurav.jain@nxp.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KN+YmOcEvkm5z+cqjsTScdxdv13jybq64nOQ8wOqgvdHFcgdLBKP7edaeqtAT8+fGZ6KXyTIF9GTZmmShgzFEQTVShpWqRAcn2a/uUheuyO+lNAL3hUvx3iK4xidN258JldDcyTKUAbgeRDCiHc7klSArxXJJ4nocZDnJSWj+JFifqzHu5jNYI/VE/1WDWncHscwF4lh/UvkoFrGulSWDsIRma0ENoGzG5GGK+40ifs6iL6eP6Aj0t/MZJ4tG9spo5XenO4Vrgh8be669lHqg5oAvJKh4FDBQBxvOEdvK/DLCybTUkyUlOuFmXxXQn+Kf6DW1JyB2stkdyvH6LDm3Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=T+udgT+YqaYCTGANnldHwcNq2CLjH07BESpQrqoT0oc=; b=daDW9tY6CB07uRGugrh69B4lbVXSudApArzyloon8/O3Pm4AAALvd4J/Mg4R4x9NA+aGv4l8muE//Sd2okFQWpJfJp0uMhtxbyoHT5XZ7du1iCjbJUdDVexx7NAx+Ssv4TN2/y0+xZS2eUEbxJq/ki4QQj+9xaRvh9NkR5yCPH3ICraUNQDvelAa2LAjP6bFrzu1ICOvDzc6T1MIxsiuW/WDk1/d0Mw9FwkhjDJQhVKaaaQdxsXAbq8z1/QEQPAVTNE0rNcrvFJZatOXUqpPOvcdWstP0bHOtwDh8fKCMndISkVvT2lCNP7GUpJEi0/KILbIxYRhvOQXjATtWWeWzA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=T+udgT+YqaYCTGANnldHwcNq2CLjH07BESpQrqoT0oc=; b=p1n4TYEJVni0UAmXYpOHVQ1+tou9NRJ5/3wS5BU3qRis5ZXLArXcepk8DLCWiVmncqgPEZBzorOWnfoszOIrjgGOt+nQ/EhyULxqd8R8qfkkFHocOojgd7acq09FG+MCx5d1QLgaO8z8R2OOzang2lOyyk9MCCddXkkXUFVjFpA= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from VI1PR04MB5342.eurprd04.prod.outlook.com (2603:10a6:803:46::16) by VI1PR04MB5503.eurprd04.prod.outlook.com (2603:10a6:803:d1::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.27; Mon, 15 Nov 2021 07:01:03 +0000 Received: from VI1PR04MB5342.eurprd04.prod.outlook.com ([fe80::6d1d:3624:9588:6a99]) by VI1PR04MB5342.eurprd04.prod.outlook.com ([fe80::6d1d:3624:9588:6a99%7]) with mapi id 15.20.4690.026; Mon, 15 Nov 2021 07:01:03 +0000 From: Gaurav Jain To: u-boot@lists.denx.de Cc: Stefano Babic , Fabio Estevam , Peng Fan , Simon Glass , Priyanka Jain , Ye Li , Horia Geanta , Ji Luo , Franck Lenormand , Silvano Di Ninno , Sahil malhotra , Pankaj Gupta , Varun Sethi , "NXP i . MX U-Boot Team" , Shengzhou Liu , Mingkai Hu , Rajesh Bhagat , Meenakshi Aggarwal , Wasim Khan , Alison Wang , Pramod Kumar , Tang Yuantian , Adrian Alonso , Vladimir Oltean , Gaurav Jain Subject: [PATCH v5 02/16] crypto/fsl: Add CAAM support for bkek, random number generation Date: Mon, 15 Nov 2021 12:30:00 +0530 Message-Id: <20211115070014.17586-3-gaurav.jain@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211115070014.17586-1-gaurav.jain@nxp.com> References: <20211115070014.17586-1-gaurav.jain@nxp.com> Content-Type: text/plain X-ClientProxiedBy: SG2PR02CA0023.apcprd02.prod.outlook.com (2603:1096:3:17::35) To VI1PR04MB5342.eurprd04.prod.outlook.com (2603:10a6:803:46::16) MIME-Version: 1.0 Received: from lsv03326.swis.in-blr01.nxp.com (14.142.151.118) by SG2PR02CA0023.apcprd02.prod.outlook.com (2603:1096:3:17::35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.26 via Frontend Transport; Mon, 15 Nov 2021 07:00:57 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: bb96b884-697c-4164-5eb3-08d9a805afdf X-MS-TrafficTypeDiagnostic: VI1PR04MB5503: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3631; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: xJLGuCkWV3d5DUWVuWAt65IXEn9nY8OlE7BeY2TMFA2vZIL9KPiW0GZO5qjha9cKEqzUNNLmjzclk7cuKA2XOWH6J9b/TjPlcGJwhYHv/LcISrgravJ+n6Y/w7JB9nEH7Mb/SyECAnF3Mlg8cbzTHCc09wGwJgiJ4o5zvubr+R3qKBjzKvtpvJgfcDy63MWPeIFlAqWoWRGc9KixgaCbTEZIJB51lOb/zNj3FDBsphdwnqvN5Vm3XD5WB7NurAyF03dPLKfbnAjCdxkIORpomkD49jSbfWG9DI4GPQNslxzXEP9w34xS0iU3UoN3LinItE9TyIGL35T1o3QNc2P+l8QEsAoN6FoIqZbATGrL4sFE+MO4alKkEdn80uOeERmSsO4JHIYD/c/uDyCjQ+CRyD2cI9FB+uknqy6YE4hwKG6BwJpBcHyiZgv8IJyxkTtMq9DWkDdiR6OPbIyV350wR9cdl/hQQQwfuFJcaGdz+B8PKs68AhzWJtfzAJjNotUkyp7Qv68v+/QfLTZ5ZNTW6fO/BLiZ/dz6S4pPzqYC/OcWD42k8flXpghE9cd4M+d9o6TlLIIpKBBG0ZJobIWnNfNn0WgSkAXcG6ZCl6cw11/4j5pG1VJwoNNqIdAuhhMoH2EbuIILPozot3cZss6By6a3zwyg/Zf8Njr+uBdfqdRNKhy7bseSPJMgVJHLdnOH0SrBW3/0oQvQ95TleekSkie1Vfjd36/JCjjjYAshG6M= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI1PR04MB5342.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(8676002)(7696005)(36756003)(186003)(38350700002)(52116002)(38100700002)(1076003)(55236004)(83380400001)(6916009)(6486002)(2616005)(44832011)(956004)(4326008)(26005)(2906002)(5660300002)(8936002)(6666004)(316002)(1006002)(66946007)(66556008)(508600001)(66476007)(86362001)(54906003)(110426009); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?QAOHZTSR1BmHOpouIGLxIAilET+JLac6UbggZ00K4caV/SgeW4ub4htW4sv1?= =?us-ascii?Q?/hlb4vvar3cctGFg4++1m47GayT0Fvekx9REvlq/oVNF3GRw8LO3u2EBMAAo?= =?us-ascii?Q?5oWZwoW/OoQLiaOMy00du/nz3S9NcGrPF4yubVESAfGR2ubOqU0XaRFJIonQ?= =?us-ascii?Q?b599kDFGq1+gFn1CLuv73CNPD8ic7L7Wp36lopnnYCn6x9L05Sv4iDTFg8LT?= =?us-ascii?Q?50VWkEbuztbtrkDdeDpfg1MFJqhRGvi+DQG7tyS+E4cHQdrUFGGYe98SPLq5?= =?us-ascii?Q?4SL59dehpQeH2Q4oOu0WMaReCOA/96okqawLtovz4HrPpvN1XKQEBwaopjNQ?= =?us-ascii?Q?uXl8gaAQvYIwN6Dr05QyHXO8NLl+XxLEdBpkdT7n1PNekXFQvw9Bxmgv6bv0?= =?us-ascii?Q?pYuw84/qc36rUukqG0sJTtW4ccBzF3dRLU8aPyfkbKZ8zAN03VgpTPkzuJT+?= =?us-ascii?Q?l2bsGUTY8MJrt3kMROyqPVJTAWJqsagLIklnW8SchMjRgBdGRcA/C9speq/o?= =?us-ascii?Q?JSueOgKPxBAbckVTajtyloS9ljf+FOg4URHyuJTRsPUCLMMQkF70d8IgvwvS?= =?us-ascii?Q?UmJaMPWAfG+paa9koMHR+dR9+NIFi+iJcu8nmkge/Y7xwkKU/yATHieMsQhT?= =?us-ascii?Q?yqm3nJ14FcnZCVO+r6rIqLkvrjslDDgbuzZTSzAJ61fFJ1f5QUqXFjIS51Sx?= =?us-ascii?Q?4cqALxjdLA8Xc/+w8x0t8bu4kqt3wsWN+ykO60i9KCiBgCr4a754WKhYL/V+?= =?us-ascii?Q?rDpZNGiQrtoGFgcv3pvRqW/PngtfJ0PH4rqfEjoC5uQua7cZ+eqSntnQaX22?= =?us-ascii?Q?iKUB5jBKeIsjfREMJi3vdtemVCLIHtaq4TaYBydnjeX938rJ2MdQoYyMnEXF?= =?us-ascii?Q?EOCRqijsrGHamdyrPuO8v7G5tcyNOakaJbegNqYiTu27jQ0nuRS+JVuliY3Q?= =?us-ascii?Q?4g7LBJsjHy4ctcL9P6pqd5alj0LJ8eQdytZV23GrpCCt9jBu3DO+Fb/kKsIL?= =?us-ascii?Q?0E30KolOH87pvZ6SXWX7VFqFzxexAYsF02GPQK6W7wvZR260s6U6Xyxz9juL?= =?us-ascii?Q?12seO5NuX1auJxAUjai+KMDlQhiVuiTkjR1fybXWJgpc4EXXw729qw2TfmDe?= =?us-ascii?Q?1tyAJD0x0fZYH4UX17g83reZWtuUkNG/62t3JACeBIfRTtkY/4p5aatTQQpP?= =?us-ascii?Q?wgn61K74X5Ck2x1N1Y46UQ61eC14XWv2d9jRe0Hp9CZPu7ZsJUgC4EUbjK0u?= =?us-ascii?Q?x04k7KIpBK8IPFmg3/hS8C6c5OgjJOOHoFwMb3Oi6g97Y5JgOi72dqQtYpOu?= =?us-ascii?Q?BYfxd/SAoBviq6xjzZUq2g1gCcSavnR8oGhwZXHZpdWbekSTCyVQgDIlynoj?= =?us-ascii?Q?tzs4wVEVDkHpylborKLMvblZ/jYGaGXM9tZRW5tEedYYXhbl06t2DwLvauwG?= =?us-ascii?Q?flGx5c5u5ZmX1ov/0VeIYn0+AKD4S2AzA9RK2yKUaW/P3YBl11v44LdXuSbY?= =?us-ascii?Q?BdHsKMsAGhrxDD7q7vcA4EkrS63wqN6lDd3vtsz1U9SDzHV5ONfiwIy9IQn/?= =?us-ascii?Q?Dc0VNBH4/E4Em9cHQJK5DG5knrKhGSHucaRDrhgcQBTWAfub6VD9CiwZfiJz?= =?us-ascii?Q?J9U8ijXw+faxPX67bw9MjA8=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: bb96b884-697c-4164-5eb3-08d9a805afdf X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB5342.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Nov 2021 07:01:03.0848 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: EERKkrTWeAdmej1bRt91LrvdUa27ki7l0JO8TxkFqktZpmM+gphoT+kyr5R/C8uuK0PQxqVuiHV4GlIyQLZyuA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB5503 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.35 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.2 at phobos.denx.de X-Virus-Status: Clean added api and descriptor for blob key encryption key(bkek) generation. added api for random number generation. Signed-off-by: Gaurav Jain Signed-off-by: Ji Luo Reviewed-by: Ye Li --- drivers/crypto/fsl/desc.h | 5 +++ drivers/crypto/fsl/fsl_blob.c | 82 +++++++++++++++++++++++++++++++++++ drivers/crypto/fsl/jobdesc.c | 20 +++++++-- drivers/crypto/fsl/jobdesc.h | 4 ++ 4 files changed, 108 insertions(+), 3 deletions(-) diff --git a/drivers/crypto/fsl/desc.h b/drivers/crypto/fsl/desc.h index 5705c4f944..5958ebd3ac 100644 --- a/drivers/crypto/fsl/desc.h +++ b/drivers/crypto/fsl/desc.h @@ -4,6 +4,7 @@ * Definitions to support CAAM descriptor instruction generation * * Copyright 2008-2014 Freescale Semiconductor, Inc. + * Copyright 2021 NXP * * Based on desc.h file in linux drivers/crypto/caam */ @@ -15,6 +16,7 @@ #define KEY_BLOB_SIZE 32 #define MAC_SIZE 16 +#define BKEK_SIZE 32 /* Max size of any CAAM descriptor in 32-bit words, inclusive of header */ #define MAX_CAAM_DESCSIZE 64 @@ -463,6 +465,9 @@ #define OP_PROTINFO_HASH_SHA384 0x00000200 #define OP_PROTINFO_HASH_SHA512 0x00000280 +/* PROTINFO fields for Blob Operations */ +#define OP_PROTINFO_MKVB 0x00000002 + /* For non-protocol/alg-only op commands */ #define OP_ALG_TYPE_SHIFT 24 #define OP_ALG_TYPE_MASK (0x7 << OP_ALG_TYPE_SHIFT) diff --git a/drivers/crypto/fsl/fsl_blob.c b/drivers/crypto/fsl/fsl_blob.c index e8202cc569..e8bc009daf 100644 --- a/drivers/crypto/fsl/fsl_blob.c +++ b/drivers/crypto/fsl/fsl_blob.c @@ -1,6 +1,7 @@ // SPDX-License-Identifier: GPL-2.0+ /* * Copyright 2014 Freescale Semiconductor, Inc. + * Copyright 2021 NXP * */ @@ -152,6 +153,87 @@ int blob_encap(u8 *key_mod, u8 *src, u8 *dst, u32 len) return ret; } +int derive_blob_kek(u8 *bkek_buf, u8 *key_mod, u32 key_sz) +{ + int ret, size; + u32 *desc; + + if (!IS_ALIGNED((uintptr_t)bkek_buf, ARCH_DMA_MINALIGN) || + !IS_ALIGNED((uintptr_t)key_mod, ARCH_DMA_MINALIGN)) { + puts("Error: derive_bkek: Address arguments are not aligned!\n"); + return -EINVAL; + } + + printf("\nBlob key encryption key(bkek)\n"); + desc = malloc_cache_aligned(sizeof(int) * MAX_CAAM_DESCSIZE); + if (!desc) { + printf("Not enough memory for descriptor allocation\n"); + return -ENOMEM; + } + + size = ALIGN(key_sz, ARCH_DMA_MINALIGN); + flush_dcache_range((unsigned long)key_mod, (unsigned long)key_mod + size); + + /* construct blob key encryption key(bkek) derive descriptor */ + inline_cnstr_jobdesc_derive_bkek(desc, bkek_buf, key_mod, key_sz); + + size = ALIGN(sizeof(int) * MAX_CAAM_DESCSIZE, ARCH_DMA_MINALIGN); + flush_dcache_range((unsigned long)desc, (unsigned long)desc + size); + size = ALIGN(BKEK_SIZE, ARCH_DMA_MINALIGN); + invalidate_dcache_range((unsigned long)bkek_buf, + (unsigned long)bkek_buf + size); + + /* run descriptor */ + ret = run_descriptor_jr(desc); + if (ret < 0) { + printf("Error: %s failed 0x%x\n", __func__, ret); + } else { + invalidate_dcache_range((unsigned long)bkek_buf, + (unsigned long)bkek_buf + size); + puts("derive bkek successful.\n"); + } + + free(desc); + return ret; +} + +int hwrng_generate(u8 *dst, u32 len) +{ + int ret, size; + u32 *desc; + + if (!IS_ALIGNED((uintptr_t)dst, ARCH_DMA_MINALIGN)) { + puts("Error: caam_hwrng_test: Address arguments are not aligned!\n"); + return -EINVAL; + } + + printf("\nRNG generate\n"); + desc = malloc_cache_aligned(sizeof(int) * MAX_CAAM_DESCSIZE); + if (!desc) { + printf("Not enough memory for descriptor allocation\n"); + return -ENOMEM; + } + + inline_cnstr_jobdesc_rng(desc, dst, len); + + size = ALIGN(sizeof(int) * MAX_CAAM_DESCSIZE, ARCH_DMA_MINALIGN); + flush_dcache_range((unsigned long)desc, (unsigned long)desc + size); + size = ALIGN(len, ARCH_DMA_MINALIGN); + invalidate_dcache_range((unsigned long)dst, (unsigned long)dst + size); + + ret = run_descriptor_jr(desc); + if (ret < 0) { + printf("Error: RNG generate failed 0x%x\n", ret); + } else { + invalidate_dcache_range((unsigned long)dst, + (unsigned long)dst + size); + puts("RNG generation successful.\n"); + } + + free(desc); + return ret; +} + #ifdef CONFIG_CMD_DEKBLOB int blob_dek(const u8 *src, u8 *dst, u8 len) { diff --git a/drivers/crypto/fsl/jobdesc.c b/drivers/crypto/fsl/jobdesc.c index c350b32856..d58937c284 100644 --- a/drivers/crypto/fsl/jobdesc.c +++ b/drivers/crypto/fsl/jobdesc.c @@ -4,7 +4,7 @@ * Basic job descriptor construction * * Copyright 2014 Freescale Semiconductor, Inc. - * Copyright 2018 NXP + * Copyright 2018, 2021 NXP * */ @@ -207,7 +207,7 @@ void inline_cnstr_jobdesc_hash(uint32_t *desc, append_store(desc, dma_addr_out, storelen, LDST_CLASS_2_CCB | LDST_SRCDST_BYTE_CONTEXT); } -#ifndef CONFIG_SPL_BUILD + void inline_cnstr_jobdesc_blob_encap(uint32_t *desc, uint8_t *key_idnfr, uint8_t *plain_txt, uint8_t *enc_blob, uint32_t in_sz) @@ -255,7 +255,7 @@ void inline_cnstr_jobdesc_blob_decap(uint32_t *desc, uint8_t *key_idnfr, append_operation(desc, OP_TYPE_DECAP_PROTOCOL | OP_PCLID_BLOB); } -#endif + /* * Descriptor to instantiate RNG State Handle 0 in normal mode and * load the JDKEK, TDKEK and TDSK registers @@ -334,3 +334,17 @@ void inline_cnstr_jobdesc_pkha_rsaexp(uint32_t *desc, append_fifo_store(desc, dma_addr_out, out_siz, LDST_CLASS_1_CCB | FIFOST_TYPE_PKHA_B); } + +void inline_cnstr_jobdesc_derive_bkek(uint32_t *desc, void *bkek_out, + void *key_mod, uint32_t key_sz) +{ + dma_addr_t dma_key_mod = virt_to_phys(key_mod); + dma_addr_t dma_bkek_out = virt_to_phys(bkek_out); + + init_job_desc(desc, 0); + append_load(desc, dma_key_mod, key_sz, LDST_CLASS_2_CCB | + LDST_SRCDST_BYTE_KEY); + append_seq_out_ptr_intlen(desc, dma_bkek_out, BKEK_SIZE, 0); + append_operation(desc, OP_TYPE_ENCAP_PROTOCOL | OP_PCLID_BLOB | + OP_PROTINFO_MKVB); +} diff --git a/drivers/crypto/fsl/jobdesc.h b/drivers/crypto/fsl/jobdesc.h index c4501abd26..a720d68e82 100644 --- a/drivers/crypto/fsl/jobdesc.h +++ b/drivers/crypto/fsl/jobdesc.h @@ -1,6 +1,7 @@ /* SPDX-License-Identifier: GPL-2.0+ */ /* * Copyright 2014 Freescale Semiconductor, Inc. + * Copyright 2021 NXP * */ @@ -49,4 +50,7 @@ void inline_cnstr_jobdesc_pkha_rsaexp(uint32_t *desc, struct pk_in_params *pkin, uint8_t *out, uint32_t out_siz); +void inline_cnstr_jobdesc_derive_bkek(uint32_t *desc, void *bkek_out, + void *key_mod, uint32_t key_sz); + #endif -- 2.17.1