mirror of https://github.com/acidanthera/audk.git
75 lines
2.4 KiB
C
75 lines
2.4 KiB
C
/** @file
|
|
Internal include file for BaseCryptLib.
|
|
|
|
Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
|
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
|
|
**/
|
|
|
|
#ifndef INTERNAL_CRYPT_LIB_H_
|
|
#define INTERNAL_CRYPT_LIB_H_
|
|
|
|
#include <Library/BaseLib.h>
|
|
#include <Library/BaseMemoryLib.h>
|
|
#include <Library/MemoryAllocationLib.h>
|
|
#include <Library/DebugLib.h>
|
|
#include <Library/BaseCryptLib.h>
|
|
#include <stdio.h>
|
|
|
|
//
|
|
// We should always add mbedtls/config.h here
|
|
// to ensure the config override takes effect.
|
|
//
|
|
#include <mbedtls/mbedtls_config.h>
|
|
|
|
/**
|
|
The MbedTLS function f_rng, which MbedtlsRand implements.
|
|
|
|
@param[in] RngState Not used, just for compatibility with mbedtls.
|
|
@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
|