From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by mx.groups.io with SMTP id smtpd.web12.3666.1595901988951356851 for ; Mon, 27 Jul 2020 19:06:29 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=pkhjvLMi; spf=pass (domain: intel.com, ip: 192.55.52.151, mailfrom: jiewen.yao@intel.com) IronPort-SDR: C3dGpbQrMKlEeOYEeDrGG5kD/Tl1Sh3U/cgbvRjL5YkC5uqzDVZs1AFQvYj/Sg1DGyHD748rOO ZNmTbwdO25GA== X-IronPort-AV: E=McAfee;i="6000,8403,9695"; a="131203713" X-IronPort-AV: E=Sophos;i="5.75,404,1589266800"; d="scan'208";a="131203713" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Jul 2020 19:06:28 -0700 IronPort-SDR: rkIUzt/+oRM4SVD4U1nCc8Y9XCkSJkDIq0yFXe78r8zLMoZJExev15gzWGOwiiRnt8yEXhiEh3 b5aaWDt49zuw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,404,1589266800"; d="scan'208";a="273427824" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by fmsmga008.fm.intel.com with ESMTP; 27 Jul 2020 19:06:27 -0700 Received: from orsmsx609.amr.corp.intel.com (10.22.229.22) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Mon, 27 Jul 2020 19:06:27 -0700 Received: from ORSEDG002.ED.cps.intel.com (10.7.248.5) by orsmsx609.amr.corp.intel.com (10.22.229.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1713.5 via Frontend Transport; Mon, 27 Jul 2020 19:06:27 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.168) by edgegateway.intel.com (134.134.137.101) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 27 Jul 2020 19:06:26 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=V0lBleTWf3QcFyQeAbkZ1wyntoJkp/cqn+sikWuRgeEc4PKi1jEC4MMorajBdJ6ilP6R0yFpNy7JiRcdTVW4UrPkYT8AaRkjX9kswBCKtorRGbq18HwLIom6K43hiBEL5XleHpzSuYLoQA+zGPfmZEGElniCd5boEQeU/ujx4byfc12DhJYndmoAGs5L0DpCyNsUoGkD+P7+mbIeVGmmAO1WsWVuSos44vmKUEeVaz/PdpO/c0LwjVBj5IF/UPMV2QbkBUZiYv03+gN9aV8DbBl4szU/1bzR0dU+BD27qLDe1PflZyF0mE3BBphD3DGCFsCZI1yTHSo3zZBurBc3dg== 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-SenderADCheck; bh=Hq98VEfnV9wNbz+YeAmKIjNwq41lOhMDOlGARVWqRcQ=; b=OZHjIV/yPvgCvo1DXKshDGReyjsHKguUBuvN5b4ZHaF/sPB+79JkFoG58jdVgcQ0zDgfxOmDICZZzq6WjoFSWbdSY8Z9m1pMLNzxEQr8e9DTQMbzdbCLtFRYRZ9TuIZ8F3JNEuEmFJEYtRQt//eHNgRwzWtxlvxy9K01rzPCJCK2tl0drQi4tRgJeF8YORCEMRaeGKKqYOJj5ConHL7jaMXmwcei/MHwMhJHfme6OWJUvrD7TLOSdrVGHag9f6yRsqLyl14TBjGYIfov3rnU3sVyDCt1UCGX5hPePpXn5wkuZ2lPymEw041mALkOLNoL3zfzvDqQa+hxO/M3GRofrg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Hq98VEfnV9wNbz+YeAmKIjNwq41lOhMDOlGARVWqRcQ=; b=pkhjvLMiv6Yk2NLy36cW/YMqrZK1yqJwNBm6A3mFrnsdnySUMZ9GLfEULQnJsG2flOSuhu5ClmV4e3+1zXXwhe36SNMCH/C8ouPGuS1QJ3y3lwJjYxY7ZZg3bX3EEOY99z3SxmnTtf082bD6alRFJYruDLheYvVxJ/DIvkxfHB4= Received: from DM5PR11MB2026.namprd11.prod.outlook.com (2603:10b6:3:10::17) by DM6PR11MB2586.namprd11.prod.outlook.com (2603:10b6:5:c0::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3216.21; Tue, 28 Jul 2020 02:06:24 +0000 Received: from DM5PR11MB2026.namprd11.prod.outlook.com ([fe80::e19d:1de4:c479:da4]) by DM5PR11MB2026.namprd11.prod.outlook.com ([fe80::e19d:1de4:c479:da4%4]) with mapi id 15.20.3216.033; Tue, 28 Jul 2020 02:06:24 +0000 From: "Yao, Jiewen" To: "devel@edk2.groups.io" , "matthewfcarlson@gmail.com" CC: "Kinney, Michael D" , "Gao, Liming" , "Liu, Zhiguang" Subject: Re: [edk2-devel] [PATCH v1 2/2] MdePkg: TimerRngLib: Added RngLib that uses TimerLib Thread-Topic: [edk2-devel] [PATCH v1 2/2] MdePkg: TimerRngLib: Added RngLib that uses TimerLib Thread-Index: AQHWZIHuyVBQ6vCtck+o7NqYIx3g+qkcPbKQ Date: Tue, 28 Jul 2020 02:06:24 +0000 Message-ID: References: <20200728015312.1023-1-matthewfcarlson@gmail.com> <20200728015312.1023-3-matthewfcarlson@gmail.com> In-Reply-To: <20200728015312.1023-3-matthewfcarlson@gmail.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiZjQ0MTBkODMtYmYyNy00ODI5LWE0NTEtNGI0MDRhY2FmZWQ5IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiQktDMEkzdmdnTFJJUWk0dGVoZXRyZVFBZGNsZmp1bWRreEpHZjRSTms5YXlMNGVEVWc3VDN5S3YzaDdRT3B6cSJ9 x-ctpclassification: CTP_NT dlp-version: 11.2.0.6 dlp-product: dlpe-windows dlp-reaction: no-action authentication-results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.198.147.202] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 2c2c2090-fd8a-45a2-e069-08d8329ad4b7 x-ms-traffictypediagnostic: DM6PR11MB2586: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:3513; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 0RqFiOdiO5VgRzhTe6ZF+Gis1SMMzvY3zFWgPVVg4p11N+yHbDDfqHcxzVGNdKLnvjXn7QaPuk6uzMrY1I9Qh5yAIEWtg5gtYB+xjiJjmyBmwJAoRkrwFPATxHHI08bc+qplEwa43GklWYmof9v0lZdlWpUGBoDRHb/CDb846wA1QlHXWvVAoIKumPSF6l47eGOn/JiLR6BCsgl63NTR3AiwkAgF7jmWJ/PHlknJUSKB6z594T2IvqEML8e3ZzHpzBWXYHAjesXuLKvueAd6abLPa7GY9wUBkVYOYSPanX2KbfedURxSTEoNs7OaaZkWz72SUS5REOLJq+5vTRcyNJpHC4rN78hvbJbnXS6/iPVMkRPf78yGYFhMW1TyyhBQpqgNYf0wn5X4G2nOK+krJg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM5PR11MB2026.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(4636009)(396003)(376002)(39860400002)(366004)(346002)(136003)(2906002)(71200400001)(7696005)(83380400001)(33656002)(45080400002)(9686003)(110136005)(52536014)(5660300002)(55016002)(478600001)(6506007)(54906003)(53546011)(966005)(107886003)(4326008)(66946007)(26005)(76116006)(66446008)(66476007)(64756008)(186003)(316002)(66556008)(8676002)(8936002)(86362001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: 0n9iw/WkpZIQuLTL6TX1btWaERhro7GaKFF0nDgG1jqoKIBfbFfI9jdCsuo1CUhad4VrYpZryLArHn+JQvhEiqKGCb3LjETa0oF4XiC61A9IRfMS0YT2ejKgEPFtO0WsBp7DXuNIYjauJWTXdbtFnPOVTi3jKq5/R19UVBbmPPwWLyoH2oTVk/vJz8EnA/IFKiptod4WWM5lBioKCyVVC9oVrvEZ1P96KPjW2rMnUGqnNjnXDGmkkFpsh3fymx+7vi20cYeV7jOtN0GKVKVtytogVpsvDAWqBFEPJg8hjiWcOd683zdgPoaD3Q6kxW9bgve9FPBOdte1SJp9PThtJdHFN+2opnzp75NcicTqciOAeegXAZOj8/qTu+bsPajlq3jTvIW5SFER26OU5FWvZ4a4P9U3j43HgPFdgpjBHVE2wR8FZYFL7IRNPP49BiqMMuzYwrJ41G2nE+RxfrDg0iGt2xDzRKQSKJymbCHyPXPlsHHit05K+VTZZ+Z38BH7 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM5PR11MB2026.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2c2c2090-fd8a-45a2-e069-08d8329ad4b7 X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Jul 2020 02:06:24.7328 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 1o8hyt4iORhkuM4r8/IZb/jV6lbPk142qMbUbn0V3d56tPp3UPz/zMqJP41OJARxAaOKLXkFwZqKL/BfQjGbTw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR11MB2586 Return-Path: jiewen.yao@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi Carlson The naming conversion for a lib instance is Lib. Se= e examples in MdePkg\Library. I feel that we had better name it to be BaseRngLibTimer Thank you Yao Jiewen > -----Original Message----- > From: devel@edk2.groups.io On Behalf Of Matthew > Carlson > Sent: Tuesday, July 28, 2020 9:53 AM > To: devel@edk2.groups.io > Cc: Kinney, Michael D ; Gao, Liming > ; Liu, Zhiguang ; Matthew > Carlson > Subject: [edk2-devel] [PATCH v1 2/2] MdePkg: TimerRngLib: Added RngLib th= at > uses TimerLib >=20 > From: Matthew Carlson >=20 > Added a new RngLib that provides random numbers from the TimerLib > using the performance counter. This is meant to be used for OpenSSL > to replicate past behavior. This should not be used in production as > a real source of entropy. >=20 > Cc: Michael D Kinney > Cc: Liming Gao > Cc: Zhiguang Liu > Signed-off-by: Matthew Carlson > --- > MdePkg/Library/TimerRngLib/TimerRng.c | 153 ++++++++++++++++++++ > MdePkg/Library/TimerRngLib/TimerRngLib.inf | 37 +++++ > MdePkg/MdePkg.dsc | 2 + > 3 files changed, 192 insertions(+) >=20 > diff --git a/MdePkg/Library/TimerRngLib/TimerRng.c > b/MdePkg/Library/TimerRngLib/TimerRng.c > new file mode 100644 > index 000000000000..1b0f7f04c01d > --- /dev/null > +++ b/MdePkg/Library/TimerRngLib/TimerRng.c > @@ -0,0 +1,153 @@ > +/** @file >=20 > + BaseRng Library that uses the TimerLib to provide reasonably random > numbers. >=20 > + Do not use this on a production system. >=20 > + >=20 > + Copyright (c) Microsoft Corporation. >=20 > + SPDX-License-Identifier: BSD-2-Clause-Patent >=20 > +**/ >=20 > + >=20 > +#include >=20 > +#include >=20 > +#include >=20 > +#include >=20 > + >=20 > +/** >=20 > + Generates a 16-bit random number. >=20 > + >=20 > + if Rand is NULL, then ASSERT(). >=20 > + >=20 > + @param[out] Rand Buffer pointer to store the 16-bit random value. >=20 > + >=20 > + @retval TRUE Random number generated successfully. >=20 > + @retval FALSE Failed to generate the random number. >=20 > + >=20 > +**/ >=20 > +BOOLEAN >=20 > +EFIAPI >=20 > +GetRandomNumber16 ( >=20 > + OUT UINT16 *Rand >=20 > + ) >=20 > +{ >=20 > + UINT32 Index; >=20 > + UINT8* RandPtr; >=20 > + >=20 > + ASSERT (Rand !=3D NULL); >=20 > + >=20 > + if (NULL =3D=3D Rand) { >=20 > + return FALSE; >=20 > + } >=20 > + >=20 > + RandPtr =3D (UINT8 *) Rand; >=20 > + // Get 2 bytes of random ish data >=20 > + for (Index =3D 0; Index < 2; Index ++) { >=20 > + *RandPtr =3D (UINT8) (GetPerformanceCounter () & 0xFF); >=20 > + MicroSecondDelay (4); >=20 > + RandPtr++; >=20 > + } >=20 > + return TRUE; >=20 > +} >=20 > + >=20 > +/** >=20 > + Generates a 32-bit random number. >=20 > + >=20 > + if Rand is NULL, then ASSERT(). >=20 > + >=20 > + @param[out] Rand Buffer pointer to store the 32-bit random value. >=20 > + >=20 > + @retval TRUE Random number generated successfully. >=20 > + @retval FALSE Failed to generate the random number. >=20 > + >=20 > +**/ >=20 > +BOOLEAN >=20 > +EFIAPI >=20 > +GetRandomNumber32 ( >=20 > + OUT UINT32 *Rand >=20 > + ) >=20 > +{ >=20 > + UINT32 Index; >=20 > + UINT8* RandPtr; >=20 > + >=20 > + ASSERT (Rand !=3D NULL); >=20 > + >=20 > + if (NULL =3D=3D Rand) { >=20 > + return FALSE; >=20 > + } >=20 > + >=20 > + RandPtr =3D (UINT8 *) Rand; >=20 > + // Get 4 bytes of random ish data >=20 > + for (Index =3D 0; Index < 4; Index ++) { >=20 > + *RandPtr =3D (UINT8) (GetPerformanceCounter () & 0xFF); >=20 > + MicroSecondDelay (2); >=20 > + RandPtr++; >=20 > + } >=20 > + return TRUE; >=20 > +} >=20 > + >=20 > +/** >=20 > + Generates a 64-bit random number. >=20 > + >=20 > + if Rand is NULL, then ASSERT(). >=20 > + >=20 > + @param[out] Rand Buffer pointer to store the 64-bit random value. >=20 > + >=20 > + @retval TRUE Random number generated successfully. >=20 > + @retval FALSE Failed to generate the random number. >=20 > + >=20 > +**/ >=20 > +BOOLEAN >=20 > +EFIAPI >=20 > +GetRandomNumber64 ( >=20 > + OUT UINT64 *Rand >=20 > + ) >=20 > +{ >=20 > + UINT32 Index; >=20 > + UINT8* RandPtr; >=20 > + >=20 > + ASSERT (Rand !=3D NULL); >=20 > + >=20 > + if (NULL =3D=3D Rand) { >=20 > + return FALSE; >=20 > + } >=20 > + >=20 > + RandPtr =3D (UINT8 *) Rand; >=20 > + // Get 8 bytes of random ish data >=20 > + for (Index =3D 0; Index < 8; Index ++) { >=20 > + *RandPtr =3D (UINT8) (GetPerformanceCounter () & 0xFF); >=20 > + MicroSecondDelay (1); >=20 > + RandPtr++; >=20 > + } >=20 > + >=20 > + return TRUE; >=20 > +} >=20 > + >=20 > +/** >=20 > + Generates a 128-bit random number. >=20 > + >=20 > + if Rand is NULL, then ASSERT(). >=20 > + >=20 > + @param[out] Rand Buffer pointer to store the 128-bit random value. >=20 > + >=20 > + @retval TRUE Random number generated successfully. >=20 > + @retval FALSE Failed to generate the random number. >=20 > + >=20 > +**/ >=20 > +BOOLEAN >=20 > +EFIAPI >=20 > +GetRandomNumber128 ( >=20 > + OUT UINT64 *Rand >=20 > + ) >=20 > +{ >=20 > + ASSERT (Rand !=3D NULL); >=20 > + >=20 > + // >=20 > + // Read first 64 bits >=20 > + // >=20 > + if (!GetRandomNumber64 (Rand)) { >=20 > + return FALSE; >=20 > + } >=20 > + >=20 > + // >=20 > + // Read second 64 bits >=20 > + // >=20 > + return GetRandomNumber64 (++Rand); >=20 > +} >=20 > diff --git a/MdePkg/Library/TimerRngLib/TimerRngLib.inf > b/MdePkg/Library/TimerRngLib/TimerRngLib.inf > new file mode 100644 > index 000000000000..a80a89b77e72 > --- /dev/null > +++ b/MdePkg/Library/TimerRngLib/TimerRngLib.inf > @@ -0,0 +1,37 @@ > +## @file >=20 > +# Instance of RNG (Random Number Generator) Library. >=20 > +# >=20 > +# BaseRng Library that uses the TimerLib to provide reasonably random > numbers. >=20 > +# Do not use this on a production system. >=20 > +# >=20 > +# Copyright (c) Microsoft Corporation. All rights reserved.
>=20 > +# >=20 > +# SPDX-License-Identifier: BSD-2-Clause-Patent >=20 > +# >=20 > +# >=20 > +## >=20 > + >=20 > +[Defines] >=20 > + INF_VERSION =3D 0x00010005 >=20 > + BASE_NAME =3D BaseRngLib >=20 > + MODULE_UNI_FILE =3D BaseRngLib.uni >=20 > + FILE_GUID =3D 74950C45-10FC-4AB5-B114-49C87C17409= B >=20 > + MODULE_TYPE =3D BASE >=20 > + VERSION_STRING =3D 1.0 >=20 > + LIBRARY_CLASS =3D RngLib >=20 > + CONSTRUCTOR =3D BaseRngLibConstructor >=20 > + >=20 > +# >=20 > +# VALID_ARCHITECTURES =3D IA32 X64 >=20 > +# >=20 > + >=20 > +[Sources] >=20 > + TimerRng.c >=20 > + >=20 > +[Packages] >=20 > + MdePkg/MdePkg.dec >=20 > + >=20 > +[LibraryClasses] >=20 > + BaseLib >=20 > + DebugLib >=20 > + TimerLib >=20 > diff --git a/MdePkg/MdePkg.dsc b/MdePkg/MdePkg.dsc > index 472fa3777412..c46a95e52e15 100644 > --- a/MdePkg/MdePkg.dsc > +++ b/MdePkg/MdePkg.dsc > @@ -120,6 +120,8 @@ > MdePkg/Library/SmmLibNull/SmmLibNull.inf >=20 >=20 > MdePkg/Library/BaseExtractGuidedSectionLib/BaseExtractGuidedSectionLib.in= f >=20 >=20 >=20 > + MdePkg/Library/TimerRngLib/TimerRngLib.inf >=20 > + >=20 >=20 > MdePkg/Library/StandaloneMmDriverEntryPoint/StandaloneMmDriverEntryPoin > t.inf >=20 >=20 > MdePkg/Library/StandaloneMmServicesTableLib/StandaloneMmServicesTableLi > b.inf >=20 >=20 >=20 > -- > 2.27.0.windows.1 >=20 >=20 > -=3D-=3D-=3D-=3D-=3D-=3D > Groups.io Links: You receive all messages sent to this group. >=20 > View/Reply Online (#63373): https://edk2.groups.io/g/devel/message/63373 > Mute This Topic: https://groups.io/mt/75836598/1772286 > Group Owner: devel+owner@edk2.groups.io > Unsubscribe: https://edk2.groups.io/g/devel/unsub [jiewen.yao@intel.com] > -=3D-=3D-=3D-=3D-=3D-=3D