/** @file | |
Header file for RedfishPlatformCredentialIpmiLib. | |
Copyright (c) 2022-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved. | |
SPDX-License-Identifier: BSD-2-Clause-Patent | |
**/ | |
#ifndef REDFISH_PLATFORM_CREDENTIAL_IPMI_LIB_H_ | |
#define REDFISH_PLATFORM_CREDENTIAL_IPMI_LIB_H_ | |
#include <Uefi.h> | |
#include <IndustryStandard/Ipmi.h> | |
#include <IndustryStandard/RedfishHostInterfaceIpmi.h> | |
#include <Protocol/EdkIIRedfishCredential.h> | |
#include <Library/BaseLib.h> | |
#include <Library/BaseMemoryLib.h> | |
#include <Library/DebugLib.h> | |
#include <Library/IpmiLib.h> | |
#include <Library/MemoryAllocationLib.h> | |
#include <Library/RedfishCredentialLib.h> | |
#include <Library/UefiLib.h> | |
#include <Library/UefiRuntimeServicesTableLib.h> | |
#define CREDENTIAL_VARIABLE_NAME L"Partstooblaitnederc" | |
/// | |
/// The bootstrap credential keeping in UEFI variable | |
/// | |
typedef struct { | |
CHAR8 Username[USERNAME_MAX_SIZE]; | |
CHAR8 Password[PASSWORD_MAX_SIZE]; | |
} BOOTSTRAP_CREDENTIALS_VARIABLE; | |
/** | |
Function to retrieve temporary user credentials for the UEFI redfish client. This function can | |
also disable bootstrap credential service in BMC. | |
@param[in] DisableBootstrapControl TRUE - Tell the BMC to disable the bootstrap credential | |
service to ensure no one else gains credentials | |
FALSE Allow the bootstrap credential service to continue | |
@param[in,out] BootstrapUsername A pointer to a Ascii encoded string for the credential username | |
When DisableBootstrapControl is TRUE, this pointer can be NULL | |
@param[in] BootstrapUsernameSize The size of BootstrapUsername including NULL terminator in bytes. | |
Per specification, the size is USERNAME_MAX_SIZE. | |
@param[in,out] BootstrapPassword A pointer to a Ascii encoded string for the credential password | |
When DisableBootstrapControl is TRUE, this pointer can be NULL | |
@param[in] BootstrapPasswordSize The size of BootstrapPassword including NULL terminator in bytes. | |
Per specification, the size is PASSWORD_MAX_SIZE. | |
@retval EFI_SUCCESS Credentials were successfully fetched and returned. When DisableBootstrapControl | |
is set to TRUE, the bootstrap credential service is disabled successfully. | |
@retval EFI_INVALID_PARAMETER BootstrapUsername or BootstrapPassword is NULL when DisableBootstrapControl | |
is set to FALSE. BootstrapUsernameSize or BootstrapPasswordSize is incorrect when | |
DisableBootstrapControl is set to FALSE. | |
@retval EFI_DEVICE_ERROR An IPMI failure occurred | |
**/ | |
EFI_STATUS | |
GetBootstrapAccountCredentials ( | |
IN BOOLEAN DisableBootstrapControl, | |
IN OUT CHAR8 *BootstrapUsername, OPTIONAL | |
IN UINTN BootstrapUsernameSize, | |
IN OUT CHAR8 *BootstrapPassword, OPTIONAL | |
IN UINTN BootstrapPasswordSize | |
); | |
/** | |
Function to save temporary user credentials into boot time variable. When DeleteVariable is True, | |
this function delete boot time variable. | |
@param[in] BootstrapUsername A pointer to a Ascii encoded string for the credential username. | |
@param[in] BootstrapPassword A pointer to a Ascii encoded string for the credential password. | |
@param[in] DeleteVariable True to remove boot time variable. False otherwise. | |
@retval EFI_SUCCESS Credentials were successfully saved. | |
@retval EFI_INVALID_PARAMETER BootstrapUsername or BootstrapPassword is NULL | |
@retval Others Error occurs | |
**/ | |
EFI_STATUS | |
SetBootstrapAccountCredentialsToVariable ( | |
IN CHAR8 *BootstrapUsername, OPTIONAL | |
IN CHAR8 *BootstrapPassword, OPTIONAL | |
IN BOOLEAN DeleteVariable | |
); | |
#endif |