Part of Qualcomm L1 OEMCrypto integration on mako
bug: 8621521 This fixes a problem where insecure audio buffers were being passed incorrectly as secure buffers to the trusted environment's OEMCrypto_DecryptCTR. This is a merge of the following changes from the widevine git repository to android git repository: https://widevine-internal-review.googlesource.com/#/c/5163/2 Allow selection of secure/non-secure buffers https://widevine-internal-review.googlesource.com/#/c/5164/ Pass Secure Buffer Request to CDM Change-Id: Iec1192a216305c6cf92c359b15b148eccc6ce6ce
This commit is contained in:
@@ -29,6 +29,7 @@ namespace wvcdm {
|
||||
|
||||
typedef struct DecryptionData {
|
||||
bool is_encrypted;
|
||||
bool is_secure;
|
||||
wvcdm::KeyId key_id;
|
||||
std::vector<uint8_t> encrypt_data;
|
||||
std::vector<uint8_t> iv;
|
||||
@@ -252,6 +253,7 @@ TEST_F(WvCdmRequestLicenseTest, ClearDecryptionTest) {
|
||||
// key 1, clear, 256b
|
||||
DecryptionData data;
|
||||
data.is_encrypted = false;
|
||||
data.is_secure = false;
|
||||
data.key_id = wvcdm::a2bs_hex("E02562E04CD55351B14B3D748D36ED8E");
|
||||
data.encrypt_data = wvcdm::a2b_hex(
|
||||
"9da401105ab8da443e93e6fe089dfc69e00a9a51690d406872f338c5fa7dd3d5"
|
||||
@@ -280,6 +282,7 @@ TEST_F(WvCdmRequestLicenseTest, ClearDecryptionTest) {
|
||||
|
||||
EXPECT_EQ(NO_ERROR, decryptor_.Decrypt(session_id_,
|
||||
data.is_encrypted,
|
||||
data.is_secure,
|
||||
data.key_id,
|
||||
&data.encrypt_data.front(),
|
||||
encrypt_length,
|
||||
@@ -299,6 +302,7 @@ TEST_F(WvCdmRequestLicenseTest, ClearDecryptionNoKeyTest) {
|
||||
// key 1, clear, 256b
|
||||
DecryptionData data;
|
||||
data.is_encrypted = false;
|
||||
data.is_secure = false;
|
||||
data.key_id = wvcdm::a2bs_hex("77777777777777777777777777777777");
|
||||
data.encrypt_data = wvcdm::a2b_hex(
|
||||
"9da401105ab8da443e93e6fe089dfc69e00a9a51690d406872f338c5fa7dd3d5"
|
||||
@@ -327,6 +331,7 @@ TEST_F(WvCdmRequestLicenseTest, ClearDecryptionNoKeyTest) {
|
||||
|
||||
EXPECT_EQ(NO_ERROR, decryptor_.Decrypt(session_id_,
|
||||
data.is_encrypted,
|
||||
data.is_secure,
|
||||
data.key_id,
|
||||
&data.encrypt_data.front(),
|
||||
encrypt_length,
|
||||
@@ -348,6 +353,7 @@ TEST_F(WvCdmRequestLicenseTest, DecryptionTest) {
|
||||
// key 1, encrypted, 256b
|
||||
DecryptionData data;
|
||||
data.is_encrypted = true;
|
||||
data.is_secure = false;
|
||||
data.key_id = wvcdm::a2bs_hex("E02562E04CD55351B14B3D748D36ED8E");
|
||||
data.encrypt_data = wvcdm::a2b_hex(
|
||||
"3b2cbde084973539329bd5656da22d20396249bf4a18a51c38c4743360cc9fea"
|
||||
@@ -376,6 +382,7 @@ TEST_F(WvCdmRequestLicenseTest, DecryptionTest) {
|
||||
|
||||
EXPECT_EQ(NO_ERROR, decryptor_.Decrypt(session_id_,
|
||||
data.is_encrypted,
|
||||
data.is_secure,
|
||||
data.key_id,
|
||||
&data.encrypt_data.front(),
|
||||
encrypt_length,
|
||||
@@ -399,6 +406,7 @@ TEST_F(WvCdmRequestLicenseTest, SwitchKeyDecryptionTest) {
|
||||
|
||||
// block 0, key 1, encrypted, 256b
|
||||
data[0].is_encrypted = true;
|
||||
data[0].is_secure = false;
|
||||
data[0].key_id = wvcdm::a2bs_hex("E02562E04CD55351B14B3D748D36ED8E");
|
||||
data[0].encrypt_data = wvcdm::a2b_hex(
|
||||
"3b2cbde084973539329bd5656da22d20396249bf4a18a51c38c4743360cc9fea"
|
||||
@@ -423,6 +431,7 @@ TEST_F(WvCdmRequestLicenseTest, SwitchKeyDecryptionTest) {
|
||||
|
||||
// block 1, key 3, encrypted, 256b
|
||||
data[1].is_encrypted = true;
|
||||
data[1].is_secure = false;
|
||||
data[1].key_id = wvcdm::a2bs_hex("0065901A64A25899A5193664ABF9AF62");
|
||||
data[1].encrypt_data = wvcdm::a2b_hex(
|
||||
"337f294addb4c16d1015fd839e80314472432eda503bd0529422318bec7d2b34"
|
||||
@@ -452,6 +461,7 @@ TEST_F(WvCdmRequestLicenseTest, SwitchKeyDecryptionTest) {
|
||||
|
||||
EXPECT_EQ(NO_ERROR, decryptor_.Decrypt(session_id_,
|
||||
data[i].is_encrypted,
|
||||
data[i].is_secure,
|
||||
data[i].key_id,
|
||||
&data[i].encrypt_data.front(),
|
||||
encrypt_length,
|
||||
@@ -475,6 +485,7 @@ TEST_F(WvCdmRequestLicenseTest, PartialBlockDecryptionTest) {
|
||||
// key 3, encrypted, 125b, offset 0
|
||||
DecryptionData data;
|
||||
data.is_encrypted = true;
|
||||
data.is_secure = false;
|
||||
data.key_id = wvcdm::a2bs_hex("0065901A64A25899A5193664ABF9AF62");
|
||||
data.encrypt_data = wvcdm::a2b_hex(
|
||||
"337f294addb4c16d1015fd839e80314472432eda503bd0529422318bec7d2b34"
|
||||
@@ -495,6 +506,7 @@ TEST_F(WvCdmRequestLicenseTest, PartialBlockDecryptionTest) {
|
||||
|
||||
EXPECT_EQ(NO_ERROR, decryptor_.Decrypt(session_id_,
|
||||
data.is_encrypted,
|
||||
data.is_secure,
|
||||
data.key_id,
|
||||
&data.encrypt_data.front(),
|
||||
encrypt_length,
|
||||
@@ -516,6 +528,7 @@ TEST_F(WvCdmRequestLicenseTest, PartialBlockWithOffsetDecryptionTest) {
|
||||
// key 3, encrypted, 123b, offset 5
|
||||
DecryptionData data;
|
||||
data.is_encrypted = true;
|
||||
data.is_secure = false;
|
||||
data.key_id = wvcdm::a2bs_hex("0065901A64A25899A5193664ABF9AF62");
|
||||
data.encrypt_data = wvcdm::a2b_hex(
|
||||
"97f39b919ba56f3c3a51ecdcd7318bc130f054320c74db3990f925"
|
||||
@@ -536,6 +549,7 @@ TEST_F(WvCdmRequestLicenseTest, PartialBlockWithOffsetDecryptionTest) {
|
||||
|
||||
EXPECT_EQ(NO_ERROR, decryptor_.Decrypt(session_id_,
|
||||
data.is_encrypted,
|
||||
data.is_secure,
|
||||
data.key_id,
|
||||
&data.encrypt_data.front(),
|
||||
encrypt_length,
|
||||
@@ -561,6 +575,7 @@ TEST_F(WvCdmRequestLicenseTest, KeyControlBlockDecryptionTest) {
|
||||
|
||||
// block 4, key 2, encrypted
|
||||
data.is_encrypted = true;
|
||||
data.is_secure = false;
|
||||
data.key_id = wvcdm::a2bs_hex("0915007CAA9B5931B76A3A85F046523E");
|
||||
data.encrypt_data = wvcdm::a2b_hex(
|
||||
"6758ac1c6ccf5d08479e3bfc62bbc0fd154aff4415aa7ed53d89e3983248d117"
|
||||
@@ -589,6 +604,7 @@ TEST_F(WvCdmRequestLicenseTest, KeyControlBlockDecryptionTest) {
|
||||
|
||||
EXPECT_EQ(NO_ERROR, decryptor_.Decrypt(session_id_,
|
||||
data.is_encrypted,
|
||||
data.is_secure,
|
||||
data.key_id,
|
||||
&data.encrypt_data.front(),
|
||||
encrypt_length,
|
||||
|
||||
Reference in New Issue
Block a user