From patchwork Tue Dec 11 07:45:41 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sumit Garg X-Patchwork-Id: 153404 Delivered-To: patch@linaro.org Received: by 2002:a2e:299d:0:0:0:0:0 with SMTP id p29-v6csp347530ljp; Tue, 11 Dec 2018 00:12:54 -0800 (PST) X-Google-Smtp-Source: AFSGD/XGc1S9HCgx47QwgrssJWDqI+0/tvVxXjevKfY1/g+dDe9uW916rza79AgZOTgIq31cYdZZ X-Received: by 2002:a63:6483:: with SMTP id y125mr13612334pgb.91.1544515974638; Tue, 11 Dec 2018 00:12:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1544515974; cv=none; d=google.com; s=arc-20160816; b=MhlvUrgC9+RYNYnXFmsQbUiKbEYUlLP0qN96+1hAwXzh0SRNh3hSxk+sQFu+htW4r7 3Z+nQj6J3sfDlLUFOkpGPlbkmTbMrZQf+hUIzs/OBK68d7SJ4h9Rvhqp6+qMZMYdODRM jCJY4Q4tT7twZOSupmacSKnmJbKftoph6QHySx5SkGFubdffOnwhUkyYnqIj3sMe1hlJ 64qxKmnKnV3bspMExQ4DkJLY3ocfDCndCUvIb4D05MrtAzQDwzBFGSqllRwkj0f26j7Y NxqDSL9Z1UilgXze683SwuJL6CBn0cNczOffhv8gJ1DC0lzBu0iZ+R1Ag29Mcmk6vC8V n1tw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:message-id:date:to:from:dkim-signature :delivered-to; bh=S3gyya6OSB7j4XaSiAQgN/FVeIQjPh/Yhc2DgUGuNT0=; b=rsWzVjl98SJu8rhyJtA4U5t+FWBezgEzQi4L+KNygKKOBBDLFpHWtNzDQKwT5TkL+K +f+ko9IMacgVUlnEEZP43+Fucf1o7jhhGUmGjLTb31EcD38P0IzlzJ0hsVkmuS7xOfri AQV3dJcj/oQCa53f1hxgSF3mI5rDJ727iZHGx/HHtnHXAbUxnMkZW2P9ukAncwadnNXF j2f9FHsp6wYwJAqEhRfZ3RetHRStrQgeD6hFplL3mLipEz974rx/XRHFmHBvz/T1C3kl /V7Q6i8QyOsIenwqVKXB9P3/pNHWb5g2FdNpO7o2BztjzzmGzGJRu8X/R7tG8wy1ZNiq hqnQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=ODDa74At; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [198.145.21.10]) by mx.google.com with ESMTPS id h3si11847943pgl.468.2018.12.11.00.12.54 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 11 Dec 2018 00:12:54 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) client-ip=198.145.21.10; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=ODDa74At; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id E6AD821ECCB17; Tue, 11 Dec 2018 00:12:17 -0800 (PST) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2607:f8b0:4864:20::541; helo=mail-pg1-x541.google.com; envelope-from=sumit.garg@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pg1-x541.google.com (mail-pg1-x541.google.com [IPv6:2607:f8b0:4864:20::541]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id C367D21962301 for ; Mon, 10 Dec 2018 23:46:08 -0800 (PST) Received: by mail-pg1-x541.google.com with SMTP id t13so6247731pgr.11 for ; Mon, 10 Dec 2018 23:46:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id; bh=SmeG2HWGAUSET/1YIRpFp6O8H1H0VoLTSeCFfpEzLew=; b=ODDa74AtepbSYYxs0UnOaC3N2ig5NrBm3g0sKfPAmcO1KC+HmIDEfULe/b/WByqGFh kQV/oer+93JJLGrcZ2QyaCv6gmoN1EdIl2SL+RH6ahQDr9JG1noLh4PP2L8feZ5TYEvM /Njz2ieaIY+bBy930zYSNDrxNRRm9/gVXEX70= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=SmeG2HWGAUSET/1YIRpFp6O8H1H0VoLTSeCFfpEzLew=; b=JSLnbBdODWroi4cdDGAhKfdsK61oQFUOIhhlrBvdr8jPvB3sVlDzcN06q+s4O/PDDp ASe3UUxMbw4I0aeVjzq2QHshkN+wSaAgaiYMPtsIMPPCo5I5h4wmoUjPSG4isxXVIvua pQ7VHLyd37TnQuyIrcz4O7vblkkpdm3BooA/hGfRubhXg/w4QucsOEaVRRGMeBOxcdKA qv6tYcmKd8jFiEOU7NTswxVzRVVwpiJYvCzlgZqKUH32vOFu8ixjgwR1SM5ShRp2aPmJ QFpmXgIGAKvnETLdx2YY/IL2a2q/482CYaebg116WssthxY2gosufgvYruuYzsBnnPaJ qzlQ== X-Gm-Message-State: AA+aEWakRMnJACnyidvdjdmpwbFI6wfmn2GUvlG4wsefpaX9VhYt5eS+ MKLrhLq30kYvf1D7fPU953kQjXXjsN0= X-Received: by 2002:a62:1212:: with SMTP id a18mr15860237pfj.217.1544514367409; Mon, 10 Dec 2018 23:46:07 -0800 (PST) Received: from localhost.localdomain ([117.252.70.34]) by smtp.gmail.com with ESMTPSA id x127sm20532635pfd.156.2018.12.10.23.46.03 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 10 Dec 2018 23:46:06 -0800 (PST) From: Sumit Garg To: edk2-devel@lists.01.org Date: Tue, 11 Dec 2018 13:15:41 +0530 Message-Id: <1544514341-3176-1-git-send-email-sumit.garg@linaro.org> X-Mailer: git-send-email 2.7.4 Subject: [edk2] [PATCH edk2-platforms v1 1/1] Silicon/SynQuacer: add OP-TEE based RNG driver X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: daniel.thompson@linaro.org MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" This driver uses OpteeLib to interface with OP-TEE based RNG service (pseudo trusted application) to implement EFI_RNG_PROTOCOL that is used to seed kernel entropy pool. Cc: Ard Biesheuvel Cc: Leif Lindholm Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Sumit Garg --- Depends on "ArmPkg/OpteeLib: Add OPTEE_SUCCESS return code" patch. For detailed implementation of OP-TEE based RNG service (pseudo trusted application), please refer to OP-TEE PR here [1]. [1] https://github.com/OP-TEE/optee_os/pull/2564 Silicon/Socionext/SynQuacer/SynQuacer.dec | 2 + Platform/Socionext/DeveloperBox/DeveloperBox.dsc | 1 + Platform/Socionext/DeveloperBox/DeveloperBox.fdf | 1 + Silicon/Socionext/SynQuacer/Drivers/OpteeRngDxe/OpteeRngDxe.inf | 55 ++++ Silicon/Socionext/SynQuacer/Drivers/OpteeRngDxe/OpteeRng.c | 270 ++++++++++++++++++++ Silicon/Socionext/SynQuacer/Drivers/OpteeRngDxe/OpteeRngDxe.uni | 19 ++ Silicon/Socionext/SynQuacer/Drivers/OpteeRngDxe/OpteeRngDxeExtra.uni | 18 ++ 7 files changed, 366 insertions(+) -- 2.7.4 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel Reviewed-by: Ard Biesheuvel diff --git a/Silicon/Socionext/SynQuacer/SynQuacer.dec b/Silicon/Socionext/SynQuacer/SynQuacer.dec index ccaf80def06b..e58a373ecb3d 100644 --- a/Silicon/Socionext/SynQuacer/SynQuacer.dec +++ b/Silicon/Socionext/SynQuacer/SynQuacer.dec @@ -29,6 +29,8 @@ [Guids] gSynQuacerPlatformFormSetGuid = { 0xe9cd576a, 0xaf9a, 0x4d41, { 0xbf, 0x1a, 0x29, 0xe1, 0xbc, 0x99, 0x99, 0x54 } } + gOpteeRngTaGuid = { 0xab7a617c, 0xb8e7, 0x4d8f, { 0x83, 0x01, 0xd0, 0x9b, 0x61, 0x03, 0x6b, 0x64 } } + [Ppis] gSynQuacerDramInfoPpiGuid = { 0x3e1d7356, 0xdda4, 0x4b1a, { 0x93, 0x46, 0xbf, 0x89, 0x1c, 0x86, 0x46, 0xcc } } diff --git a/Platform/Socionext/DeveloperBox/DeveloperBox.dsc b/Platform/Socionext/DeveloperBox/DeveloperBox.dsc index 997ea344330d..b18286a0b228 100644 --- a/Platform/Socionext/DeveloperBox/DeveloperBox.dsc +++ b/Platform/Socionext/DeveloperBox/DeveloperBox.dsc @@ -628,6 +628,7 @@ [Components.common] # # RNG # + Silicon/Socionext/SynQuacer/Drivers/OpteeRngDxe/OpteeRngDxe.inf Silicon/Openmoko/ChaosKeyDxe/ChaosKeyDxe.inf # diff --git a/Platform/Socionext/DeveloperBox/DeveloperBox.fdf b/Platform/Socionext/DeveloperBox/DeveloperBox.fdf index 3a92e0fe63ef..4a234a36525e 100644 --- a/Platform/Socionext/DeveloperBox/DeveloperBox.fdf +++ b/Platform/Socionext/DeveloperBox/DeveloperBox.fdf @@ -189,6 +189,7 @@ [FV.FvMain] # # RNG # + INF Silicon/Socionext/SynQuacer/Drivers/OpteeRngDxe/OpteeRngDxe.inf INF Silicon/Openmoko/ChaosKeyDxe/ChaosKeyDxe.inf # diff --git a/Silicon/Socionext/SynQuacer/Drivers/OpteeRngDxe/OpteeRngDxe.inf b/Silicon/Socionext/SynQuacer/Drivers/OpteeRngDxe/OpteeRngDxe.inf new file mode 100644 index 000000000000..6fef1b380270 --- /dev/null +++ b/Silicon/Socionext/SynQuacer/Drivers/OpteeRngDxe/OpteeRngDxe.inf @@ -0,0 +1,55 @@ +## @file +# Device driver for the OP-TEE based random number generator. +# +# Copyright (c) 2018, Linaro Ltd. All rights reserved.
+# +# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD +# License which accompanies this distribution. The full text of the license may +# be found at http://opensource.org/licenses/bsd-license.php. +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# +## + +[Defines] + INF_VERSION = 0x0001001A + BASE_NAME = OpteeRngDxe + MODULE_UNI_FILE = OpteeRngDxe.uni + FILE_GUID = 93A599F2-6D82-4FCC-9970-49BB013D695A + MODULE_TYPE = DXE_DRIVER + VERSION_STRING = 1.0 + ENTRY_POINT = OpteeRngEntry + +# +# VALID_ARCHITECTURES = AARCH64 ARM +# + +[Sources] + OpteeRng.c + +[Packages] + ArmPkg/ArmPkg.dec + MdePkg/MdePkg.dec + Silicon/Socionext/SynQuacer/SynQuacer.dec + +[LibraryClasses] + OpteeLib + TimerLib + UefiBootServicesTableLib + UefiDriverEntryPoint + UefiLib + +[Protocols] + gEfiRngProtocolGuid # PROTOCOL BY_START + +[Guids] + gEfiRngAlgorithmRaw + gOpteeRngTaGuid + +[Depex] + TRUE + +[UserExtensions.TianoCore."ExtraFiles"] + OpteeRngDxeExtra.uni diff --git a/Silicon/Socionext/SynQuacer/Drivers/OpteeRngDxe/OpteeRng.c b/Silicon/Socionext/SynQuacer/Drivers/OpteeRngDxe/OpteeRng.c new file mode 100644 index 000000000000..089fad8b5ce5 --- /dev/null +++ b/Silicon/Socionext/SynQuacer/Drivers/OpteeRngDxe/OpteeRng.c @@ -0,0 +1,270 @@ +/** @file + Device driver for the OpteeRng hardware random number generator. + + Copyright (c) 2018, Linaro Ltd. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD + License which accompanies this distribution. The full text of the license may + be found at http://opensource.org/licenses/bsd-license.php. + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ + +#include +#include +#include +#include +#include +#include +#include + +#define PTA_COMMAND_GET_ENTROPY 0x0 +#define OPTEE_RNG_POOL_SIZE (4 * 1024) + +/** + Returns information about the random number generation implementation. + + @param[in] This A pointer to the EFI_RNG_PROTOCOL instance. + @param[in,out] AlgorithmListSize On input, the size in bytes of AlgorithmList + On output with a return code of EFI_SUCCESS, + the size in bytes of the data returned in + AlgorithmList. On output with a return + code of EFI_BUFFER_TOO_SMALL, the size of + AlgorithmList required to obtain the list. + @param[out] AlgorithmList A caller-allocated memory buffer filled by + the driver with one EFI_RNG_ALGORITHM + element for each supported RNG algorithm. + The list must not change across multiple + calls to the same driver. The first + algorithm in the list is the default + algorithm for the driver. + + @retval EFI_SUCCESS The RNG algorithm list was returned + successfully. + @retval EFI_UNSUPPORTED The services is not supported by this driver + @retval EFI_DEVICE_ERROR The list of algorithms could not be + retrieved due to a hardware or firmware + error. + @retval EFI_INVALID_PARAMETER One or more of the parameters are incorrect. + @retval EFI_BUFFER_TOO_SMALL The buffer RNGAlgorithmList is too small to + hold the result. + +**/ +STATIC +EFI_STATUS +EFIAPI +GetInfo ( + IN EFI_RNG_PROTOCOL *This, + IN OUT UINTN *AlgorithmListSize, + OUT EFI_RNG_ALGORITHM *AlgorithmList +) +{ + UINTN Size; + + // + // We only implement the raw algorithm + // + Size = sizeof gEfiRngAlgorithmRaw; + + if (*AlgorithmListSize < Size) { + *AlgorithmListSize = Size; + return EFI_BUFFER_TOO_SMALL; + } + + gBS->CopyMem (AlgorithmList, &gEfiRngAlgorithmRaw, Size); + *AlgorithmListSize = Size; + + return EFI_SUCCESS; +} + + +/** + Produces and returns an RNG value using either the default or specified RNG + algorithm. + + @param[in] This A pointer to the EFI_RNG_PROTOCOL instance. + @param[in] Algorithm A pointer to the EFI_RNG_ALGORITHM that + identifies the RNG algorithm to use. May be + NULL in which case the function will use its + default RNG algorithm. + @param[in] ValueLength The length in bytes of the memory buffer + pointed to by RNGValue. The driver shall + return exactly this numbers of bytes. + @param[out] Value A caller-allocated memory buffer filled by the + driver with the resulting RNG value. + + @retval EFI_SUCCESS The RNG value was returned successfully. + @retval EFI_UNSUPPORTED The algorithm specified by RNGAlgorithm is not + supported by this driver. + @retval EFI_DEVICE_ERROR An RNG value could not be retrieved due to a + hardware or firmware error. + @retval EFI_NOT_READY There is not enough random data available to + satisfy the length requested by + RNGValueLength. + @retval EFI_INVALID_PARAMETER RNGValue is NULL and RNGValueLength is + non-zero. + +**/ +STATIC +EFI_STATUS +EFIAPI +GetRNG ( + IN EFI_RNG_PROTOCOL *This, + IN EFI_RNG_ALGORITHM *Algorithm OPTIONAL, + IN UINTN ValueLength, + OUT UINT8 *Value +) +{ + EFI_STATUS Status; + OPTEE_OPEN_SESSION_ARG OpenSessionArg; + OPTEE_INVOKE_FUNCTION_ARG InvokeFunctionArg; + UINT8 *OutPointer; + UINTN OutSize; + UINTN WaitMiliSeconds; + + if ((Value == NULL) && (ValueLength != 0)) { + return EFI_INVALID_PARAMETER; + } + + if (ValueLength > OPTEE_RNG_POOL_SIZE) { + return EFI_UNSUPPORTED; + } + + if (Algorithm != NULL && !CompareGuid (Algorithm, &gEfiRngAlgorithmRaw)) { + return EFI_UNSUPPORTED; + } + + ZeroMem (&OpenSessionArg, sizeof (OPTEE_OPEN_SESSION_ARG)); + CopyMem (&OpenSessionArg.Uuid, &gOpteeRngTaGuid, sizeof (EFI_GUID)); + + Status = OpteeOpenSession (&OpenSessionArg); + if ((Status != EFI_SUCCESS) || (OpenSessionArg.Return != OPTEE_SUCCESS)) { + DEBUG ((DEBUG_ERROR, "OP-TEE Open Session failed with return: %08x and" + "return origin: %d\n", OpenSessionArg.Return, + OpenSessionArg.ReturnOrigin)); + return EFI_DEVICE_ERROR; + } + + OutPointer = Value; + + while (ValueLength > 0) { + ZeroMem (&InvokeFunctionArg, sizeof (OPTEE_INVOKE_FUNCTION_ARG)); + + InvokeFunctionArg.Function = PTA_COMMAND_GET_ENTROPY; + InvokeFunctionArg.Session = OpenSessionArg.Session; + + InvokeFunctionArg.Params[0].Attribute = + OPTEE_MESSAGE_ATTRIBUTE_TYPE_MEMORY_INOUT; + InvokeFunctionArg.Params[0].Union.Memory.BufferAddress = + (UINT64) OutPointer; + InvokeFunctionArg.Params[0].Union.Memory.Size = ValueLength; + + Status = OpteeInvokeFunction (&InvokeFunctionArg); + if ((Status != EFI_SUCCESS) || + (InvokeFunctionArg.Return != OPTEE_SUCCESS)) { + DEBUG ((DEBUG_ERROR, "OP-TEE Invoke Function failed with return: %x and" + "return origin: %d\n", InvokeFunctionArg.Return, + InvokeFunctionArg.ReturnOrigin)); + + OpteeCloseSession (OpenSessionArg.Session); + + return EFI_DEVICE_ERROR; + } + + OutSize = MIN (InvokeFunctionArg.Params[0].Union.Memory.Size, ValueLength); + + OutPointer += OutSize; + ValueLength -= OutSize; + + // + // OP-TEE RNG Trusted application takes approximately 256ms for every 32 + // bytes of full entropy output. + // + if (ValueLength > 0) { + WaitMiliSeconds = ((ValueLength + 32) * 256) / 32; + MicroSecondDelay (WaitMiliSeconds * 1000); + } + } + + OpteeCloseSession (OpenSessionArg.Session); + + return EFI_SUCCESS; +} + +// +// OP-TEE based Random Number Generator (RNG) protocol +// +EFI_RNG_PROTOCOL mOpteeRng = { + GetInfo, + GetRNG +}; + +/** + The user Entry Point for the OP-TEE Random Number Generator (RNG) driver. + + @param[in] ImageHandle The firmware allocated handle for the EFI image. + @param[in] SystemTable A pointer to the EFI System Table. + + @retval EFI_SUCCESS The entry point is executed successfully. + @retval EFI_NOT_FOUND Not able to find OP-TEE based RNG. + @retval Other Some error occurs when executing this entry point. + +**/ +EFI_STATUS +EFIAPI +OpteeRngEntry ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + EFI_STATUS Status; + EFI_HANDLE Handle; + OPTEE_OPEN_SESSION_ARG OpenSessionArg; + + if (!IsOpteePresent()) { + return EFI_NOT_FOUND; + } + + // + // Initialize OP-TEE + // + Status = OpteeInit (); + if (Status != EFI_SUCCESS) { + return EFI_NOT_FOUND; + } + + ZeroMem (&OpenSessionArg, sizeof (OPTEE_OPEN_SESSION_ARG)); + CopyMem (&OpenSessionArg.Uuid, &gOpteeRngTaGuid, sizeof (EFI_GUID)); + + // + // Try to open session with RNG Trusted Application to check if its present + // + Status = OpteeOpenSession (&OpenSessionArg); + if ((Status != EFI_SUCCESS) || (OpenSessionArg.Return != OPTEE_SUCCESS)) { + return EFI_NOT_FOUND; + } else { + OpteeCloseSession (OpenSessionArg.Session); + } + + // + // Install UEFI RNG (Random Number Generator) Protocol + // + Handle = NULL; + Status = gBS->InstallProtocolInterface (&Handle, + &gEfiRngProtocolGuid, + EFI_NATIVE_INTERFACE, + &mOpteeRng); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, + "Failed to install OP-TEE RNG protocol interface (Status == %r)\n", + Status)); + return Status; + } + + DEBUG ((DEBUG_INIT | DEBUG_INFO, "*** Installed OpteeRng driver! ***\n")); + + return EFI_SUCCESS; +} diff --git a/Silicon/Socionext/SynQuacer/Drivers/OpteeRngDxe/OpteeRngDxe.uni b/Silicon/Socionext/SynQuacer/Drivers/OpteeRngDxe/OpteeRngDxe.uni new file mode 100644 index 000000000000..320561f39d8c --- /dev/null +++ b/Silicon/Socionext/SynQuacer/Drivers/OpteeRngDxe/OpteeRngDxe.uni @@ -0,0 +1,19 @@ +// /** @file +// Installs OP-TEE based UEFI Random Number Generator protocol. +// +// Copyright (c) 2018, Linaro, Ltd. All rights reserved.
+// +// This program and the accompanying materials +// are licensed and made available under the terms and conditions of the BSD License +// which accompanies this distribution. The full text of the license may be found at +// http://opensource.org/licenses/bsd-license.php +// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +// +// **/ + + +#string STR_MODULE_ABSTRACT #language en-US "Installs OP-TEE based UEFI Random Number Generator protocol" + +#string STR_MODULE_DESCRIPTION #language en-US "This driver installs UEFI Random Number Generator protocol based on OP-TEE library to interface with RNG service running in OP-TEE environment." + diff --git a/Silicon/Socionext/SynQuacer/Drivers/OpteeRngDxe/OpteeRngDxeExtra.uni b/Silicon/Socionext/SynQuacer/Drivers/OpteeRngDxe/OpteeRngDxeExtra.uni new file mode 100644 index 000000000000..eadd103de688 --- /dev/null +++ b/Silicon/Socionext/SynQuacer/Drivers/OpteeRngDxe/OpteeRngDxeExtra.uni @@ -0,0 +1,18 @@ +// /** @file +// OpteeRngDxe Localized Strings and Content +// +// Copyright (c) 2018, Linaro, Ltd. All rights reserved.
+// +// This program and the accompanying materials +// are licensed and made available under the terms and conditions of the BSD License +// which accompanies this distribution. The full text of the license may be found at +// http://opensource.org/licenses/bsd-license.php +// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +// +// **/ + +#string STR_PROPERTIES_MODULE_NAME +#language en-US +"OP-TEE RNG DXE Driver" +