diff --git a/libwvdrmengine/cdm/test/request_license_test.cpp b/libwvdrmengine/cdm/test/request_license_test.cpp index 08148466..d9a84dfe 100644 --- a/libwvdrmengine/cdm/test/request_license_test.cpp +++ b/libwvdrmengine/cdm/test/request_license_test.cpp @@ -98,7 +98,8 @@ SubSampleInfo clear_sub_sample = { "029359c4cf5906b6ab5bf60fbb3f1a1c7c59acfc7e4fb4ad8e623c04d503a3dd" "4884604c8da8a53ce33db9ff8f1c5bb6bb97f37b39906bf41596555c1bcce9ed" "08a899cd760ff0899a1170c2f224b9c52997a0785b7fe170805fd3e8b1127659"), - wvcdm::a2b_hex("f6f4b1e600a5b67813ed2bded913ba9f"), 0, 3}; + wvcdm::a2b_hex("f6f4b1e600a5b67813ed2bded913ba9f"), 0, + OEMCrypto_FirstSubsample | OEMCrypto_LastSubsample}; SubSampleInfo clear_sub_sample_no_key = { false, 1, false, false, false, @@ -121,7 +122,8 @@ SubSampleInfo clear_sub_sample_no_key = { "029359c4cf5906b6ab5bf60fbb3f1a1c7c59acfc7e4fb4ad8e623c04d503a3dd" "4884604c8da8a53ce33db9ff8f1c5bb6bb97f37b39906bf41596555c1bcce9ed" "08a899cd760ff0899a1170c2f224b9c52997a0785b7fe170805fd3e8b1127659"), - wvcdm::a2b_hex("f6f4b1e600a5b67813ed2bded913ba9f"), 0, 3}; + wvcdm::a2b_hex("f6f4b1e600a5b67813ed2bded913ba9f"), 0, + OEMCrypto_FirstSubsample | OEMCrypto_LastSubsample}; SubSampleInfo single_encrypted_sub_sample = { // key SD, encrypted, 256b @@ -145,7 +147,8 @@ SubSampleInfo single_encrypted_sub_sample = { "029359c4cf5906b6ab5bf60fbb3f1a1c7c59acfc7e4fb4ad8e623c04d503a3dd" "4884604c8da8a53ce33db9ff8f1c5bb6bb97f37b39906bf41596555c1bcce9ed" "08a899cd760ff0899a1170c2f224b9c52997a0785b7fe170805fd3e8b1127659"), - wvcdm::a2b_hex("f6f4b1e600a5b67813ed2bded913ba9f"), 0, 3}; + wvcdm::a2b_hex("f6f4b1e600a5b67813ed2bded913ba9f"), 0, + OEMCrypto_FirstSubsample | OEMCrypto_LastSubsample}; SubSampleInfo switch_key_encrypted_sub_samples[2] = { // block 0, key SD, encrypted, 256b @@ -169,7 +172,8 @@ SubSampleInfo switch_key_encrypted_sub_samples[2] = { "4651729e30e9ddbb22f47a5026e09c795ff15a858123a7979e7be716cb8cd075" "e8bfb91bc0cc83f7cacd5c4772f7479a1193d9307bc5f837185faed5499e66a7" "e27db50b5d018d022279032016862883befd113b6c784889be8f9e6eb0f335f7"), - wvcdm::a2b_hex("fd38d7f754a97128b78440433e1ef4a8"), 0, 3}, + wvcdm::a2b_hex("fd38d7f754a97128b78440433e1ef4a8"), 0, + OEMCrypto_FirstSubsample | OEMCrypto_LastSubsample}, // block 1, key HD, encrypted, 256b {true, 2, true, true, false, wvcdm::a2bs_hex("6D665122C01767FC087F340E6C335EA4"), @@ -191,7 +195,8 @@ SubSampleInfo switch_key_encrypted_sub_samples[2] = { "7dae8e59f32bf950c6569845a5261b5ed9cc500706eccf8d41f015b32026e16e" "ab274465d880ff99a5eaea603eea66c7b0e6679bfd87145de0ec1a73ebfff092" "866346a1d66db2923bca30664f417a6b66c07e91fb491be7872ebe5c9c2d03c2"), - wvcdm::a2b_hex("f56ab022666de858920e532f19bb32f6"), 0, 3}}; + wvcdm::a2b_hex("f56ab022666de858920e532f19bb32f6"), 0, + OEMCrypto_FirstSubsample | OEMCrypto_LastSubsample}}; SubSampleInfo partial_encrypted_sub_samples[3] = { // block 1, key SD, encrypted, 1-125b, offset 0 @@ -207,7 +212,8 @@ SubSampleInfo partial_encrypted_sub_samples[3] = { "047f5e85449692fae8f677be425a47bdea850df5a3ffff17043afb1f2b437ab2" "b1d5e0784c4ed8f97fc24b8f565e85ed63fb7d1365980d9aea7b8b58f488f83c" "1ce80b6096c60f3b113c988ff185b26e798da8fc6f327e4ff00e4b3fbf"), - wvcdm::a2b_hex("6ba18dd40f49da7f64c368e4db43fc88"), 0, 1}, + wvcdm::a2b_hex("6ba18dd40f49da7f64c368e4db43fc88"), 0, + OEMCrypto_FirstSubsample}, // block 2, key SD, encrypted, 126-187b, offset 5 {true, 3, true, true, false, wvcdm::a2bs_hex("371EA35E1A985D75D198A7F41020DC23"), @@ -231,7 +237,8 @@ SubSampleInfo partial_encrypted_sub_samples[3] = { "653b818d1d" "4ab9a9128361d8ca6a9d2766df5c096ee29f4f5204febdf217a94a5b560cd692" "cc36d3e071df789fdeac2fb7ec6dcd7af94bb1f85c22025b25e702e38212b927"), - wvcdm::a2b_hex("6ba18dd40f49da7f64c368e4db43fc93"), 11, 2}}; + wvcdm::a2b_hex("6ba18dd40f49da7f64c368e4db43fc93"), 11, + OEMCrypto_LastSubsample}}; SubSampleInfo single_encrypted_sub_sample_short_expiry = { // key 1, encrypted, 256b @@ -255,7 +262,8 @@ SubSampleInfo single_encrypted_sub_sample_short_expiry = { "304d605e21f69615e1b57db18312b6b948725724b74e91d8aea7371e99532469" "1b358bdee873f1936b63efe83d190a53c2d21754d302d63ff285174023473755" "58b938c2e3ca4c2ce48942da97f9e45797f2c074ac6004734e93784a48af6160"), - wvcdm::a2b_hex("4cca615fc013102892f91efee936639b"), 0, 3}; + wvcdm::a2b_hex("4cca615fc013102892f91efee936639b"), 0, + OEMCrypto_FirstSubsample | OEMCrypto_LastSubsample}; SubSampleInfo usage_info_sub_samples_icp[] = { {true, 1, true, true, false, @@ -278,7 +286,8 @@ SubSampleInfo usage_info_sub_samples_icp[] = { "58c957b5f5ff268f445c0a6b825fcad55290cb7b5c9814bc4c72984dcf4c8fd7" "5f511c173b2e0a3163b18a1eac58539e5c188aeb0751b946ad4dcd08ea777a7f" "37326df26fa509343faa98dff667629f557873f1284903202e451227ef465a62"), - wvcdm::a2b_hex("7362b5140c4ce0cd5f863858668d3f1a"), 0, 3}, + wvcdm::a2b_hex("7362b5140c4ce0cd5f863858668d3f1a"), 0, + OEMCrypto_FirstSubsample | OEMCrypto_LastSubsample}, {true, 1, true, true, false, wvcdm::a2bs_hex("04B2B456405CAD7170BE848CA75AA2DF"), wvcdm::a2b_hex( @@ -299,7 +308,8 @@ SubSampleInfo usage_info_sub_samples_icp[] = { "b36c940fce519c913db56a6372c3636b10c0149b4cd97e74c576765b533abdc2" "729f1470dd7f9a60d3572dcc9839582a4606ee17eaced39797daef8f885d3f8f" "e14877ae530451c4242bbc3934f85a5bb71b363351894f881896471cfeaf68b2"), - wvcdm::a2b_hex("4a59e3e5f3e4f7e2f494ad09c12a9e4c"), 0, 3}, + wvcdm::a2b_hex("4a59e3e5f3e4f7e2f494ad09c12a9e4c"), 0, + OEMCrypto_FirstSubsample | OEMCrypto_LastSubsample}, {true, 1, true, true, false, wvcdm::a2bs_hex("3AE243D83B93B3311A1D777FF5FBE01A"), wvcdm::a2b_hex( @@ -320,7 +330,8 @@ SubSampleInfo usage_info_sub_samples_icp[] = { "92175ce2844eaf9064e6a3fcffade038d690cbed81659351163a22432f0d0545" "037e1c805d8e92a1272b4196ad0ce22f26bb80063137a8e454d3b97e2414283d" "ed0716cd8bceb80cf59166a217006bd147c51b04dfb183088ce3f51e9b9f759e"), - wvcdm::a2b_hex("b358ab21ac90455bbf60490daad457e3"), 0, 3}, + wvcdm::a2b_hex("b358ab21ac90455bbf60490daad457e3"), 0, + OEMCrypto_FirstSubsample | OEMCrypto_LastSubsample}, {true, 1, true, true, false, wvcdm::a2bs_hex("5292104C011418973C31235953FC8205"), wvcdm::a2b_hex( @@ -341,7 +352,8 @@ SubSampleInfo usage_info_sub_samples_icp[] = { "d56e0efcf40c8c98981a86c18a159f05d851891236c124641d4584c49ccd7478" "4f328a9cacae0f945238d98741b2969fe258903e85f963daba7168f05c18b09f" "660dae18de41b1c49769cd38e24b135c37a65b69533f5c7d085898faedfbed5d"), - wvcdm::a2b_hex("cef7e8aaa6ec1154cb68a988f7c9e803"), 0, 3}, + wvcdm::a2b_hex("cef7e8aaa6ec1154cb68a988f7c9e803"), 0, + OEMCrypto_FirstSubsample | OEMCrypto_LastSubsample}, {true, 1, true, true, false, wvcdm::a2bs_hex("D7C01C2F868AE314BCB893E4E9C6AC75"), wvcdm::a2b_hex( @@ -362,7 +374,8 @@ SubSampleInfo usage_info_sub_samples_icp[] = { "fab916abc957fb07d7eac4a368ac92a8fb16d995613af47303034ee57b59b1d7" "101aa031f5586b2f6b4c74372c4d7306db02509b5924d52c46a270f427743a85" "614f080d83f3b15cbc6600ddda43adff5d2941da13ebe49d80fd0cea5025412b"), - wvcdm::a2b_hex("964c2dfda920357c668308d52d33c652"), 0, 3}}; + wvcdm::a2b_hex("964c2dfda920357c668308d52d33c652"), 0, + OEMCrypto_FirstSubsample | OEMCrypto_LastSubsample}}; // License duration and uncertainty window const uint32_t kSingleEncryptedSubSampleIcpLicenseDurationExpiration = 5; @@ -511,6 +524,32 @@ struct HlsSegmentInfo { std::string iv; std::string clear_data; std::string encrypted_data; + uint8_t subsample_flags; +}; + +HlsSegmentInfo kAes128SingleSegmentInfo[] = { + { + true, wvcdm::a2bs_hex("9FBE45DD47DA7EBA09A3E24CBA95C9AF"), + wvcdm::a2bs_hex( + "AD868A6AC55C10D564FC23B8ACFF407DAAF4ED2743520E02CDA9680D9EA88E9148" + "84604C8DA8A53CE33DB9FF8F1C5BB6BB97F37B39906BF41596555C1BCCE9ED0293" + "59C4CF5906B6AB5BF60FBB3F1A1C7C59ACFC7E4FB4AD8E623C04D503A3DDAD868A" + "6AC55C10D564FC23B8ACFF407DAAF4ED2743520E02CDA9680D9EA88E918DF21FDC" + "42F166880D97A2225CD5C9EA5E7B752F4CF81BBDBE98E542EE10E1C6595D259A1E" + "4A8B6D7744CD98C5D3F921ADC252EB7D8AF6B916044B676A574747942AC20A89FF" + "79F4C2F25FBA99D6A44618A8C0420B27D54E3DA17B77C9D43CCA217CE9BDE99BD9" + "1E9733A1A00B9B557AC3A433DC92633546156817FAE26B6E1C"), + wvcdm::a2bs_hex( + "E7C566D86E98C36D2DCA54A966E7B469B6094B9201F200932F8EB5E1A94FB0B977" + "FAB8DFDAD57C677E279615F4EAFA872CA8EFF83179E4DE2AB78E6B41A860C42203" + "4B875AC282406E03AC01F2E407A55DE38C6C35707F34B3319646FA016A01CE9056" + "E55D28C48ED72F10FA6625656ED62B758CBADA757DDC52533C9CBD54FC1A46F827" + "CC7B69BA66AE19A15D725FCBB972B23C83F95C0F00F481A7C9AC8687B3A4AD15AD" + "A2ABBB84D8E3CBEC3E8771720A35234070799173B37219127141922CBA8CB2DC48" + "EC2477832D1AE477942DCDA93C0886AF72D71E56DA3D7737E49670B024639A195B" + "7377C7F45A797C6E5DBB1BB2843DA3FC76043E33687BEF3172"), + OEMCrypto_FirstSubsample | OEMCrypto_LastSubsample, + }, }; HlsSegmentInfo kAes128PartialSegmentInfo[] = { @@ -534,6 +573,7 @@ HlsSegmentInfo kAes128PartialSegmentInfo[] = { "A2ABBB84D8E3CBEC3E8771720A35234070799173B37219127141922CBA8CB2DC48" "EC2477832D1AE477942DCDA93C0886AF72D71E56DA3D7737E49670B024639A195B" "7377C7F45A797C6E5DBB1BB2843DA3FC76043E33687BEF3172"), + OEMCrypto_FirstSubsample, }, { false, wvcdm::a2bs_hex("BB1BB2843DA3FC76043E33687BEF3172"), @@ -555,6 +595,7 @@ HlsSegmentInfo kAes128PartialSegmentInfo[] = { "94C294768D86FDADED52931E7ACEBC915C8124785E4BE9CE89BFFA631C3F5E67C4" "EE5BA77A83B6E582DF2C1907FA572B61D656DCF9B8DEAE4B81508378732F952152" "CF7DCAB0A3CA3EE8E5F72D24E96647EBBAAA2394BD6EC458EF"), + OEMCrypto_LastSubsample, }, }; @@ -579,6 +620,7 @@ HlsSegmentInfo kAes128MultiSegmentInfo[] = { "A2ABBB84D8E3CBEC3E8771720A35234070799173B37219127141922CBA8CB2DC48" "EC2477832D1AE477942DCDA93C0886AF72D71E56DA3D7737E49670B024639A195B" "7377C7F45A797C6E5DBB1BB2843DA3FC76043E33687BEF3172"), + OEMCrypto_FirstSubsample | OEMCrypto_LastSubsample, }, { true, wvcdm::a2bs_hex("9FBE45DD47DA7EBA09A3E24CBA95C9AF"), @@ -600,6 +642,7 @@ HlsSegmentInfo kAes128MultiSegmentInfo[] = { "C9FB1226EDF74A803B171A891DD56393FB1322D47988E1055095C5F35CF83DB5A3" "940D329B51DDC89EC463712E9B32AEA8877AFE8C5BED67AE700FFC4CCEFFBC4021" "0E7ECA01DFF357ADF4D73A80D2B0C46867B33A5605DFDBD06E"), + OEMCrypto_FirstSubsample | OEMCrypto_LastSubsample, }, }; @@ -608,6 +651,7 @@ HlsSegmentInfo kSampleAes10ByteSegmentInfo[] = { true, wvcdm::a2bs_hex("9FBE45DD47DA7EBA09A3E24CBA95C9AF"), wvcdm::a2bs_hex("4884604C8DA8A53CE33D"), wvcdm::a2bs_hex("4884604C8DA8A53CE33D"), + OEMCrypto_FirstSubsample | OEMCrypto_LastSubsample, }, }; @@ -616,6 +660,7 @@ HlsSegmentInfo kSampleAes16ByteSegmentInfo[] = { true, wvcdm::a2bs_hex("9FBE45DD47DA7EBA09A3E24CBA95C9AF"), wvcdm::a2bs_hex("4884604C8DA8A53CE33DB9FF8F1C5BB6"), wvcdm::a2bs_hex("8E6B884AB604495C675CA38F0425E23E"), + OEMCrypto_FirstSubsample | OEMCrypto_LastSubsample, }, }; @@ -624,6 +669,7 @@ HlsSegmentInfo kSampleAes18ByteSegmentInfo[] = { true, wvcdm::a2bs_hex("9FBE45DD47DA7EBA09A3E24CBA95C9AF"), wvcdm::a2bs_hex("4884604C8DA8A53CE33DB9FF8F1C5BB6BB97"), wvcdm::a2bs_hex("8E6B884AB604495C675CA38F0425E23EBB97"), + OEMCrypto_FirstSubsample | OEMCrypto_LastSubsample, }, }; @@ -642,6 +688,7 @@ HlsSegmentInfo kSampleAes160ByteSegmentInfo[] = { "F4ED2743520E02CDA9680D9EA88E918DF21FDC42F166880D97A222" "5CD5C9EA5E7B752F4CF81BBDBE98E542EE10E1C6595D259A1E4A8B" "6D7744CD98C5D3F921ADC252EB7D8AF6B916044B676A574747"), + OEMCrypto_FirstSubsample | OEMCrypto_LastSubsample, }, }; @@ -662,6 +709,7 @@ HlsSegmentInfo kSampleAes175ByteSegmentInfo[] = { "5CD5C9EA5E7B752F4CF81BBDBE98E542EE10E1C6595D259A1E4A8B" "6D7744CD98C5D3F921ADC252EB7D8AF6B916044B676A574747942A" "C20A89FF79F4C2F25FBA99D6A4"), + OEMCrypto_FirstSubsample | OEMCrypto_LastSubsample, }, }; @@ -682,6 +730,7 @@ HlsSegmentInfo kSampleAes176ByteSegmentInfo[] = { "5CD5C9EA5E7B752F4CF81BBDBE98E542EE10E1C6595D259A1E4A8B" "6D7744CD98C5D3F921ADC252EB7D8AF6B916044B676A574747FBDC" "189C42C3C213A71DBCF73A05A1A1"), + OEMCrypto_FirstSubsample | OEMCrypto_LastSubsample, }, }; @@ -702,6 +751,7 @@ HlsSegmentInfo kSampleAes192ByteSegmentInfo[] = { "DC42F166880D97A2225CD5C9EA5E7B752F4CF81BBDBE98E542EE10E1C6595D259A" "1E4A8B6D7744CD98C5D3F921ADC252EB7D8AF6B916044B676A574747FBDC189C42" "C3C213A71DBCF73A05A1A118A8C0420B27D54E3DA17B77C9D43CCA"), + OEMCrypto_FirstSubsample | OEMCrypto_LastSubsample, }, }; @@ -732,6 +782,7 @@ HlsSegmentInfo kSampleAes338ByteSegmentInfo[] = { "2DCA54A966E7B469B6094B9201F200932F8EB5E1A94FB0B977FAB8DFDAD57C677E" "279615F4EAFA872CA8EFF83179E4DE2AB78E6B41A860C44A27BD03EAB2D3CFCB2C" "F4F5AA93E7025DE3"), + OEMCrypto_FirstSubsample | OEMCrypto_LastSubsample, }, }; @@ -743,7 +794,7 @@ struct HlsDecryptionInfo { }; HlsDecryptionInfo kHlsDecryptionTestVectors[] = { - {false, 1, &kAes128PartialSegmentInfo[0], kAttributeListAes128}, + {false, 1, &kAes128SingleSegmentInfo[0], kAttributeListAes128}, {false, 2, &kAes128PartialSegmentInfo[0], kAttributeListAes128}, {false, 2, &kAes128MultiSegmentInfo[0], kAttributeListAes128}, {true, 1, &kSampleAes10ByteSegmentInfo[0], kAttributeListSampleAes}, @@ -896,6 +947,7 @@ class DecryptCallbackTester { sub_sample_info_->block_offset, &decrypt_buffer[0]); decryption_parameters.is_encrypted = sub_sample_info_->is_encrypted; decryption_parameters.is_secure = sub_sample_info_->is_secure; + decryption_parameters.subsample_flags = sub_sample_info_->subsample_flags; EXPECT_EQ(NO_ERROR, decryptor_->Decrypt(session_id, sub_sample_info_->validate_key_id, decryption_parameters)); @@ -2281,6 +2333,7 @@ TEST_P(WvCdmUsageTest, WithClientId) { &data->iv, data->block_offset, &decrypt_buffer[0]); decryption_parameters.is_encrypted = data->is_encrypted; decryption_parameters.is_secure = data->is_secure; + decryption_parameters.subsample_flags = data->subsample_flags; EXPECT_EQ(NO_ERROR, decryptor_.Decrypt(session_id_, data->validate_key_id, decryption_parameters)); @@ -2360,6 +2413,7 @@ TEST_F(WvCdmRequestLicenseTest, UsageInfoRetryTest) { &data->iv, data->block_offset, &decrypt_buffer[0]); decryption_parameters.is_encrypted = data->is_encrypted; decryption_parameters.is_secure = data->is_secure; + decryption_parameters.subsample_flags = data->subsample_flags; EXPECT_EQ(NO_ERROR, decryptor_.Decrypt(session_id_, data->validate_key_id, decryption_parameters)); @@ -2447,6 +2501,7 @@ TEST_P(WvCdmUsageInfoTest, UsageInfo) { &data->iv, data->block_offset, &decrypt_buffer[0]); decryption_parameters.is_encrypted = data->is_encrypted; decryption_parameters.is_secure = data->is_secure; + decryption_parameters.subsample_flags = data->subsample_flags; EXPECT_EQ(NO_ERROR, decryptor_.Decrypt(session_id_, data->validate_key_id, decryption_parameters)); @@ -2522,6 +2577,7 @@ TEST_F(WvCdmRequestLicenseTest, UsageReleaseAllTest) { &data->iv, data->block_offset, &decrypt_buffer[0]); decryption_parameters.is_encrypted = data->is_encrypted; decryption_parameters.is_secure = data->is_secure; + decryption_parameters.subsample_flags = data->subsample_flags; EXPECT_EQ(NO_ERROR, decryptor_.Decrypt(session_id_, data->validate_key_id, decryption_parameters)); @@ -3156,6 +3212,7 @@ TEST_P(WvCdmSessionSharingTest, SessionSharingTest) { &data->iv, data->block_offset, &decrypt_buffer[0]); decryption_parameters.is_encrypted = data->is_encrypted; decryption_parameters.is_secure = data->is_secure; + decryption_parameters.subsample_flags = data->subsample_flags; if (session_sharing_info->session_sharing_enabled || !data->is_encrypted) { EXPECT_EQ(NO_ERROR, @@ -3215,6 +3272,7 @@ TEST_F(WvCdmRequestLicenseTest, SessionSharingTest) { &data->iv, data->block_offset, &decrypt_buffer[0]); decryption_parameters.is_encrypted = data->is_encrypted; decryption_parameters.is_secure = data->is_secure; + decryption_parameters.subsample_flags = data->subsample_flags; EXPECT_EQ(NO_ERROR, decryptor_.Decrypt(session_id1, data->validate_key_id, decryption_parameters)); @@ -3259,6 +3317,7 @@ TEST_F(WvCdmRequestLicenseTest, DecryptionKeyExpiredTest) { &data->iv, data->block_offset, &decrypt_buffer[0]); decryption_parameters.is_encrypted = data->is_encrypted; decryption_parameters.is_secure = data->is_secure; + decryption_parameters.subsample_flags = data->subsample_flags; EXPECT_EQ(NO_ERROR, decryptor_.Decrypt(session_id_, data->validate_key_id, decryption_parameters)); sleep(kSingleEncryptedSubSampleIcpLicenseDurationExpiration + @@ -3307,8 +3366,15 @@ TEST_P(WvCdmDecryptionTest, DecryptionTest) { VerifyKeyRequestResponse(g_license_server, g_client_auth, false); } + uint32_t decrypt_sample_buffer_size = 0; + uint32_t decrypt_buffer_offset = 0; + for (size_t i = 0; i < data->num_of_subsamples; i++) + decrypt_sample_buffer_size += (data + i)->encrypt_data.size(); + + std::vector decrypt_buffer(decrypt_sample_buffer_size); + std::vector expected_decrypt_data; + for (size_t i = 0; i < data->num_of_subsamples; i++) { - std::vector decrypt_buffer((data + i)->encrypt_data.size()); CdmDecryptionParameters decryption_parameters( &(data + i)->key_id, &(data + i)->encrypt_data.front(), (data + i)->encrypt_data.size(), &(data + i)->iv, @@ -3316,14 +3382,20 @@ TEST_P(WvCdmDecryptionTest, DecryptionTest) { decryption_parameters.is_encrypted = (data + i)->is_encrypted; decryption_parameters.is_secure = (data + i)->is_secure; decryption_parameters.subsample_flags = (data + i)->subsample_flags; + decryption_parameters.decrypt_buffer_length = decrypt_sample_buffer_size; + decryption_parameters.decrypt_buffer_offset = decrypt_buffer_offset; + expected_decrypt_data.insert(expected_decrypt_data.end(), + (data+i)->decrypt_data.begin(), + (data+i)->decrypt_data.end()); EXPECT_EQ(NO_ERROR, decryptor_.Decrypt(session_id_, (data + i)->validate_key_id, decryption_parameters)); - EXPECT_TRUE(std::equal((data + i)->decrypt_data.begin(), - (data + i)->decrypt_data.end(), - decrypt_buffer.begin())); + decrypt_buffer_offset += (data +i)->encrypt_data.size(); } + EXPECT_TRUE(std::equal(expected_decrypt_data.begin(), + expected_decrypt_data.end(), + decrypt_buffer.begin())); decryptor_.CloseSession(session_id_); } @@ -3421,6 +3493,7 @@ TEST_P(WvHlsDecryptionTest, HlsDecryptionTest) { decryption_parameters.pattern_descriptor.encrypt_blocks = 1; decryption_parameters.pattern_descriptor.skip_blocks = 9; } + decryption_parameters.subsample_flags = data->subsample_flags; EXPECT_EQ(NO_ERROR, decryptor_.Decrypt(session_id_, false, decryption_parameters)); EXPECT_EQ(data->clear_data, @@ -3474,6 +3547,7 @@ TEST_P(WvHlsFourCCBackwardCompatibilityTest, HlsDecryptionTest) { decryption_parameters.pattern_descriptor.encrypt_blocks = 1; decryption_parameters.pattern_descriptor.skip_blocks = 9; } + decryption_parameters.subsample_flags = data->subsample_flags; EXPECT_EQ(NO_ERROR, decryptor_.Decrypt(session_id_, false, decryption_parameters)); EXPECT_EQ(data->clear_data,