/** @file | |
Internal include file for BaseCryptLib. | |
Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.<BR> | |
SPDX-License-Identifier: BSD-2-Clause-Patent | |
**/ | |
#ifndef __INTERNAL_CRYPT_LIB_H__ | |
#define __INTERNAL_CRYPT_LIB_H__ | |
#undef _WIN32 | |
#undef _WIN64 | |
#include <Library/BaseLib.h> | |
#include <Library/BaseMemoryLib.h> | |
#include <Library/MemoryAllocationLib.h> | |
#include <Library/DebugLib.h> | |
#include <Library/BaseCryptLib.h> | |
#include "CrtLibSupport.h" | |
#include <openssl/opensslv.h> | |
#if OPENSSL_VERSION_NUMBER < 0x10100000L | |
#define OBJ_get0_data(o) ((o)->data) | |
#define OBJ_length(o) ((o)->length) | |
#endif | |
/** | |
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 |