From 2255a2b107349cefec1b585805f444f1e3438689 Mon Sep 17 00:00:00 2001 From: Abner Chang Date: Tue, 8 Dec 2020 15:03:49 +0800 Subject: RedfishPkg/Include: EDKII Redfish Credential Header file 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 Reviewed-by: Nickle Wang --- .../Include/Protocol/EdkIIRedfishCredential.h | 101 +++++++++++++++++++++ RedfishPkg/RedfishPkg.dec | 3 + 2 files changed, 104 insertions(+) create mode 100644 RedfishPkg/Include/Protocol/EdkIIRedfishCredential.h (limited to 'RedfishPkg') diff --git a/RedfishPkg/Include/Protocol/EdkIIRedfishCredential.h b/RedfishPkg/Include/Protocol/EdkIIRedfishCredential.h new file mode 100644 index 0000000000..34e33b1e00 --- /dev/null +++ b/RedfishPkg/Include/Protocol/EdkIIRedfishCredential.h @@ -0,0 +1,101 @@ +/** @file + This file defines the EDKII_REDFISH_CREDENTIAL_PROTOCOL interface. + + Copyright (c) 2019, Intel Corporation. All rights reserved.
+ (C) Copyright 2020 Hewlett Packard Enterprise Development LP
+ + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef EDKII_REDFISH_CREDENTIAL_H_ +#define EDKII_REDFISH_CREDENTIAL_H_ + +typedef struct _EDKII_REDFISH_CREDENTIAL_PROTOCOL EDKII_REDFISH_CREDENTIAL_PROTOCOL; + +#define EDKII_REDFISH_CREDENTIAL_PROTOCOL_GUID \ + { \ + 0x8804377, 0xaf7a, 0x4496, { 0x8a, 0x7b, 0x17, 0x59, 0x0, 0xe9, 0xab, 0x46 } \ + } + +typedef enum { + AuthMethodNone, ///< No authentication is required. + AuthMethodHttpBasic, ///< Basic authentication is required. + AuthMethodRedfishSession, ///< Session authentication is required. + AuthMethodMax +} EDKII_REDFISH_AUTH_METHOD; + +typedef enum { + ServiceStopTypeNone = 0, ///< Stop Redfsih service without reason. + ServiceStopTypeSecureBootDisabled, ///< Stop Redfsih service becasue EFI + ///< Secure Boot is disabled. + ServiceStopTypeExitBootService, ///< Stop Redfsih service becasue existing + ///< Boot Service. + ServiceStopTypeMax +} EDKII_REDFISH_CREDENTIAL_STOP_SERVICE_TYPE; + + +/** + 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 (DSP0266). + + Callers are responsible for and freeing the returned string storage. + + @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 returned UserId string. + @param[out] Password The pointer to store the returned Password string. + + @retval EFI_SUCCESS Get the authentication information 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. + +**/ +typedef +EFI_STATUS +(EFIAPI *EDKII_REDFISH_CREDENTIAL_PROTOCOL_GET_AUTH_INFO) ( + 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 service. + + @retval EFI_SUCCESS Service has been stoped successfully. + @retval EFI_INVALID_PARAMETER This is NULL. + @retval Others Some error happened. + +**/ +typedef +EFI_STATUS +(EFIAPI *EDKII_REDFISH_CREDENTIAL_PROTOCOL_STOP_SERVICE) ( + IN EDKII_REDFISH_CREDENTIAL_PROTOCOL *This, + IN EDKII_REDFISH_CREDENTIAL_STOP_SERVICE_TYPE ServiceStopType + ); + +struct _EDKII_REDFISH_CREDENTIAL_PROTOCOL { + EDKII_REDFISH_CREDENTIAL_PROTOCOL_GET_AUTH_INFO GetAuthInfo; + EDKII_REDFISH_CREDENTIAL_PROTOCOL_STOP_SERVICE StopService; +}; + +extern EFI_GUID gEdkIIRedfishCredentialProtocolGuid; + +#endif diff --git a/RedfishPkg/RedfishPkg.dec b/RedfishPkg/RedfishPkg.dec index b38e9b4789..861f6dd0c8 100644 --- a/RedfishPkg/RedfishPkg.dec +++ b/RedfishPkg/RedfishPkg.dec @@ -25,6 +25,9 @@ ## Include/Protocol/RedfishDiscover.h gEfiRedfishDiscoverProtocolGuid = { 0x5db12509, 0x4550, 0x4347, { 0x96, 0xb3, 0x73, 0xc0, 0xff, 0x6e, 0x86, 0x9f }} + ## Include/Protocol/EdkIIRedfishCredential.h + gEdkIIRedfishCredentialProtocolGuid = { 0x8804377, 0xaf7a, 0x4496, { 0x8a, 0x7b, 0x17, 0x59, 0x0, 0xe9, 0xab, 0x46 } } + [Guids] gEfiRedfishPkgTokenSpaceGuid = { 0x4fdbccb7, 0xe829, 0x4b4c, { 0x88, 0x87, 0xb2, 0x3f, 0xd7, 0x25, 0x4b, 0x85 }} -- cgit v1.2.3