|
|
|
|
@@ -6,6 +6,136 @@
|
|
|
|
|
|
|
|
|
|
namespace wvcdm {
|
|
|
|
|
|
|
|
|
|
namespace {
|
|
|
|
|
std::string kKeySetId1 = "ksid05e79dab2750370195d1";
|
|
|
|
|
std::string kKeySetId2 = "ksid17fe1e9005934171bbd1";
|
|
|
|
|
std::string kKeySetId3 = "ksid2eadb793100566012934";
|
|
|
|
|
|
|
|
|
|
std::string kPsshData1 = "0801121093789920E8D6520098577DF8F2DD5546";
|
|
|
|
|
std::string kPsshData2 = "0801121030313233343536373839616263646566";
|
|
|
|
|
std::string kPsshData3 = "08011210e02562e04cd55351b14b3d748d36ed8e";
|
|
|
|
|
|
|
|
|
|
std::string kKeyRequest1 = "0801128D0C0ACF0B080112EF090AB0020802121007D9FFDE"
|
|
|
|
|
"13AA95C122678053362136BD18D6DDC78C05228E023082010A0282010100B2873F12C61"
|
|
|
|
|
"8883986B67A404733168D34676EA3261231B4EB12CB6F862AAE529D21B449D78E7A8FBB"
|
|
|
|
|
"9CC1A8AE119D89EC571EA23EE92517AFB86EA089E81CF3A773AEDEDFC1979AEE115D657"
|
|
|
|
|
"FE372CBF4178E57F60BEDD15491EF28891ED8663437019C0EF5F79FD0ADDAAE87281DD9"
|
|
|
|
|
"10ED10356DD6B606C0DD2452343329151BD23A42060869252892BD2C0368787E880F716"
|
|
|
|
|
"438E5835BC93FED65D0017D8758E20E5E614B44BAFAF7286484624CC5EB109D85F1C048"
|
|
|
|
|
"9B25A75528C0CD23961067192EF65766EAB5E97FE7EBE25D63DDE41BB34048B8A378EAE"
|
|
|
|
|
"AEBC86C44AB4AA757F29B48C9476660DCC4EE656EB35AC309213399CBEF38394FE32B88"
|
|
|
|
|
"3F9B02030100012899203001128002435CAFA39AD7DC12A40F943FE8DE10C5DD911059D"
|
|
|
|
|
"7B0990742E11419B2E6E797EAE46B5D017F0EF3F429AA43E4F570BBE46F56BBCEACBDFA"
|
|
|
|
|
"8495E4451249D39D5FEFC4F5557498B233C4C9C101E2388E107582D3C3FBF266AB9FE96"
|
|
|
|
|
"A40405A2098583B33D7AD083E105458DF7AE92FD517D538B4671614DA0D167F9661EE0C"
|
|
|
|
|
"574AB95A5BE87B1BEE27659D875A37A1730F84033ACB6BCA8D3C575A2692E7390F062BC"
|
|
|
|
|
"E1E58D9C621A1A11CB215615ED0C5C12";
|
|
|
|
|
std::string kKeyRequest2 = "0801128D0C0ACF0B080112EF090AB0020802121007D9FFDE"
|
|
|
|
|
"13AA95C122678053362136BD188BDCC78C05228E023082010A0282010100C53F667AAA8"
|
|
|
|
|
"27758D3ABF81DAFA223373473EE13E4C500A09CD35CE2620D5DA0D987A237EBFCE1F793"
|
|
|
|
|
"D6F88187749A85B3AF4D737899EF19C3029461E95202E9DF91DD5869FE482FCA17160AF"
|
|
|
|
|
"7AC380D03880EBE3EA55B7FB3ED5ED6B9FAD19234AA75BB642A9A86AEF7CDA86F7B2EC7"
|
|
|
|
|
"C40C31C380F95C1F3C1564B012D530A7971AA656BBD27DAB715F0D5771FB7608453AF88"
|
|
|
|
|
"A331E3E5852F6F9B076A95C807307E541C39216D64B02D180A1009AFB60777EF7C72275"
|
|
|
|
|
"033ABD6FDF12145FFD379B6CB25F1127A783A40D65BF95AB74A08E39209EF2C0341A92A"
|
|
|
|
|
"217FD223734C7D1F0DC0D5B50FBA521FF1F841D1E5ED18DFC13A6D28E5A0A4FACBE6C78"
|
|
|
|
|
"31B5020301000128992030011280022DBC4444671C0C4CF0FBB3BB30C80C78FAFA67223"
|
|
|
|
|
"C6FE3F0BB495B1959B7472E8A64BC13838B3FB731FAC0609FEAB325FE8B7358C2F63D5E"
|
|
|
|
|
"E6C0380B85DBA3FE207B9D6AE7C31467A36A9E8D3D786CC4C383BC2774131D6C099D06D"
|
|
|
|
|
"052ED13A4545A0026A4FC949DE3B79D1C0C6A0D581A3D3598E46D3E4AC827C94045D693"
|
|
|
|
|
"37CAF103CC8839EA7FF020C0721AB17B140640C5E31C1727073CA48F445DA5EE55521D8"
|
|
|
|
|
"85732BAA17BD672B62C717ADBC13F235";
|
|
|
|
|
std::string kKeyRequest3 = "0801128D0C0ACF0B080112EF090AB0020802121007D9FFDE"
|
|
|
|
|
"13AA95C122678053362136BD18D6DDC78C05228E023082010A0282010100B2873F12C61"
|
|
|
|
|
"8883986B67A404733168D34676EA3261231B4EB12CB6F862AAE529D21B449D78E7A8FBB"
|
|
|
|
|
"9CC1A8AE119D89EC571EA23EE92517AFB86EA089E81CF3A773AEDEDFC1979AEE115D657"
|
|
|
|
|
"FE372CBF4178E57F60BEDD15491EF28891ED8663437019C0EF5F79FD0ADDAAE87281DD9"
|
|
|
|
|
"10ED10356DD6B606C0DD2452343329151BD23A42060869252892BD2C0368787E880F716"
|
|
|
|
|
"438E5835BC93FED65D0017D8758E20E5E614B44BAFAF7286484624CC5EB109D85F1C048"
|
|
|
|
|
"9B25A75528C0CD23961067192EF65766EAB5E97FE7EBE25D63DDE41BB34048B8A378EAE"
|
|
|
|
|
"AEBC86C44AB4AA757F29B48C9476660DCC4EE656EB35AC309213399CBEF38394FE32B88"
|
|
|
|
|
"3F9B02030100012899203001128002435CAFA39AD7DC12A40F943FE8DE10C5DD911059D"
|
|
|
|
|
"7B0990742E11419B2E6E797EAE46B5D017F0EF3F429AA43E4F570BBE46F56BBCEACBDFA"
|
|
|
|
|
"8495E4451249D39D5FEFC4F5557498B233C4C9C101E2388E107582D3C3FBF266AB9FE96"
|
|
|
|
|
"A40405A2098583B33D7AD083E105458DF7AE92FD517D538B4671614DA0D167F9661EE0C"
|
|
|
|
|
"574AB95A5BE87B1BEE27659D875A37A1730F84033ACB6BCA8D3C575A2692E7390F062BC"
|
|
|
|
|
"E1E58D9C621A1A11CB215615ED0C5C12";
|
|
|
|
|
|
|
|
|
|
std::string kKeyResponse1 = "080212C2040A460A0939383736353433323112086D03DC5"
|
|
|
|
|
"FD3BB58031A2B596E4B58753250316A5F53785073494E6B377459354E7967396755464B"
|
|
|
|
|
"6963455954335A34626738366C77200128001283010801180120809A9E0128809A9E013"
|
|
|
|
|
"0AC02426C68747470733A2F2F6A6D7431372E676F6F676C652E636F6D2F766964656F2D"
|
|
|
|
|
"6465762F6865617274626561742F63656E633F736F757263653D594F555455424526766"
|
|
|
|
|
"964656F5F69643D45474843364F484E624F6F266F617574683D79612E67747371617769"
|
|
|
|
|
"646576696E65483C503C1A661210EBA4B8B97E17DC6C45D359222B9327121A50583647C"
|
|
|
|
|
"BC8240C2760A79DC72DF7FC0216C0943F12307B9AAED429277A6D0024F93CCA17B7F2BA"
|
|
|
|
|
"C19875E041F12E6729A98E0DFF2EA9806D6C20AF801A5A3E19DAF918FC9AF230C8765DF"
|
|
|
|
|
"B5BE869DF7320011A80010A10E02562E04CD55351B14B3D748D36ED8E12107C9AC11A9D"
|
|
|
|
|
"39304821C47969729A43321A2077E79664AF73B13FC6C55B5B9B2000E174E94F7D9E9BB"
|
|
|
|
|
"B58A547A82FAAAF46182002280242340A202031C7ADB3C2F80975499E285CEE0AF8343A"
|
|
|
|
|
"F3DF50A49EEBCCEB3747C955FEFB12107E021073F71CF814A9CCAA7008B38CD81A80010"
|
|
|
|
|
"A100065901A64A25899A5193664ABF9AF621210874AB758C27A29677D62D2EE092905E2"
|
|
|
|
|
"1A207C4AD3CB7A80740215598D5E74883";
|
|
|
|
|
std::string kKeyResponse2 = "080212C2040A460A0939383736353433323112080C1913B"
|
|
|
|
|
"45E8893481A2B596E4B58753250316A5F53785073494E6B377459354E7967396755464B"
|
|
|
|
|
"6963455954335A34626738366C77200128001283010801180120809A9E0128809A9E013"
|
|
|
|
|
"0AC02426C68747470733A2F2F6A6D7431372E676F6F676C652E636F6D2F766964656F2D"
|
|
|
|
|
"6465762F6865617274626561742F63656E633F736F757263653D594F555455424526766"
|
|
|
|
|
"964656F5F69643D45474843364F484E624F6F266F617574683D79612E67747371617769"
|
|
|
|
|
"646576696E65483C503C1A661210A2B662DC43891A32E65E0CC31CD597B21A50046489D"
|
|
|
|
|
"7EE8A674A4976800FD0553075498F90FD1997A63AECFF3481BF5CA908502676FA7E7E6B"
|
|
|
|
|
"02179FE6C42FAE7351EF85C8494BBE0782CB4C7A5AA6E439590C2D39DD5DB2B1A3DA91E"
|
|
|
|
|
"3D43FA5ABDD20011A80010A10E02562E04CD55351B14B3D748D36ED8E1210B0EF7CC3B2"
|
|
|
|
|
"0E10F4F704DBCF3142AB611A20F684136083E458C6B2977DB4D1FC559F2AFF2C454FEDF"
|
|
|
|
|
"CD68F29D50D351D58DC2002280242340A20223C0E4281615524569AF90EC3BE98349B27"
|
|
|
|
|
"0016C5DCC4CFDF11CB55C9DCFB231210888EF5E2311B3B3407549903D8F30D771A80010"
|
|
|
|
|
"A100065901A64A25899A5193664ABF9AF621210F38F473DC71703C52CC970FCACFA2111"
|
|
|
|
|
"1A20067E176521B6176A97157EDB9D06C";
|
|
|
|
|
std::string kKeyResponse3 = "080212C2040A460A0939383736353433323112086D03DC5"
|
|
|
|
|
"FD3BB58031A2B596E4B58753250316A5F53785073494E6B377459354E7967396755464B"
|
|
|
|
|
"6963455954335A34626738366C77200128001283010801180120809A9E0128809A9E013"
|
|
|
|
|
"0AC02426C68747470733A2F2F6A6D7431372E676F6F676C652E636F6D2F766964656F2D"
|
|
|
|
|
"6465762F6865617274626561742F63656E633F736F757263653D594F555455424526766"
|
|
|
|
|
"964656F5F69643D45474843364F484E624F6F266F617574683D79612E67747371617769"
|
|
|
|
|
"646576696E65483C503C1A661210EBA4B8B97E17DC6C45D359222B9327121A50583647C"
|
|
|
|
|
"BC8240C2760A79DC72DF7FC0216C0943F12307B9AAED429277A6D0024F93CCA17B7F2BA"
|
|
|
|
|
"C19875E041F12E6729A98E0DFF2EA9806D6C20AF801A5A3E19DAF918FC9AF230C8765DF"
|
|
|
|
|
"B5BE869DF7320011A80010A10E02562E04CD55351B14B3D748D36ED8E12107C9AC11A9D"
|
|
|
|
|
"39304821C47969729A43321A2077E79664AF73B13FC6C55B5B9B2000E174E94F7D9E9BB"
|
|
|
|
|
"B58A547A82FAAAF46182002280242340A202031C7ADB3C2F80975499E285CEE0AF8343A"
|
|
|
|
|
"F3DF50A49EEBCCEB3747C955FEFB12107E021073F71CF814A9CCAA7008B38CD81A80010"
|
|
|
|
|
"A100065901A64A25899A5193664ABF9AF621210874AB758C27A29677D62D2EE092905E2"
|
|
|
|
|
"1A207C4AD3CB7A80740215598D5E74883";
|
|
|
|
|
|
|
|
|
|
std::string kKeyRenewalRequest1 = "";
|
|
|
|
|
std::string kKeyRenewalRequest2 = "0801125E124A1A480A460A0939383736353433323"
|
|
|
|
|
"112080C1913B45E8893481A2B596E4B58753250316A5F53785073494E6B377459354E79"
|
|
|
|
|
"67396755464B6963455954335A34626738366C772001280018022A0C383231353639373"
|
|
|
|
|
"13400000030151A20789770161DD09DD5210E1A399DCA51C7741D2FC83488B731D22F4C"
|
|
|
|
|
"B01E74D240";
|
|
|
|
|
std::string kKeyRenewalRequest3 = "0801125E124A1A480A460A0939383736353433323"
|
|
|
|
|
"112086D03DC5FD3BB58031A2B596E4B58753250316A5F53785073494E6B377459354E79"
|
|
|
|
|
"67396755464B6963455954335A34626738366C772001280018022A0C313736393630363"
|
|
|
|
|
"23739000030151A209ABDAF1E996DFED08BF64B71356DAD8244BFAD335749206C2A1749"
|
|
|
|
|
"61CB15B9AD";
|
|
|
|
|
|
|
|
|
|
std::string kKeyRenewalResponse1 = "";
|
|
|
|
|
std::string kKeyRenewalResponse2 = "";
|
|
|
|
|
std::string kKeyRenewalResponse3 = "080212EC010A460A093938373635343332311208"
|
|
|
|
|
"6D03DC5FD3BB58031A2B596E4B58753250316A5F53785073494E6B377459354E7967396"
|
|
|
|
|
"755464B6963455954335A34626738366C77200128011283010801180120809A9E012880"
|
|
|
|
|
"9A9E0130AC02426C68747470733A2F2F6A6D7431372E676F6F676C652E636F6D2F76696"
|
|
|
|
|
"4656F2D6465762F6865617274626561742F63656E633F736F757263653D594F55545542"
|
|
|
|
|
"4526766964656F5F69643D45474843364F484E624F6F266F617574683D79612E6774737"
|
|
|
|
|
"1617769646576696E65483C503C1A16200342120A106B63746C0000012C697A0C870000"
|
|
|
|
|
"000820E3DDC78C051A20466E04142A0F410F5BA032BD8B0B77C800E9972C707E034E2ED"
|
|
|
|
|
"E83661C6C5386";
|
|
|
|
|
|
|
|
|
|
std::string kKeyReleaseServerUrl1 = "http://hamid.kir.corp.google.com:8888/drm";
|
|
|
|
|
std::string kKeyReleaseServerUrl2 = "https://www.youtube.com/api/drm/widevine?video_id=03681262dc412c06&source=YOUTUBE";
|
|
|
|
|
std::string kKeyReleaseServerUrl3 = "https://jmt17.google.com/video-dev/license/GetCencLicense";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST(DeviceFilesTest, StoreCertificate) {
|
|
|
|
|
std::string device_base_path =
|
|
|
|
|
DeviceFiles::GetBasePath(DeviceFiles::kBasePath);
|
|
|
|
|
@@ -93,4 +223,341 @@ TEST(DeviceFilesTest, RetrieveCertificate) {
|
|
|
|
|
EXPECT_TRUE(File::Remove(device_base_path));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST(DeviceFilesTest, StoreLicense) {
|
|
|
|
|
std::string device_base_path =
|
|
|
|
|
DeviceFiles::GetBasePath(DeviceFiles::kBasePath);
|
|
|
|
|
std::string license_path_1 = device_base_path + kKeySetId1 +
|
|
|
|
|
DeviceFiles::kLicenseFileNameExt;
|
|
|
|
|
|
|
|
|
|
if (!File::Exists(device_base_path))
|
|
|
|
|
EXPECT_TRUE(File::CreateDirectory(device_base_path));
|
|
|
|
|
if (File::Exists(license_path_1))
|
|
|
|
|
EXPECT_TRUE(File::Remove(license_path_1));
|
|
|
|
|
|
|
|
|
|
EXPECT_TRUE(DeviceFiles::StoreLicense(kKeySetId1,
|
|
|
|
|
DeviceFiles::kLicenseStateActive,
|
|
|
|
|
kPsshData1, kKeyRequest1,
|
|
|
|
|
kKeyResponse1, kKeyRenewalRequest1,
|
|
|
|
|
kKeyRenewalResponse1,
|
|
|
|
|
kKeyReleaseServerUrl1));
|
|
|
|
|
size_t size = sizeof(DeviceFiles::LicenseState) + kPsshData1.size() +
|
|
|
|
|
kKeyRequest1.size() + kKeyResponse1.size() +
|
|
|
|
|
kKeyRenewalRequest1.size() + kKeyRenewalResponse1.size() +
|
|
|
|
|
kKeyReleaseServerUrl1.size();
|
|
|
|
|
EXPECT_TRUE(File::Exists(license_path_1));
|
|
|
|
|
EXPECT_GT(File::FileSize(license_path_1), static_cast<ssize_t>(size));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST(DeviceFilesTest, StoreLicenseInitial) {
|
|
|
|
|
std::string device_base_path =
|
|
|
|
|
DeviceFiles::GetBasePath(DeviceFiles::kBasePath);
|
|
|
|
|
std::string license_path_1 = device_base_path + kKeySetId1 +
|
|
|
|
|
DeviceFiles::kLicenseFileNameExt;
|
|
|
|
|
|
|
|
|
|
if (!File::Exists(device_base_path))
|
|
|
|
|
EXPECT_TRUE(File::Remove(device_base_path));
|
|
|
|
|
|
|
|
|
|
EXPECT_TRUE(DeviceFiles::StoreLicense(kKeySetId1,
|
|
|
|
|
DeviceFiles::kLicenseStateActive,
|
|
|
|
|
kPsshData1, kKeyRequest1,
|
|
|
|
|
kKeyResponse1, kKeyRenewalRequest1,
|
|
|
|
|
kKeyRenewalResponse1,
|
|
|
|
|
kKeyReleaseServerUrl1));
|
|
|
|
|
size_t size = sizeof(DeviceFiles::LicenseState) + kPsshData1.size() +
|
|
|
|
|
kKeyRequest1.size() + kKeyResponse1.size() +
|
|
|
|
|
kKeyRenewalRequest1.size() + kKeyRenewalResponse1.size() +
|
|
|
|
|
kKeyReleaseServerUrl1.size();
|
|
|
|
|
EXPECT_TRUE(File::Exists(license_path_1));
|
|
|
|
|
EXPECT_GT(File::FileSize(license_path_1), static_cast<ssize_t>(size));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST(DeviceFilesTest, StoreLicenses) {
|
|
|
|
|
std::string device_base_path =
|
|
|
|
|
DeviceFiles::GetBasePath(DeviceFiles::kBasePath);
|
|
|
|
|
std::string license_path_1 = device_base_path + kKeySetId1 +
|
|
|
|
|
DeviceFiles::kLicenseFileNameExt;
|
|
|
|
|
std::string license_path_2 = device_base_path + kKeySetId2 +
|
|
|
|
|
DeviceFiles::kLicenseFileNameExt;
|
|
|
|
|
std::string license_path_3 = device_base_path + kKeySetId3 +
|
|
|
|
|
DeviceFiles::kLicenseFileNameExt;
|
|
|
|
|
|
|
|
|
|
if (!File::Exists(device_base_path))
|
|
|
|
|
EXPECT_TRUE(File::Remove(device_base_path));
|
|
|
|
|
|
|
|
|
|
EXPECT_TRUE(DeviceFiles::StoreLicense(kKeySetId1,
|
|
|
|
|
DeviceFiles::kLicenseStateActive,
|
|
|
|
|
kPsshData1, kKeyRequest1,
|
|
|
|
|
kKeyResponse1, kKeyRenewalRequest1,
|
|
|
|
|
kKeyRenewalResponse1,
|
|
|
|
|
kKeyReleaseServerUrl1));
|
|
|
|
|
size_t size = sizeof(DeviceFiles::LicenseState) + kPsshData1.size() +
|
|
|
|
|
kKeyRequest1.size() + kKeyResponse1.size() +
|
|
|
|
|
kKeyRenewalRequest1.size() + kKeyRenewalResponse1.size() +
|
|
|
|
|
kKeyReleaseServerUrl1.size();
|
|
|
|
|
EXPECT_TRUE(File::Exists(license_path_1));
|
|
|
|
|
EXPECT_GT(File::FileSize(license_path_1), static_cast<ssize_t>(size));
|
|
|
|
|
|
|
|
|
|
EXPECT_TRUE(DeviceFiles::StoreLicense(kKeySetId2,
|
|
|
|
|
DeviceFiles::kLicenseStateReleasing,
|
|
|
|
|
kPsshData2, kKeyRequest2,
|
|
|
|
|
kKeyResponse2, kKeyRenewalRequest2,
|
|
|
|
|
kKeyRenewalResponse2,
|
|
|
|
|
kKeyReleaseServerUrl2));
|
|
|
|
|
size = sizeof(DeviceFiles::LicenseState) + kPsshData2.size() +
|
|
|
|
|
kKeyRequest2.size() + kKeyResponse2.size() +
|
|
|
|
|
kKeyRenewalRequest2.size() + kKeyRenewalResponse2.size() +
|
|
|
|
|
kKeyReleaseServerUrl2.size();
|
|
|
|
|
EXPECT_TRUE(File::Exists(license_path_2));
|
|
|
|
|
EXPECT_GT(File::FileSize(license_path_2), static_cast<ssize_t>(size));
|
|
|
|
|
|
|
|
|
|
EXPECT_TRUE(DeviceFiles::StoreLicense(kKeySetId3,
|
|
|
|
|
DeviceFiles::kLicenseStateReleasing,
|
|
|
|
|
kPsshData3, kKeyRequest3,
|
|
|
|
|
kKeyResponse3, kKeyRenewalRequest3,
|
|
|
|
|
kKeyRenewalResponse3,
|
|
|
|
|
kKeyReleaseServerUrl3));
|
|
|
|
|
size = sizeof(DeviceFiles::LicenseState) + kPsshData3.size() +
|
|
|
|
|
kKeyRequest3.size() + kKeyResponse3.size() +
|
|
|
|
|
kKeyRenewalRequest3.size() + kKeyRenewalResponse3.size() +
|
|
|
|
|
kKeyReleaseServerUrl3.size();
|
|
|
|
|
EXPECT_TRUE(File::Exists(license_path_3));
|
|
|
|
|
EXPECT_GT(File::FileSize(license_path_3), static_cast<ssize_t>(size));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST(DeviceFilesTest, RetrieveLicenses) {
|
|
|
|
|
std::string device_base_path =
|
|
|
|
|
DeviceFiles::GetBasePath(DeviceFiles::kBasePath);
|
|
|
|
|
std::string license_path_1 = device_base_path + kKeySetId1 +
|
|
|
|
|
DeviceFiles::kLicenseFileNameExt;
|
|
|
|
|
std::string license_path_2 = device_base_path + kKeySetId2 +
|
|
|
|
|
DeviceFiles::kLicenseFileNameExt;
|
|
|
|
|
std::string license_path_3 = device_base_path + kKeySetId3 +
|
|
|
|
|
DeviceFiles::kLicenseFileNameExt;
|
|
|
|
|
|
|
|
|
|
if (!File::Exists(device_base_path))
|
|
|
|
|
EXPECT_TRUE(File::Remove(device_base_path));
|
|
|
|
|
|
|
|
|
|
EXPECT_TRUE(DeviceFiles::StoreLicense(kKeySetId1,
|
|
|
|
|
DeviceFiles::kLicenseStateActive,
|
|
|
|
|
kPsshData1, kKeyRequest1,
|
|
|
|
|
kKeyResponse1, kKeyRenewalRequest1,
|
|
|
|
|
kKeyRenewalResponse1,
|
|
|
|
|
kKeyReleaseServerUrl1));
|
|
|
|
|
size_t size = sizeof(DeviceFiles::LicenseState) + kPsshData1.size() +
|
|
|
|
|
kKeyRequest1.size() + kKeyResponse1.size() +
|
|
|
|
|
kKeyRenewalRequest1.size() + kKeyRenewalResponse1.size() +
|
|
|
|
|
kKeyReleaseServerUrl1.size();
|
|
|
|
|
EXPECT_TRUE(File::Exists(license_path_1));
|
|
|
|
|
EXPECT_GT(File::FileSize(license_path_1), static_cast<ssize_t>(size));
|
|
|
|
|
|
|
|
|
|
EXPECT_TRUE(DeviceFiles::StoreLicense(kKeySetId2,
|
|
|
|
|
DeviceFiles::kLicenseStateReleasing,
|
|
|
|
|
kPsshData2, kKeyRequest2,
|
|
|
|
|
kKeyResponse2, kKeyRenewalRequest2,
|
|
|
|
|
kKeyRenewalResponse2,
|
|
|
|
|
kKeyReleaseServerUrl2));
|
|
|
|
|
size = sizeof(DeviceFiles::LicenseState) + kPsshData2.size() +
|
|
|
|
|
kKeyRequest2.size() + kKeyResponse2.size() +
|
|
|
|
|
kKeyRenewalRequest2.size() + kKeyRenewalResponse2.size() +
|
|
|
|
|
kKeyReleaseServerUrl2.size();
|
|
|
|
|
EXPECT_TRUE(File::Exists(license_path_2));
|
|
|
|
|
EXPECT_GT(File::FileSize(license_path_2), static_cast<ssize_t>(size));
|
|
|
|
|
|
|
|
|
|
EXPECT_TRUE(DeviceFiles::StoreLicense(kKeySetId3,
|
|
|
|
|
DeviceFiles::kLicenseStateReleasing,
|
|
|
|
|
kPsshData3, kKeyRequest3,
|
|
|
|
|
kKeyResponse3, kKeyRenewalRequest3,
|
|
|
|
|
kKeyRenewalResponse3,
|
|
|
|
|
kKeyReleaseServerUrl3));
|
|
|
|
|
size = sizeof(DeviceFiles::LicenseState) + kPsshData3.size() +
|
|
|
|
|
kKeyRequest3.size() + kKeyResponse3.size() +
|
|
|
|
|
kKeyRenewalRequest3.size() + kKeyRenewalResponse3.size() +
|
|
|
|
|
kKeyReleaseServerUrl3.size();
|
|
|
|
|
EXPECT_TRUE(File::Exists(license_path_3));
|
|
|
|
|
EXPECT_GT(File::FileSize(license_path_3), static_cast<ssize_t>(size));
|
|
|
|
|
|
|
|
|
|
DeviceFiles::LicenseState state;
|
|
|
|
|
std::string pssh_data, key_request, key_response, key_renewal_request,
|
|
|
|
|
key_renewal_response, release_server_url;
|
|
|
|
|
|
|
|
|
|
EXPECT_TRUE(DeviceFiles::RetrieveLicense(kKeySetId1, &state, &pssh_data,
|
|
|
|
|
&key_request, &key_response,
|
|
|
|
|
&key_renewal_request,
|
|
|
|
|
&key_renewal_response,
|
|
|
|
|
&release_server_url));
|
|
|
|
|
EXPECT_TRUE(state == DeviceFiles::kLicenseStateActive);
|
|
|
|
|
EXPECT_TRUE(memcmp(pssh_data.data(), kPsshData1.data(), pssh_data.size())
|
|
|
|
|
== 0);
|
|
|
|
|
EXPECT_TRUE(memcmp(key_request.data(), kKeyRequest1.data(),
|
|
|
|
|
key_request.size()) == 0);
|
|
|
|
|
EXPECT_TRUE(memcmp(key_response.data(), kKeyResponse1.data(),
|
|
|
|
|
key_response.size()) == 0);
|
|
|
|
|
EXPECT_TRUE(memcmp(key_renewal_request.data(), kKeyRenewalRequest1.data(),
|
|
|
|
|
key_renewal_request.size()) == 0);
|
|
|
|
|
EXPECT_TRUE(memcmp(key_renewal_response.data(), kKeyRenewalResponse1.data(),
|
|
|
|
|
key_renewal_response.size()) == 0);
|
|
|
|
|
|
|
|
|
|
EXPECT_TRUE(DeviceFiles::RetrieveLicense(kKeySetId2, &state, &pssh_data,
|
|
|
|
|
&key_request, &key_response,
|
|
|
|
|
&key_renewal_request,
|
|
|
|
|
&key_renewal_response,
|
|
|
|
|
&release_server_url));
|
|
|
|
|
EXPECT_TRUE(state == DeviceFiles::kLicenseStateReleasing);
|
|
|
|
|
EXPECT_TRUE(memcmp(pssh_data.data(), kPsshData2.data(), pssh_data.size())
|
|
|
|
|
== 0);
|
|
|
|
|
EXPECT_TRUE(memcmp(key_request.data(), kKeyRequest2.data(),
|
|
|
|
|
key_request.size()) == 0);
|
|
|
|
|
EXPECT_TRUE(memcmp(key_response.data(), kKeyResponse2.data(),
|
|
|
|
|
key_response.size()) == 0);
|
|
|
|
|
EXPECT_TRUE(memcmp(key_renewal_request.data(), kKeyRenewalRequest2.data(),
|
|
|
|
|
key_renewal_request.size()) == 0);
|
|
|
|
|
EXPECT_TRUE(memcmp(key_renewal_response.data(), kKeyRenewalResponse2.data(),
|
|
|
|
|
key_renewal_response.size()) == 0);
|
|
|
|
|
|
|
|
|
|
EXPECT_TRUE(DeviceFiles::RetrieveLicense(kKeySetId3, &state, &pssh_data,
|
|
|
|
|
&key_request, &key_response,
|
|
|
|
|
&key_renewal_request,
|
|
|
|
|
&key_renewal_response,
|
|
|
|
|
&release_server_url));
|
|
|
|
|
EXPECT_TRUE(state == DeviceFiles::kLicenseStateReleasing);
|
|
|
|
|
EXPECT_TRUE(memcmp(pssh_data.data(), kPsshData3.data(), pssh_data.size())
|
|
|
|
|
== 0);
|
|
|
|
|
EXPECT_TRUE(memcmp(key_request.data(), kKeyRequest3.data(),
|
|
|
|
|
key_request.size()) == 0);
|
|
|
|
|
EXPECT_TRUE(memcmp(key_response.data(), kKeyResponse3.data(),
|
|
|
|
|
key_response.size()) == 0);
|
|
|
|
|
EXPECT_TRUE(memcmp(key_renewal_request.data(), kKeyRenewalRequest3.data(),
|
|
|
|
|
key_renewal_request.size()) == 0);
|
|
|
|
|
EXPECT_TRUE(memcmp(key_renewal_response.data(), kKeyRenewalResponse3.data(),
|
|
|
|
|
key_renewal_response.size()) == 0);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST(DeviceFilesTest, UpdateLicenseState) {
|
|
|
|
|
std::string device_base_path =
|
|
|
|
|
DeviceFiles::GetBasePath(DeviceFiles::kBasePath);
|
|
|
|
|
std::string license_path_1 = device_base_path + kKeySetId1 +
|
|
|
|
|
DeviceFiles::kLicenseFileNameExt;
|
|
|
|
|
|
|
|
|
|
if (!File::Exists(device_base_path))
|
|
|
|
|
EXPECT_TRUE(File::Remove(device_base_path));
|
|
|
|
|
|
|
|
|
|
EXPECT_TRUE(DeviceFiles::StoreLicense(kKeySetId1,
|
|
|
|
|
DeviceFiles::kLicenseStateActive,
|
|
|
|
|
kPsshData1, kKeyRequest1,
|
|
|
|
|
kKeyResponse1, kKeyRenewalRequest1,
|
|
|
|
|
kKeyRenewalResponse1,
|
|
|
|
|
kKeyReleaseServerUrl1));
|
|
|
|
|
size_t size = sizeof(DeviceFiles::LicenseState) + kPsshData1.size() +
|
|
|
|
|
kKeyRequest1.size() + kKeyResponse1.size() +
|
|
|
|
|
kKeyRenewalRequest1.size() + kKeyRenewalResponse1.size() +
|
|
|
|
|
kKeyReleaseServerUrl1.size();
|
|
|
|
|
EXPECT_TRUE(File::Exists(license_path_1));
|
|
|
|
|
EXPECT_GT(File::FileSize(license_path_1), static_cast<ssize_t>(size));
|
|
|
|
|
|
|
|
|
|
DeviceFiles::LicenseState state;
|
|
|
|
|
std::string pssh_data, key_request, key_response, key_renewal_request,
|
|
|
|
|
key_renewal_response, release_server_url;
|
|
|
|
|
|
|
|
|
|
EXPECT_TRUE(DeviceFiles::RetrieveLicense(kKeySetId1, &state, &pssh_data,
|
|
|
|
|
&key_request, &key_response,
|
|
|
|
|
&key_renewal_request,
|
|
|
|
|
&key_renewal_response,
|
|
|
|
|
&release_server_url));
|
|
|
|
|
EXPECT_TRUE(state == DeviceFiles::kLicenseStateActive);
|
|
|
|
|
EXPECT_TRUE(memcmp(pssh_data.data(), kPsshData1.data(), pssh_data.size())
|
|
|
|
|
== 0);
|
|
|
|
|
EXPECT_TRUE(memcmp(key_request.data(), kKeyRequest1.data(),
|
|
|
|
|
key_request.size()) == 0);
|
|
|
|
|
EXPECT_TRUE(memcmp(key_response.data(), kKeyResponse1.data(),
|
|
|
|
|
key_response.size()) == 0);
|
|
|
|
|
EXPECT_TRUE(memcmp(key_renewal_request.data(), kKeyRenewalRequest1.data(),
|
|
|
|
|
key_renewal_request.size()) == 0);
|
|
|
|
|
EXPECT_TRUE(memcmp(key_renewal_response.data(), kKeyRenewalResponse1.data(),
|
|
|
|
|
key_renewal_response.size()) == 0);
|
|
|
|
|
|
|
|
|
|
EXPECT_TRUE(DeviceFiles::StoreLicense(kKeySetId1,
|
|
|
|
|
DeviceFiles::kLicenseStateReleasing,
|
|
|
|
|
kPsshData1, kKeyRequest1,
|
|
|
|
|
kKeyResponse1, kKeyRenewalRequest1,
|
|
|
|
|
kKeyRenewalResponse1,
|
|
|
|
|
kKeyReleaseServerUrl1));
|
|
|
|
|
size = sizeof(DeviceFiles::LicenseState) + kPsshData1.size() +
|
|
|
|
|
kKeyRequest1.size() + kKeyResponse1.size() +
|
|
|
|
|
kKeyRenewalRequest1.size() + kKeyRenewalResponse1.size() +
|
|
|
|
|
kKeyReleaseServerUrl1.size();
|
|
|
|
|
EXPECT_TRUE(File::Exists(license_path_1));
|
|
|
|
|
EXPECT_GT(File::FileSize(license_path_1), static_cast<ssize_t>(size));
|
|
|
|
|
|
|
|
|
|
EXPECT_TRUE(DeviceFiles::RetrieveLicense(kKeySetId1, &state, &pssh_data,
|
|
|
|
|
&key_request, &key_response,
|
|
|
|
|
&key_renewal_request,
|
|
|
|
|
&key_renewal_response,
|
|
|
|
|
&release_server_url));
|
|
|
|
|
EXPECT_TRUE(state == DeviceFiles::kLicenseStateReleasing);
|
|
|
|
|
EXPECT_TRUE(memcmp(pssh_data.data(), kPsshData1.data(), pssh_data.size())
|
|
|
|
|
== 0);
|
|
|
|
|
EXPECT_TRUE(memcmp(key_request.data(), kKeyRequest1.data(),
|
|
|
|
|
key_request.size()) == 0);
|
|
|
|
|
EXPECT_TRUE(memcmp(key_response.data(), kKeyResponse1.data(),
|
|
|
|
|
key_response.size()) == 0);
|
|
|
|
|
EXPECT_TRUE(memcmp(key_renewal_request.data(), kKeyRenewalRequest1.data(),
|
|
|
|
|
key_renewal_request.size()) == 0);
|
|
|
|
|
EXPECT_TRUE(memcmp(key_renewal_response.data(), kKeyRenewalResponse1.data(),
|
|
|
|
|
key_renewal_response.size()) == 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST(DeviceFilesTest, DeleteLicense) {
|
|
|
|
|
std::string device_base_path =
|
|
|
|
|
DeviceFiles::GetBasePath(DeviceFiles::kBasePath);
|
|
|
|
|
std::string license_path_1 = device_base_path + kKeySetId1 +
|
|
|
|
|
DeviceFiles::kLicenseFileNameExt;
|
|
|
|
|
|
|
|
|
|
if (!File::Exists(device_base_path))
|
|
|
|
|
EXPECT_TRUE(File::Remove(device_base_path));
|
|
|
|
|
|
|
|
|
|
EXPECT_TRUE(DeviceFiles::StoreLicense(kKeySetId1,
|
|
|
|
|
DeviceFiles::kLicenseStateActive,
|
|
|
|
|
kPsshData1, kKeyRequest1,
|
|
|
|
|
kKeyResponse1, kKeyRenewalRequest1,
|
|
|
|
|
kKeyRenewalResponse1,
|
|
|
|
|
kKeyReleaseServerUrl1));
|
|
|
|
|
size_t size = sizeof(DeviceFiles::LicenseState) + kPsshData1.size() +
|
|
|
|
|
kKeyRequest1.size() + kKeyResponse1.size() +
|
|
|
|
|
kKeyRenewalRequest1.size() + kKeyRenewalResponse1.size() +
|
|
|
|
|
kKeyReleaseServerUrl1.size();
|
|
|
|
|
EXPECT_TRUE(File::Exists(license_path_1));
|
|
|
|
|
EXPECT_GT(File::FileSize(license_path_1), static_cast<ssize_t>(size));
|
|
|
|
|
|
|
|
|
|
DeviceFiles::LicenseState state;
|
|
|
|
|
std::string pssh_data, key_request, key_response, key_renewal_request,
|
|
|
|
|
key_renewal_response, release_server_url;
|
|
|
|
|
|
|
|
|
|
EXPECT_TRUE(DeviceFiles::RetrieveLicense(kKeySetId1, &state, &pssh_data,
|
|
|
|
|
&key_request, &key_response,
|
|
|
|
|
&key_renewal_request,
|
|
|
|
|
&key_renewal_response,
|
|
|
|
|
&release_server_url));
|
|
|
|
|
EXPECT_TRUE(state == DeviceFiles::kLicenseStateActive);
|
|
|
|
|
EXPECT_TRUE(memcmp(pssh_data.data(), kPsshData1.data(), pssh_data.size())
|
|
|
|
|
== 0);
|
|
|
|
|
EXPECT_TRUE(memcmp(key_request.data(), kKeyRequest1.data(),
|
|
|
|
|
key_request.size()) == 0);
|
|
|
|
|
EXPECT_TRUE(memcmp(key_response.data(), kKeyResponse1.data(),
|
|
|
|
|
key_response.size()) == 0);
|
|
|
|
|
EXPECT_TRUE(memcmp(key_renewal_request.data(), kKeyRenewalRequest1.data(),
|
|
|
|
|
key_renewal_request.size()) == 0);
|
|
|
|
|
EXPECT_TRUE(memcmp(key_renewal_response.data(), kKeyRenewalResponse1.data(),
|
|
|
|
|
key_renewal_response.size()) == 0);
|
|
|
|
|
|
|
|
|
|
EXPECT_TRUE(DeviceFiles::DeleteLicense(kKeySetId1));
|
|
|
|
|
|
|
|
|
|
EXPECT_FALSE(DeviceFiles::RetrieveLicense(kKeySetId1, &state, &pssh_data,
|
|
|
|
|
&key_request, &key_response,
|
|
|
|
|
&key_renewal_request,
|
|
|
|
|
&key_renewal_response,
|
|
|
|
|
&release_server_url));
|
|
|
|
|
EXPECT_TRUE(File::Remove(device_base_path));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|