/** @file Application for Pkcs7 Attached Content Validation. Copyright (c) 2025, Intel Corporation. All rights reserved.
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);