Bug 1329543 - Remove Primetime SystemId from PSSH parser. r=gerald
authorChris Pearce <cpearce@mozilla.com>
Sat, 14 Jan 2017 11:28:43 +0800
changeset 374844 a54e6cd31eb643e0dc33ae5859b709cbcdc7a9ff
parent 374843 f4956aa25be693f755e0278c6344ab1c4fcd44b1
child 374845 182ae7543ea4a0bdf04352bbb3fb062a6ac0351c
push id6996
push userjlorenzo@mozilla.com
push dateMon, 06 Mar 2017 20:48:21 +0000
treeherdermozilla-beta@d89512dab048 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersgerald
bugs1329543
milestone53.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1329543 - Remove Primetime SystemId from PSSH parser. r=gerald MozReview-Commit-ID: JzhhMFpzyjg
media/psshparser/PsshParser.cpp
media/psshparser/gtest/TestPsshParser.cpp
--- a/media/psshparser/PsshParser.cpp
+++ b/media/psshparser/PsshParser.cpp
@@ -103,21 +103,16 @@ private:
 
  // System ID identifying the cenc v2 pssh box format; specified at:
  // https://dvcs.w3.org/hg/html-media/raw-file/tip/encrypted-media/cenc-format.html
 const uint8_t kSystemID[] = {
   0x10, 0x77, 0xef, 0xec, 0xc0, 0xb2, 0x4d, 0x02,
   0xac, 0xe3, 0x3c, 0x1e, 0x52, 0xe2, 0xfb, 0x4b
 };
 
-const uint8_t kPrimetimeID[] = {
-  0xf2, 0x39, 0xe7, 0x69, 0xef, 0xa3, 0x48, 0x50,
-  0x9c, 0x16, 0xa9, 0x03, 0xc6, 0x93, 0x2e, 0xfb
-};
-
 bool
 ParseCENCInitData(const uint8_t* aInitData,
                   uint32_t aInitDataSize,
                   std::vector<std::vector<uint8_t>>& aOutKeyIds)
 {
   aOutKeyIds.clear();
   std::vector<std::vector<uint8_t>> keyIds;
   ByteReader reader(aInitData, aInitDataSize);
@@ -158,21 +153,16 @@ ParseCENCInitData(const uint8_t* aInitDa
     reader.Read(3); // skip flags.
 
     // SystemID
     const uint8_t* sid = reader.Read(sizeof(kSystemID));
     if (!sid) {
       // Insufficient bytes to read SystemID.
       return false;
     }
-    if (!memcmp(kPrimetimeID, sid, sizeof(kSystemID))) {
-      // Allow legacy Primetime key system PSSH boxes, which
-      // don't conform to common encryption format.
-      return true;
-    }
 
     if (memcmp(kSystemID, sid, sizeof(kSystemID))) {
       // Ignore pssh boxes with wrong system ID.
       reader.Seek(std::max<size_t>(reader.Offset(), end));
       continue;
     }
 
     if (!reader.CanRead32()) {
--- a/media/psshparser/gtest/TestPsshParser.cpp
+++ b/media/psshparser/gtest/TestPsshParser.cpp
@@ -108,25 +108,16 @@ const uint8_t g2xGoogleWPTCencInitData[]
   0x10, 0x77, 0xEF, 0xEC, 0xC0, 0xB2, 0x4D, 0x02,  // Common SystemID
   0xAC, 0xE3, 0x3C, 0x1E, 0x52, 0xE2, 0xFB, 0x4B,
   0x00, 0x00, 0x00, 0x01,                          // key count
   0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,  // key
   0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
   0x00, 0x00, 0x00, 0x00                           // datasize
 };
 
-const uint8_t gPrimetimePSSH[] = {
-  0x00, 0x00, 0x00, 0x00,                          // size = 0
-  0x70, 0x73, 0x73, 0x68,                          // 'pssh'
-  0x01,                                            // version = 1
-  0x00, 0x00, 0x00,                                // flags
-  0xf2, 0x39, 0xe7, 0x69, 0xef, 0xa3, 0x48, 0x50,  // Primetime system Id
-  0x9c, 0x16, 0xa9, 0x03, 0xc6, 0x93, 0x2e, 0xfb
-};
-
 TEST(PsshParser, ParseCencInitData) {
   std::vector<std::vector<uint8_t>> keyIds;
   bool rv;
 
   rv = ParseCENCInitData(gGoogleWPTCencInitData, MOZ_ARRAY_LENGTH(gGoogleWPTCencInitData), keyIds);
   EXPECT_TRUE(rv);
   EXPECT_EQ(1u, keyIds.size());
   EXPECT_EQ(16u, keyIds[0].size());
@@ -157,13 +148,9 @@ TEST(PsshParser, ParseCencInitData) {
 
   rv = ParseCENCInitData(g2xGoogleWPTCencInitData, MOZ_ARRAY_LENGTH(g2xGoogleWPTCencInitData), keyIds);
   EXPECT_TRUE(rv);
   EXPECT_EQ(2u, keyIds.size());
   EXPECT_EQ(16u, keyIds[0].size());
   EXPECT_EQ(16u, keyIds[1].size());
   EXPECT_EQ(0, memcmp(&keyIds[0].front(), &g2xGoogleWPTCencInitData[32], 16));
   EXPECT_EQ(0, memcmp(&keyIds[1].front(), &g2xGoogleWPTCencInitData[84], 16));
-
-  rv = ParseCENCInitData(gPrimetimePSSH, MOZ_ARRAY_LENGTH(gPrimetimePSSH), keyIds);
-  EXPECT_TRUE(rv);
-  EXPECT_EQ(0u, keyIds.size());
 }