Small changes to refactored unit tests
Merge from Widevine repo of http://go/wvgerrit/169064 This CL should cleanup some minor issues that existed after the initial CLs refactoring the unit tests went in. The issues fixed should be: 1) duplicate decrypt tests 2) decrypt tests added to be run 3) removed unecessary header files 4) refactored some provisioning tests that I had previously overlooked Bug: 253779846 Merged from https://widevine-internal-review.googlesource.com/167537 Change-Id: Ic474fbcf69a08c0482b5e74d0c80be2cd16702d8
This commit is contained in:
committed by
Fred Gylys-Colwell
parent
ea3d319879
commit
54e6b3d45d
@@ -8,11 +8,12 @@
|
||||
#define CDM_OEMCRYPTO_PROVISIONING_TEST_
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
#include "oemcrypto_basic_test.h"
|
||||
|
||||
#include "OEMCryptoCENC.h"
|
||||
#include "oec_session_util.h"
|
||||
#include "oemcrypto_session_tests_helper.h"
|
||||
#include "oemcrypto_basic_test.h"
|
||||
#include "oemcrypto_license_test.h"
|
||||
#include "oemcrypto_resource_test.h"
|
||||
|
||||
namespace wvoec {
|
||||
|
||||
// Tests using this class are only used for devices with a keybox. They are not
|
||||
@@ -39,6 +40,77 @@ class OEMCryptoProv30Test : public OEMCryptoClientTest {};
|
||||
// This class is for tests that have boot certificate chain instead of a keybox.
|
||||
class OEMCryptoProv40Test : public OEMCryptoClientTest {};
|
||||
|
||||
//
|
||||
// Certificate Root of Trust Tests
|
||||
//
|
||||
class OEMCryptoLoadsCertificate : public OEMCryptoSessionTestKeyboxTest {
|
||||
protected:
|
||||
void TestPrepareProvisioningRequestForHugeBufferLengths(
|
||||
const std::function<void(size_t, ProvisioningRoundTrip*)> f,
|
||||
bool check_status) {
|
||||
auto oemcrypto_function = [&](size_t message_length) {
|
||||
Session s;
|
||||
s.open();
|
||||
if (global_features.provisioning_method == OEMCrypto_OEMCertificate) {
|
||||
s.LoadOEMCert(true);
|
||||
} else {
|
||||
s.GenerateDerivedKeysFromKeybox(keybox_);
|
||||
}
|
||||
ProvisioningRoundTrip provisioning_messages(&s, encoded_rsa_key_);
|
||||
f(message_length, &provisioning_messages);
|
||||
return provisioning_messages
|
||||
.SignAndCreateRequestWithCustomBufferLengths();
|
||||
};
|
||||
TestHugeLengthDoesNotCrashAPI(oemcrypto_function, check_status);
|
||||
}
|
||||
|
||||
void TestLoadProvisioningForHugeBufferLengths(
|
||||
const std::function<void(size_t, ProvisioningRoundTrip*)> f,
|
||||
bool check_status, bool update_core_message_substring_values) {
|
||||
auto oemcrypto_function = [&](size_t message_length) {
|
||||
Session s;
|
||||
ProvisioningRoundTrip provisioning_messages(&s, encoded_rsa_key_);
|
||||
provisioning_messages.PrepareSession(keybox_);
|
||||
provisioning_messages.SignAndVerifyRequest();
|
||||
provisioning_messages.CreateDefaultResponse();
|
||||
if (update_core_message_substring_values) {
|
||||
// Make provisioning message big enough so that updated core message
|
||||
// substring offset and length values from tests are still able to read
|
||||
// valid data from provisioning_message buffer rather than some garbage
|
||||
// data.
|
||||
provisioning_messages.set_message_size(
|
||||
sizeof(provisioning_messages.response_data()) + message_length);
|
||||
}
|
||||
f(message_length, &provisioning_messages);
|
||||
provisioning_messages
|
||||
.EncryptAndSignResponseWithoutUpdatingEncPrivateKeyLength();
|
||||
OEMCryptoResult result = provisioning_messages.LoadResponse();
|
||||
s.close();
|
||||
return result;
|
||||
};
|
||||
TestHugeLengthDoesNotCrashAPI(oemcrypto_function, check_status);
|
||||
}
|
||||
|
||||
void TestLoadProvisioningForOutOfRangeSubstringOffsetAndLengths(
|
||||
const std::function<void(size_t, ProvisioningRoundTrip*)> f) {
|
||||
Session s;
|
||||
ProvisioningRoundTrip provisioning_messages(&s, encoded_rsa_key_);
|
||||
provisioning_messages.PrepareSession(keybox_);
|
||||
provisioning_messages.SignAndVerifyRequest();
|
||||
provisioning_messages.CreateDefaultResponse();
|
||||
size_t message_length = sizeof(provisioning_messages.response_data());
|
||||
f(message_length, &provisioning_messages);
|
||||
provisioning_messages
|
||||
.EncryptAndSignResponseWithoutUpdatingEncPrivateKeyLength();
|
||||
OEMCryptoResult result = provisioning_messages.LoadResponse();
|
||||
s.close();
|
||||
// Verifying error is not due to signature failure which can be caused due
|
||||
// to test code.
|
||||
ASSERT_NE(OEMCrypto_ERROR_SIGNATURE_FAILURE, result);
|
||||
ASSERT_NE(OEMCrypto_SUCCESS, result);
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace wvoec
|
||||
|
||||
#endif // CDM_OEMCRYPTO_PROVISIONING_TEST_
|
||||
Reference in New Issue
Block a user