blob: a54e6308aee982ec307c65c847647d16f646f30d [file]
/** @file
Application for Pkcs7 Attached Content Validation.
Copyright (c) 2025, Intel Corporation. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#include "TestBaseCryptLib.h"
#include "Pkcs7AttachedContentSignatures.h"
/**
TestPkcs7Attached()
Pass the API a pkcs7 with content data and contents return should not be null.
@param[in] Framework - Unit-test framework handle.
@param[in] Context - Optional context pointer for this test.
@retval UNIT_TEST_PASSED - The required pkcs7 contents return not be null.
@retval UNIT_TEST_ERROR_TEST_FAILED - Something failed, check the debug output.
**/
static
UNIT_TEST_STATUS
EFIAPI
TestPkcs7Attached (
IN UNIT_TEST_CONTEXT Context
)
{
UINTN SignedDataSize;
UINT8 *AttachedData;
UINTN AttachedDataSize;
EFI_STATUS Status;
SignedDataSize = sizeof (Pck7AttachedTest);
Status = Pkcs7GetAttachedContent (
Pck7AttachedTest,
SignedDataSize,
(VOID **)&AttachedData,
&AttachedDataSize
);
UT_ASSERT_EQUAL (Status, TRUE);
// AttachedData != NULL
if (AttachedData == NULL) {
UT_ASSERT_TRUE (FALSE);
}
return UNIT_TEST_PASSED;
}// TestPkcs7Attached()
/**
TestPkcs7Detached()
Pass the API a pkcs7 detached (without content data) and contents return should be null.
@param[in] Framework - Unit-test framework handle.
@param[in] Context - Optional context pointer for this test.
@retval UNIT_TEST_PASSED - The required pkcs7 detached contents return be null.
@retval UNIT_TEST_ERROR_TEST_FAILED - Something failed, check the debug output.
**/
static
UNIT_TEST_STATUS
EFIAPI
TestPkcs7Detached (
IN UNIT_TEST_CONTEXT Context
)
{
UINTN SignedDataSize;
UINT8 *AttachedData;
UINTN AttachedDataSize;
EFI_STATUS Status;
SignedDataSize = sizeof (Pck7DetachedTest);
Status = Pkcs7GetAttachedContent (
Pck7DetachedTest,
SignedDataSize,
(VOID **)&AttachedData,
&AttachedDataSize
);
UT_ASSERT_EQUAL (Status, TRUE);
// Check no AttachedData
if ((AttachedData != NULL) || (AttachedDataSize != 0)) {
UT_ASSERT_TRUE (FALSE);
}
return UNIT_TEST_PASSED;
}// TestPkcs7Detached()
/**
TestVerifyPkcs7ContentData()
Pass the API a pkcs7 with content data and verify contents return.
@param[in] Framework - Unit-test framework handle.
@param[in] Context - Optional context pointer for this test.
@retval UNIT_TEST_PASSED - The required pkcs7 contents return were correct.
@retval UNIT_TEST_ERROR_TEST_FAILED - Something failed, check the debug output.
**/
static
UNIT_TEST_STATUS
EFIAPI
TestVerifyPkcs7ContentData (
IN UNIT_TEST_CONTEXT Context
)
{
UINTN SignedDataSize;
UINT8 *AttachedData;
UINTN AttachedDataSize;
EFI_STATUS Status;
SignedDataSize = sizeof (Pck7AttachedTest);
Status = Pkcs7GetAttachedContent (
Pck7AttachedTest,
SignedDataSize,
(VOID **)&AttachedData,
&AttachedDataSize
);
UT_ASSERT_EQUAL (Status, TRUE);
// Compare AttachedData
if (CompareMem (AttachedData, &AttachedContents, sizeof (AttachedContents)) != 0) {
UT_ASSERT_TRUE (FALSE);
}
return UNIT_TEST_PASSED;
}// TestVerifyPkcs7ContentData()
/**
TestWithInvalidpkcs7()
Pass the API a Invalid pkcs7 and ensure that they don't pass.
@param[in] Framework - Unit-test framework handle.
@param[in] Context - Optional context pointer for this test.
@retval UNIT_TEST_PASSED - The required pkcs7 were found.
@retval UNIT_TEST_ERROR_TEST_FAILED - Something failed, check the debug output.
**/
static
UNIT_TEST_STATUS
EFIAPI
TestWithInvalidPkcs7 (
IN UNIT_TEST_CONTEXT Context
)
{
UINTN SignedDataSize;
UINT8 *AttachedData;
UINTN AttachedDataSize;
EFI_STATUS Status;
SignedDataSize = sizeof (Pck7FailTest);
Status = Pkcs7GetAttachedContent (
Pck7FailTest,
SignedDataSize,
(VOID **)&AttachedData,
&AttachedDataSize
);
UT_ASSERT_EQUAL (Status, FALSE);
return UNIT_TEST_PASSED;
}// TestWithInvalidPkcs7()
/**
TestWithInvalidParameters()
Pass the API a Invalid Parameters and checks function error handling.
@param[in] Framework - Unit-test framework handle.
@param[in] Context - Optional context pointer for this test.
@retval UNIT_TEST_PASSED - The required API handling invalid parameters good.
@retval UNIT_TEST_ERROR_TEST_FAILED - Something failed, check the debug output.
**/
static
UNIT_TEST_STATUS
EFIAPI
TestWithInvalidParameters (
IN UNIT_TEST_CONTEXT Context
)
{
UINTN SignedDataSize;
UINT8 *AttachedData;
UINTN AttachedDataSize;
EFI_STATUS Status;
SignedDataSize = sizeof (Pck7AttachedTest);
Status = Pkcs7GetAttachedContent (
NULL,
SignedDataSize,
(VOID **)&AttachedData,
&AttachedDataSize
);
UT_ASSERT_EQUAL (Status, FALSE);
SignedDataSize = (UINTN)(2147483647U + 1U); // INT MAX + 1
Status = Pkcs7GetAttachedContent (
Pck7AttachedTest,
SignedDataSize,
(VOID **)&AttachedData,
&AttachedDataSize
);
UT_ASSERT_EQUAL (Status, FALSE);
SignedDataSize = sizeof (Pck7AttachedTest);
Status = Pkcs7GetAttachedContent (
Pck7AttachedTest,
SignedDataSize,
NULL,
&AttachedDataSize
);
UT_ASSERT_EQUAL (Status, FALSE);
SignedDataSize = sizeof (Pck7AttachedTest);
Status = Pkcs7GetAttachedContent (
Pck7AttachedTest,
SignedDataSize,
(VOID **)&AttachedData,
NULL
);
UT_ASSERT_EQUAL (Status, FALSE);
return UNIT_TEST_PASSED;
}// TestWithInvalidParameters()
TEST_DESC mPkcs7ContentTest[] = {
//
// -----Description--------------------------------Class----------------------------Function------------------------------Pre---Post--Context
//
{ "TestPkcs7Attached()", "CryptoPkg.BaseCryptLib.Pkcs7Content", TestPkcs7Attached, NULL, NULL, NULL },
{ "TestPkcs7Detached()", "CryptoPkg.BaseCryptLib.TestPkcs7Detached", TestPkcs7Detached, NULL, NULL, NULL },
{ "TestVerifyPkcs7ContentData()", "CryptoPkg.BaseCryptLib.TestVerifyPkcs7ContentData", TestVerifyPkcs7ContentData, NULL, NULL, NULL },
{ "TestWithInvalidPkcs7()", "CryptoPkg.BaseCryptLib.TestWithInvalidPkcs7", TestWithInvalidPkcs7, NULL, NULL, NULL },
{ "TestWithInvalidParameters()", "CryptoPkg.BaseCryptLib.TestWithInvalidParameters", TestWithInvalidParameters, NULL, NULL, NULL },
};
UINTN mPkcs7ContentTestNum = ARRAY_SIZE (mPkcs7ContentTest);
TEST_DESC mPkcs7ContentTestMbedTls[] = {
//
// -----Description--------------------------------Class----------------------------Function------------------------------Pre---Post--Context
//
{ "TestWithInvalidPkcs7()", "CryptoPkg.BaseCryptLib.TestWithInvalidPkcs7", TestWithInvalidPkcs7, NULL, NULL, NULL },
{ "TestWithInvalidParameters()", "CryptoPkg.BaseCryptLib.TestWithInvalidParameters", TestWithInvalidParameters, NULL, NULL, NULL },
};
UINTN mPkcs7ContentTestMbedTlsNum = ARRAY_SIZE (mPkcs7ContentTestMbedTls);