/** @file Internal include file for BaseCryptLib. Copyright (c) 2023, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef INTERNAL_CRYPT_LIB_H_ #define INTERNAL_CRYPT_LIB_H_ #include #include #include #include #include #include // // We should alwasy add mbedtls/config.h here // to ensure the config override takes effect. // #include /** The MbedTLS function f_rng, which MbedtlsRand implements. @param[in] RngState Not used, just for compatibility with mbedlts. @param[out] Output Pointer to buffer to receive random value. @param[in] Len Size of random bytes to generate. @retval 0 Pseudorandom byte stream generated successfully. @retval Non-0 Pseudorandom number generator fails to generate due to lack of entropy. **/ INT32 MbedtlsRand ( VOID *RngState, UINT8 *Output, UINTN Len ); /** Check input P7Data is a wrapped ContentInfo structure or not. If not construct a new structure to wrap P7Data. Caution: This function may receive untrusted input. UEFI Authenticated Variable is external input, so this function will do basic check for PKCS#7 data structure. @param[in] P7Data Pointer to the PKCS#7 message to verify. @param[in] P7Length Length of the PKCS#7 message in bytes. @param[out] WrapFlag If TRUE P7Data is a ContentInfo structure, otherwise return FALSE. @param[out] WrapData If return status of this function is TRUE: 1) when WrapFlag is TRUE, pointer to P7Data. 2) when WrapFlag is FALSE, pointer to a new ContentInfo structure. It's caller's responsibility to free this buffer. @param[out] WrapDataSize Length of ContentInfo structure in bytes. @retval TRUE The operation is finished successfully. @retval FALSE The operation is failed due to lack of resources. **/ BOOLEAN WrapPkcs7Data ( IN CONST UINT8 *P7Data, IN UINTN P7Length, OUT BOOLEAN *WrapFlag, OUT UINT8 **WrapData, OUT UINTN *WrapDataSize ); #endif