| /** @file | |
| Null version of the Arm TRNG (True Random Number Generator) services | |
| (Cf [1]). | |
| Copyright (c) 2021 - 2022, Arm Limited. All rights reserved.<BR> | |
| SPDX-License-Identifier: BSD-2-Clause-Patent | |
| @par Reference(s): | |
| - [1] Arm True Random Number Generator Firmware, Interface 1.0, | |
| Platform Design Document. | |
| (https://developer.arm.com/documentation/den0098/latest/) | |
| - [2] NIST Special Publication 800-90B, Recommendation for the Entropy | |
| Sources Used for Random Bit Generation. | |
| (https://csrc.nist.gov/publications/detail/sp/800-90b/final) | |
| @par Glossary: | |
| - TRNG - True Random Number Generator | |
| **/ | |
| #include <Library/DebugLib.h> | |
| #include <Library/ArmTrngLib.h> | |
| /** Get the version of the Arm TRNG backend. | |
| A TRNG may be implemented by the system firmware, in which case this | |
| function shall return the version of the Arm TRNG backend. | |
| The implementation must return NOT_SUPPORTED if a Back end is not present. | |
| @param [out] MajorRevision Major revision. | |
| @param [out] MinorRevision Minor revision. | |
| @retval RETURN_SUCCESS The function completed successfully. | |
| @retval RETURN_INVALID_PARAMETER Invalid parameter. | |
| @retval RETURN_UNSUPPORTED Backend not present. | |
| **/ | |
| RETURN_STATUS | |
| EFIAPI | |
| GetArmTrngVersion ( | |
| OUT UINT16 *MajorRevision, | |
| OUT UINT16 *MinorRevision | |
| ) | |
| { | |
| ASSERT (FALSE); | |
| return RETURN_UNSUPPORTED; | |
| } | |
| /** Get the UUID of the Arm TRNG backend. | |
| A TRNG may be implemented by the system firmware, in which case this | |
| function shall return the UUID of the TRNG backend. | |
| Returning the Arm TRNG UUID is optional and if not implemented, | |
| RETURN_UNSUPPORTED shall be returned. | |
| Note: The caller must not rely on the returned UUID as a trustworthy Arm TRNG | |
| Back end identity | |
| @param [out] Guid UUID of the Arm TRNG backend. | |
| @retval RETURN_SUCCESS The function completed successfully. | |
| @retval RETURN_INVALID_PARAMETER Invalid parameter. | |
| @retval RETURN_UNSUPPORTED Function not implemented. | |
| **/ | |
| RETURN_STATUS | |
| EFIAPI | |
| GetArmTrngUuid ( | |
| OUT GUID *Guid | |
| ) | |
| { | |
| ASSERT (FALSE); | |
| return RETURN_UNSUPPORTED; | |
| } | |
| /** Returns maximum number of entropy bits that can be returned in a single | |
| call. | |
| @return Returns the maximum number of Entropy bits that can be returned | |
| in a single call to GetArmTrngEntropy(). | |
| **/ | |
| UINTN | |
| EFIAPI | |
| GetArmTrngMaxSupportedEntropyBits ( | |
| VOID | |
| ) | |
| { | |
| ASSERT (FALSE); | |
| return 0; | |
| } | |
| /** Returns N bits of conditioned entropy. | |
| See [2] Section 2.3.1 GetEntropy: An Interface to the Entropy Source | |
| GetEntropy | |
| Input: | |
| bits_of_entropy: the requested amount of entropy | |
| Output: | |
| entropy_bitstring: The string that provides the requested entropy. | |
| status: A Boolean value that is TRUE if the request has been satisfied, | |
| and is FALSE otherwise. | |
| @param [in] EntropyBits Number of entropy bits requested. | |
| @param [in] BufferSize Size of the Buffer in bytes. | |
| @param [out] Buffer Buffer to return the entropy bits. | |
| @retval RETURN_SUCCESS The function completed successfully. | |
| @retval RETURN_INVALID_PARAMETER Invalid parameter. | |
| @retval RETURN_UNSUPPORTED Function not implemented. | |
| @retval RETURN_BAD_BUFFER_SIZE Buffer size is too small. | |
| @retval RETURN_NOT_READY No Entropy available. | |
| **/ | |
| RETURN_STATUS | |
| EFIAPI | |
| GetArmTrngEntropy ( | |
| IN UINTN EntropyBits, | |
| IN UINTN BufferSize, | |
| OUT UINT8 *Buffer | |
| ) | |
| { | |
| ASSERT (FALSE); | |
| return RETURN_UNSUPPORTED; | |
| } |