From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0b-002e3701.pphosted.com (mx0b-002e3701.pphosted.com [148.163.143.35]) by mx.groups.io with SMTP id smtpd.web11.4066.1608104281412027246 for ; Tue, 15 Dec 2020 23:38:01 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@hpe.com header.s=pps0720 header.b=SFO3SHcV; spf=pass (domain: hpe.com, ip: 148.163.143.35, mailfrom: prvs=0619dd586b=nickle.wang@hpe.com) Received: from pps.filterd (m0134423.ppops.net [127.0.0.1]) by mx0b-002e3701.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 0BG7Xm43030378 for ; Wed, 16 Dec 2020 07:38:00 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hpe.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pps0720; bh=y1Rw/X4fHOgwPdKIZy7hkut4SH2XSgfvMVsyndASKSw=; b=SFO3SHcVr4zkX7iBQhdUWPLvpHQWXIJ3V5i62a92YnvePp6PkHR+NEDqfaU+BqSUb0DC /cGAt0hr5PAjenBpwO1EEy+q12o8Fes4BnWVJctaAqKLp+fch8m/tJrrGlU5ulbRgPGz RovBECn4DJhnPeGGQd6gYsa8X1vkviQVNxMIgB5HBXTgWMLUqW/OGiO4mor7HIoOfVQL +/tojkeL476zDdIFMn2YzHH4wl9tD9+eUl6yhEI9zmrTtczLmCN8IwqsNCfG4I8k8AO/ DUsT0q+dIZZ+h/9xCzEhQ5vDSPsluKOsLf2CN6tgn9KpY1MjqLcYmB9AiouwPDdGkov6 /Q== Received: from g9t5009.houston.hpe.com (g9t5009.houston.hpe.com [15.241.48.73]) by mx0b-002e3701.pphosted.com with ESMTP id 35f3v0bs03-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Wed, 16 Dec 2020 07:38:00 +0000 Received: from G1W8106.americas.hpqcorp.net (g1w8106.austin.hp.com [16.193.72.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by g9t5009.houston.hpe.com (Postfix) with ESMTPS id 45A9B85 for ; Wed, 16 Dec 2020 07:37:59 +0000 (UTC) Received: from G4W9325.americas.hpqcorp.net (16.208.32.94) by G1W8106.americas.hpqcorp.net (16.193.72.61) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 16 Dec 2020 07:37:52 +0000 Received: from G9W9210.americas.hpqcorp.net (2002:10dc:429b::10dc:429b) by G4W9325.americas.hpqcorp.net (2002:10d0:205e::10d0:205e) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 16 Dec 2020 07:37:51 +0000 Received: from NAM02-BL2-obe.outbound.protection.outlook.com (15.241.52.13) by G9W9210.americas.hpqcorp.net (16.220.66.155) with Microsoft SMTP Server (TLS) id 15.0.1497.2 via Frontend Transport; Wed, 16 Dec 2020 07:37:51 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DCKfHRiz4eXoehPu7GX0bV7luqpcUd30K0FUEOHm6KXdjjqfWqMQl16rR3xWE088l0mIhFASOcu0henX/bVskd+w/+hlfT++XltR14oOWdhqWZ6rCUMfzDhsFb/EMt3+kkBZT4MN+4psdAANK4e/dtA2QqSp0KXjzc/qkvjyU+2ezmJ1MNIXzqYKQNY0cupELb51+h93fZ5BGcr+QA5kl+Y3xhKy/Qbbrfl/EvYkN72iO4kcT3Vd8ad+GrsfeIOT2PPz83shcOhIVhkq7cpKGVvTmbH+83prxqtLo8hobzABswqTXEUomj4/N8/GmridLJ8vT+lkVbHQwdDag83VGw== 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=y1Rw/X4fHOgwPdKIZy7hkut4SH2XSgfvMVsyndASKSw=; b=aB9V8fH0syNc+m3wNR6ewqTlkRswmzZYXm/NnP7hZig6uZ2GMhEcsVvPvNH7/qv+FHNaOVYwVD3mOxcO2Vxh9+qEFBkBV7RtxaEE5/bxyPOcYBU/o8rWgKW1oVMVSOpu+/8w+Zdh03zdU1mvS24JYFIz99Ix+Ob8whuPbuJKgdp/hwtGkZ1ndniRotfWhuEvBklTXyQ2tMyUEVbgnFRt9zBgAtsBFHaaQh4r7hq2wNsbXoypcfaeB/9hswqqV0wE6rhYkE+eyJeXOLYpYeg7yVk5sdl/SwnYyRtUIYGbAlZcwbGrOaeIFdki0LVG2Z8IHdgcq0pnFd+bp78XmFtcYQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=hpe.com; dmarc=pass action=none header.from=hpe.com; dkim=pass header.d=hpe.com; arc=none Received: from DF4PR8401MB0812.NAMPRD84.PROD.OUTLOOK.COM (2a01:111:e400:760d::7) by DF4PR8401MB0508.NAMPRD84.PROD.OUTLOOK.COM (2a01:111:e400:760b::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3654.12; Wed, 16 Dec 2020 07:37:50 +0000 Received: from DF4PR8401MB0812.NAMPRD84.PROD.OUTLOOK.COM ([fe80::e475:6a2b:ed1c:a060]) by DF4PR8401MB0812.NAMPRD84.PROD.OUTLOOK.COM ([fe80::e475:6a2b:ed1c:a060%11]) with mapi id 15.20.3654.025; Wed, 16 Dec 2020 07:37:50 +0000 From: "Nickle Wang" To: "Chang, Abner (HPS SW/FW Technologist)" , "devel@edk2.groups.io" CC: "O'Hanley, Peter (EXL)" Subject: Re: [PATCH 2/2] RedfishPkg/RedfishCredentialDxe: EDKII Redfish Credential DXE driver Thread-Topic: [PATCH 2/2] RedfishPkg/RedfishCredentialDxe: EDKII Redfish Credential DXE driver Thread-Index: AQHWzg30T64bER/8z0CdUjUDIPC/3an5Df/AgABJNWCAAARcUIAABICw Date: Wed, 16 Dec 2020 07:37:49 +0000 Message-ID: References: <20201209084333.22422-1-abner.chang@hpe.com> <20201209084333.22422-3-abner.chang@hpe.com> In-Reply-To: Accept-Language: zh-TW, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: hpe.com; dkim=none (message not signed) header.d=none;hpe.com; dmarc=none action=none header.from=hpe.com; x-originating-ip: [61.230.121.70] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 789cf445-c49a-4f7b-fa4e-08d8a1957d88 x-ms-traffictypediagnostic: DF4PR8401MB0508: 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: 0DAjpvjd5+SpY6jbzU1/hHk2YJb65PzGYvG6/96gKs7qjpTx3N69oFDeIu5n93W9V0rCfK3qjI/HTPiq1NFi7w/Cc5fWUbp3ty0ojZuOIJGNbV758E0DTmTc5OjB7rZuvvo98D9n5+QU1Kp7G6dOGWOpvshc48liBWpjONnYFXm9g25M8mzJ+snIW5dsEOKFkL9lA8qE7siwBNbFy1+iTVQkf00OSvvZZ4pFWQnOe7TKYCu8TF2eFB4bObFYJcK1OCe6IUGnXA31XLId/KD3zDrsfof49QVnoFLEqJDOm/GcazNbckqbCO84/ngZ1iqfDX9U0SLE9PKdjmC78PPrDj/FPtUpTbSR4tyMPhEHgtPgZOJhoRGvp2CqrC7BRVG/ x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DF4PR8401MB0812.NAMPRD84.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(136003)(376002)(396003)(366004)(346002)(39860400002)(110136005)(66476007)(86362001)(66556008)(7696005)(52536014)(66446008)(33656002)(9686003)(2906002)(66946007)(478600001)(5660300002)(8676002)(4326008)(76116006)(316002)(186003)(26005)(83380400001)(55016002)(8936002)(71200400001)(6506007)(64756008)(30864003)(53546011)(559001)(579004)(44824005);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?us-ascii?Q?UJ29/goNDzyDF+uiaOJ5gP74eSur9dMeEzbmRwJz7VQqQTpbHG9PoQRMb/hr?= =?us-ascii?Q?SWe3dfUaI392LyYJucPMki4KSomZtQy7w4i3nbdsnL7yHmhau0Q2nSk5QGyj?= =?us-ascii?Q?mEIErY9tvAWLmJo1mJYAmN3xjBUIaeBDEVxRy2kc+qgtp/cy7dCPJzsZUCeF?= =?us-ascii?Q?bIFA/YoWpl0GaMLxrxucRgf+NohMRDi7dN6vm7HfFPLXx3yyfSRP9KcwDJ0I?= =?us-ascii?Q?UqgmfIJpgKJZbPHEduJiwB6WGEYvAXbKNNIBiLj2kULJivGW2Kb/O5b5H5Sx?= =?us-ascii?Q?o2LsXjzpEfGfsXSi0EN7oY8yEBlY51f+shlamQwWaXHbE3gzvND6KP1qfzYW?= =?us-ascii?Q?mUrQfY85vISG5K++UnfZbuD0DWI/0FFXZaSGl2zjpRvuJLCPrbL/XutWSrBR?= =?us-ascii?Q?XPcQzCfsCxmz+Q93yeOYPxpsK8ehsTR+yBECJi4wxwVFxmywY1+a6tJ3i/eG?= =?us-ascii?Q?FgOVPvQd94fQCapMqYQ29WtF3hrQ+UxW/LTumpWJW2vwlt2rZt4DghOCUqcv?= =?us-ascii?Q?Eif/3Kjg6lYrFuuWHw5jmLJMXKPsbE7oPTXGQqxkHTqgb7VcD8n2tyzZ+t6L?= =?us-ascii?Q?PRNGYO40YQbhlXLLyPJ5hwqa7zLwVR/JlbQv4GVFwpN+U0i48hiHiSeyozJR?= =?us-ascii?Q?t6xMwWD6dveGGgHRFn2AH8e3X5wINWBHTJr9Sz3ATgO0Lcd+oFRn+RmN/y2p?= =?us-ascii?Q?OEjMlsygcIqISJ0AIXDlYk4gmlW82oQHCNtKoKDhLCOdRDq+Ch8I+ZpdsYeu?= =?us-ascii?Q?IsY+5Vc3ElSJyCVO96UQLdYe9amHNObhmWezIM5UE8HAdAZPF0hct4+G/QcZ?= =?us-ascii?Q?3kNWmq6qpBxAYODGFO6Sv8+5YBxL/TReBjS7ek1jGoVEJ99+0c8+Tm6Tg925?= =?us-ascii?Q?AMgA0tca+dh0F1pCzC9FEbk/Vw5kceVtUFVf1ozkBWclBPrIzRUOxcflhPhw?= =?us-ascii?Q?QZ7Qdg+YgunVyg7TdvjCPAQQu+hYtlVi04DdqmdFYrI=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DF4PR8401MB0812.NAMPRD84.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: 789cf445-c49a-4f7b-fa4e-08d8a1957d88 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Dec 2020 07:37:50.0053 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 105b2061-b669-4b31-92ac-24d304d195dc X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: BC8pt9EiACWisTRXigrYiYvdTZ9N9AzCKuLQkJBpyk9HMUEiGNPN0aEhDaIbAzaFlq1TxIqdgCUcR0h62HM+HQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DF4PR8401MB0508 X-OriginatorOrg: hpe.com X-HPE-SCL: -1 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.343,18.0.737 definitions=2020-12-16_02:2020-12-15,2020-12-16 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 suspectscore=0 spamscore=0 lowpriorityscore=0 adultscore=0 impostorscore=0 malwarescore=0 clxscore=1015 priorityscore=1501 mlxlogscore=999 mlxscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2012160047 Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi Abner, I got it. These two interfaces are defined in library so that platform libr= ary has to implement it. This makes sense to me. Reviewed-by: Nickle Wang Thanks, Nickle > -----Original Message----- > From: Chang, Abner (HPS SW/FW Technologist) > Sent: Wednesday, December 16, 2020 3:27 PM > To: Wang, Nickle (HPS SW) ; devel@edk2.groups.io > Cc: O'Hanley, Peter (EXL) > Subject: RE: [PATCH 2/2] RedfishPkg/RedfishCredentialDxe: EDKII Redfish > Credential DXE driver >=20 >=20 >=20 > > -----Original Message----- > > From: Chang, Abner (HPS SW/FW Technologist) > > Sent: Wednesday, December 16, 2020 3:09 PM > > To: Wang, Nickle (HPS SW) ; > devel@edk2.groups.io > > Cc: O'Hanley, Peter (EXL) > > Subject: RE: [PATCH 2/2] RedfishPkg/RedfishCredentialDxe: EDKII > > Redfish Credential DXE driver > > > > > > > > > -----Original Message----- > > > From: Wang, Nickle (HPS SW) > > > Sent: Wednesday, December 16, 2020 10:46 AM > > > To: Chang, Abner (HPS SW/FW Technologist) ; > > > devel@edk2.groups.io > > > Cc: O'Hanley, Peter (EXL) > > > Subject: RE: [PATCH 2/2] RedfishPkg/RedfishCredentialDxe: EDKII > > > Redfish Credential DXE driver > > > > > > Hi Abner, > > > > > > Overall looks good to me. Just a question about implementation. > > > > > > The End-Of-DXE and Exit-Boot-Service is registered in Redfish > > > Credential driver and the implementation is provide by > > > RedfishPlatformCredentialLib library. May I know if it is possible > > > to register these two events in RedfishPlatformCredentialLib > > > directly? In this way, we do not need two additional interfaces in > > RedfishPlatformCredentialLib library. > > Yes Nickle, I think we can do that. Will resend the patch. > > thanks > Hi Nickle, > Sorry for the confusion, I just about to change the code but I still thin= k we > should keep these two registrations in RedfishCredentialDXe. > That is the security concern of implementing these two notifications in > RedfishCredentialDxe and then invoke to platform code. This forces OEM = to > consider and provide their secret sauce for preventing from 3rd party cod= e to > steal the Redfish credential. That is OEM's choice if they want to leave = these > two functions in empty. But I think edk2 code should force them not > forgetting to implement that. > So, I would like to still keep it. >=20 >=20 > > > > > > Thanks, > > > Nickle > > > > > > > -----Original Message----- > > > > From: Chang, Abner (HPS SW/FW Technologist) > > > > > > Sent: Wednesday, December 9, 2020 4:44 PM > > > > To: devel@edk2.groups.io > > > > Cc: Wang, Nickle (HPS SW) ; O'Hanley, Peter > > > > (EXL) > > > > Subject: [PATCH 2/2] RedfishPkg/RedfishCredentialDxe: EDKII > > > > Redfish Credential DXE driver > > > > > > > > EDKII Redfish Credential DXE driver which abstracts platform > > > > Redfish credential implementation. > > > > > > > > Signed-off-by: Jiaxin Wu > > > > Signed-off-by: Ting Ye > > > > Signed-off-by: Siyuan Fu > > > > Signed-off-by: Fan Wang > > > > Signed-off-by: Abner Chang > > > > > > > > Cc: Nickle Wang > > > > Cc: Peter O'Hanley > > > > --- > > > > .../Include/Library/RedfishCredentialLib.h | 91 ++++++++ > > > > .../PlatformCredentialLibNull.c | 101 +++++++++ > > > > .../PlatformCredentialLibNull.inf | 30 +++ > > > > RedfishPkg/Redfish.fdf.inc | 1 + > > > > RedfishPkg/RedfishComponents.dsc.inc | 1 + > > > > .../RedfishCredentialDxe.c | 209 ++++++++++++++= ++++ > > > > .../RedfishCredentialDxe.h | 75 +++++++ > > > > .../RedfishCredentialDxe.inf | 51 +++++ > > > > RedfishPkg/RedfishPkg.dec | 4 + > > > > RedfishPkg/RedfishPkg.dsc | 2 + > > > > 10 files changed, 565 insertions(+) create mode 100644 > > > > RedfishPkg/Include/Library/RedfishCredentialLib.h > > > > create mode 100644 > > > > RedfishPkg/Library/PlatformCredentialLibNull/PlatformCredentialLib > > > > Nu > > > > ll > > > > .c > > > > create mode 100644 > > > > RedfishPkg/Library/PlatformCredentialLibNull/PlatformCredentialLib > > > > Nu > > > > ll > > > > .inf > > > > create mode 100644 > > > > RedfishPkg/RedfishCredentialDxe/RedfishCredentialDxe.c > > > > create mode 100644 > > > > RedfishPkg/RedfishCredentialDxe/RedfishCredentialDxe.h > > > > create mode 100644 > > > > RedfishPkg/RedfishCredentialDxe/RedfishCredentialDxe.inf > > > > > > > > diff --git a/RedfishPkg/Include/Library/RedfishCredentialLib.h > > > > b/RedfishPkg/Include/Library/RedfishCredentialLib.h > > > > new file mode 100644 > > > > index 0000000000..dac1b3303f > > > > --- /dev/null > > > > +++ b/RedfishPkg/Include/Library/RedfishCredentialLib.h > > > > @@ -0,0 +1,91 @@ > > > > +/** @file > > > > + Definitinos of RedfishHostInterfaceDxe driver. > > > > + > > > > + (C) Copyright 2020 Hewlett Packard Enterprise Development > > > > + LP
> > > > + > > > > + SPDX-License-Identifier: BSD-2-Clause-Patent > > > > + > > > > +**/ > > > > +#ifndef REDFISH_CREDENTIAL_LIB_H_ #define > > > > +REDFISH_CREDENTIAL_LIB_H_ > > > > + > > > > +#include > > > > + > > > > +/** > > > > + Notification of Exit Boot Service. > > > > + > > > > + @param[in] This Pointer to > EDKII_REDFISH_CREDENTIAL_PROTOCOL. > > > > +**/ > > > > +VOID > > > > +EFIAPI > > > > +LibCredentialExitBootServicesNotify ( > > > > + IN EDKII_REDFISH_CREDENTIAL_PROTOCOL *This ); > > > > + > > > > +/** > > > > + Notification of End of DXe. > > > > + > > > > + @param[in] This Pointer to > EDKII_REDFISH_CREDENTIAL_PROTOCOL. > > > > +**/ > > > > +VOID > > > > +EFIAPI > > > > +LibCredentialEndOfDxeNotify ( > > > > + IN EDKII_REDFISH_CREDENTIAL_PROTOCOL *This ); > > > > + > > > > +/** > > > > + Retrieve platform's Redfish authentication information. > > > > + > > > > + This functions returns the Redfish authentication method > > > > + together with > > > > the user Id and > > > > + password. > > > > + - For AuthMethodNone, the UserId and Password could be used for > > > > + HTTP > > > > header authentication > > > > + as defined by RFC7235. > > > > + - For AuthMethodRedfishSession, the UserId and Password could > > > > + be used > > > > for Redfish > > > > + session login as defined by Redfish API specification (DSP026= 6). > > > > + > > > > + Callers are responsible for and freeing the returned string stor= age. > > > > + > > > > + @param[in] This Pointer to > > > > EDKII_REDFISH_CREDENTIAL_PROTOCOL instance. > > > > + @param[out] AuthMethod Type of Redfish authentication > > method. > > > > + @param[out] UserId The pointer to store the return= ed UserId > > > > string. > > > > + @param[out] Password The pointer to store the return= ed > > > Password > > > > string. > > > > + > > > > + @retval EFI_SUCCESS Get the authentication informat= ion > > > > successfully. > > > > + @retval EFI_ACCESS_DENIED SecureBoot is disabled after > > EndOfDxe. > > > > + @retval EFI_INVALID_PARAMETER This or AuthMethod or UserId or > > > > Password is NULL. > > > > + @retval EFI_OUT_OF_RESOURCES There are not enough memory > > > > resources. > > > > + @retval EFI_UNSUPPORTED Unsupported authentication > method > > is > > > > found. > > > > + > > > > +**/ > > > > +EFI_STATUS > > > > +EFIAPI > > > > +LibCredentialGetAuthInfo ( > > > > + IN EDKII_REDFISH_CREDENTIAL_PROTOCOL *This, > > > > + OUT EDKII_REDFISH_AUTH_METHOD *AuthMethod, > > > > + OUT CHAR8 **UserId, > > > > + OUT CHAR8 **Password > > > > +); > > > > + > > > > +/** > > > > + Notify the Redfish service provide to stop provide > > > > +configuration service to > > > > this platform. > > > > + > > > > + This function should be called when the platfrom is about to > > > > + leave the safe > > > > environment. > > > > + It will notify the Redfish service provider to abort all > > > > + logined session, and > > > > prohibit > > > > + further login with original auth info. GetAuthInfo() will > > > > + return > > > > EFI_UNSUPPORTED once this > > > > + function is returned. > > > > + > > > > + @param[in] This Pointer to > > > > EDKII_REDFISH_CREDENTIAL_PROTOCOL instance. > > > > + @param[in] ServiceStopType Reason of stopping Redfish serv= ice. > > > > + > > > > + @retval EFI_SUCCESS Service has been stoped success= fully. > > > > + @retval EFI_INVALID_PARAMETER This is NULL. > > > > + @retval Others Some error happened. > > > > + > > > > +**/ > > > > +EFI_STATUS > > > > +EFIAPI > > > > +LibStopRedfishService ( > > > > + IN EDKII_REDFISH_CREDENTIAL_PROTOCOL *This, > > > > + IN EDKII_REDFISH_CREDENTIAL_STOP_SERVICE_TYPE > > ServiceStopType > > > > +); > > > > +#endif > > > > diff --git > > > > a/RedfishPkg/Library/PlatformCredentialLibNull/PlatformCredentialL > > > > ib > > > > Nu > > > > ll.c > > > > b/RedfishPkg/Library/PlatformCredentialLibNull/PlatformCredentialL > > > > ib > > > > Nu > > > > ll.c > > > > new file mode 100644 > > > > index 0000000000..39de622d59 > > > > --- /dev/null > > > > +++ > > > > b/RedfishPkg/Library/PlatformCredentialLibNull/PlatformCredentialL > > > > ib > > > > Nu > > > > ll.c > > > > @@ -0,0 +1,101 @@ > > > > +/** @file > > > > + NULL instace of RedfishPlatformCredentialLib > > > > + > > > > + (C) Copyright 2020 Hewlett Packard Enterprise Development > > > > + LP
> > > > + > > > > + SPDX-License-Identifier: BSD-2-Clause-Patent > > > > + > > > > +**/ > > > > +#include > > > > +#include > > > > +/** > > > > + Notification of Exit Boot Service. > > > > + > > > > + @param[in] This Pointer to > EDKII_REDFISH_CREDENTIAL_PROTOCOL. > > > > +**/ > > > > +VOID > > > > +EFIAPI > > > > +LibCredentialExitBootServicesNotify ( > > > > + IN EDKII_REDFISH_CREDENTIAL_PROTOCOL *This > > > > +) > > > > +{ > > > > + return; > > > > +} > > > > + > > > > +/** > > > > + Notification of End of DXe. > > > > + > > > > + @param[in] This Pointer to > EDKII_REDFISH_CREDENTIAL_PROTOCOL. > > > > +**/ > > > > +VOID > > > > +EFIAPI > > > > +LibCredentialEndOfDxeNotify ( > > > > + IN EDKII_REDFISH_CREDENTIAL_PROTOCOL *This > > > > +) > > > > +{ > > > > + return; > > > > +} > > > > + > > > > +/** > > > > + Retrieve platform's Redfish authentication information. > > > > + > > > > + This functions returns the Redfish authentication method > > > > + together with > > > > the user Id and > > > > + password. > > > > + - For AuthMethodNone, the UserId and Password could be used for > > > > + HTTP > > > > header authentication > > > > + as defined by RFC7235. > > > > + - For AuthMethodRedfishSession, the UserId and Password could > > > > + be used > > > > for Redfish > > > > + session login as defined by Redfish API specification (DSP026= 6). > > > > + > > > > + Callers are responsible for and freeing the returned string stor= age. > > > > + > > > > + @param[in] This Pointer to > > > > EDKII_REDFISH_CREDENTIAL_PROTOCOL instance. > > > > + @param[out] AuthMethod Type of Redfish authentication > > method. > > > > + @param[out] UserId The pointer to store the return= ed UserId > > > > string. > > > > + @param[out] Password The pointer to store the return= ed > > > Password > > > > string. > > > > + > > > > + @retval EFI_SUCCESS Get the authentication informat= ion > > > > successfully. > > > > + @retval EFI_ACCESS_DENIED SecureBoot is disabled after > > EndOfDxe. > > > > + @retval EFI_INVALID_PARAMETER This or AuthMethod or UserId or > > > > Password is NULL. > > > > + @retval EFI_OUT_OF_RESOURCES There are not enough memory > > > > resources. > > > > + @retval EFI_UNSUPPORTED Unsupported authentication > method > > is > > > > found. > > > > + > > > > +**/ > > > > +EFI_STATUS > > > > +EFIAPI > > > > +LibCredentialGetAuthInfo ( > > > > + IN EDKII_REDFISH_CREDENTIAL_PROTOCOL *This, > > > > + OUT EDKII_REDFISH_AUTH_METHOD *AuthMethod, > > > > + OUT CHAR8 **UserId, > > > > + OUT CHAR8 **Password > > > > +) > > > > +{ > > > > + return EFI_UNSUPPORTED; > > > > +} > > > > + > > > > +/** > > > > + Notify the Redfish service provide to stop provide > > > > +configuration service to > > > > this platform. > > > > + > > > > + This function should be called when the platfrom is about to > > > > + leave the safe > > > > environment. > > > > + It will notify the Redfish service provider to abort all > > > > + logined session, and > > > > prohibit > > > > + further login with original auth info. GetAuthInfo() will > > > > + return > > > > EFI_UNSUPPORTED once this > > > > + function is returned. > > > > + > > > > + @param[in] This Pointer to > > > > EDKII_REDFISH_CREDENTIAL_PROTOCOL instance. > > > > + @param[in] ServiceStopType Reason of stopping Redfish serv= ice. > > > > + > > > > + @retval EFI_SUCCESS Service has been stoped success= fully. > > > > + @retval EFI_INVALID_PARAMETER This is NULL or given the worng > > > > ServiceStopType. > > > > + @retval EFI_UNSUPPORTED Not support to stop Redfish ser= vice. > > > > + @retval Others Some error happened. > > > > + > > > > +**/ > > > > +EFI_STATUS > > > > +EFIAPI > > > > +LibStopRedfishService ( > > > > + IN EDKII_REDFISH_CREDENTIAL_PROTOCOL *This, > > > > + IN EDKII_REDFISH_CREDENTIAL_STOP_SERVICE_TYPE > > ServiceStopType > > > > + ) > > > > +{ > > > > + return EFI_UNSUPPORTED; > > > > +} > > > > + > > > > diff --git > > > > a/RedfishPkg/Library/PlatformCredentialLibNull/PlatformCredentialL > > > > ib > > > > Nu > > > > ll.in > > > > f > > > > b/RedfishPkg/Library/PlatformCredentialLibNull/PlatformCredentialL > > > > ib > > > > Nu > > > > ll.in > > > > f > > > > new file mode 100644 > > > > index 0000000000..4c22e89718 > > > > --- /dev/null > > > > +++ > > > > b/RedfishPkg/Library/PlatformCredentialLibNull/PlatformCredentialL > > > > ib > > > > Nu > > > > ll.in > > > > f > > > > @@ -0,0 +1,30 @@ > > > > +## @file > > > > +# NULL instance of RedfishPlatformCredentialLib # # (C) > > > > +Copyright > > > > +2020 Hewlett Packard Enterprise Development LP
# # > > > > +SPDX-License-Identifier: BSD-2-Clause-Patent # ## > > > > + > > > > +[Defines] > > > > + INF_VERSION =3D 0x0001000b > > > > + BASE_NAME =3D RedfishPlatformCredentialLibN= ull > > > > + FILE_GUID =3D CA3BD843-0BDD-4EE0-A38A-B45CA= 663114F > > > > + MODULE_TYPE =3D DXE_DRIVER > > > > + VERSION_STRING =3D 1.0 > > > > + LIBRARY_CLASS =3D RedfishPlatformCredentialLib > > > > + > > > > +# > > > > +# VALID_ARCHITECTURES =3D IA32 X64 ARM AARCH64 RISCV64 > > > > +# > > > > + > > > > +[Sources] > > > > + PlatformCredentialLibNull.c > > > > + > > > > +[Packages] > > > > + MdePkg/MdePkg.dec > > > > + MdeModulePkg/MdeModulePkg.dec > > > > + RedfishPkg/RedfishPkg.dec > > > > + > > > > + > > > > diff --git a/RedfishPkg/Redfish.fdf.inc > > > > b/RedfishPkg/Redfish.fdf.inc index 19de479a80..24e32e0abf 100644 > > > > --- a/RedfishPkg/Redfish.fdf.inc > > > > +++ b/RedfishPkg/Redfish.fdf.inc > > > > @@ -13,4 +13,5 @@ > > > > !if $(REDFISH_ENABLE) =3D=3D TRUE > > > > INF RedfishPkg/RestJsonStructureDxe/RestJsonStructureDxe.inf > > > > INF > > > > RedfishPkg/RedfishHostInterfaceDxe/RedfishHostInterfaceDxe.inf > > > > + INF RedfishPkg/RedfishCredentialDxe/RedfishCredentialDxe.inf > > > > !endif > > > > diff --git a/RedfishPkg/RedfishComponents.dsc.inc > > > > b/RedfishPkg/RedfishComponents.dsc.inc > > > > index ac1b57ed8f..ff32653ec8 100644 > > > > --- a/RedfishPkg/RedfishComponents.dsc.inc > > > > +++ b/RedfishPkg/RedfishComponents.dsc.inc > > > > @@ -15,4 +15,5 @@ > > > > !if $(REDFISH_ENABLE) =3D=3D TRUE > > > > RedfishPkg/RestJsonStructureDxe/RestJsonStructureDxe.inf > > > > RedfishPkg/RedfishHostInterfaceDxe/RedfishHostInterfaceDxe.inf > > > > + RedfishPkg/RedfishCredentialDxe/RedfishCredentialDxe.inf > > > > !endif > > > > diff --git > > > > a/RedfishPkg/RedfishCredentialDxe/RedfishCredentialDxe.c > > > > b/RedfishPkg/RedfishCredentialDxe/RedfishCredentialDxe.c > > > > new file mode 100644 > > > > index 0000000000..f48d1d011c > > > > --- /dev/null > > > > +++ b/RedfishPkg/RedfishCredentialDxe/RedfishCredentialDxe.c > > > > @@ -0,0 +1,209 @@ > > > > +/** @file > > > > + RedfishCrentialDxe produces the EdkIIRedfishCredentialProtocol > > > > +for the > > > > consumer > > > > + to get the Redfish credential Info and to restrict Redfish > > > > + access from UEFI > > > > side. > > > > + > > > > + (C) Copyright 2020 Hewlett Packard Enterprise Development > > > > + LP
> > > > + > > > > + SPDX-License-Identifier: BSD-2-Clause-Patent > > > > + > > > > +**/ > > > > + > > > > +#include > > > > + > > > > +EDKII_REDFISH_CREDENTIAL_PROTOCOL mRedfishCredentialProtocol > =3D > > { > > > > + RedfishCredentialGetAuthInfo, > > > > + RedfishCredentialStopService > > > > +}; > > > > + > > > > +/** > > > > + Callback function executed when the ExitBootServices event > > > > +group is > > > > signaled. > > > > + > > > > + @param[in] Event Event whose notification function is being > invoked. > > > > + @param[out] Context Pointer to the buffer pass in. > > > > +**/ > > > > +VOID > > > > +EFIAPI > > > > +RedfishCredentialExitBootServicesEventNotify ( > > > > + IN EFI_EVENT Event, > > > > + OUT VOID *Context > > > > + ) > > > > +{ > > > > + LibCredentialExitBootServicesNotify > > > > ((EDKII_REDFISH_CREDENTIAL_PROTOCOL *)Context); > > > > +} > > > > + > > > > +/** > > > > + Callback function executed when the EndOfDxe event group is > signaled. > > > > + > > > > + @param[in] Event Event whose notification function is being > invoked. > > > > + @param[out] Context Pointer to the buffer pass in. > > > > +**/ > > > > +VOID > > > > +EFIAPI > > > > +RedfishCredentialEndOfDxeEventNotify ( > > > > + IN EFI_EVENT Event, > > > > + OUT VOID *Context > > > > + ) > > > > +{ > > > > + LibCredentialEndOfDxeNotify > > ((EDKII_REDFISH_CREDENTIAL_PROTOCOL > > > > *)Context); > > > > + > > > > + // > > > > + // Close event, so it will not be invoked again. > > > > + // > > > > + gBS->CloseEvent (Event); > > > > +} > > > > + > > > > +/** > > > > + Retrieve platform's Redfish authentication information. > > > > + > > > > + This functions returns the Redfish authentication method > > > > + together with > > > > the user Id and > > > > + password. > > > > + - For AuthMethodNone, the UserId and Password could be used for > > > > + HTTP > > > > header authentication > > > > + as defined by RFC7235. > > > > + - For AuthMethodRedfishSession, the UserId and Password could > > > > + be used > > > > for Redfish > > > > + session login as defined by Redfish API specification (DSP026= 6). > > > > + > > > > + Callers are responsible for and freeing the returned string stor= age. > > > > + > > > > + @param[in] This Pointer to > > > > EDKII_REDFISH_CREDENTIAL_PROTOCOL instance. > > > > + @param[out] AuthMethod Type of Redfish authentication > > method. > > > > + @param[out] UserId The pointer to store the return= ed UserId > > > > string. > > > > + @param[out] Password The pointer to store the return= ed > > > Password > > > > string. > > > > + > > > > + @retval EFI_SUCCESS Get the authentication informat= ion > > > > successfully. > > > > + @retval EFI_ACCESS_DENIED SecureBoot is disabled after > > EndOfDxe. > > > > + @retval EFI_INVALID_PARAMETER This or AuthMethod or UserId or > > > > Password is NULL. > > > > + @retval EFI_OUT_OF_RESOURCES There are not enough memory > > > > resources. > > > > + @retval EFI_UNSUPPORTED Unsupported authentication > method > > is > > > > found. > > > > + > > > > +**/ > > > > +EFI_STATUS > > > > +EFIAPI > > > > +RedfishCredentialGetAuthInfo ( > > > > + IN EDKII_REDFISH_CREDENTIAL_PROTOCOL *This, > > > > + OUT EDKII_REDFISH_AUTH_METHOD *AuthMethod, > > > > + OUT CHAR8 **UserId, > > > > + OUT CHAR8 **Password > > > > + ) > > > > +{ > > > > + if (This =3D=3D NULL || AuthMethod =3D=3D NULL || UserId =3D=3D = NULL || > > > > +Password > > > > =3D=3D NULL) { > > > > + return EFI_INVALID_PARAMETER; } > > > > + > > > > + return LibCredentialGetAuthInfo (This, AuthMethod, > > > > +UserId,Password); } > > > > + > > > > +/** > > > > + Notify the Redfish service provide to stop provide > > > > +configuration service to > > > > this platform. > > > > + > > > > + This function should be called when the platfrom is about to > > > > + leave the safe > > > > environment. > > > > + It will notify the Redfish service provider to abort all > > > > + logined session, and > > > > prohibit > > > > + further login with original auth info. GetAuthInfo() will > > > > + return > > > > EFI_UNSUPPORTED once this > > > > + function is returned. > > > > + > > > > + @param[in] This Pointer to > > > > EDKII_REDFISH_CREDENTIAL_PROTOCOL instance. > > > > + @param[in] ServiceStopType Reason of stopping Redfish serv= ice. > > > > + > > > > + @retval EFI_SUCCESS Service has been stoped success= fully. > > > > + @retval EFI_INVALID_PARAMETER This is NULL or given the worng > > > > ServiceStopType. > > > > + @retval EFI_UNSUPPORTED Not support to stop Redfish ser= vice. > > > > + @retval Others Some error happened. > > > > + > > > > +**/ > > > > +EFI_STATUS > > > > +EFIAPI > > > > +RedfishCredentialStopService ( > > > > + IN EDKII_REDFISH_CREDENTIAL_PROTOCOL *This, > > > > + IN EDKII_REDFISH_CREDENTIAL_STOP_SERVICE_TYPE > > ServiceStopType > > > > + ) > > > > +{ > > > > + if (This =3D=3D NULL) { > > > > + return EFI_INVALID_PARAMETER; > > > > + } > > > > + > > > > + return LibStopRedfishService (This, ServiceStopType); } > > > > + > > > > +/** > > > > + Main entry for this driver. > > > > + > > > > + @param ImageHandle Image handle this driver. > > > > + @param SystemTable Pointer to SystemTable. > > > > + > > > > + @retval EFI_SUCESS This function always complete successfull= y. > > > > + > > > > +**/ > > > > +EFI_STATUS > > > > +EFIAPI > > > > +RedfishCredentialDxeDriverEntryPoint ( > > > > + IN EFI_HANDLE ImageHandle, > > > > + IN EFI_SYSTEM_TABLE *SystemTable > > > > + ) > > > > +{ > > > > + EFI_STATUS Status; > > > > + EFI_HANDLE Handle; > > > > + EFI_EVENT EndOfDxeEvent; > > > > + EFI_EVENT ExitBootServiceEvent; > > > > + > > > > + Handle =3D NULL; > > > > + > > > > + // > > > > + // Install the RedfishCredentialProtocol onto Handle. > > > > + // > > > > + Status =3D gBS->InstallMultipleProtocolInterfaces ( > > > > + &Handle, > > > > + &gEdkIIRedfishCredentialProtocolGuid, > > > > + &mRedfishCredentialProtocol, > > > > + NULL > > > > + ); > > > > + if (EFI_ERROR (Status)) { > > > > + return Status; > > > > + } > > > > + > > > > + // > > > > + // After EndOfDxe, if SecureBoot is disabled, Redfish > > > > + Credential Protocol > > > > should return > > > > + // error code to caller to avoid the 3rd code to bypass Redfish > > > > + Credential > > > > Protocol and > > > > + // retrieve userid/pwd directly. So, here, we create EndOfDxe > > > > + Event to > > > > check SecureBoot > > > > + // status. > > > > + // > > > > + Status =3D gBS->CreateEventEx ( > > > > + EVT_NOTIFY_SIGNAL, > > > > + TPL_CALLBACK, > > > > + RedfishCredentialEndOfDxeEventNotify, > > > > + (VOID *)&mRedfishCredentialProtocol, > > > > + &gEfiEndOfDxeEventGroupGuid, > > > > + &EndOfDxeEvent > > > > + ); > > > > + if (EFI_ERROR (Status)) { > > > > + goto ON_ERROR; > > > > + } > > > > + > > > > + // > > > > + // After ExitBootServices, Redfish Credential Protocol should > > > > + stop the > > > > service. > > > > + // So, here, we create ExitBootService Event to stop service. > > > > + // > > > > + Status =3D gBS->CreateEventEx ( > > > > + EVT_NOTIFY_SIGNAL, > > > > + TPL_CALLBACK, > > > > + RedfishCredentialExitBootServicesEventNotify, > > > > + (VOID *)&mRedfishCredentialProtocol, > > > > + &gEfiEventExitBootServicesGuid, > > > > + &ExitBootServiceEvent > > > > + ); > > > > + if (EFI_ERROR (Status)) { > > > > + gBS->CloseEvent (EndOfDxeEvent); > > > > + goto ON_ERROR; > > > > + } > > > > + > > > > + return EFI_SUCCESS; > > > > + > > > > +ON_ERROR: > > > > + > > > > + gBS->UninstallMultipleProtocolInterfaces ( > > > > + Handle, > > > > + &gEdkIIRedfishCredentialProtocolGuid, > > > > + &mRedfishCredentialProtocol, > > > > + NULL > > > > + ); > > > > + > > > > + return Status; > > > > +} > > > > diff --git > > > > a/RedfishPkg/RedfishCredentialDxe/RedfishCredentialDxe.h > > > > b/RedfishPkg/RedfishCredentialDxe/RedfishCredentialDxe.h > > > > new file mode 100644 > > > > index 0000000000..6e7e417b33 > > > > --- /dev/null > > > > +++ b/RedfishPkg/RedfishCredentialDxe/RedfishCredentialDxe.h > > > > @@ -0,0 +1,75 @@ > > > > +/** @file > > > > + Definition of Redfish Credential DXE driver. > > > > + > > > > + (C) Copyright 2020 Hewlett Packard Enterprise Development > > > > + LP
> > > > + > > > > + SPDX-License-Identifier: BSD-2-Clause-Patent > > > > + > > > > +**/ > > > > +#ifndef EDKII_REDFISH_CREDENTIAL_DXE_H_ #define > > > > +EDKII_REDFISH_CREDENTIAL_DXE_H_ > > > > + > > > > +#include > > > > + > > > > +#include > > > > +#include > > > > +#include > > > > +#include #include > > > > + #include > > > > + > > > > +/** > > > > + Retrieve platform's Redfish authentication information. > > > > + > > > > + This functions returns the Redfish authentication method > > > > + together with > > > > the user Id and > > > > + password. > > > > + - For AuthMethodNone, the UserId and Password could be used for > > > > + HTTP > > > > header authentication > > > > + as defined by RFC7235. > > > > + - For AuthMethodRedfishSession, the UserId and Password could > > > > + be used > > > > for Redfish > > > > + session login as defined by Redfish API specification (DSP026= 6). > > > > + > > > > + Callers are responsible for and freeing the returned string stor= age. > > > > + > > > > + @param[in] This Pointer to > > > > EDKII_REDFISH_CREDENTIAL_PROTOCOL instance. > > > > + @param[out] AuthMethod Type of Redfish authentication > > method. > > > > + @param[out] UserId The pointer to store the return= ed UserId > > > > string. > > > > + @param[out] Password The pointer to store the return= ed > > > Password > > > > string. > > > > + > > > > + @retval EFI_SUCCESS Get the authentication informat= ion > > > > successfully. > > > > + @retval EFI_ACCESS_DENIED SecureBoot is disabled after > > EndOfDxe. > > > > + @retval EFI_INVALID_PARAMETER This or AuthMethod or UserId or > > > > Password is NULL. > > > > + @retval EFI_OUT_OF_RESOURCES There are not enough memory > > > > resources. > > > > + @retval EFI_UNSUPPORTED Unsupported authentication > method > > is > > > > found. > > > > + > > > > +**/ > > > > +EFI_STATUS > > > > +EFIAPI > > > > +RedfishCredentialGetAuthInfo ( > > > > + IN EDKII_REDFISH_CREDENTIAL_PROTOCOL *This, > > > > + OUT EDKII_REDFISH_AUTH_METHOD *AuthMethod, > > > > + OUT CHAR8 **UserId, > > > > + OUT CHAR8 **Password > > > > + ); > > > > + > > > > +/** > > > > + Notify the Redfish service provide to stop provide > > > > +configuration service to > > > > this platform. > > > > + > > > > + This function should be called when the platfrom is about to > > > > + leave the safe > > > > environment. > > > > + It will notify the Redfish service provider to abort all > > > > + logined session, and > > > > prohibit > > > > + further login with original auth info. GetAuthInfo() will > > > > + return > > > > EFI_UNSUPPORTED once this > > > > + function is returned. > > > > + > > > > + @param[in] This Pointer to > > > > EDKII_REDFISH_CREDENTIAL_PROTOCOL instance. > > > > + > > > > + @retval EFI_SUCCESS Service has been stoped success= fully. > > > > + @retval EFI_INVALID_PARAMETER This is NULL. > > > > + @retval Others Some error happened. > > > > + > > > > +**/ > > > > +EFI_STATUS > > > > +EFIAPI > > > > +RedfishCredentialStopService ( > > > > + IN EDKII_REDFISH_CREDENTIAL_PROTOCOL *This, > > > > + IN EDKII_REDFISH_CREDENTIAL_STOP_SERVICE_TYPE > > ServiceStopType > > > > + ); > > > > +#endif > > > > diff --git > > > > a/RedfishPkg/RedfishCredentialDxe/RedfishCredentialDxe.inf > > > > b/RedfishPkg/RedfishCredentialDxe/RedfishCredentialDxe.inf > > > > new file mode 100644 > > > > index 0000000000..707d9a04d9 > > > > --- /dev/null > > > > +++ b/RedfishPkg/RedfishCredentialDxe/RedfishCredentialDxe.inf > > > > @@ -0,0 +1,51 @@ > > > > +## @file > > > > +# RedfishCredentialDxe is required to produce the # EdkII > > > > +RedfishCredentialProtocol for the consumer to get the Redfish # > > > > +credential Info and to restrict Redfish access from UEFI side. > > > > +# > > > > +# (C) Copyright 2020 Hewlett Packard Enterprise Development > > > > +LP
# > > > > +SPDX-License-Identifier: BSD-2-Clause-Patent # ## > > > > + > > > > +[Defines] > > > > + INF_VERSION =3D 0x0001000b > > > > + BASE_NAME =3D RedfishCredentialDxe > > > > + FILE_GUID =3D 458CE95A-4942-09A9-5D21-A6B16= D5DAD7F > > > > + MODULE_TYPE =3D DXE_DRIVER > > > > + VERSION_STRING =3D 1.0 > > > > + ENTRY_POINT =3D RedfishCredentialDxeDriverEnt= ryPoint > > > > + > > > > +# > > > > +# VALID_ARCHITECTURES =3D IA32 X64 ARM AARCH64 RISCV64 > > > > +# > > > > + > > > > +[Sources] > > > > + RedfishCredentialDxe.c > > > > + RedfishCredentialDxe.h > > > > + > > > > +[Packages] > > > > + MdePkg/MdePkg.dec > > > > + MdeModulePkg/MdeModulePkg.dec > > > > + RedfishPkg/RedfishPkg.dec > > > > + > > > > +[LibraryClasses] > > > > + BaseLib > > > > + DebugLib > > > > + PrintLib > > > > + RedfishPlatformCredentialLib > > > > + UefiBootServicesTableLib > > > > + UefiDriverEntryPoint > > > > + UefiRuntimeServicesTableLib > > > > + UefiLib > > > > + > > > > +[Protocols] > > > > + gEdkIIRedfishCredentialProtocolGuid ## BY_START > > > > + > > > > + > > > > +[Guids] > > > > + gEfiEndOfDxeEventGroupGuid ## CONSUMES ## Event > > > > + gEfiEventExitBootServicesGuid ## CONSUMES ## Event > > > > + > > > > +[Depex] > > > > + TRUE > > > > diff --git a/RedfishPkg/RedfishPkg.dec b/RedfishPkg/RedfishPkg.dec > > > > index 861f6dd0c8..fc56b4fefb 100644 > > > > --- a/RedfishPkg/RedfishPkg.dec > > > > +++ b/RedfishPkg/RedfishPkg.dec > > > > @@ -21,6 +21,10 @@ > > > > # Platform implementation-specific Redfish Host Interface. > > > > > > > > RedfishPlatformHostInterfaceLib|Include/Library/RedfishHostInterfa > > > > RedfishPlatformHostInterfaceLib|ce > > > > RedfishPlatformHostInterfaceLib|Li > > > > RedfishPlatformHostInterfaceLib|b.h > > > > > > > > + ## @libraryclass Platform Redfish Credential Library > > > > + # Platform implementation-specific Redfish Credential Interfac= e. > > > > + > > > > + RedfishPlatformCredentialLib|Include/Library/RedfishCredentialLib= . > > > > + h > > > > + > > > > [Protocols] > > > > ## Include/Protocol/RedfishDiscover.h > > > > gEfiRedfishDiscoverProtocolGuid =3D { 0x5db12509, 0x4550, 0= x4347, > > { 0x96, > > > > 0xb3, 0x73, 0xc0, 0xff, 0x6e, 0x86, 0x9f }} diff --git > > > > a/RedfishPkg/RedfishPkg.dsc b/RedfishPkg/RedfishPkg.dsc index > > > > 94e7127bc6..f7d5b90918 100644 > > > > --- a/RedfishPkg/RedfishPkg.dsc > > > > +++ b/RedfishPkg/RedfishPkg.dsc > > > > @@ -32,6 +32,7 @@ > > > > > > > > > > > > > > DebugPrintErrorLevelLib|MdePkg/Library/BaseDebugPrintErrorLevelLib/Bas > > > > eDebugPrintErrorLevelLib.inf > > > > PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf > > > > > > > > RedfishPlatformHostInterfaceLib|RedfishPkg/Library/PlatformHostInt > > > > RedfishPlatformHostInterfaceLib|er > > > > RedfishPlatformHostInterfaceLib|fa > > > > RedfishPlatformHostInterfaceLib|ce > > > > LibNull/PlatformHostInterfaceLibNull.inf > > > > + > > > > RedfishPlatformCredentialLib|RedfishPkg/Library/PlatformCredential > > > > RedfishPlatformCredentialLib|Li > > > > RedfishPlatformCredentialLib|bN > > > > RedfishPlatformCredentialLib|ull/ > > > > PlatformCredentialLibNull.inf > > > > > > > > [LibraryClasses.ARM, LibraryClasses.AARCH64] > > > > # > > > > @@ -43,5 +44,6 @@ > > > > > > > > [Components] > > > > > > > > RedfishPkg/Library/PlatformHostInterfaceLibNull/PlatformHostInterf > > > > ac > > > > eL > > > > ibN > > > > ull.inf > > > > + > > > > RedfishPkg/Library/PlatformCredentialLibNull/PlatformCredentialLib > > > > Nu > > > > ll > > > > .inf > > > > > > > > !include RedfishPkg/Redfish.dsc.inc > > > > -- > > > > 2.17.1