diff --git a/libwvdrmengine/oemcrypto/test/oemcrypto_security_test.cpp b/libwvdrmengine/oemcrypto/test/oemcrypto_security_test.cpp index 48cd73b1..72390eef 100644 --- a/libwvdrmengine/oemcrypto/test/oemcrypto_security_test.cpp +++ b/libwvdrmengine/oemcrypto/test/oemcrypto_security_test.cpp @@ -39,6 +39,8 @@ namespace wvoec { /// @addtogroup security /// @{ +/** Test that OEMCrypto_FreeSecureBuffer fails gracefully on a huge buffer. + */ TEST_F(OEMCryptoClientTest, OEMCryptoMemoryAllocateSecureBufferForHugeBufferSize) { Session s; @@ -57,6 +59,8 @@ TEST_F(OEMCryptoClientTest, s.close(); } +/** Test that OEMCrypto_WrapKeyboxOrOEMCert fails gracefully on a huge buffer. + */ TEST_F(OEMCryptoClientTest, OEMCryptoMemoryWrapKeyboxOrOEMCertForHugeKeyboxLength) { auto oemcrypto_function = [](size_t keybox_length) { @@ -74,6 +78,8 @@ TEST_F(OEMCryptoClientTest, kHugeInputBufferLength, kCheckStatus); } +/** Test that OEMCrypto_WrapKeyboxOrOEMCert fails gracefully on a huge buffer. + */ TEST_F(OEMCryptoClientTest, OEMCryptoMemoryWrapKeyboxOrOEMCertForHugeWrappedKeyboxLength) { auto oemcrypto_function = [](size_t buffer_length) { @@ -91,6 +97,8 @@ TEST_F(OEMCryptoClientTest, TestHugeLengthDoesNotCrashAPI(oemcrypto_function, !kCheckStatus); } +/** Test that OEMCrypto_WrapKeyboxOrOEMCert fails gracefully on a huge buffer. + */ TEST_F(OEMCryptoClientTest, OEMCryptoMemoryWrapKeyboxOrOEMCertForHugeTransportKey) { auto oemcrypto_function = [](size_t transport_key_length) { @@ -105,6 +113,8 @@ TEST_F(OEMCryptoClientTest, TestHugeLengthDoesNotCrashAPI(oemcrypto_function, kCheckStatus); } +/** Test that OEMCrypto_WrapKeyboxOrOEMCert fails gracefully on a huge buffer. + */ TEST_F( OEMCryptoClientTest, OEMCryptoMemoryWrapKeyboxOrOEMCertForHugeKeyboxLengthStartingFromLength1) { @@ -124,7 +134,8 @@ TEST_F( TestHugeLengthDoesNotCrashAPI(oemcrypto_function, !kCheckStatus); } -// Test that set sandbox doesn't crash for a large sandbox id leangth. +/** Test that OEMCrypto_SetSandbox fails gracefully on a huge buffer. + */ TEST_F(OEMCryptoClientTest, OEMCryptoMemorySetSandboxForHugeSandboxIdLength) { auto oemcrypto_function = [](size_t buffer_length) { vector buffer(buffer_length); @@ -133,6 +144,8 @@ TEST_F(OEMCryptoClientTest, OEMCryptoMemorySetSandboxForHugeSandboxIdLength) { TestHugeLengthDoesNotCrashAPI(oemcrypto_function, !kCheckStatus); } +/** Test that OEMCrypto_CopyBuffer fails gracefully on a huge buffer. + */ TEST_F(OEMCryptoClientTest, OEMCryptoMemoryCopyBufferForHugeBufferLengths) { Session s; ASSERT_NO_FATAL_FAILURE(s.open()); @@ -163,6 +176,9 @@ TEST_F(OEMCryptoClientTest, OEMCryptoMemoryCopyBufferForHugeBufferLengths) { TestHugeLengthDoesNotCrashAPI(oemcrypto_function, kCheckStatus); } +/** @ingroup security + * Test that OEMCrypto_CopyBuffer fails gracefully on a huge buffer. + */ TEST_F(OEMCryptoClientTest, OEMCryptoMemoryCopyBufferDirectForHugeBufferLengths) { Session s; @@ -184,6 +200,9 @@ TEST_F(OEMCryptoClientTest, TestHugeLengthDoesNotCrashAPI(oemcrypto_function, kCheckStatus); } +/** @ingroup security + * Test that OEMCrypto_CopyBuffer fails gracefully on a huge buffer. + */ TEST_F(OEMCryptoClientTest, OEMCryptoMemoryCopyBufferForOutOfRangeOffset) { Session s; ASSERT_NO_FATAL_FAILURE(s.open()); @@ -245,6 +264,9 @@ TEST_F(OEMCryptoKeyboxTest, } #endif +/** @ingroup security + * Test that OEMCrypto_LoadTestKeybox fails gracefully on a huge buffer. + */ TEST_F(OEMCryptoKeyboxTest, OEMCryptoMemoryLoadTestKeyBoxForHugeKeyboxBuffer) { auto f = [](size_t keybox_length) { vector keybox(keybox_length); @@ -257,6 +279,9 @@ TEST_F(OEMCryptoKeyboxTest, OEMCryptoMemoryLoadTestKeyBoxForHugeKeyboxBuffer) { kCheckStatus); } +/** @ingroup security + * Test that OEMCrypto_LoadTestKeybox fails gracefully on a huge buffer. + */ TEST_F(OEMCryptoKeyboxTest, OEMCryptoMemoryLoadTestKeyBoxForHugeKeyboxBufferStartingFromLength1) { auto f = [](size_t keybox_length) { @@ -268,6 +293,8 @@ TEST_F(OEMCryptoKeyboxTest, TestHugeLengthDoesNotCrashAPI(f, !kCheckStatus); } +/** Test that OEMCrypto_GetDeviceID fails gracefully on a huge buffer. + */ TEST_F(OEMCryptoKeyboxTest, OEMCryptoMemoryGetDeviceIdForHugeIdLength) { auto oemcrypto_function = [](size_t input_length) { size_t device_id_length = input_length; @@ -277,6 +304,8 @@ TEST_F(OEMCryptoKeyboxTest, OEMCryptoMemoryGetDeviceIdForHugeIdLength) { TestHugeLengthDoesNotCrashAPI(oemcrypto_function, kCheckStatus); } +/** Test that OEMCrypto_GetKeyData fails gracefully on a huge buffer. + */ TEST_F(OEMCryptoKeyboxTest, OEMCryptoMemoryGetKeyIdForHugeIdLength) { auto oemcrypto_function = [](size_t input_length) { size_t key_data_length = input_length; @@ -286,6 +315,8 @@ TEST_F(OEMCryptoKeyboxTest, OEMCryptoMemoryGetKeyIdForHugeIdLength) { TestHugeLengthDoesNotCrashAPI(oemcrypto_function, !kCheckStatus); } +/** Test that OEMCrypto_GenerateDerivedKeys fails gracefully on a huge buffer. + */ TEST_F(OEMCryptoKeyboxTest, OEMCryptoMemoryGenerateDerivedKeysForHugeMacContextLength) { Session s; @@ -304,6 +335,8 @@ TEST_F(OEMCryptoKeyboxTest, TestHugeLengthDoesNotCrashAPI(oemcrypto_function, kCheckStatus); } +/** Test that OEMCrypto_GenerateDerivedKeys fails gracefully on a huge buffer. + */ TEST_F(OEMCryptoKeyboxTest, OEMCryptoMemoryGenerateDerivedKeysForHugeEncContextLength) { Session s; @@ -322,6 +355,9 @@ TEST_F(OEMCryptoKeyboxTest, TestHugeLengthDoesNotCrashAPI(oemcrypto_function, kCheckStatus); } +/** Test that OEMCrypto_GetOEMPublicCertificate fails gracefully on a huge + * buffer. + */ TEST_F(OEMCryptoProv30Test, OEMCryptoMemoryGetOEMPublicCertForHugeCertLength) { if (wrapped_rsa_key_.size() == 0) { // If we don't have a wrapped key yet, create one. @@ -343,6 +379,9 @@ TEST_F(OEMCryptoProv30Test, OEMCryptoMemoryGetOEMPublicCertForHugeCertLength) { TestHugeLengthDoesNotCrashAPI(oemcrypto_function, kCheckStatus); } +/** Test that OEMCrypto_CreateUsageTableHeader fails gracefully on a huge + * buffer. + */ TEST_F(OEMCryptoSessionTests, OEMCryptoMemoryCreateUsageTableHeaderForHugeHeaderBufferLength) { auto oemcrypto_function = [](size_t buffer_length) { @@ -354,6 +393,9 @@ TEST_F(OEMCryptoSessionTests, TestHugeLengthDoesNotCrashAPI(oemcrypto_function, kCheckStatus); } +/** Test that OEMCrypto_PrepAndSignRenewalRequest fails gracefully on a huge + * buffer. + */ TEST_F(OEMCryptoMemoryLicenseTest, OEMCryptoMemoryPrepareRenewalRequestForHugeBufferLength) { RenewalRoundTrip renewal_messages(&license_messages_); @@ -364,6 +406,9 @@ TEST_F(OEMCryptoMemoryLicenseTest, TestHugeLengthDoesNotCrashAPI(oemcrypto_function, kCheckStatus); } +/** Test that OEMCrypto_PrepAndSignRenewalRequest fails gracefully on a huge + * buffer. + */ TEST_F(OEMCryptoMemoryLicenseTest, OEMCryptoMemoryPrepareRenewalRequestForHugeSignatureLength) { RenewalRoundTrip renewal_messages(&license_messages_); @@ -374,6 +419,9 @@ TEST_F(OEMCryptoMemoryLicenseTest, TestHugeLengthDoesNotCrashAPI(oemcrypto_function, kCheckStatus); } +/** Test that OEMCrypto_PrepAndSignRenewalRequest fails gracefully on a huge + * buffer. + */ TEST_F(OEMCryptoMemoryLicenseTest, OEMCryptoMemoryPrepareRenewalRequestForHugeCoreMessageLength) { RenewalRoundTrip renewal_messages(&license_messages_); @@ -384,8 +432,9 @@ TEST_F(OEMCryptoMemoryLicenseTest, TestHugeLengthDoesNotCrashAPI(oemcrypto_function, kCheckStatus); } -// This verifies that entitled content keys API does not crash for unreasonable -// input message buffer lengths. +/** Test that loading entitled content keys fails gracefully on a huge + * buffer. + */ TEST_F(OEMCryptoMemoryLicenseTest, OEMCryptoMemoryLoadEntitledKeysForHugeBufferLength) { auto oemcrypto_function = [&](size_t buffer_length) { @@ -402,6 +451,8 @@ TEST_F(OEMCryptoMemoryLicenseTest, TestHugeLengthDoesNotCrashAPI(oemcrypto_function, !kCheckStatus); } +/** Test that OEMCrypto_LoadLicense fails gracefully on a huge buffer. + */ TEST_F(OEMCryptoSessionTests, OEMCryptoMemoryLoadLicenseForHugeSignatureLength) { auto oemcrypto_function = [&](size_t signature_size) { @@ -424,6 +475,8 @@ TEST_F(OEMCryptoSessionTests, TestHugeLengthDoesNotCrashAPI(oemcrypto_function, !kCheckStatus); } +/** Test that OEMCrypto_LoadRenewal fails gracefully on a huge buffer. + */ TEST_F(OEMCryptoSessionTests, OEMCryptoMemoryLoadRenewalForHugeResponseLength) { auto oemcrypto_function = [&](size_t message_size) { Session s; @@ -443,6 +496,8 @@ TEST_F(OEMCryptoSessionTests, OEMCryptoMemoryLoadRenewalForHugeResponseLength) { TestHugeLengthDoesNotCrashAPI(oemcrypto_function, kCheckStatus); } +/** Test that OEMCrypto_LoadRenewal fails gracefully on a huge buffer. + */ TEST_F(OEMCryptoSessionTests, OEMCryptoMemoryLoadRenewalForHugeSignatureLength) { auto oemcrypto_function = [&](size_t signature_size) { @@ -467,6 +522,8 @@ TEST_F(OEMCryptoSessionTests, TestHugeLengthDoesNotCrashAPI(oemcrypto_function, !kCheckStatus); } +/** Test that OEMCrypto_QueryKeyControl fails gracefully on a huge buffer. + */ TEST_F(OEMCryptoSessionTests, OEMCryptoMemoryLoadRenewalForHugeCoreMessageLength) { auto oemcrypto_function = [&](size_t core_message_size) { @@ -487,7 +544,8 @@ TEST_F(OEMCryptoSessionTests, TestHugeLengthDoesNotCrashAPI(oemcrypto_function, kCheckStatus); } -// Test OEMCrypto_QueryKeyControl doesn't crash for huge key_id_length. +/** Test that OEMCrypto_QueryKeyControl fails gracefully on a huge buffer. + */ TEST_F(OEMCryptoSessionTests, OEMCryptoMemoryQueryKeyControlForHugeKeyIdLength) { Session session; @@ -512,8 +570,9 @@ TEST_F(OEMCryptoSessionTests, TestHugeLengthDoesNotCrashAPI(oemcrypto_function, !kCheckStatus); } -// Test OEMCrypto_QueryKeyControl doesn't crash for huge key_control_block -// length. +/** Test OEMCrypto_QueryKeyControl doesn't crash for huge key_control_block + * length. + */ TEST_F(OEMCryptoSessionTests, OEMCryptoMemoryQueryKeyControlForHugeKeyControlBlockLength) { Session session; @@ -534,8 +593,9 @@ TEST_F(OEMCryptoSessionTests, TestHugeLengthDoesNotCrashAPI(oemcrypto_function, kCheckStatus); } -// This test verifies that OEMCrypto_SetDecryptHash doesn't crash for a very -// large hash buffer. +/** This test verifies that OEMCrypto_SetDecryptHash doesn't crash for a very + large hash buffer. +*/ TEST_F(OEMCryptoMemoryLicenseTest, OEMCryptoMemoryDecryptHashForHugeHashBuffer) { uint32_t session_id = session_.session_id(); @@ -548,6 +608,7 @@ TEST_F(OEMCryptoMemoryLicenseTest, TestHugeLengthDoesNotCrashAPI(f, kCheckStatus); } +/** Test Decrypt fails gracefully for huge input. */ TEST_P(OEMCryptoSessionTestsDecryptTests, OEMCryptoMemoryDecryptCENCForHugeNumberOfSubSamples) { auto oemcrypto_function = [&](size_t number_of_subsamples) { @@ -575,6 +636,7 @@ TEST_P(OEMCryptoSessionTestsDecryptTests, MakeBuffers(); } +/** Test Decrypt fails gracefully for huge input. */ TEST_P(OEMCryptoSessionTestsDecryptTests, OEMCryptoMemoryDecryptCENCForHugeNumberOfSamples) { auto oemcrypto_function = [&](size_t number_of_samples) { @@ -604,6 +666,8 @@ TEST_P(OEMCryptoSessionTestsDecryptTests, MakeBuffers(); } +/** Test that OEMCrypto_LoadProvisioning fails gracefully on a huge buffer. + */ TEST_F(OEMCryptoLoadsCertificate, OEMCryptoMemoryLoadProvisioningForHugeSignatureLength) { // TODO(b/197141970): Need to revisit OEMCryptoLoadsCert* tests for @@ -642,6 +706,8 @@ TEST_F(OEMCryptoLoadsCertificate, TestHugeLengthDoesNotCrashAPI(oemcrypto_function, !kCheckStatus); } +/** Test that OEMCrypto_LoadProvisioning fails gracefully on a huge buffer. + */ TEST_F(OEMCryptoLoadsCertificate, OEMCryptoMemoryLoadProvisioningForHugeWrappedRsaKeyLength) { // TODO(b/197141970): Need to revisit OEMCryptoLoadsCert* tests for @@ -673,6 +739,8 @@ TEST_F(OEMCryptoLoadsCertificate, TestHugeLengthDoesNotCrashAPI(oemcrypto_function, kCheckStatus); } +/** Test that OEMCrypto_LoadDRMPrivateKey fails gracefully on a huge buffer. + */ TEST_F(OEMCryptoLoadsCertificate, OEMCryptoMemoryLoadDrmPrivateKeyForHugeWrappedRsaKeyLength) { // TODO(b/197141970): Need to revisit OEMCryptoLoadsCert* tests for @@ -700,6 +768,8 @@ TEST_F(OEMCryptoLoadsCertificate, kHugeInputBufferLength, !kCheckStatus); } +/** Test that OEMCrypto_LoadDRMPrivateKey fails gracefully on a huge buffer. + */ TEST_F( OEMCryptoLoadsCertificate, OEMCryptoMemoryLoadDrmPrivateKeyForHugeWrappedRsaKeyLengthStartingFromLength1) { @@ -726,6 +796,8 @@ TEST_F( TestHugeLengthDoesNotCrashAPI(oemcrypto_function, !kCheckStatus); } +/** Test that OEMCrypto_LoadDRMPrivateKey fails gracefully on a huge buffer. + */ TEST_F(OEMCryptoUsesCertificate, OEMCryptoMemoryDeriveKeysFromSessionKeyForHugeMacContext) { vector session_key; @@ -746,6 +818,8 @@ TEST_F(OEMCryptoUsesCertificate, TestHugeLengthDoesNotCrashAPI(oemcrypto_function, kCheckStatus); } +/** Test that OEMCrypto_DeriveKeysFromSessionKey fails gracefully on a huge + * buffer. */ TEST_F(OEMCryptoUsesCertificate, OEMCryptoMemoryDeriveKeysFromSessionKeyForHugeEncContext) { vector session_key; @@ -766,6 +840,8 @@ TEST_F(OEMCryptoUsesCertificate, TestHugeLengthDoesNotCrashAPI(oemcrypto_function, kCheckStatus); } +/** Test that OEMCrypto_DeriveKeysFromSessionKey fails gracefully on a huge + * buffer. */ TEST_F(OEMCryptoUsesCertificate, OEMCryptoMemoryDeriveKeysFromSessionKeyForHugeEncSessionKey) { vector session_key; @@ -787,6 +863,8 @@ TEST_F(OEMCryptoUsesCertificate, TestHugeLengthDoesNotCrashAPI(oemcrypto_function, !kCheckStatus); } +/** Test that OEMCrypto_GenerateRSASignature fails gracefully on a huge + * buffer. */ TEST_F(OEMCryptoLoadsCertificateAlternates, OEMCryptoMemoryGenerateRSASignatureForHugeBuffer) { // TODO(b/197141970): Need to revisit OEMCryptoLoadsCert* tests for @@ -828,6 +906,8 @@ TEST_F(OEMCryptoLoadsCertificateAlternates, } } +/** Test that OEMCrypto_GenerateRSASignature fails gracefully on a huge + * buffer. */ TEST_F(OEMCryptoLoadsCertificateAlternates, OEMCryptoMemoryGenerateRSASignatureForHugeSignatureLength) { // TODO(b/197141970): Need to revisit OEMCryptoLoadsCert* tests for @@ -860,6 +940,7 @@ TEST_F(OEMCryptoLoadsCertificateAlternates, } } +/** Test that GetKeyHandle fails gracefully on a huge buffer. */ TEST_P(OEMCryptoGenericCryptoTest, OEMCryptoMemorySelectKeyForHugeKeyIdLength) { EncryptAndLoadKeys(); OEMCrypto_SESSION session_id = session_.session_id(); @@ -872,6 +953,7 @@ TEST_P(OEMCryptoGenericCryptoTest, OEMCryptoMemorySelectKeyForHugeKeyIdLength) { TestHugeLengthDoesNotCrashAPI(oemcrypto_function, !kCheckStatus); } +/** Test that API fails gracefully on a huge buffer. */ TEST_P(OEMCryptoGenericCryptoTest, OEMCryptoMemoryGenericKeyEncryptForHugeBuffer) { EncryptAndLoadKeys(); @@ -896,6 +978,7 @@ TEST_P(OEMCryptoGenericCryptoTest, kCheckStatus); } +/** Test that API fails gracefully on a huge buffer. */ TEST_P(OEMCryptoGenericCryptoTest, OEMCryptoMemoryGenericKeyDecryptForHugeBuffer) { EncryptAndLoadKeys(); @@ -921,6 +1004,7 @@ TEST_P(OEMCryptoGenericCryptoTest, kCheckStatus); } +/** Test that API fails gracefully on a huge buffer. */ TEST_P(OEMCryptoGenericCryptoTest, OEMCryptoMemoryGenericKeySignForHugeBuffer) { EncryptAndLoadKeys(); unsigned int key_index = 2; @@ -945,6 +1029,7 @@ TEST_P(OEMCryptoGenericCryptoTest, OEMCryptoMemoryGenericKeySignForHugeBuffer) { TestHugeLengthDoesNotCrashAPI(oemcrypto_function, kCheckStatus); } +/** Test that API fails gracefully on a huge buffer. */ TEST_P(OEMCryptoGenericCryptoTest, OEMCryptoMemoryGenericKeySignForHugeSignatureLength) { EncryptAndLoadKeys(); @@ -971,6 +1056,7 @@ TEST_P(OEMCryptoGenericCryptoTest, TestHugeLengthDoesNotCrashAPI(oemcrypto_function, kCheckStatus); } +/** Test that API fails gracefully on a huge buffer. */ TEST_P(OEMCryptoGenericCryptoTest, OEMCryptoMemoryGenericKeyVerifyForHugeBuffer) { EncryptAndLoadKeys(); @@ -993,6 +1079,7 @@ TEST_P(OEMCryptoGenericCryptoTest, TestHugeLengthDoesNotCrashAPI(oemcrypto_function, kCheckStatus); } +/** Test that API fails gracefully on a huge buffer. */ TEST_P(OEMCryptoGenericCryptoTest, OEMCryptoMemoryGenericKeyVerifyForHugeSignatureLength) { EncryptAndLoadKeys(); @@ -1019,6 +1106,7 @@ TEST_P(OEMCryptoGenericCryptoTest, TestHugeLengthDoesNotCrashAPI(oemcrypto_function, kCheckStatus); } +/** Test that API fails gracefully on a huge buffer. */ TEST_P(OEMCryptoUsageTableTest, OEMCryptoMemoryUpdateUsageEntryForHugeHeaderBuffer) { if (!wvoec::global_features.usage_table) { @@ -1049,6 +1137,7 @@ TEST_P(OEMCryptoUsageTableTest, TestHugeLengthDoesNotCrashAPI(oemcrypto_function, kCheckStatus); } +/** Test that API fails gracefully on a huge buffer. */ TEST_P(OEMCryptoUsageTableTest, OEMCryptoMemoryUpdateUsageEntryForHugeUsageEntryBuffer) { if (!wvoec::global_features.usage_table) { @@ -1076,6 +1165,7 @@ TEST_P(OEMCryptoUsageTableTest, TestHugeLengthDoesNotCrashAPI(oemcrypto_function, kCheckStatus); } +/** Test that API fails gracefully on a huge buffer. */ TEST_P(OEMCryptoUsageTableTest, OEMCryptoMemoryDeactivateUsageEntryForHugePstBuffer) { if (!wvoec::global_features.usage_table) { @@ -1098,6 +1188,7 @@ TEST_P(OEMCryptoUsageTableTest, kCheckStatus); } +/** Test that API fails gracefully on a huge buffer. */ TEST_P(OEMCryptoUsageTableTest, OEMCryptoMemoryLoadUsageTableHeaderForHugeHeader) { if (!wvoec::global_features.usage_table) { @@ -1124,6 +1215,7 @@ TEST_P(OEMCryptoUsageTableTest, kHugeInputBufferLength, !kCheckStatus); } +/** Test that API fails gracefully on a huge buffer. */ TEST_P( OEMCryptoUsageTableTest, OEMCryptoMemoryLoadUsageTableHeaderForHugeHeaderStartingHeaderLengthFrom1) { @@ -1144,6 +1236,7 @@ TEST_P( TestHugeLengthDoesNotCrashAPI(oemcrypto_function, !kCheckStatus); } +/** Test that API fails gracefully on a huge buffer. */ TEST_P(OEMCryptoUsageTableTest, OEMCryptoMemoryLoadUsageEntryForHugeUsageEntryBuffer) { if (!wvoec::global_features.usage_table) { @@ -1175,6 +1268,7 @@ TEST_P(OEMCryptoUsageTableTest, TestHugeLengthDoesNotCrashAPI(oemcrypto_function, !kCheckStatus); } +/** Test that API fails gracefully on a huge buffer. */ TEST_P(OEMCryptoUsageTableTest, OEMCryptoMemoryReportUsageForHugeReportBuffer) { if (!wvoec::global_features.usage_table) { GTEST_SKIP() << "Usage tables are not supported."; @@ -1204,6 +1298,7 @@ TEST_P(OEMCryptoUsageTableTest, OEMCryptoMemoryReportUsageForHugeReportBuffer) { TestHugeLengthDoesNotCrashAPI(oemcrypto_function, kCheckStatus); } +/** Test that API fails gracefully on a huge buffer. */ TEST_P(OEMCryptoUsageTableTest, OEMCryptoMemoryReportUsageForHugePstBuffer) { if (!wvoec::global_features.usage_table) { GTEST_SKIP() << "Usage tables are not supported."; @@ -1226,6 +1321,7 @@ TEST_P(OEMCryptoUsageTableTest, OEMCryptoMemoryReportUsageForHugePstBuffer) { TestHugeLengthDoesNotCrashAPI(oemcrypto_function, !kCheckStatus); } +/** Test that API fails gracefully on a huge buffer. */ TEST_P(OEMCryptoUsageTableTest, OEMCryptoMemoryShrinkUsageTableHeaderForHugeHeaderBufferLength) { if (!wvoec::global_features.usage_table) { diff --git a/libwvdrmengine/oemcrypto/test/oemcrypto_test.cpp b/libwvdrmengine/oemcrypto/test/oemcrypto_test.cpp index 626fe2d5..1b6d5b48 100644 --- a/libwvdrmengine/oemcrypto/test/oemcrypto_test.cpp +++ b/libwvdrmengine/oemcrypto/test/oemcrypto_test.cpp @@ -43,6 +43,11 @@ * * @defgroup security Security Tests * Buffer overflow tests, off-by-one tests, and other security tests. + * + * The way the huge buffer tests work is to create a large buffer and then call + * the API. The test then loops and doubles the buffer until the API returns an + * error. An error is considered a passing test. We expect OEMCrypto to fail + * gracefully on a huge buffer rather than crashing. */ #include @@ -488,6 +493,7 @@ INSTANTIATE_TEST_SUITE_P(TestAll, OEMCryptoEntitlementLicenseTest, /// @addtogroup security /// @{ +/** Test that LoadEntitledContentKeys fails gracefully on huge buffer. */ TEST_F(OEMCryptoMemoryLicenseTest, OEMCryptoMemoryLoadEntitledKeysForHugeSubstringContentKeyIdLength) { TestLoadEntitledKeysForHugeBufferLengths( @@ -498,6 +504,7 @@ TEST_F(OEMCryptoMemoryLicenseTest, !kCheckStatus); } +/** Test that LoadEntitledContentKeys fails gracefully on huge buffer. */ TEST_F(OEMCryptoMemoryLicenseTest, OEMCryptoMemoryLoadEntitledKeysForHugeSubstringContentKeyIdOffset) { TestLoadEntitledKeysForHugeBufferLengths( @@ -508,6 +515,7 @@ TEST_F(OEMCryptoMemoryLicenseTest, !kCheckStatus); } +/** Test that LoadEntitledContentKeys fails gracefully on huge buffer. */ TEST_F( OEMCryptoMemoryLicenseTest, OEMCryptoMemoryLoadEntitledKeysForOutOfRangeSubstringContentKeyIdLength) { @@ -518,6 +526,7 @@ TEST_F( ASSERT_NE(OEMCrypto_SUCCESS, entitled_message_.LoadKeys()); } +/** Test LoadEntitledContentKeys rejects out of range substring. */ TEST_F( OEMCryptoMemoryLicenseTest, OEMCryptoMemoryLoadEntitledKeysForOutOfRangeSubstringContentKeyIdOffset) { @@ -528,6 +537,7 @@ TEST_F( ASSERT_NE(OEMCrypto_SUCCESS, entitled_message_.LoadKeys()); } +/** Test that LoadEntitledContentKeys fails gracefully on huge substring. */ TEST_F(OEMCryptoMemoryLicenseTest, OEMCryptoMemoryLoadEntitledKeysForHugeSubstringEntitlementKeyIdLength) { TestLoadEntitledKeysForHugeBufferLengths( @@ -538,6 +548,7 @@ TEST_F(OEMCryptoMemoryLicenseTest, !kCheckStatus); } +/** Test LoadEntitledContentKeys rejects out of range substring. */ TEST_F(OEMCryptoMemoryLicenseTest, OEMCryptoMemoryLoadEntitledKeysForHugeSubstringEntitlementKeyIdOffset) { TestLoadEntitledKeysForHugeBufferLengths( @@ -548,6 +559,7 @@ TEST_F(OEMCryptoMemoryLicenseTest, !kCheckStatus); } +/** Test LoadEntitledContentKeys rejects out of range substring. */ TEST_F( OEMCryptoMemoryLicenseTest, OEMCryptoMemoryLoadEntitledKeysForOutOfRangeSubstringEntitlementKeyIdLength) { @@ -558,6 +570,7 @@ TEST_F( ASSERT_NE(OEMCrypto_SUCCESS, entitled_message_.LoadKeys()); } +/** Test LoadEntitledContentKeys rejects out of range substring. */ TEST_F( OEMCryptoMemoryLicenseTest, OEMCryptoMemoryLoadEntitledKeysForOutOfRangeSubstringEntitlementKeyIdOffset) { @@ -568,6 +581,7 @@ TEST_F( ASSERT_NE(OEMCrypto_SUCCESS, entitled_message_.LoadKeys()); } +/** Test LoadEntitledContentKeys rejects out of range substring. */ TEST_F(OEMCryptoMemoryLicenseTest, OEMCryptoMemoryLoadEntitledKeysForHugeSubstringContentKeyDataIvLength) { TestLoadEntitledKeysForHugeBufferLengths( @@ -578,6 +592,7 @@ TEST_F(OEMCryptoMemoryLicenseTest, !kCheckStatus); } +/** Test LoadEntitledContentKeys rejects out of range substring. */ TEST_F(OEMCryptoMemoryLicenseTest, OEMCryptoMemoryLoadEntitledKeysForHugeSubstringContentKeyDataIvOffset) { TestLoadEntitledKeysForHugeBufferLengths( @@ -588,6 +603,7 @@ TEST_F(OEMCryptoMemoryLicenseTest, !kCheckStatus); } +/** Test LoadEntitledContentKeys rejects out of range substring. */ TEST_F( OEMCryptoMemoryLicenseTest, OEMCryptoMemoryLoadEntitledKeysForOutOfRangeSubstringContentKeyDataIvLength) { @@ -598,6 +614,7 @@ TEST_F( ASSERT_NE(OEMCrypto_SUCCESS, entitled_message_.LoadKeys()); } +/** Test LoadEntitledContentKeys rejects out of range substring. */ TEST_F( OEMCryptoMemoryLicenseTest, OEMCryptoMemoryLoadEntitledKeysForOutOfRangeSubstringContentKeyDataIvOffset) { @@ -608,6 +625,7 @@ TEST_F( ASSERT_NE(OEMCrypto_SUCCESS, entitled_message_.LoadKeys()); } +/** Test LoadEntitledContentKeys rejects out of range substring. */ TEST_F(OEMCryptoMemoryLicenseTest, OEMCryptoMemoryLoadEntitledKeysForHugeSubstringContentKeyDataLength) { TestLoadEntitledKeysForHugeBufferLengths( @@ -618,6 +636,7 @@ TEST_F(OEMCryptoMemoryLicenseTest, !kCheckStatus); } +/** Test LoadEntitledContentKeys rejects out of range substring. */ TEST_F(OEMCryptoMemoryLicenseTest, OEMCryptoMemoryLoadEntitledKeysForHugeSubstringContentKeyDataOffset) { TestLoadEntitledKeysForHugeBufferLengths( @@ -628,6 +647,7 @@ TEST_F(OEMCryptoMemoryLicenseTest, !kCheckStatus); } +/** Test LoadEntitledContentKeys rejects out of range substring. */ TEST_F( OEMCryptoMemoryLicenseTest, OEMCryptoMemoryLoadEntitledKeysForOutOfRangeSubstringContentKeyDataLength) { @@ -638,6 +658,7 @@ TEST_F( ASSERT_NE(OEMCrypto_SUCCESS, entitled_message_.LoadKeys()); } +/** Test LoadEntitledContentKeys rejects out of range substring. */ TEST_F( OEMCryptoMemoryLicenseTest, OEMCryptoMemoryLoadEntitledKeysForOutOfRangeSubstringContentKeyDataOffset) { @@ -648,6 +669,7 @@ TEST_F( ASSERT_NE(OEMCrypto_SUCCESS, entitled_message_.LoadKeys()); } +/** Test LoadEntitledContentKeys rejects out of range substring. */ TEST_F(OEMCryptoMemoryLicenseTest, OEMCryptoMemoryLoadEntitledKeysForHugeEntitlementKeyIdLength) { TestLoadEntitledKeysForHugeBufferLengths( @@ -658,6 +680,7 @@ TEST_F(OEMCryptoMemoryLicenseTest, !kCheckStatus); } +/** Test LoadEntitledContentKeys rejects out of range substring. */ TEST_F(OEMCryptoMemoryLicenseTest, OEMCryptoMemoryLoadEntitledKeysForHugeContentKeyIdLength) { TestLoadEntitledKeysForHugeBufferLengths( @@ -1025,6 +1048,7 @@ TEST_P(OEMCryptoEntitlementLicenseTest, ReassociateEntitledKeySessionAPI17) { /// @addtogroup security /// @{ +/** Test that LoadLicense fails gracefully on huge buffer. */ TEST_P(OEMCryptoLicenseOverflowTest, OEMCryptoMemoryLoadLicenseForHugeCoreMessageSubstringKeyIdLength) { TestLoadLicenseForHugeBufferLengths( @@ -1035,6 +1059,7 @@ TEST_P(OEMCryptoLicenseOverflowTest, !kCheckStatus, kUpdateCoreMessageSubstringValues); } +/** Test that LoadLicense fails gracefully on out of range substring. */ TEST_P(OEMCryptoLicenseOverflowTest, OEMCryptoMemoryLoadLicenseForHugeCoreMessageSubstringKeyIdOffset) { TestLoadLicenseForHugeBufferLengths( @@ -1044,6 +1069,7 @@ TEST_P(OEMCryptoLicenseOverflowTest, !kCheckStatus, kUpdateCoreMessageSubstringValues); } +/** Test that LoadLicense fails gracefully on out of range substring. */ TEST_P(OEMCryptoLicenseOverflowTest, OEMCryptoMemoryLoadLicenseForOutOfRangeCoreMessageSubstringKeyIdLength) { TestLoadLicenseForOutOfRangeSubStringOffSetAndLengths( @@ -1053,6 +1079,7 @@ TEST_P(OEMCryptoLicenseOverflowTest, }); } +/** Test that LoadLicense fails gracefully on out of range substring. */ TEST_P(OEMCryptoLicenseOverflowTest, OEMCryptoMemoryLoadLicenseForOutOfRangeCoreMessageSubstringKeyIdOffset) { TestLoadLicenseForOutOfRangeSubStringOffSetAndLengths( @@ -1062,6 +1089,7 @@ TEST_P(OEMCryptoLicenseOverflowTest, }); } +/** Test that LoadLicense fails gracefully on out of range substring. */ TEST_P(OEMCryptoLicenseOverflowTest, OEMCryptoMemoryLoadLicenseForHugeCoreMessageSubstringKeyDataIvLength) { TestLoadLicenseForHugeBufferLengths( @@ -1072,6 +1100,7 @@ TEST_P(OEMCryptoLicenseOverflowTest, !kCheckStatus, kUpdateCoreMessageSubstringValues); } +/** Test that LoadLicense fails gracefully on out of range substring. */ TEST_P(OEMCryptoLicenseOverflowTest, OEMCryptoMemoryLoadLicenseForHugeCoreMessageSubstringKeyDataIvOffset) { TestLoadLicenseForHugeBufferLengths( @@ -1082,6 +1111,7 @@ TEST_P(OEMCryptoLicenseOverflowTest, !kCheckStatus, kUpdateCoreMessageSubstringValues); } +/** Test that LoadLicense fails gracefully on out of range substring. */ TEST_P( OEMCryptoLicenseOverflowTest, OEMCryptoMemoryLoadLicenseForOutOfRangeCoreMessageSubstringKeyDataIvLength) { @@ -1093,6 +1123,7 @@ TEST_P( }); } +/** Test that LoadLicense fails gracefully on out of range substring. */ TEST_P( OEMCryptoLicenseOverflowTest, OEMCryptoMemoryLoadLicenseForOutOfRangeCoreMessageSubstringKeyDataIvOffset) { @@ -1104,6 +1135,7 @@ TEST_P( }); } +/** Test that LoadLicense fails gracefully on out of range substring. */ TEST_P(OEMCryptoLicenseOverflowTest, OEMCryptoMemoryLoadLicenseForHugeCoreMessageSubstringKeyDataLength) { TestLoadLicenseForHugeBufferLengths( @@ -1114,6 +1146,7 @@ TEST_P(OEMCryptoLicenseOverflowTest, !kCheckStatus, kUpdateCoreMessageSubstringValues); } +/** Test that LoadLicense fails gracefully on out of range substring. */ TEST_P(OEMCryptoLicenseOverflowTest, OEMCryptoMemoryLoadLicenseForHugeCoreMessageSubstringKeyDataOffset) { TestLoadLicenseForHugeBufferLengths( @@ -1123,6 +1156,7 @@ TEST_P(OEMCryptoLicenseOverflowTest, !kCheckStatus, kUpdateCoreMessageSubstringValues); } +/** Test that LoadLicense fails gracefully on out of range substring. */ TEST_P( OEMCryptoLicenseOverflowTest, OEMCryptoMemoryLoadLicenseForOutOfRangeCoreMessageSubstringKeyDataLength) { @@ -1134,6 +1168,7 @@ TEST_P( }); } +/** Test that LoadLicense fails gracefully on out of range substring. */ TEST_P( OEMCryptoLicenseOverflowTest, OEMCryptoMemoryLoadLicenseForOutOfRangeCoreMessageSubstringKeyDataOffset) { @@ -1145,6 +1180,7 @@ TEST_P( }); } +/** Test that LoadLicense fails gracefully on out of range substring. */ TEST_P( OEMCryptoLicenseOverflowTest, OEMCryptoMemoryLoadLicenseForHugeCoreMessageSubstringKeyControlIvLength) { @@ -1156,6 +1192,7 @@ TEST_P( !kCheckStatus, kUpdateCoreMessageSubstringValues); } +/** Test that LoadLicense fails gracefully on out of range substring. */ TEST_P( OEMCryptoLicenseOverflowTest, OEMCryptoMemoryLoadLicenseForHugeCoreMessageSubstringKeyControlIvOffset) { @@ -1167,6 +1204,7 @@ TEST_P( !kCheckStatus, kUpdateCoreMessageSubstringValues); } +/** Test that LoadLicense fails gracefully on out of range substring. */ TEST_P( OEMCryptoLicenseOverflowTest, OEMCryptoMemoryLoadLicenseForOutOfRangeCoreMessageSubstringKeyControlIvLengthAPI16) { @@ -1179,6 +1217,7 @@ TEST_P( }); } +/** Test that LoadLicense fails gracefully on out of range substring. */ TEST_P( OEMCryptoLicenseOverflowTest, OEMCryptoMemoryLoadLicenseForOutOfRangeCoreMessageSubstringKeyControlIvOffset) { @@ -1191,6 +1230,7 @@ TEST_P( }); } +/** Test that LoadLicense fails gracefully on out of range substring. */ TEST_P(OEMCryptoLicenseOverflowTest, OEMCryptoMemoryLoadLicenseForHugeCoreMessageSubstringKeyControlLength) { TestLoadLicenseForHugeBufferLengths( @@ -1201,6 +1241,7 @@ TEST_P(OEMCryptoLicenseOverflowTest, !kCheckStatus, kUpdateCoreMessageSubstringValues); } +/** Test that LoadLicense fails gracefully on out of range substring. */ TEST_P(OEMCryptoLicenseOverflowTest, OEMCryptoMemoryLoadLicenseForHugeCoreMessageSubstringKeyControlOffset) { TestLoadLicenseForHugeBufferLengths( @@ -1211,6 +1252,7 @@ TEST_P(OEMCryptoLicenseOverflowTest, !kCheckStatus, kUpdateCoreMessageSubstringValues); } +/** Test that LoadLicense fails gracefully on out of range substring. */ TEST_P( OEMCryptoLicenseOverflowTest, OEMCryptoMemoryLoadLicenseForOutOfRangeCoreMessageSubstringKeyControlLengthAPI16) { @@ -1222,6 +1264,7 @@ TEST_P( }); } +/** Test that LoadLicense fails gracefully on out of range substring. */ TEST_P( OEMCryptoLicenseOverflowTest, OEMCryptoMemoryLoadLicenseForOutOfRangeCoreMessageSubstringKeyControlOffset) { @@ -1233,6 +1276,7 @@ TEST_P( }); } +/** Test that LoadLicense fails gracefully on out of range substring. */ TEST_P(OEMCryptoLicenseOverflowTest, OEMCryptoMemoryLoadLicenseForHugeCoreMessageSubstringEncMacKeyIvLength) { TestLoadLicenseForHugeBufferLengths( @@ -1242,6 +1286,7 @@ TEST_P(OEMCryptoLicenseOverflowTest, !kCheckStatus, kUpdateCoreMessageSubstringValues); } +/** Test that LoadLicense fails gracefully on out of range substring. */ TEST_P(OEMCryptoLicenseOverflowTest, OEMCryptoMemoryLoadLicenseForHugeCoreMessageSubstringEncMacKeyIvOffset) { TestLoadLicenseForHugeBufferLengths( @@ -1251,6 +1296,7 @@ TEST_P(OEMCryptoLicenseOverflowTest, !kCheckStatus, kUpdateCoreMessageSubstringValues); } +/** Test that LoadLicense fails gracefully on out of range substring. */ TEST_P( OEMCryptoLicenseOverflowTest, OEMCryptoMemoryLoadLicenseForOutOfRangeCoreMessageSubstringEncMacKeyIvLength) { @@ -1263,6 +1309,7 @@ TEST_P( }); } +/** Test that LoadLicense fails gracefully on out of range substring. */ TEST_P( OEMCryptoLicenseOverflowTest, OEMCryptoMemoryLoadLicenseForOutOfRangeCoreMessageSubstringEncMacKeyIvOffset) { @@ -1275,6 +1322,7 @@ TEST_P( }); } +/** Test that LoadLicense fails gracefully on out of range substring. */ TEST_P(OEMCryptoLicenseOverflowTest, OEMCryptoMemoryLoadLicenseForHugeCoreMessageSubstringEncMacKeyLength) { TestLoadLicenseForHugeBufferLengths( @@ -1284,6 +1332,7 @@ TEST_P(OEMCryptoLicenseOverflowTest, !kCheckStatus, kUpdateCoreMessageSubstringValues); } +/** Test that LoadLicense fails gracefully on out of range substring. */ TEST_P(OEMCryptoLicenseOverflowTest, OEMCryptoMemoryLoadLicenseForHugeCoreMessageSubstringEncMacKeyOffset) { TestLoadLicenseForHugeBufferLengths( @@ -1293,6 +1342,7 @@ TEST_P(OEMCryptoLicenseOverflowTest, !kCheckStatus, kUpdateCoreMessageSubstringValues); } +/** Test that LoadLicense fails gracefully on out of range substring. */ TEST_P( OEMCryptoLicenseOverflowTest, OEMCryptoMemoryLoadLicenseForOutOfRangeCoreMessageSubstringEncMacKeyLength) { @@ -1303,6 +1353,7 @@ TEST_P( }); } +/** Test that LoadLicense fails gracefully on out of range substring. */ TEST_P( OEMCryptoLicenseOverflowTest, OEMCryptoMemoryLoadLicenseForOutOfRangeCoreMessageSubstringEncMacKeyOffset) { @@ -1313,6 +1364,7 @@ TEST_P( }); } +/** Test that LoadLicense fails gracefully on out of range substring. */ TEST_P(OEMCryptoLicenseOverflowTest, OEMCryptoMemoryLoadLicenseForHugeCoreMessageSubstringPstLength) { TestLoadLicenseForHugeBufferLengths( @@ -1322,6 +1374,7 @@ TEST_P(OEMCryptoLicenseOverflowTest, !kCheckStatus, kUpdateCoreMessageSubstringValues); } +/** Test that LoadLicense fails gracefully on out of range substring. */ TEST_P(OEMCryptoLicenseOverflowTest, OEMCryptoMemoryLoadLicenseForHugeCoreMessageSubstringPstOffset) { TestLoadLicenseForHugeBufferLengths( @@ -1331,6 +1384,7 @@ TEST_P(OEMCryptoLicenseOverflowTest, !kCheckStatus, kUpdateCoreMessageSubstringValues); } +/** Test that LoadLicense fails gracefully on out of range substring. */ TEST_P(OEMCryptoLicenseOverflowTest, OEMCryptoMemoryLoadLicenseForOutOfRangeCoreMessageSubstringPstLength) { TestLoadLicenseForOutOfRangeSubStringOffSetAndLengths( @@ -1340,6 +1394,7 @@ TEST_P(OEMCryptoLicenseOverflowTest, }); } +/** Test that LoadLicense fails gracefully on out of range substring. */ TEST_P(OEMCryptoLicenseOverflowTest, OEMCryptoMemoryLoadLicenseForOutOfRangeCoreMessageSubstringPstOffset) { TestLoadLicenseForOutOfRangeSubStringOffSetAndLengths( @@ -1350,6 +1405,7 @@ TEST_P(OEMCryptoLicenseOverflowTest, }); } +/** Test that LoadLicense fails gracefully on out of range substring. */ TEST_P( OEMCryptoLicenseOverflowTest, OEMCryptoMemoryLoadLicenseForHugeCoreMessageSubstringSrmRestrictionDataLength) { @@ -1360,6 +1416,7 @@ TEST_P( !kCheckStatus, kUpdateCoreMessageSubstringValues); } +/** Test that LoadLicense fails gracefully on out of range substring. */ TEST_P( OEMCryptoLicenseOverflowTest, OEMCryptoMemoryLoadLicenseForHugeCoreMessageSubstringSrmRestrictionDataOffset) { @@ -1370,6 +1427,7 @@ TEST_P( !kCheckStatus, kUpdateCoreMessageSubstringValues); } +/** Test that LoadLicense fails gracefully on out of range substring. */ TEST_P( OEMCryptoLicenseOverflowTest, OEMCryptoMemoryLoadLicenseForOutOfRangeCoreMessageSubstringSrmRestrictionDataLength) { @@ -1382,6 +1440,7 @@ TEST_P( }); } +/** Test that LoadLicense fails gracefully on out of range substring. */ TEST_P( OEMCryptoLicenseOverflowTest, OEMCryptoMemoryLoadLicenseForOutOfRangeCoreMessageSubstringSrmRestrictionDataOffset) { @@ -1394,6 +1453,7 @@ TEST_P( }); } +/** Test that LoadLicense fails gracefully on huge buffer. */ TEST_P(OEMCryptoLicenseOverflowTest, OEMCryptoMemoryLoadLicenseForHugeResponseLength) { TestLoadLicenseForHugeBufferLengths( @@ -1403,6 +1463,7 @@ TEST_P(OEMCryptoLicenseOverflowTest, !kCheckStatus, !kUpdateCoreMessageSubstringValues); } +/** Test that LoadLicense fails gracefully on huge buffer. */ TEST_P(OEMCryptoLicenseOverflowTest, OEMCryptoMemoryLoadLicenseForHugeCoreMessageLength) { TestLoadLicenseForHugeBufferLengths( @@ -1425,6 +1486,7 @@ INSTANTIATE_TEST_SUITE_P(TestAll, OEMCryptoLicenseOverflowTest, /// @addtogroup security /// @{ +/** Test that LoadProvisioning fails gracefully on huge buffer. */ TEST_F(OEMCryptoLoadsCertificate, OEMCryptoMemoryLoadProvisioningForHugeResponseLength) { // TODO(b/197141970): Need to revisit OEMCryptoLoadsCert* tests for @@ -1440,6 +1502,7 @@ TEST_F(OEMCryptoLoadsCertificate, !kCheckStatus, !kUpdateCoreMessageSubstringValues); } +/** Test that LoadProvisioning fails gracefully on huge buffer. */ TEST_F(OEMCryptoLoadsCertificate, OEMCryptoMemoryLoadProvisioningForHugeCoreMessageLength) { // TODO(b/197141970): Need to revisit OEMCryptoLoadsCert* tests for @@ -1455,6 +1518,7 @@ TEST_F(OEMCryptoLoadsCertificate, !kCheckStatus, !kUpdateCoreMessageSubstringValues); } +/** Test that LoadProvisioning fails gracefully on huge buffer. */ TEST_F(OEMCryptoLoadsCertificate, OEMCryptoMemoryLoadProvisioningForHugeCoreMessageEncPrivateKeyLength) { // TODO(b/197141970): Need to revisit OEMCryptoLoadsCert* tests for @@ -1470,6 +1534,7 @@ TEST_F(OEMCryptoLoadsCertificate, !kCheckStatus, kUpdateCoreMessageSubstringValues); } +/** Test that LoadProvisioning fails gracefully on huge buffer. */ TEST_F(OEMCryptoLoadsCertificate, OEMCryptoMemoryLoadProvisioningForHugeCoreMessageEncPrivateKeyOffset) { // TODO(b/197141970): Need to revisit OEMCryptoLoadsCert* tests for @@ -1485,6 +1550,7 @@ TEST_F(OEMCryptoLoadsCertificate, !kCheckStatus, kUpdateCoreMessageSubstringValues); } +/** Test that LoadProvisioning fails gracefully on out of range substring. */ TEST_F( OEMCryptoLoadsCertificate, OEMCryptoMemoryLoadProvisioningForOutOfRangeCoreMessageEncPrivateKeyLength) { @@ -1504,6 +1570,7 @@ TEST_F( }); } +/** Test that LoadProvisioning fails gracefully on out of range substring. */ TEST_F( OEMCryptoLoadsCertificate, OEMCryptoMemoryLoadProvisioningForOutOfRangeCoreMessageEncPrivateKeyOffset) { @@ -1523,6 +1590,7 @@ TEST_F( }); } +/** Test that LoadProvisioning fails gracefully on out of range substring. */ TEST_F(OEMCryptoLoadsCertificate, OEMCryptoMemoryLoadProvisioningForHugeCoreMessageEncPrivateKeyIvLength) { // TODO(b/197141970): Need to revisit OEMCryptoLoadsCert* tests for @@ -1539,6 +1607,7 @@ TEST_F(OEMCryptoLoadsCertificate, !kCheckStatus, kUpdateCoreMessageSubstringValues); } +/** Test that LoadProvisioning fails gracefully on out of range substring. */ TEST_F(OEMCryptoLoadsCertificate, OEMCryptoMemoryLoadProvisioningForHugeCoreMessageEncPrivateKeyIvOffset) { // TODO(b/197141970): Need to revisit OEMCryptoLoadsCert* tests for @@ -1555,6 +1624,7 @@ TEST_F(OEMCryptoLoadsCertificate, !kCheckStatus, kUpdateCoreMessageSubstringValues); } +/** Test that LoadProvisioning fails gracefully on out of range substring. */ TEST_F( OEMCryptoLoadsCertificate, OEMCryptoMemoryLoadProvisioningForOutOfRangeCoreMessageEncPrivateKeyIvLengthAPI16) { @@ -1574,6 +1644,7 @@ TEST_F( }); } +/** Test that LoadProvisioning fails gracefully on out of range substring. */ TEST_F( OEMCryptoLoadsCertificate, OEMCryptoMemoryLoadProvisioningForOutOfRangeCoreMessageEncPrivateKeyIvOffset) { @@ -1593,6 +1664,7 @@ TEST_F( }); } +/** Test that LoadProvisioning fails gracefully on out of range substring. */ TEST_F(OEMCryptoLoadsCertificate, OEMCryptoMemoryLoadProvisioningForHugeCoreMessageEncMessageKeyLength) { // TODO(b/197141970): Need to revisit OEMCryptoLoadsCert* tests for @@ -1609,6 +1681,7 @@ TEST_F(OEMCryptoLoadsCertificate, !kCheckStatus, kUpdateCoreMessageSubstringValues); } +/** Test that LoadProvisioning fails gracefully on out of range substring. */ TEST_F(OEMCryptoLoadsCertificate, OEMCryptoMemoryLoadProvisioningForHugeCoreMessageEncMessageKeyOffset) { // TODO(b/197141970): Need to revisit OEMCryptoLoadsCert* tests for @@ -1625,6 +1698,7 @@ TEST_F(OEMCryptoLoadsCertificate, !kCheckStatus, kUpdateCoreMessageSubstringValues); } +/** Test that LoadProvisioning fails gracefully on out of range substring. */ TEST_F( OEMCryptoLoadsCertificate, OEMCryptoMemoryLoadProvisioningForOutOfRangeCoreMessageEncMessageKeyLengthProv30) { @@ -1647,6 +1721,7 @@ TEST_F( }); } +/** Test that LoadProvisioning fails gracefully on out of range substring. */ TEST_F( OEMCryptoLoadsCertificate, OEMCryptoMemoryLoadProvisioningForOutOfRangeCoreMessageEncMessageKeyOffsetProv30) { @@ -1674,6 +1749,9 @@ TEST_F( /// @addtogroup security /// @{ +/** Test that OEMCrypto_PrepAndSignProvisioningRequest fails gracefully on a + * huge buffer. + */ TEST_F(OEMCryptoLoadsCertificate, OEMCryptoMemoryPrepareProvisioningRequestForHugeRequestMessageLength) { // TODO(b/197141970): Need to revisit OEMCryptoLoadsCert* tests for @@ -1689,6 +1767,9 @@ TEST_F(OEMCryptoLoadsCertificate, kCheckStatus); } +/** Test that OEMCrypto_PrepAndSignProvisioningRequest fails gracefully on a + * huge buffer. + */ TEST_F(OEMCryptoLoadsCertificate, OEMCryptoMemoryPrepareProvisioningRequestForHugeSignatureLength) { // TODO(b/197141970): Need to revisit OEMCryptoLoadsCert* tests for @@ -1704,6 +1785,9 @@ TEST_F(OEMCryptoLoadsCertificate, !kCheckStatus); } +/** Test that OEMCrypto_PrepAndSignProvisioningRequest fails gracefully on a + * huge buffer. + */ TEST_F(OEMCryptoLoadsCertificate, OEMCryptoMemoryPrepareProvisioningRequestForHugeCoreMessageLength) { // TODO(b/197141970): Need to revisit OEMCryptoLoadsCert* tests for diff --git a/libwvdrmengine/oemcrypto/test/oemcrypto_usage_table_test.cpp b/libwvdrmengine/oemcrypto/test/oemcrypto_usage_table_test.cpp index ff15b240..8394cf3f 100644 --- a/libwvdrmengine/oemcrypto/test/oemcrypto_usage_table_test.cpp +++ b/libwvdrmengine/oemcrypto/test/oemcrypto_usage_table_test.cpp @@ -178,6 +178,7 @@ TEST_F(OEMCryptoSessionTests, MasterGeneration_IncrementCounterAPI18) { ASSERT_TRUE(decrypt_count2 > decrypt_count1); ASSERT_TRUE(master_generation_number2 > master_generation_number1); } + TEST_P(OEMCryptoUsageTableTest, OEMCryptoMemoryLoadUsageEntryForHugeInvalidUsageEntryNumber) { LicenseWithUsageEntry entry; @@ -1745,4 +1746,4 @@ INSTANTIATE_TEST_SUITE_P(TestAPI16, OEMCryptoUsageTableDefragTest, INSTANTIATE_TEST_SUITE_P(TestAPI16, OEMCryptoUsageTableTestWallClock, Values(kCurrentAPI)); -} // namespace wvoec \ No newline at end of file +} // namespace wvoec