Test Simultaneous Decrypt
Merge from Widevine repo of http://go/wvgerrit/16499 With the increasing number of devices that support multiple screens or windows, it is desireable to verify that OEMCrypto can have several sessions open and actively decrypting at the same time. Calls to OEMCrypto are still serialized -- this is not a threading test -- but we still have multiple sessions open and decrypt from each of them. Change-Id: I5b24f4a464ed05a5b21625c66fe7989644b67a5a
This commit is contained in:
@@ -2357,6 +2357,59 @@ TEST_F(OEMCryptoSessionTests, DecryptZeroDuration) {
|
||||
ASSERT_NO_FATAL_FAILURE(s.TestDecryptCTR());
|
||||
}
|
||||
|
||||
TEST_F(OEMCryptoSessionTests, SimultaneousDecrypt) {
|
||||
vector<Session> s(8);
|
||||
for (int i = 0; i < 8; i++) {
|
||||
ASSERT_NO_FATAL_FAILURE(s[i].open());
|
||||
}
|
||||
for (int i = 0; i < 8; i++) {
|
||||
ASSERT_NO_FATAL_FAILURE(s[i].GenerateTestSessionKeys());
|
||||
ASSERT_NO_FATAL_FAILURE(s[i].FillSimpleMessage(kDuration, 0,
|
||||
s[i].get_nonce()));
|
||||
ASSERT_NO_FATAL_FAILURE(s[i].EncryptAndSign());
|
||||
}
|
||||
for (int i = 0; i < 8; i++) {
|
||||
ASSERT_NO_FATAL_FAILURE(s[i].LoadTestKeys());
|
||||
}
|
||||
for (int i = 0; i < 8; i++) {
|
||||
ASSERT_NO_FATAL_FAILURE(s[i].TestDecryptCTR());
|
||||
}
|
||||
// Second call to decrypt for each session.
|
||||
for (int i = 0; i < 8; i++) {
|
||||
ASSERT_NO_FATAL_FAILURE(s[i].TestDecryptCTR());
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(OEMCryptoSessionTests, SimultaneousDecryptWithLostMessage) {
|
||||
vector<Session> s(8);
|
||||
for (int i = 0; i < 8; i++) {
|
||||
ASSERT_NO_FATAL_FAILURE(s[i].open());
|
||||
}
|
||||
for (int i = 0; i < 8; i++) {
|
||||
ASSERT_NO_FATAL_FAILURE(s[i].GenerateTestSessionKeys());
|
||||
ASSERT_NO_FATAL_FAILURE(s[i].FillSimpleMessage(kDuration, 0,
|
||||
s[i].get_nonce()));
|
||||
ASSERT_NO_FATAL_FAILURE(s[i].EncryptAndSign());
|
||||
}
|
||||
// First set of messages are lost. Generate second set.
|
||||
for (int i = 0; i < 8; i++) {
|
||||
ASSERT_NO_FATAL_FAILURE(s[i].GenerateTestSessionKeys());
|
||||
ASSERT_NO_FATAL_FAILURE(s[i].FillSimpleMessage(kDuration, 0,
|
||||
s[i].get_nonce()));
|
||||
ASSERT_NO_FATAL_FAILURE(s[i].EncryptAndSign());
|
||||
}
|
||||
for (int i = 0; i < 8; i++) {
|
||||
ASSERT_NO_FATAL_FAILURE(s[i].LoadTestKeys());
|
||||
}
|
||||
for (int i = 0; i < 8; i++) {
|
||||
ASSERT_NO_FATAL_FAILURE(s[i].TestDecryptCTR());
|
||||
}
|
||||
// Second call to decrypt for each session.
|
||||
for (int i = 0; i < 8; i++) {
|
||||
ASSERT_NO_FATAL_FAILURE(s[i].TestDecryptCTR());
|
||||
}
|
||||
}
|
||||
|
||||
class OEMCryptoSessionTestsDecryptEdgeCases : public OEMCryptoSessionTests {
|
||||
public:
|
||||
// Increment counter for AES-CTR. The CENC spec specifies we increment only
|
||||
|
||||
Reference in New Issue
Block a user