3257 lines
185 KiB
C++
3257 lines
185 KiB
C++
// Copyright 2018 Google LLC. All Rights Reserved. This file and proprietary
|
|
// source code may only be used and distributed under the Widevine Master
|
|
// License Agreement.
|
|
|
|
#include <gmock/gmock.h>
|
|
#include <gtest/gtest.h>
|
|
#include <memory>
|
|
#include <string>
|
|
|
|
#include "device_files.h"
|
|
#include "file_store.h"
|
|
#include "properties.h"
|
|
#include "string_conversions.h"
|
|
#include "wv_cdm_constants.h"
|
|
#include "wv_cdm_types.h"
|
|
|
|
namespace wvcdm {
|
|
|
|
namespace {
|
|
|
|
const uint32_t kCertificateLen = 700;
|
|
const uint32_t kWrappedKeyLen = 500;
|
|
|
|
const uint32_t kProtobufEstimatedOverhead = 200;
|
|
|
|
const std::string kEmptyString;
|
|
|
|
// Structurally valid test certificate.
|
|
// The data elements in this module are used to test the storage and
|
|
// retrieval of certificates and licenses
|
|
const std::string kTestCertificate =
|
|
"124B035F3D256A656F0E505A085E7A6C482B61035E0C4A540F7803137F4C3B45206B7F33"
|
|
"347F4D7A005E56400F0955011F4E07072D0D46781817460974326A516E3944385760280E"
|
|
"4F166B380F033D045231201E6146041C3A6F01345C59300D32592732192C0F2310586306"
|
|
"7B31467B1477010D6F1D1944272509572A26217E1E6F7B666F46153E7749106E48760468"
|
|
"19467E164A731773155B3236537D5128682014174D125063380E48356A370B5015416A7F"
|
|
"672F132E37364E154B41540F440E47092775531508495F1E55576F363C0C190C3A332179"
|
|
"415B343905563E37645E68007053315A1A20286E7C3B4320424A5F7F36635558686C3565"
|
|
"762122237D344A411C0F00342135776753461D105C21111E5024434E5E0F275D12061658"
|
|
"4435410F210E5228532D214F505D0F0B3C34032C7C597F6159665E664C682C5A6C03212E"
|
|
"71333C3A642D796A65642E151827086E2D671C130B172C43192C792D294440630163526D"
|
|
"0658537A073E0F32231E7426593230692A4468386D3511542F1A6F71440128466E510445"
|
|
"294F4465113D1B1A711D4D67691363093B680854322B041C2F72524A513E5F0E407C6233"
|
|
"1728520E6C0C09107C26737B78287231661952283619647A6241391940297D2067036D44"
|
|
"3C64766918236C51175A636F000A2E5A4C5B725D5500652B1C39283037723F0255092976"
|
|
"6F2D204F0E616F1233206B75661B0F755E1E3807491079663A191C0B2D5E363B3768663A"
|
|
"4E222A1D32015D3D783E5148313F05713B140347231C59243648313C23770F554E012715"
|
|
"3350597775274A580306202E65265957291F490F642A2E7C6700716400617C7E6A303266"
|
|
"523B102906195E003C2D111A7D4740122C6941003726602B59263B5C09473D4E025E3541"
|
|
"701B122D340A3D145436137002687E4C470D2F6F4C357A3245384D737B734E2274301179"
|
|
"402473486311156E5A0C78644C593273";
|
|
|
|
// A Wrapped Private Key
|
|
// The data elements in this module are used to test the storage and
|
|
// retrieval of certificates and licenses
|
|
const std::string kTestWrappedPrivateKey =
|
|
"4F724B065326371A2F5F6F51467C2E26555C453B5C7C1B4F2738454B782E3E7B5340435A"
|
|
"66374D0612052C521A233D7A67194871751C78575E5177070130264C4F037633320E667B"
|
|
"1A49192924491338693D106E6113014A733A241A1A033E28352178146B4F543D38104A59"
|
|
"19120325502C31365506096D59585E08774B5B567A7B5D03451E6B11633E52672C226103"
|
|
"104B3E4C031A6403050F3A574D2C501711773802741F7F3A0D364757101D02181C7D4D35"
|
|
"207167506A424C094E4A72316F791F162D76657D2B5D3C2D7B273A286927717561316518"
|
|
"7E55282430491467086425432347701C3116446D21645C756B2D3D0F797C3220322D622A"
|
|
"254D0B7D4F1D5D0C0A36755D1246741A34783C45157247091C78232B7D2E0E1F637A2A37"
|
|
"39085D76166747034350613969072F5B5C5B21657E470C7E513B3F091D74455A3A073705"
|
|
"7B7E3B5337191D4E7536087C334B6028530F3F5B23380B6A076031294501003D6D1F240F"
|
|
"63053D5D0B271B6A0F26185650731308660B0447566041684F584C22216E567D3B775569"
|
|
"5F7F3D6B64525E7227165948101540243C19495C4C702F37490F26613353797825624143"
|
|
"263043020E1E6760123D51056F2F1E482F2E3D021B27677D3E7E3C0C11757C3448275E08"
|
|
"382E111263644C6D224714706D760A054A586E17505C3429575A41043F184209";
|
|
|
|
// The test certificate in file storage format.
|
|
// The data elements in this module are used to test the storage and
|
|
// retrieval of certificates and licenses
|
|
const std::string kTestCertificateFileData =
|
|
"0ABD09080110011AB6090ABC05124B035F3D256A656F0E505A085E7A6C482B61035E0C4A"
|
|
"540F7803137F4C3B45206B7F33347F4D7A005E56400F0955011F4E07072D0D4678181746"
|
|
"0974326A516E3944385760280E4F166B380F033D045231201E6146041C3A6F01345C5930"
|
|
"0D32592732192C0F23105863067B31467B1477010D6F1D1944272509572A26217E1E6F7B"
|
|
"666F46153E7749106E4876046819467E164A731773155B3236537D5128682014174D1250"
|
|
"63380E48356A370B5015416A7F672F132E37364E154B41540F440E47092775531508495F"
|
|
"1E55576F363C0C190C3A332179415B343905563E37645E68007053315A1A20286E7C3B43"
|
|
"20424A5F7F36635558686C3565762122237D344A411C0F00342135776753461D105C2111"
|
|
"1E5024434E5E0F275D120616584435410F210E5228532D214F505D0F0B3C34032C7C597F"
|
|
"6159665E664C682C5A6C03212E71333C3A642D796A65642E151827086E2D671C130B172C"
|
|
"43192C792D294440630163526D0658537A073E0F32231E7426593230692A4468386D3511"
|
|
"542F1A6F71440128466E510445294F4465113D1B1A711D4D67691363093B680854322B04"
|
|
"1C2F72524A513E5F0E407C62331728520E6C0C09107C26737B7828723166195228361964"
|
|
"7A6241391940297D2067036D443C64766918236C51175A636F000A2E5A4C5B725D550065"
|
|
"2B1C39283037723F02550929766F2D204F0E616F1233206B75661B0F755E1E3807491079"
|
|
"663A191C0B2D5E363B3768663A4E222A1D32015D3D783E5148313F05713B140347231C59"
|
|
"243648313C23770F554E0127153350597775274A580306202E65265957291F490F642A2E"
|
|
"7C6700716400617C7E6A303266523B102906195E003C2D111A7D4740122C694100372660"
|
|
"2B59263B5C09473D4E025E3541701B122D340A3D145436137002687E4C470D2F6F4C357A"
|
|
"3245384D737B734E2274301179402473486311156E5A0C78644C59327312F4034F724B06"
|
|
"5326371A2F5F6F51467C2E26555C453B5C7C1B4F2738454B782E3E7B5340435A66374D06"
|
|
"12052C521A233D7A67194871751C78575E5177070130264C4F037633320E667B1A491929"
|
|
"24491338693D106E6113014A733A241A1A033E28352178146B4F543D38104A5919120325"
|
|
"502C31365506096D59585E08774B5B567A7B5D03451E6B11633E52672C226103104B3E4C"
|
|
"031A6403050F3A574D2C501711773802741F7F3A0D364757101D02181C7D4D3520716750"
|
|
"6A424C094E4A72316F791F162D76657D2B5D3C2D7B273A2869277175613165187E552824"
|
|
"30491467086425432347701C3116446D21645C756B2D3D0F797C3220322D622A254D0B7D"
|
|
"4F1D5D0C0A36755D1246741A34783C45157247091C78232B7D2E0E1F637A2A3739085D76"
|
|
"166747034350613969072F5B5C5B21657E470C7E513B3F091D74455A3A0737057B7E3B53"
|
|
"37191D4E7536087C334B6028530F3F5B23380B6A076031294501003D6D1F240F63053D5D"
|
|
"0B271B6A0F26185650731308660B0447566041684F584C22216E567D3B7755695F7F3D6B"
|
|
"64525E7227165948101540243C19495C4C702F37490F2661335379782562414326304302"
|
|
"0E1E6760123D51056F2F1E482F2E3D021B27677D3E7E3C0C11757C3448275E08382E1112"
|
|
"63644C6D224714706D760A054A586E17505C3429575A41043F1842091220F8D0A23D4B1B"
|
|
"C7B23A38B921BC1EA8938D1FD22FF9A389B58DA856A3E2625F27";
|
|
|
|
struct LicenseInfo {
|
|
std::string key_set_id;
|
|
DeviceFiles::LicenseState license_state;
|
|
std::string pssh_data;
|
|
std::string key_request;
|
|
std::string key_response;
|
|
std::string key_renewal_request;
|
|
std::string key_renewal_response;
|
|
std::string key_release_url;
|
|
int64_t playback_start_time;
|
|
int64_t last_playback_time;
|
|
int64_t grace_period_end_time;
|
|
std::string app_parameters;
|
|
std::string usage_entry;
|
|
uint32_t usage_entry_number;
|
|
std::string file_data;
|
|
};
|
|
|
|
size_t kNumberOfLicenses = 3;
|
|
|
|
// Sample license data and related data for storage and use for offline
|
|
// playback. The license data and URLs in this test are not real. Test
|
|
// storage and retrieval of license-related data.
|
|
LicenseInfo license_test_data[] = {
|
|
|
|
// license 0
|
|
{"ksid54C57C966E23CEF5", DeviceFiles::kLicenseStateActive,
|
|
a2bs_hex("0801121030313233343536373839414243444546"),
|
|
a2bs_hex(
|
|
"080112950C0AD70B080112EF090AB002080212103E560EC5335E346F591B"
|
|
"C4D07A7D507618A5D3A68F05228E023082010A0282010100A947904B8DBD"
|
|
"55FB685FDB3025574517CCCC74EE4FEAF6629D5179A52FF85CE7409528EF"
|
|
"FA0E5DFC3DE9A34BA5F08BE349553C319A9FB274905A8770ADC9CA4A2CBC"
|
|
"D8E556A1587FA18BFD4D286C644A6904F19EAAFBDFADD3B371B306D0B289"
|
|
"F459B491C814B5AD1F747610E990A60248A7DA5152F1CCFC047EF4230013"
|
|
"1F9C4758F4D9F30579393B860AAD9AD2EE43D721D6DB9F5800EF188386B9"
|
|
"4825AE05A883AC976D6970DF43EA6C83B86CE6D0F540207725B9890FCCEC"
|
|
"83A49027872DAFD2740B7748E9C3B1752D6F12859CED07E8882969B433EC"
|
|
"66F17FFC29AC6FDBEA79230B0FAED5D94CF6B829A420BBE3270323941776"
|
|
"EE60DD6BFD660BDDCA870203010001288001300112800250D1F8B1ECF849"
|
|
"B60FF93E37C4DEEF09E6FFB10BCFC996A4A24B7AA96928835ED5A72E1584"
|
|
"6D0A14015733239BD8B6E6D5E5D229B08394CE1E0692C159C44337CA7CAF"
|
|
"88476449B068D9D2FADED8EB1BC0F4B8F0FCAF293E8690E7403209534180"
|
|
"3408A0E8279E545945EE97838FDE7812F7171C3CC4F5ECF9418BBF1D336C"
|
|
"E58F4CBB1B44D4ADE6BF3364BAE7EC093281846E569E13E7719014030A60"
|
|
"59044FE7BBFF3E8F5723AEDD54DC6E0D041B309D7700B55575690E95CE60"
|
|
"85D0914F991C5F45E98CBB9C45BA33F47FD0862EBCC7EEBA8E60643C86E8"
|
|
"5476B18AEF8DE871571A75681A75F75028A5B58751C09A5296AAE99CEDCD"
|
|
"9785E9E2103240D40A1AB6050AB002080112102CE5CCF42200D6B5BCCF33"
|
|
"D7CC2D9C7018EAD1B88D05228E023082010A0282010100BE1B661EEC4700"
|
|
"DF4B0C83292D02AE029B8A224DD3048125049F74E30E1257FC2BE8D9CFAF"
|
|
"0BFFCACAF7305351771C78FA451F13AF5EEBFB360941A4396A805833730D"
|
|
"C6E534C62408B7C5076FC22568021C59ED34F98487196DA32078DAFCA37C"
|
|
"7CFB8E79612FA384963DF2167D5E87305D7BC92D621C10160672C27B9A69"
|
|
"1B1534F60D78C5893E40C5FF8A3F9DF8898612E9A5CCB56F4A0CC2A61A7A"
|
|
"EB04A9DCC015D9BC37DEF2AB9EAA9AAFD838869081D9249755F129BB0DBE"
|
|
"CA3B894975A65A36FD005CE77CD407E925D3172E33122A11D327968A08F8"
|
|
"E771FAEB2540EB52D17C4906405F47C31F60F0AF6C78AF53291B236E692B"
|
|
"506A2AF92AF43E3A81020301000128800130011280033A08A60418E5C81B"
|
|
"8D71A5C0A28C26999FF4FA992E14107CA8A9E6A2B36259834000FE35DCD8"
|
|
"14426F9C5D332418ED94C9C0C992217B1B6DC01C99085A3C3956C8267B87"
|
|
"73BABCF3F2C841C67D830F9DBC780DD68BF4E2FE424C6A54123BE4B2A1F7"
|
|
"E1F4DB58AB1164DAE9CF75C3392284A44B8CDB85D837E86C6B908243987E"
|
|
"552C8693878C9A1B7BEA3759783036F1595C406D6CBBA7F8642A9B3B244D"
|
|
"AA1F00531D0B908ADE4B533FD9FAFA21D0FB0C033D2AD5DDF24C60F4FAC3"
|
|
"0820758877F2E1A78EB44E9336DCFAFDF572BB22A84A5DEFDF2EB87B61DE"
|
|
"26EE9C4CEAA646A2AFDB2BB953845E6D7FE6F79A9501D1C379C96961316B"
|
|
"5D2A66F38C222091AF74141B6CAF93507485A5D8F82808025451824F00C8"
|
|
"B6A0CD5803F6564584138C8B18BC679B442D837307B5CC90B1FD1FD32288"
|
|
"B4A5D18D2D80E5E6A7A9EFD255B8B363038BCC67AF534EAEE4A5903E304E"
|
|
"ED4990BB5BE735DB027A6DE35329D321EC051B956C55A5B11674017517FC"
|
|
"C3C7FF7397C13A7B7087A1F6AEC7F6761A130A0C636F6D70616E795F6E61"
|
|
"6D6512034C47451A150A0A6D6F64656C5F6E616D6512074E657875732034"
|
|
"1A200A116172636869746563747572655F6E616D65120B61726D65616269"
|
|
"2D7637611A130A0B6465766963655F6E616D6512046D616B6F1A150A0C70"
|
|
"726F647563745F6E616D6512056F6363616D1A440A0A6275696C645F696E"
|
|
"666F1236676F6F676C652F6F6363616D2F6D616B6F3A342E332F4A425F4D"
|
|
"52322F3731343239313A7573657264656275672F6465762D6B6579731A21"
|
|
"0A096465766963655F696412144C474D4332303132313030353030363339"
|
|
"32373812250A230A14080112103031323334353637383941424344454610"
|
|
"021A09393837363534333231180120002A0C333934303739343733370000"
|
|
"30151A8002734FBDED946EB74A1B61811C4C4A491214F6BEA125A80F0141"
|
|
"65B28AA97AD0AF60E4D129EB7F424AD659F24E5EED4B702BEE328E38B72C"
|
|
"A6F38CD0ECFD2E6D7B98147744C9B8A9610B3BDFE17675FF7D584C5BF680"
|
|
"64B0FE513FC322C9148795E4C2F2443C3024F5C1F29E6FEFB6D77005DAB2"
|
|
"2CD2B63131908DE4D88795BB931CEA38452CC568BE25032245E372F07A12"
|
|
"97F51748C7EA02F2C88360AFE7ABBC71DCDD5366126258E5AFA27C2A20B3"
|
|
"39FA1E7AE925B494B361F6F7116F20BE8EE6E446146027F4FD4300F4A0B0"
|
|
"A3361EE34925F338D0AACF20AE919B4BAE81C1D57A8D2B8FA38732A57697"
|
|
"C316C180717C182A971C94E4AC4C7DF8F161CB8CC1"),
|
|
a2bs_hex(
|
|
"080212CC020A190A0939383736353433323112084B9F26DAB8B06E112002"
|
|
"2800124108011801301E4239687474703A2F2F6B69723033666370673137"
|
|
"342E7769646576696E652E6E65742F7769646576696E652F6367692D6269"
|
|
"6E2F64726D2E6367691A6612102531DFD6CCEA511D00F8C0172F1189AA1A"
|
|
"5057FF9D9DBD5A205B1DEB075E4A90467C1E074CDE6071BFF831AD590BD5"
|
|
"D117614F33CE2C3CE1824FC0D54B36ECEAE58DF5C8F9347C2FEED17A3327"
|
|
"E8F52B8ECA6313A1FA6A042EB9525DD328113C05F920011A7E0A10303132"
|
|
"3334353637383941424344454612106D23622142B58F6D1EDD33AF3ECD2C"
|
|
"7E1A20884EE13BEA9DECDDBF68B532131C82B11CEC4D23C7FA9F3EF4C5EE"
|
|
"172E7C9736200242340A2050BFE71BB1BA683E35E0B49BB33048E5103FBB"
|
|
"B9C3E1CD6EBCDA7DD485DBAF431210D69D6F14C95CB6CFDB998E50D00F4D"
|
|
"A020DBDFA68F051A20AE5D6895E70F86F42F5FE3C58A505A865D05AB94B1"
|
|
"ABAA6CC59C3322F61C458D228002331F2BE95B5C796E0921CC27A7295501"
|
|
"DA10044E5CA36C0E2866FF068EA3515A6786BD5D60D74D80C6BA8BE6AAD0"
|
|
"85AF967909A143171E9CDDE36EA528402867CD04FB6F97A150CDE55F9B81"
|
|
"9F4104BEF48E4280D76645569E10AEF524D34D865B5B9E3EBC66C45EEBBE"
|
|
"16AB04493E7AEC4F99E7A99F3FC08FA431BECCC1978A079FA4801DB75E13"
|
|
"29A9921604E6F80CB148AA2DD5C8348057E9F4FC2AEA57EA4D215D0A8D48"
|
|
"6294860DFB4F4C42D57D9542B76179E179DD4AA23F9F7B2AE432B39E4CE8"
|
|
"F156E84877DDA781AAAAFC797FF75AFE2019ADC3A2E419BF0253C705BD47"
|
|
"97A96866AC4C059AD8F2E9C6B617C60C6ADCDB894C25F0C7D29252F52FD5"),
|
|
a2bs_hex(
|
|
"08011231121D1A1B0A190A0939383736353433323112084B9F26DAB8B06E"
|
|
"112002280018022A0C31353532333030360000000030151A20C30375683C"
|
|
"4D2033E05DCC95DDFB278CFB5125A021C3C043A16ACC933A768A27"),
|
|
a2bs_hex(
|
|
"0802123B0A190A0939383736353433323112084B9F26DAB8B06E11200228"
|
|
"0112001A16200342120A106B63746C0000000000ECDCBE0000000020DBDF"
|
|
"A68F051A20182F029E35047A3841FA176C74E5B387350E8D58DEA6878FF0"
|
|
"BEA6CABACA1C2C"),
|
|
"https://test.google.com/license/GetCencLicense", 0x0, 0x0, 0x0, "", "", 0,
|
|
a2bs_hex(
|
|
"0AAE150802100122A7150801121408011210303132333435363738394142434445461"
|
|
"A9D0E080112950C0AD70B080112EF090AB002080212103E560EC5335E346F591BC4D0"
|
|
"7A7D507618A5D3A68F05228E023082010A0282010100A947904B8DBD55FB685FDB302"
|
|
"5574517CCCC74EE4FEAF6629D5179A52FF85CE7409528EFFA0E5DFC3DE9A34BA5F08B"
|
|
"E349553C319A9FB274905A8770ADC9CA4A2CBCD8E556A1587FA18BFD4D286C644A690"
|
|
"4F19EAAFBDFADD3B371B306D0B289F459B491C814B5AD1F747610E990A60248A7DA51"
|
|
"52F1CCFC047EF42300131F9C4758F4D9F30579393B860AAD9AD2EE43D721D6DB9F580"
|
|
"0EF188386B94825AE05A883AC976D6970DF43EA6C83B86CE6D0F540207725B9890FCC"
|
|
"EC83A49027872DAFD2740B7748E9C3B1752D6F12859CED07E8882969B433EC66F17FF"
|
|
"C29AC6FDBEA79230B0FAED5D94CF6B829A420BBE3270323941776EE60DD6BFD660BDD"
|
|
"CA870203010001288001300112800250D1F8B1ECF849B60FF93E37C4DEEF09E6FFB10"
|
|
"BCFC996A4A24B7AA96928835ED5A72E15846D0A14015733239BD8B6E6D5E5D229B083"
|
|
"94CE1E0692C159C44337CA7CAF88476449B068D9D2FADED8EB1BC0F4B8F0FCAF293E8"
|
|
"690E74032095341803408A0E8279E545945EE97838FDE7812F7171C3CC4F5ECF9418B"
|
|
"BF1D336CE58F4CBB1B44D4ADE6BF3364BAE7EC093281846E569E13E7719014030A605"
|
|
"9044FE7BBFF3E8F5723AEDD54DC6E0D041B309D7700B55575690E95CE6085D0914F99"
|
|
"1C5F45E98CBB9C45BA33F47FD0862EBCC7EEBA8E60643C86E85476B18AEF8DE871571"
|
|
"A75681A75F75028A5B58751C09A5296AAE99CEDCD9785E9E2103240D40A1AB6050AB0"
|
|
"02080112102CE5CCF42200D6B5BCCF33D7CC2D9C7018EAD1B88D05228E023082010A0"
|
|
"282010100BE1B661EEC4700DF4B0C83292D02AE029B8A224DD3048125049F74E30E12"
|
|
"57FC2BE8D9CFAF0BFFCACAF7305351771C78FA451F13AF5EEBFB360941A4396A80583"
|
|
"3730DC6E534C62408B7C5076FC22568021C59ED34F98487196DA32078DAFCA37C7CFB"
|
|
"8E79612FA384963DF2167D5E87305D7BC92D621C10160672C27B9A691B1534F60D78C"
|
|
"5893E40C5FF8A3F9DF8898612E9A5CCB56F4A0CC2A61A7AEB04A9DCC015D9BC37DEF2"
|
|
"AB9EAA9AAFD838869081D9249755F129BB0DBECA3B894975A65A36FD005CE77CD407E"
|
|
"925D3172E33122A11D327968A08F8E771FAEB2540EB52D17C4906405F47C31F60F0AF"
|
|
"6C78AF53291B236E692B506A2AF92AF43E3A81020301000128800130011280033A08A"
|
|
"60418E5C81B8D71A5C0A28C26999FF4FA992E14107CA8A9E6A2B36259834000FE35DC"
|
|
"D814426F9C5D332418ED94C9C0C992217B1B6DC01C99085A3C3956C8267B8773BABCF"
|
|
"3F2C841C67D830F9DBC780DD68BF4E2FE424C6A54123BE4B2A1F7E1F4DB58AB1164DA"
|
|
"E9CF75C3392284A44B8CDB85D837E86C6B908243987E552C8693878C9A1B7BEA37597"
|
|
"83036F1595C406D6CBBA7F8642A9B3B244DAA1F00531D0B908ADE4B533FD9FAFA21D0"
|
|
"FB0C033D2AD5DDF24C60F4FAC30820758877F2E1A78EB44E9336DCFAFDF572BB22A84"
|
|
"A5DEFDF2EB87B61DE26EE9C4CEAA646A2AFDB2BB953845E6D7FE6F79A9501D1C379C9"
|
|
"6961316B5D2A66F38C222091AF74141B6CAF93507485A5D8F82808025451824F00C8B"
|
|
"6A0CD5803F6564584138C8B18BC679B442D837307B5CC90B1FD1FD32288B4A5D18D2D"
|
|
"80E5E6A7A9EFD255B8B363038BCC67AF534EAEE4A5903E304EED4990BB5BE735DB027"
|
|
"A6DE35329D321EC051B956C55A5B11674017517FCC3C7FF7397C13A7B7087A1F6AEC7"
|
|
"F6761A130A0C636F6D70616E795F6E616D6512034C47451A150A0A6D6F64656C5F6E6"
|
|
"16D6512074E6578757320341A200A116172636869746563747572655F6E616D65120B"
|
|
"61726D656162692D7637611A130A0B6465766963655F6E616D6512046D616B6F1A150"
|
|
"A0C70726F647563745F6E616D6512056F6363616D1A440A0A6275696C645F696E666F"
|
|
"1236676F6F676C652F6F6363616D2F6D616B6F3A342E332F4A425F4D52322F3731343"
|
|
"239313A7573657264656275672F6465762D6B6579731A210A096465766963655F6964"
|
|
"12144C474D433230313231303035303036333932373812250A230A140801121030313"
|
|
"23334353637383941424344454610021A09393837363534333231180120002A0C3339"
|
|
"3430373934373337000030151A8002734FBDED946EB74A1B61811C4C4A491214F6BEA"
|
|
"125A80F014165B28AA97AD0AF60E4D129EB7F424AD659F24E5EED4B702BEE328E38B7"
|
|
"2CA6F38CD0ECFD2E6D7B98147744C9B8A9610B3BDFE17675FF7D584C5BF68064B0FE5"
|
|
"13FC322C9148795E4C2F2443C3024F5C1F29E6FEFB6D77005DAB22CD2B63131908DE4"
|
|
"D88795BB931CEA38452CC568BE25032245E372F07A1297F51748C7EA02F2C88360AFE"
|
|
"7ABBC71DCDD5366126258E5AFA27C2A20B339FA1E7AE925B494B361F6F7116F20BE8E"
|
|
"E6E446146027F4FD4300F4A0B0A3361EE34925F338D0AACF20AE919B4BAE81C1D57A8"
|
|
"D2B8FA38732A57697C316C180717C182A971C94E4AC4C7DF8F161CB8CC122F6040802"
|
|
"12CC020A190A0939383736353433323112084B9F26DAB8B06E1120022800124108011"
|
|
"801301E4239687474703A2F2F6B69723033666370673137342E7769646576696E652E"
|
|
"6E65742F7769646576696E652F6367692D62696E2F64726D2E6367691A6612102531D"
|
|
"FD6CCEA511D00F8C0172F1189AA1A5057FF9D9DBD5A205B1DEB075E4A90467C1E074C"
|
|
"DE6071BFF831AD590BD5D117614F33CE2C3CE1824FC0D54B36ECEAE58DF5C8F9347C2"
|
|
"FEED17A3327E8F52B8ECA6313A1FA6A042EB9525DD328113C05F920011A7E0A103031"
|
|
"323334353637383941424344454612106D23622142B58F6D1EDD33AF3ECD2C7E1A208"
|
|
"84EE13BEA9DECDDBF68B532131C82B11CEC4D23C7FA9F3EF4C5EE172E7C9736200242"
|
|
"340A2050BFE71BB1BA683E35E0B49BB33048E5103FBBB9C3E1CD6EBCDA7DD485DBAF4"
|
|
"31210D69D6F14C95CB6CFDB998E50D00F4DA020DBDFA68F051A20AE5D6895E70F86F4"
|
|
"2F5FE3C58A505A865D05AB94B1ABAA6CC59C3322F61C458D228002331F2BE95B5C796"
|
|
"E0921CC27A7295501DA10044E5CA36C0E2866FF068EA3515A6786BD5D60D74D80C6BA"
|
|
"8BE6AAD085AF967909A143171E9CDDE36EA528402867CD04FB6F97A150CDE55F9B819"
|
|
"F4104BEF48E4280D76645569E10AEF524D34D865B5B9E3EBC66C45EEBBE16AB04493E"
|
|
"7AEC4F99E7A99F3FC08FA431BECCC1978A079FA4801DB75E1329A9921604E6F80CB14"
|
|
"8AA2DD5C8348057E9F4FC2AEA57EA4D215D0A8D486294860DFB4F4C42D57D9542B761"
|
|
"79E179DD4AA23F9F7B2AE432B39E4CE8F156E84877DDA781AAAAFC797FF75AFE2019A"
|
|
"DC3A2E419BF0253C705BD4797A96866AC4C059AD8F2E9C6B617C60C6ADCDB894C25F0"
|
|
"C7D29252F52FD52A5708011231121D1A1B0A190A0939383736353433323112084B9F2"
|
|
"6DAB8B06E112002280018022A0C31353532333030360000000030151A20C30375683C"
|
|
"4D2033E05DCC95DDFB278CFB5125A021C3C043A16ACC933A768A2732610802123B0A1"
|
|
"90A0939383736353433323112084B9F26DAB8B06E112002280112001A16200342120A"
|
|
"106B63746C0000000000ECDCBE0000000020DBDFA68F051A20182F029E35047A3841F"
|
|
"A176C74E5B387350E8D58DEA6878FF0BEA6CABACA1C2C3A2E68747470733A2F2F7465"
|
|
"73742E676F6F676C652E636F6D2F6C6963656E73652F47657443656E634C6963656E7"
|
|
"365400048005800620068001220785CE1756656A049E77F28C8449AB2DD115B6C43B2"
|
|
"FF232D23F98B72F1DCE96A"
|
|
)},
|
|
|
|
// license 1
|
|
{"ksidC8EAA2579A282EB0", DeviceFiles::kLicenseStateReleasing,
|
|
a2bs_hex("0801121030313233343536373839414243444546"),
|
|
a2bs_hex(
|
|
"080112950C0AD70B080112EF090AB002080212103E560EC5335E346F591B"
|
|
"C4D07A7D507618A5D3A68F05228E023082010A0282010100A947904B8DBD"
|
|
"55FB685FDB3025574517CCCC74EE4FEAF6629D5179A52FF85CE7409528EF"
|
|
"FA0E5DFC3DE9A34BA5F08BE349553C319A9FB274905A8770ADC9CA4A2CBC"
|
|
"D8E556A1587FA18BFD4D286C644A6904F19EAAFBDFADD3B371B306D0B289"
|
|
"F459B491C814B5AD1F747610E990A60248A7DA5152F1CCFC047EF4230013"
|
|
"1F9C4758F4D9F30579393B860AAD9AD2EE43D721D6DB9F5800EF188386B9"
|
|
"4825AE05A883AC976D6970DF43EA6C83B86CE6D0F540207725B9890FCCEC"
|
|
"83A49027872DAFD2740B7748E9C3B1752D6F12859CED07E8882969B433EC"
|
|
"66F17FFC29AC6FDBEA79230B0FAED5D94CF6B829A420BBE3270323941776"
|
|
"EE60DD6BFD660BDDCA870203010001288001300112800250D1F8B1ECF849"
|
|
"B60FF93E37C4DEEF09E6FFB10BCFC996A4A24B7AA96928835ED5A72E1584"
|
|
"6D0A14015733239BD8B6E6D5E5D229B08394CE1E0692C159C44337CA7CAF"
|
|
"88476449B068D9D2FADED8EB1BC0F4B8F0FCAF293E8690E7403209534180"
|
|
"3408A0E8279E545945EE97838FDE7812F7171C3CC4F5ECF9418BBF1D336C"
|
|
"E58F4CBB1B44D4ADE6BF3364BAE7EC093281846E569E13E7719014030A60"
|
|
"59044FE7BBFF3E8F5723AEDD54DC6E0D041B309D7700B55575690E95CE60"
|
|
"85D0914F991C5F45E98CBB9C45BA33F47FD0862EBCC7EEBA8E60643C86E8"
|
|
"5476B18AEF8DE871571A75681A75F75028A5B58751C09A5296AAE99CEDCD"
|
|
"9785E9E2103240D40A1AB6050AB002080112102CE5CCF42200D6B5BCCF33"
|
|
"D7CC2D9C7018EAD1B88D05228E023082010A0282010100BE1B661EEC4700"
|
|
"DF4B0C83292D02AE029B8A224DD3048125049F74E30E1257FC2BE8D9CFAF"
|
|
"0BFFCACAF7305351771C78FA451F13AF5EEBFB360941A4396A805833730D"
|
|
"C6E534C62408B7C5076FC22568021C59ED34F98487196DA32078DAFCA37C"
|
|
"7CFB8E79612FA384963DF2167D5E87305D7BC92D621C10160672C27B9A69"
|
|
"1B1534F60D78C5893E40C5FF8A3F9DF8898612E9A5CCB56F4A0CC2A61A7A"
|
|
"EB04A9DCC015D9BC37DEF2AB9EAA9AAFD838869081D9249755F129BB0DBE"
|
|
"CA3B894975A65A36FD005CE77CD407E925D3172E33122A11D327968A08F8"
|
|
"E771FAEB2540EB52D17C4906405F47C31F60F0AF6C78AF53291B236E692B"
|
|
"506A2AF92AF43E3A81020301000128800130011280033A08A60418E5C81B"
|
|
"8D71A5C0A28C26999FF4FA992E14107CA8A9E6A2B36259834000FE35DCD8"
|
|
"14426F9C5D332418ED94C9C0C992217B1B6DC01C99085A3C3956C8267B87"
|
|
"73BABCF3F2C841C67D830F9DBC780DD68BF4E2FE424C6A54123BE4B2A1F7"
|
|
"E1F4DB58AB1164DAE9CF75C3392284A44B8CDB85D837E86C6B908243987E"
|
|
"552C8693878C9A1B7BEA3759783036F1595C406D6CBBA7F8642A9B3B244D"
|
|
"AA1F00531D0B908ADE4B533FD9FAFA21D0FB0C033D2AD5DDF24C60F4FAC3"
|
|
"0820758877F2E1A78EB44E9336DCFAFDF572BB22A84A5DEFDF2EB87B61DE"
|
|
"26EE9C4CEAA646A2AFDB2BB953845E6D7FE6F79A9501D1C379C96961316B"
|
|
"5D2A66F38C222091AF74141B6CAF93507485A5D8F82808025451824F00C8"
|
|
"B6A0CD5803F6564584138C8B18BC679B442D837307B5CC90B1FD1FD32288"
|
|
"B4A5D18D2D80E5E6A7A9EFD255B8B363038BCC67AF534EAEE4A5903E304E"
|
|
"ED4990BB5BE735DB027A6DE35329D321EC051B956C55A5B11674017517FC"
|
|
"C3C7FF7397C13A7B7087A1F6AEC7F6761A130A0C636F6D70616E795F6E61"
|
|
"6D6512034C47451A150A0A6D6F64656C5F6E616D6512074E657875732034"
|
|
"1A200A116172636869746563747572655F6E616D65120B61726D65616269"
|
|
"2D7637611A130A0B6465766963655F6E616D6512046D616B6F1A150A0C70"
|
|
"726F647563745F6E616D6512056F6363616D1A440A0A6275696C645F696E"
|
|
"666F1236676F6F676C652F6F6363616D2F6D616B6F3A342E332F4A425F4D"
|
|
"52322F3731343239313A7573657264656275672F6465762D6B6579731A21"
|
|
"0A096465766963655F696412144C474D4332303132313030353030363339"
|
|
"32373812250A230A14080112103031323334353637383941424344454610"
|
|
"021A09393837363534333231180120002A0C383837303136333500000000"
|
|
"30151A80023F7318E29C5A50C8ADAA4B09ADCD97B75588B17002C5C2BC9A"
|
|
"FA35C53098AF22DF5CC300407CD2E84EBE01911C785513649E2CCF4E4290"
|
|
"20D3B93F3A54748C11ECFF4D62F562A4D3E96812F663D4F761C00C3E88AB"
|
|
"D8A1DC10E017A44DD3E040775FED5F07649090D1142C9D21373CD604219E"
|
|
"24935E10F287F20B0E080FDF76B6096B24F82A3E37850DE229DE33EBCE7A"
|
|
"0FA53F652C33007EA7027F95A44C36D04CBD676EB5C0BF69508F45E0C322"
|
|
"0D1706B0B851B3FCAF7AC2370EAD80C5D1620887633A42024862FCEA9F95"
|
|
"A719AAB989C1923C6452ECB0B75AF1CAFBFB06C5EC31BBF0EE4D16ACCC9A"
|
|
"F05B77D61C4855491B3D4AC150F3BCB7AE536AF333"),
|
|
a2bs_hex(
|
|
"080212CC020A190A093938373635343332311208F97F2B3856CBB3DD2002"
|
|
"2800124108011801301E4239687474703A2F2F6B69723033666370673137"
|
|
"342E7769646576696E652E6E65742F7769646576696E652F6367692D6269"
|
|
"6E2F64726D2E6367691A661210C5C43FE0178AEE7B85042F749D5A40251A"
|
|
"5013A1501E0F90A64E103336944A37BAAAEAC17E46E880DF6EA23A7A890D"
|
|
"A082CBBF82710B8C3982E8AB25A208A89EEFB5250D4B2CCC2F362856E05D"
|
|
"1941E387801A19886B1F3AAE60D06EDA400087B06920011A7E0A10303132"
|
|
"333435363738394142434445461210A34D2B04D596DFE1DC29CFDF116E39"
|
|
"211A2031AD1B369D225842A14B5D5F8366F5FF8EB94AA7CD13EB45BA7291"
|
|
"68E19D5F5F200242340A20A0D6D65CC677C12B86A7A99F89F446BCFDA185"
|
|
"44B15B2FEF8349ED5C247F7BE91210ED8D58320B0F4F948F960C7D49872C"
|
|
"DE2083E5A68F051A207481A2B82C83DF3090D57EDC042711A42CF4F87E79"
|
|
"CE136DAFE25F48F4A9068322800256113CA771F4250CAD2928161D07B525"
|
|
"61019003DBFBD362F20587D51BD999D57D2B035BC115C54C8B4BC37661A6"
|
|
"6A101DE5B42D82E582309AFD8E211C947A2D33CAFB58F89EEE2DA9524614"
|
|
"0311134429D8A5D15E03A169B0EB2579DA3BD6E4322D6C46EE964F6931CF"
|
|
"9DA52FB59B1D3B9BCC5959211CC23D97690FA8E869ADF68BCDA8A1211DDB"
|
|
"EBF967617AF0BFDA73E0AE79D8A7CCED208602EDC72CEF44A02901A52EEB"
|
|
"87CF9841D186BC95A65956BAD48F3C9E43F027CC03B73DFF5CAFC0B64727"
|
|
"E2D7B3A9CF25F97C475207C8A9DF091A585288A71AE64B7B2089871F7272"
|
|
"381CCBEF55EBF3DCB21B134FE48BFD5299DCCA6B01B55EEA61F9F990D0AF"),
|
|
a2bs_hex(
|
|
"08011231121D1A1B0A190A093938373635343332311208F97F2B3856CBB3"
|
|
"DD2002280018022A0C33333932383235393733000030151A209ADE9B0A41"
|
|
"1583962BDA31BE5BE937E589BB3DCC06F6F4C48FBE4FAE86DC9ABA"),
|
|
a2bs_hex(
|
|
"0802123B0A190A093938373635343332311208F97F2B3856CBB3DD200228"
|
|
"0112001A16200342120A106B63746C00000000CA3A6A75000000002083E5"
|
|
"A68F051A20BDA6A56F7CBFD0942198F87C23A34AA5CBD64AFEB134277774"
|
|
"CCF8E789D815DD"),
|
|
"https://test.google.com/license/GetCencLicense", 0x12345678, 0x12348765,
|
|
0x0, "Name1 Value1",
|
|
a2bs_hex(
|
|
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021"
|
|
"22232425262728292a2b2c2d2e2f"),
|
|
5,
|
|
a2bs_hex(
|
|
"0AF7150802100122F0150802121408011210303132333435363738394142434445461"
|
|
"A9D0E080112950C0AD70B080112EF090AB002080212103E560EC5335E346F591BC4D0"
|
|
"7A7D507618A5D3A68F05228E023082010A0282010100A947904B8DBD55FB685FDB302"
|
|
"5574517CCCC74EE4FEAF6629D5179A52FF85CE7409528EFFA0E5DFC3DE9A34BA5F08B"
|
|
"E349553C319A9FB274905A8770ADC9CA4A2CBCD8E556A1587FA18BFD4D286C644A690"
|
|
"4F19EAAFBDFADD3B371B306D0B289F459B491C814B5AD1F747610E990A60248A7DA51"
|
|
"52F1CCFC047EF42300131F9C4758F4D9F30579393B860AAD9AD2EE43D721D6DB9F580"
|
|
"0EF188386B94825AE05A883AC976D6970DF43EA6C83B86CE6D0F540207725B9890FCC"
|
|
"EC83A49027872DAFD2740B7748E9C3B1752D6F12859CED07E8882969B433EC66F17FF"
|
|
"C29AC6FDBEA79230B0FAED5D94CF6B829A420BBE3270323941776EE60DD6BFD660BDD"
|
|
"CA870203010001288001300112800250D1F8B1ECF849B60FF93E37C4DEEF09E6FFB10"
|
|
"BCFC996A4A24B7AA96928835ED5A72E15846D0A14015733239BD8B6E6D5E5D229B083"
|
|
"94CE1E0692C159C44337CA7CAF88476449B068D9D2FADED8EB1BC0F4B8F0FCAF293E8"
|
|
"690E74032095341803408A0E8279E545945EE97838FDE7812F7171C3CC4F5ECF9418B"
|
|
"BF1D336CE58F4CBB1B44D4ADE6BF3364BAE7EC093281846E569E13E7719014030A605"
|
|
"9044FE7BBFF3E8F5723AEDD54DC6E0D041B309D7700B55575690E95CE6085D0914F99"
|
|
"1C5F45E98CBB9C45BA33F47FD0862EBCC7EEBA8E60643C86E85476B18AEF8DE871571"
|
|
"A75681A75F75028A5B58751C09A5296AAE99CEDCD9785E9E2103240D40A1AB6050AB0"
|
|
"02080112102CE5CCF42200D6B5BCCF33D7CC2D9C7018EAD1B88D05228E023082010A0"
|
|
"282010100BE1B661EEC4700DF4B0C83292D02AE029B8A224DD3048125049F74E30E12"
|
|
"57FC2BE8D9CFAF0BFFCACAF7305351771C78FA451F13AF5EEBFB360941A4396A80583"
|
|
"3730DC6E534C62408B7C5076FC22568021C59ED34F98487196DA32078DAFCA37C7CFB"
|
|
"8E79612FA384963DF2167D5E87305D7BC92D621C10160672C27B9A691B1534F60D78C"
|
|
"5893E40C5FF8A3F9DF8898612E9A5CCB56F4A0CC2A61A7AEB04A9DCC015D9BC37DEF2"
|
|
"AB9EAA9AAFD838869081D9249755F129BB0DBECA3B894975A65A36FD005CE77CD407E"
|
|
"925D3172E33122A11D327968A08F8E771FAEB2540EB52D17C4906405F47C31F60F0AF"
|
|
"6C78AF53291B236E692B506A2AF92AF43E3A81020301000128800130011280033A08A"
|
|
"60418E5C81B8D71A5C0A28C26999FF4FA992E14107CA8A9E6A2B36259834000FE35DC"
|
|
"D814426F9C5D332418ED94C9C0C992217B1B6DC01C99085A3C3956C8267B8773BABCF"
|
|
"3F2C841C67D830F9DBC780DD68BF4E2FE424C6A54123BE4B2A1F7E1F4DB58AB1164DA"
|
|
"E9CF75C3392284A44B8CDB85D837E86C6B908243987E552C8693878C9A1B7BEA37597"
|
|
"83036F1595C406D6CBBA7F8642A9B3B244DAA1F00531D0B908ADE4B533FD9FAFA21D0"
|
|
"FB0C033D2AD5DDF24C60F4FAC30820758877F2E1A78EB44E9336DCFAFDF572BB22A84"
|
|
"A5DEFDF2EB87B61DE26EE9C4CEAA646A2AFDB2BB953845E6D7FE6F79A9501D1C379C9"
|
|
"6961316B5D2A66F38C222091AF74141B6CAF93507485A5D8F82808025451824F00C8B"
|
|
"6A0CD5803F6564584138C8B18BC679B442D837307B5CC90B1FD1FD32288B4A5D18D2D"
|
|
"80E5E6A7A9EFD255B8B363038BCC67AF534EAEE4A5903E304EED4990BB5BE735DB027"
|
|
"A6DE35329D321EC051B956C55A5B11674017517FCC3C7FF7397C13A7B7087A1F6AEC7"
|
|
"F6761A130A0C636F6D70616E795F6E616D6512034C47451A150A0A6D6F64656C5F6E6"
|
|
"16D6512074E6578757320341A200A116172636869746563747572655F6E616D65120B"
|
|
"61726D656162692D7637611A130A0B6465766963655F6E616D6512046D616B6F1A150"
|
|
"A0C70726F647563745F6E616D6512056F6363616D1A440A0A6275696C645F696E666F"
|
|
"1236676F6F676C652F6F6363616D2F6D616B6F3A342E332F4A425F4D52322F3731343"
|
|
"239313A7573657264656275672F6465762D6B6579731A210A096465766963655F6964"
|
|
"12144C474D433230313231303035303036333932373812250A230A140801121030313"
|
|
"23334353637383941424344454610021A09393837363534333231180120002A0C3838"
|
|
"3730313633350000000030151A80023F7318E29C5A50C8ADAA4B09ADCD97B75588B17"
|
|
"002C5C2BC9AFA35C53098AF22DF5CC300407CD2E84EBE01911C785513649E2CCF4E42"
|
|
"9020D3B93F3A54748C11ECFF4D62F562A4D3E96812F663D4F761C00C3E88ABD8A1DC1"
|
|
"0E017A44DD3E040775FED5F07649090D1142C9D21373CD604219E24935E10F287F20B"
|
|
"0E080FDF76B6096B24F82A3E37850DE229DE33EBCE7A0FA53F652C33007EA7027F95A"
|
|
"44C36D04CBD676EB5C0BF69508F45E0C3220D1706B0B851B3FCAF7AC2370EAD80C5D1"
|
|
"620887633A42024862FCEA9F95A719AAB989C1923C6452ECB0B75AF1CAFBFB06C5EC3"
|
|
"1BBF0EE4D16ACCC9AF05B77D61C4855491B3D4AC150F3BCB7AE536AF33322F6040802"
|
|
"12CC020A190A093938373635343332311208F97F2B3856CBB3DD20022800124108011"
|
|
"801301E4239687474703A2F2F6B69723033666370673137342E7769646576696E652E"
|
|
"6E65742F7769646576696E652F6367692D62696E2F64726D2E6367691A661210C5C43"
|
|
"FE0178AEE7B85042F749D5A40251A5013A1501E0F90A64E103336944A37BAAAEAC17E"
|
|
"46E880DF6EA23A7A890DA082CBBF82710B8C3982E8AB25A208A89EEFB5250D4B2CCC2"
|
|
"F362856E05D1941E387801A19886B1F3AAE60D06EDA400087B06920011A7E0A103031"
|
|
"32333435363738394142434445461210A34D2B04D596DFE1DC29CFDF116E39211A203"
|
|
"1AD1B369D225842A14B5D5F8366F5FF8EB94AA7CD13EB45BA729168E19D5F5F200242"
|
|
"340A20A0D6D65CC677C12B86A7A99F89F446BCFDA18544B15B2FEF8349ED5C247F7BE"
|
|
"91210ED8D58320B0F4F948F960C7D49872CDE2083E5A68F051A207481A2B82C83DF30"
|
|
"90D57EDC042711A42CF4F87E79CE136DAFE25F48F4A9068322800256113CA771F4250"
|
|
"CAD2928161D07B52561019003DBFBD362F20587D51BD999D57D2B035BC115C54C8B4B"
|
|
"C37661A66A101DE5B42D82E582309AFD8E211C947A2D33CAFB58F89EEE2DA95246140"
|
|
"311134429D8A5D15E03A169B0EB2579DA3BD6E4322D6C46EE964F6931CF9DA52FB59B"
|
|
"1D3B9BCC5959211CC23D97690FA8E869ADF68BCDA8A1211DDBEBF967617AF0BFDA73E"
|
|
"0AE79D8A7CCED208602EDC72CEF44A02901A52EEB87CF9841D186BC95A65956BAD48F"
|
|
"3C9E43F027CC03B73DFF5CAFC0B64727E2D7B3A9CF25F97C475207C8A9DF091A58528"
|
|
"8A71AE64B7B2089871F7272381CCBEF55EBF3DCB21B134FE48BFD5299DCCA6B01B55E"
|
|
"EA61F9F990D0AF2A5708011231121D1A1B0A190A093938373635343332311208F97F2"
|
|
"B3856CBB3DD2002280018022A0C33333932383235393733000030151A209ADE9B0A41"
|
|
"1583962BDA31BE5BE937E589BB3DCC06F6F4C48FBE4FAE86DC9ABA32610802123B0A1"
|
|
"90A093938373635343332311208F97F2B3856CBB3DD2002280112001A16200342120A"
|
|
"106B63746C00000000CA3A6A75000000002083E5A68F051A20BDA6A56F7CBFD094219"
|
|
"8F87C23A34AA5CBD64AFEB134277774CCF8E789D815DD3A2E68747470733A2F2F7465"
|
|
"73742E676F6F676C652E636F6D2F6C6963656E73652F47657443656E634C6963656E7"
|
|
"36540F8ACD1910148E58ED29101520F0A054E616D6531120656616C75653158006230"
|
|
"000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20212"
|
|
"2232425262728292A2B2C2D2E2F6805122010DB816A045F2AA5865B17FE2F20DA2114"
|
|
"17B2F8B2D7511C9DE89A87CB5208AB")},
|
|
|
|
// license 2
|
|
{"ksidE8C37662C88DC673", DeviceFiles::kLicenseStateReleasing,
|
|
a2bs_hex("0801121030313233343536373839414243444546"),
|
|
a2bs_hex(
|
|
"080112950C0AD70B080112EF090AB002080212103E560EC5335E346F591B"
|
|
"C4D07A7D507618A5D3A68F05228E023082010A0282010100A947904B8DBD"
|
|
"55FB685FDB3025574517CCCC74EE4FEAF6629D5179A52FF85CE7409528EF"
|
|
"FA0E5DFC3DE9A34BA5F08BE349553C319A9FB274905A8770ADC9CA4A2CBC"
|
|
"D8E556A1587FA18BFD4D286C644A6904F19EAAFBDFADD3B371B306D0B289"
|
|
"F459B491C814B5AD1F747610E990A60248A7DA5152F1CCFC047EF4230013"
|
|
"1F9C4758F4D9F30579393B860AAD9AD2EE43D721D6DB9F5800EF188386B9"
|
|
"4825AE05A883AC976D6970DF43EA6C83B86CE6D0F540207725B9890FCCEC"
|
|
"83A49027872DAFD2740B7748E9C3B1752D6F12859CED07E8882969B433EC"
|
|
"66F17FFC29AC6FDBEA79230B0FAED5D94CF6B829A420BBE3270323941776"
|
|
"EE60DD6BFD660BDDCA870203010001288001300112800250D1F8B1ECF849"
|
|
"B60FF93E37C4DEEF09E6FFB10BCFC996A4A24B7AA96928835ED5A72E1584"
|
|
"6D0A14015733239BD8B6E6D5E5D229B08394CE1E0692C159C44337CA7CAF"
|
|
"88476449B068D9D2FADED8EB1BC0F4B8F0FCAF293E8690E7403209534180"
|
|
"3408A0E8279E545945EE97838FDE7812F7171C3CC4F5ECF9418BBF1D336C"
|
|
"E58F4CBB1B44D4ADE6BF3364BAE7EC093281846E569E13E7719014030A60"
|
|
"59044FE7BBFF3E8F5723AEDD54DC6E0D041B309D7700B55575690E95CE60"
|
|
"85D0914F991C5F45E98CBB9C45BA33F47FD0862EBCC7EEBA8E60643C86E8"
|
|
"5476B18AEF8DE871571A75681A75F75028A5B58751C09A5296AAE99CEDCD"
|
|
"9785E9E2103240D40A1AB6050AB002080112102CE5CCF42200D6B5BCCF33"
|
|
"D7CC2D9C7018EAD1B88D05228E023082010A0282010100BE1B661EEC4700"
|
|
"DF4B0C83292D02AE029B8A224DD3048125049F74E30E1257FC2BE8D9CFAF"
|
|
"0BFFCACAF7305351771C78FA451F13AF5EEBFB360941A4396A805833730D"
|
|
"C6E534C62408B7C5076FC22568021C59ED34F98487196DA32078DAFCA37C"
|
|
"7CFB8E79612FA384963DF2167D5E87305D7BC92D621C10160672C27B9A69"
|
|
"1B1534F60D78C5893E40C5FF8A3F9DF8898612E9A5CCB56F4A0CC2A61A7A"
|
|
"EB04A9DCC015D9BC37DEF2AB9EAA9AAFD838869081D9249755F129BB0DBE"
|
|
"CA3B894975A65A36FD005CE77CD407E925D3172E33122A11D327968A08F8"
|
|
"E771FAEB2540EB52D17C4906405F47C31F60F0AF6C78AF53291B236E692B"
|
|
"506A2AF92AF43E3A81020301000128800130011280033A08A60418E5C81B"
|
|
"8D71A5C0A28C26999FF4FA992E14107CA8A9E6A2B36259834000FE35DCD8"
|
|
"14426F9C5D332418ED94C9C0C992217B1B6DC01C99085A3C3956C8267B87"
|
|
"73BABCF3F2C841C67D830F9DBC780DD68BF4E2FE424C6A54123BE4B2A1F7"
|
|
"E1F4DB58AB1164DAE9CF75C3392284A44B8CDB85D837E86C6B908243987E"
|
|
"552C8693878C9A1B7BEA3759783036F1595C406D6CBBA7F8642A9B3B244D"
|
|
"AA1F00531D0B908ADE4B533FD9FAFA21D0FB0C033D2AD5DDF24C60F4FAC3"
|
|
"0820758877F2E1A78EB44E9336DCFAFDF572BB22A84A5DEFDF2EB87B61DE"
|
|
"26EE9C4CEAA646A2AFDB2BB953845E6D7FE6F79A9501D1C379C96961316B"
|
|
"5D2A66F38C222091AF74141B6CAF93507485A5D8F82808025451824F00C8"
|
|
"B6A0CD5803F6564584138C8B18BC679B442D837307B5CC90B1FD1FD32288"
|
|
"B4A5D18D2D80E5E6A7A9EFD255B8B363038BCC67AF534EAEE4A5903E304E"
|
|
"ED4990BB5BE735DB027A6DE35329D321EC051B956C55A5B11674017517FC"
|
|
"C3C7FF7397C13A7B7087A1F6AEC7F6761A130A0C636F6D70616E795F6E61"
|
|
"6D6512034C47451A150A0A6D6F64656C5F6E616D6512074E657875732034"
|
|
"1A200A116172636869746563747572655F6E616D65120B61726D65616269"
|
|
"2D7637611A130A0B6465766963655F6E616D6512046D616B6F1A150A0C70"
|
|
"726F647563745F6E616D6512056F6363616D1A440A0A6275696C645F696E"
|
|
"666F1236676F6F676C652F6F6363616D2F6D616B6F3A342E332F4A425F4D"
|
|
"52322F3731343239313A7573657264656275672F6465762D6B6579731A21"
|
|
"0A096465766963655F696412144C474D4332303132313030353030363339"
|
|
"32373812250A230A14080112103031323334353637383941424344454610"
|
|
"021A09393837363534333231180120002A0C313038313531363936380000"
|
|
"30151A80027EA7ADEF77500FBC6A6081E739E0C50E1BDE6DE4AB39110938"
|
|
"6768A95A04A52BE6693A5A98A25AC8EB9CDD6F40DCCF86A3DA6C700E256A"
|
|
"676BD3D7E492090DCF732C57333D9370F6D7AB87661701597099CD45C2BC"
|
|
"DFF1D47183E510D7A6D3561EFC7D4EB21814CB2CA0777F26DD491B4D0146"
|
|
"9BB81A701545E2D3E98E1ADAB3A3BBD1D0433B312B3B5139E88D3A92520B"
|
|
"A399B2BE3489A72C3629745E4D8FC6DF6C8925A8FD8D6C809CA80DBC2903"
|
|
"0615A55523305BC64DDFF52A87BD0DE9EEAB6445C5A1847E5E6FE8D640C7"
|
|
"B07F3B066B911793F06E973A02FA6EDD274570C4CA982D353F1E72A5B776"
|
|
"95D554B4FB554B46F5FA5B3B00805C136A9ED21FC2"),
|
|
a2bs_hex(
|
|
"080212CC020A190A0939383736353433323112087AD49366C8D919132002"
|
|
"2800124108011801301E4239687474703A2F2F6B69723033666370673137"
|
|
"342E7769646576696E652E6E65742F7769646576696E652F6367692D6269"
|
|
"6E2F64726D2E6367691A6612109161841718D5D0A4C4368820F4D030721A"
|
|
"500F94F9BC0FF6B730709C6DEFD88D1CA8C7991A149D470493BDAD89E333"
|
|
"AFC949F77D995CEA5E3D3DA5F7DF84E90CD4A9B4E138EA5F7EA75A520A25"
|
|
"017D69A9460D46548259F82959304CDEFE41936BE420011A7E0A10303132"
|
|
"3334353637383941424344454612104F88BFEECE468B962BF09EA1257DA5"
|
|
"0B1A200D48C122E022033C3E67A6ED4DA99B8AEA6F4B9E78634A548C060F"
|
|
"49D39D9700200242340A209DE408B6F116F428C8E801C63AF34570A6C31D"
|
|
"72180AA11F85D8DD4BC1C4D35412104E73935C2CC38C21408C537B3A5F19"
|
|
"8B2081E7A68F051A20BC2696A2A1FBDF425675CAD455DEA2B44040D1F8F0"
|
|
"B6C675A28384CACFDF2F132280022D09FDA096972AA77FFEB09EA08AE882"
|
|
"E89AC8591B398452CFB1383CCA16611571E223FE8DE82CDE9111557B2A87"
|
|
"A253B87B822F037FB492DE4B91B8AD4DB2E2F8B2E81BF1DE36CC7520CB4B"
|
|
"B3516E18322777287310257F2EC7110332504756DA8BC873448E93BA05FD"
|
|
"1AEB7AD1016D7BBB7FF5E7111987005322E342679F3D241429AE930A479D"
|
|
"9F338699D3D6969A6479D1363AEB4AF19BDE9A73B33CD0EBFCF272FCEEC6"
|
|
"222AC08DCBD36077E0459D940BAE84ABA584700C02E70F3AE034ED7B764C"
|
|
"6EE5E85663D657270C9AB40D3109920AB1C1C5DA1358E384EDF673253C04"
|
|
"F20AA6B0CC98F421A4CD86C4C88042B0DE9902D5D00B6AD817B1A313ED5B"),
|
|
a2bs_hex(
|
|
"08011231121D1A1B0A190A0939383736353433323112087AD49366C8D919"
|
|
"132002280018022A0C35333631323234343600000030151A208CC3C7D328"
|
|
"DFACD43764C9FB582B858C8FF1D9863FF59C4D983478DB858AC32A"),
|
|
a2bs_hex(
|
|
"0802123B0A190A0939383736353433323112087AD49366C8D91913200228"
|
|
"0112001A16200342120A106B63746C000000001FF4944E000000002082E7"
|
|
"A68F051A2041EF0A9267D613D17AA90E1D1DA5BE091860E5E296D41D6D0F"
|
|
"75E73660C279B3"),
|
|
"https://test.google.com/license/GetCencLicense", 0x0123456789abcdef,
|
|
0x123456789abfedc, 0x0, "Name1 Value1 Name2 Param2",
|
|
a2bs_hex(
|
|
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021"
|
|
"22232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f"),
|
|
12,
|
|
a2bs_hex(
|
|
"0AAD160802100122A6160802121408011210303132333435363738394142434445461"
|
|
"A9D0E080112950C0AD70B080112EF090AB002080212103E560EC5335E346F591BC4D0"
|
|
"7A7D507618A5D3A68F05228E023082010A0282010100A947904B8DBD55FB685FDB302"
|
|
"5574517CCCC74EE4FEAF6629D5179A52FF85CE7409528EFFA0E5DFC3DE9A34BA5F08B"
|
|
"E349553C319A9FB274905A8770ADC9CA4A2CBCD8E556A1587FA18BFD4D286C644A690"
|
|
"4F19EAAFBDFADD3B371B306D0B289F459B491C814B5AD1F747610E990A60248A7DA51"
|
|
"52F1CCFC047EF42300131F9C4758F4D9F30579393B860AAD9AD2EE43D721D6DB9F580"
|
|
"0EF188386B94825AE05A883AC976D6970DF43EA6C83B86CE6D0F540207725B9890FCC"
|
|
"EC83A49027872DAFD2740B7748E9C3B1752D6F12859CED07E8882969B433EC66F17FF"
|
|
"C29AC6FDBEA79230B0FAED5D94CF6B829A420BBE3270323941776EE60DD6BFD660BDD"
|
|
"CA870203010001288001300112800250D1F8B1ECF849B60FF93E37C4DEEF09E6FFB10"
|
|
"BCFC996A4A24B7AA96928835ED5A72E15846D0A14015733239BD8B6E6D5E5D229B083"
|
|
"94CE1E0692C159C44337CA7CAF88476449B068D9D2FADED8EB1BC0F4B8F0FCAF293E8"
|
|
"690E74032095341803408A0E8279E545945EE97838FDE7812F7171C3CC4F5ECF9418B"
|
|
"BF1D336CE58F4CBB1B44D4ADE6BF3364BAE7EC093281846E569E13E7719014030A605"
|
|
"9044FE7BBFF3E8F5723AEDD54DC6E0D041B309D7700B55575690E95CE6085D0914F99"
|
|
"1C5F45E98CBB9C45BA33F47FD0862EBCC7EEBA8E60643C86E85476B18AEF8DE871571"
|
|
"A75681A75F75028A5B58751C09A5296AAE99CEDCD9785E9E2103240D40A1AB6050AB0"
|
|
"02080112102CE5CCF42200D6B5BCCF33D7CC2D9C7018EAD1B88D05228E023082010A0"
|
|
"282010100BE1B661EEC4700DF4B0C83292D02AE029B8A224DD3048125049F74E30E12"
|
|
"57FC2BE8D9CFAF0BFFCACAF7305351771C78FA451F13AF5EEBFB360941A4396A80583"
|
|
"3730DC6E534C62408B7C5076FC22568021C59ED34F98487196DA32078DAFCA37C7CFB"
|
|
"8E79612FA384963DF2167D5E87305D7BC92D621C10160672C27B9A691B1534F60D78C"
|
|
"5893E40C5FF8A3F9DF8898612E9A5CCB56F4A0CC2A61A7AEB04A9DCC015D9BC37DEF2"
|
|
"AB9EAA9AAFD838869081D9249755F129BB0DBECA3B894975A65A36FD005CE77CD407E"
|
|
"925D3172E33122A11D327968A08F8E771FAEB2540EB52D17C4906405F47C31F60F0AF"
|
|
"6C78AF53291B236E692B506A2AF92AF43E3A81020301000128800130011280033A08A"
|
|
"60418E5C81B8D71A5C0A28C26999FF4FA992E14107CA8A9E6A2B36259834000FE35DC"
|
|
"D814426F9C5D332418ED94C9C0C992217B1B6DC01C99085A3C3956C8267B8773BABCF"
|
|
"3F2C841C67D830F9DBC780DD68BF4E2FE424C6A54123BE4B2A1F7E1F4DB58AB1164DA"
|
|
"E9CF75C3392284A44B8CDB85D837E86C6B908243987E552C8693878C9A1B7BEA37597"
|
|
"83036F1595C406D6CBBA7F8642A9B3B244DAA1F00531D0B908ADE4B533FD9FAFA21D0"
|
|
"FB0C033D2AD5DDF24C60F4FAC30820758877F2E1A78EB44E9336DCFAFDF572BB22A84"
|
|
"A5DEFDF2EB87B61DE26EE9C4CEAA646A2AFDB2BB953845E6D7FE6F79A9501D1C379C9"
|
|
"6961316B5D2A66F38C222091AF74141B6CAF93507485A5D8F82808025451824F00C8B"
|
|
"6A0CD5803F6564584138C8B18BC679B442D837307B5CC90B1FD1FD32288B4A5D18D2D"
|
|
"80E5E6A7A9EFD255B8B363038BCC67AF534EAEE4A5903E304EED4990BB5BE735DB027"
|
|
"A6DE35329D321EC051B956C55A5B11674017517FCC3C7FF7397C13A7B7087A1F6AEC7"
|
|
"F6761A130A0C636F6D70616E795F6E616D6512034C47451A150A0A6D6F64656C5F6E6"
|
|
"16D6512074E6578757320341A200A116172636869746563747572655F6E616D65120B"
|
|
"61726D656162692D7637611A130A0B6465766963655F6E616D6512046D616B6F1A150"
|
|
"A0C70726F647563745F6E616D6512056F6363616D1A440A0A6275696C645F696E666F"
|
|
"1236676F6F676C652F6F6363616D2F6D616B6F3A342E332F4A425F4D52322F3731343"
|
|
"239313A7573657264656275672F6465762D6B6579731A210A096465766963655F6964"
|
|
"12144C474D433230313231303035303036333932373812250A230A140801121030313"
|
|
"23334353637383941424344454610021A09393837363534333231180120002A0C3130"
|
|
"3831353136393638000030151A80027EA7ADEF77500FBC6A6081E739E0C50E1BDE6DE"
|
|
"4AB391109386768A95A04A52BE6693A5A98A25AC8EB9CDD6F40DCCF86A3DA6C700E25"
|
|
"6A676BD3D7E492090DCF732C57333D9370F6D7AB87661701597099CD45C2BCDFF1D47"
|
|
"183E510D7A6D3561EFC7D4EB21814CB2CA0777F26DD491B4D01469BB81A701545E2D3"
|
|
"E98E1ADAB3A3BBD1D0433B312B3B5139E88D3A92520BA399B2BE3489A72C3629745E4"
|
|
"D8FC6DF6C8925A8FD8D6C809CA80DBC29030615A55523305BC64DDFF52A87BD0DE9EE"
|
|
"AB6445C5A1847E5E6FE8D640C7B07F3B066B911793F06E973A02FA6EDD274570C4CA9"
|
|
"82D353F1E72A5B77695D554B4FB554B46F5FA5B3B00805C136A9ED21FC222F6040802"
|
|
"12CC020A190A0939383736353433323112087AD49366C8D9191320022800124108011"
|
|
"801301E4239687474703A2F2F6B69723033666370673137342E7769646576696E652E"
|
|
"6E65742F7769646576696E652F6367692D62696E2F64726D2E6367691A66121091618"
|
|
"41718D5D0A4C4368820F4D030721A500F94F9BC0FF6B730709C6DEFD88D1CA8C7991A"
|
|
"149D470493BDAD89E333AFC949F77D995CEA5E3D3DA5F7DF84E90CD4A9B4E138EA5F7"
|
|
"EA75A520A25017D69A9460D46548259F82959304CDEFE41936BE420011A7E0A103031"
|
|
"323334353637383941424344454612104F88BFEECE468B962BF09EA1257DA50B1A200"
|
|
"D48C122E022033C3E67A6ED4DA99B8AEA6F4B9E78634A548C060F49D39D9700200242"
|
|
"340A209DE408B6F116F428C8E801C63AF34570A6C31D72180AA11F85D8DD4BC1C4D35"
|
|
"412104E73935C2CC38C21408C537B3A5F198B2081E7A68F051A20BC2696A2A1FBDF42"
|
|
"5675CAD455DEA2B44040D1F8F0B6C675A28384CACFDF2F132280022D09FDA096972AA"
|
|
"77FFEB09EA08AE882E89AC8591B398452CFB1383CCA16611571E223FE8DE82CDE9111"
|
|
"557B2A87A253B87B822F037FB492DE4B91B8AD4DB2E2F8B2E81BF1DE36CC7520CB4BB"
|
|
"3516E18322777287310257F2EC7110332504756DA8BC873448E93BA05FD1AEB7AD101"
|
|
"6D7BBB7FF5E7111987005322E342679F3D241429AE930A479D9F338699D3D6969A647"
|
|
"9D1363AEB4AF19BDE9A73B33CD0EBFCF272FCEEC6222AC08DCBD36077E0459D940BAE"
|
|
"84ABA584700C02E70F3AE034ED7B764C6EE5E85663D657270C9AB40D3109920AB1C1C"
|
|
"5DA1358E384EDF673253C04F20AA6B0CC98F421A4CD86C4C88042B0DE9902D5D00B6A"
|
|
"D817B1A313ED5B2A5708011231121D1A1B0A190A0939383736353433323112087AD49"
|
|
"366C8D919132002280018022A0C35333631323234343600000030151A208CC3C7D328"
|
|
"DFACD43764C9FB582B858C8FF1D9863FF59C4D983478DB858AC32A32610802123B0A1"
|
|
"90A0939383736353433323112087AD49366C8D919132002280112001A16200342120A"
|
|
"106B63746C000000001FF4944E000000002082E7A68F051A2041EF0A9267D613D17AA"
|
|
"90E1D1DA5BE091860E5E296D41D6D0F75E73660C279B33A2E68747470733A2F2F7465"
|
|
"73742E676F6F676C652E636F6D2F6C6963656E73652F47657443656E634C6963656E7"
|
|
"36540EF9BAFCDF8ACD1910148DCFDAFCDF8ACD1910152150A054E616D6531120C5661"
|
|
"6C756531204E616D653252160A0C4E616D653220506172616D321206506172616D325"
|
|
"8006240000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E"
|
|
"1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F680"
|
|
"C12206AA0237760D1F06E5CB78F5AFC3D124BBF7C26921CB3CC2EA44766801E25D34"
|
|
"F")}};
|
|
|
|
// Sample license data and related data for storage and use for offline
|
|
// playback. The license data and URLs in this test are not real.
|
|
// The data is used to test license-related functions.
|
|
LicenseInfo license_update_test_data[] = {
|
|
// active license
|
|
{"key_set_id_: ksid2A048BC7FAEC885A", DeviceFiles::kLicenseStateActive,
|
|
a2bs_hex("0801121030313233343536373839414243444546"),
|
|
a2bs_hex(
|
|
"080112950C0AD70B080112EF090AB002080212103E560EC5335E346F591B"
|
|
"C4D07A7D5076189EDFB68F05228E023082010A0282010100CC1715C81AD3"
|
|
"F6F279C686F826E6D7C8961EB13318367D06B4061BBC57E3C616A226A10F"
|
|
"042CAD54D44C6484C725CD721A2A97C088E60AFF0E9C8E03477A1B56B4C5"
|
|
"55C27CEAF55024375D8D3FB352DA4AAA2E911C876CB1B36162922E9130CC"
|
|
"C5FB72F8DD41D05DE6889C4814A7344BA8C605DE399CA3CBBF1E7DE3411E"
|
|
"DFC60F9D3802C0BEE2B98FB71A5AB9C1A3D53FB55599183B84FDDC98AC30"
|
|
"96B2EF99C62B545C5DCA3371F4D27DEF2052A23F13DE42DE46B462CED2AB"
|
|
"ABB96B610A47E0620AA10D862FEB66BB4F00B13DFE61703AE872F0B4850C"
|
|
"39138FC5DE4538E27BEAC8A48CC9526401BE3B42C7C6C5D9624662081D7A"
|
|
"5A1C581EB09619DD9DD3020301000128800130011280026AB9AC42F1C17C"
|
|
"1ECFB710BF2C35383F41CF7EFAB0DFDCC69090C20DE141CB43055FD707C6"
|
|
"11CDAEE700076A1EBA32432D5C2B62A73B8B1672AD2C4303598C02D34823"
|
|
"A6BE387046937F55BB65F5B3571FDC6A1F0D947031003BA651F8E48BF33D"
|
|
"66B7A32A72CAC75EF66EF280B2D4F14FBCA70ECC508091FE83AD886A680F"
|
|
"55AB62F306435BC0043825F6A401BB9C341230127D3298B67F82767050C9"
|
|
"5769964B0B5C27A36FA76ED161ABE4B6C18556C807706509A5146ADD958A"
|
|
"F79B49EDE48CBCD6320C4DEC0BF564C5DD7E7EBA37A4CD1D27F8D80E1B69"
|
|
"31C92AC8E5C3BEC0ADAE621A3B78952485EBFC81A194BA75BBD2C821C28A"
|
|
"EB5D21CBE0A270E55E1AB6050AB002080112102CE5CCF42200D6B5BCCF33"
|
|
"D7CC2D9C7018EAD1B88D05228E023082010A0282010100BE1B661EEC4700"
|
|
"DF4B0C83292D02AE029B8A224DD3048125049F74E30E1257FC2BE8D9CFAF"
|
|
"0BFFCACAF7305351771C78FA451F13AF5EEBFB360941A4396A805833730D"
|
|
"C6E534C62408B7C5076FC22568021C59ED34F98487196DA32078DAFCA37C"
|
|
"7CFB8E79612FA384963DF2167D5E87305D7BC92D621C10160672C27B9A69"
|
|
"1B1534F60D78C5893E40C5FF8A3F9DF8898612E9A5CCB56F4A0CC2A61A7A"
|
|
"EB04A9DCC015D9BC37DEF2AB9EAA9AAFD838869081D9249755F129BB0DBE"
|
|
"CA3B894975A65A36FD005CE77CD407E925D3172E33122A11D327968A08F8"
|
|
"E771FAEB2540EB52D17C4906405F47C31F60F0AF6C78AF53291B236E692B"
|
|
"506A2AF92AF43E3A81020301000128800130011280033A08A60418E5C81B"
|
|
"8D71A5C0A28C26999FF4FA992E14107CA8A9E6A2B36259834000FE35DCD8"
|
|
"14426F9C5D332418ED94C9C0C992217B1B6DC01C99085A3C3956C8267B87"
|
|
"73BABCF3F2C841C67D830F9DBC780DD68BF4E2FE424C6A54123BE4B2A1F7"
|
|
"E1F4DB58AB1164DAE9CF75C3392284A44B8CDB85D837E86C6B908243987E"
|
|
"552C8693878C9A1B7BEA3759783036F1595C406D6CBBA7F8642A9B3B244D"
|
|
"AA1F00531D0B908ADE4B533FD9FAFA21D0FB0C033D2AD5DDF24C60F4FAC3"
|
|
"0820758877F2E1A78EB44E9336DCFAFDF572BB22A84A5DEFDF2EB87B61DE"
|
|
"26EE9C4CEAA646A2AFDB2BB953845E6D7FE6F79A9501D1C379C96961316B"
|
|
"5D2A66F38C222091AF74141B6CAF93507485A5D8F82808025451824F00C8"
|
|
"B6A0CD5803F6564584138C8B18BC679B442D837307B5CC90B1FD1FD32288"
|
|
"B4A5D18D2D80E5E6A7A9EFD255B8B363038BCC67AF534EAEE4A5903E304E"
|
|
"ED4990BB5BE735DB027A6DE35329D321EC051B956C55A5B11674017517FC"
|
|
"C3C7FF7397C13A7B7087A1F6AEC7F6761A130A0C636F6D70616E795F6E61"
|
|
"6D6512034C47451A150A0A6D6F64656C5F6E616D6512074E657875732034"
|
|
"1A200A116172636869746563747572655F6E616D65120B61726D65616269"
|
|
"2D7637611A130A0B6465766963655F6E616D6512046D616B6F1A150A0C70"
|
|
"726F647563745F6E616D6512056F6363616D1A440A0A6275696C645F696E"
|
|
"666F1236676F6F676C652F6F6363616D2F6D616B6F3A342E332F4A425F4D"
|
|
"52322F3731343239313A7573657264656275672F6465762D6B6579731A21"
|
|
"0A096465766963655F696412144C474D4332303132313030353030363339"
|
|
"32373812250A230A14080112103031323334353637383941424344454610"
|
|
"021A09393837363534333231180120002A0C333037383036303230340000"
|
|
"30151A8002B5CA9C6B097EF2CBE2F8136C761130F3456ED706127260151B"
|
|
"4FF044DE233C1828B8618A312C031A2F844BEF0917F9B8C6B8993A5D33E2"
|
|
"4B57B672A6C79D93EC98C46C5263EB8195FF7A5EBEBA08A6F1080C19340A"
|
|
"068E575568AE5EBADDD638FB435AC3EEC901E5F250BC974C498D6378C8BC"
|
|
"1F4BACCED5725B8B77160444923DA3B729DCB681186565B49EEFFE27CF16"
|
|
"31F09EC31E543AAFE9F5996FB0BEAA5F80305D67ECF173A8BD4A3B2CC75C"
|
|
"EC3AA5881FF433E80838E1E1FA23CE7F22346DDDF7FEC3DB0CE2C3F845CF"
|
|
"9471088A022C8D0A63860764AE558BD0B5F66D78881ADBF2D398F9BA349E"
|
|
"FB2532C61E243DD45BB11C99422D13A82B7AAE9671"),
|
|
a2bs_hex(
|
|
"080212CC020A190A09393837363534333231120892BE96420F0D5BF32002"
|
|
"2800124108011801301E4239687474703A2F2F6B69723033666370673137"
|
|
"342E7769646576696E652E6E65742F7769646576696E652F6367692D6269"
|
|
"6E2F64726D2E6367691A661210BB2E2D2B9C39697794897E08262749B41A"
|
|
"50C0DED62431B1701F59E076E07EB0D2D43AEC6C589B35790739EB0B0ED4"
|
|
"7236D0ECCE9A5408BE5F46F412334A5F4A4E3E493F202A263E185F06AE37"
|
|
"BA4351647BB9E6C997189FE1A03DCBF3FC90F46E5120011A7E0A10303132"
|
|
"333435363738394142434445461210319D7FB66154DFEC2AEDB164F29AAC"
|
|
"301A207448440734605CB29424FD1DA435A405DEE837757EA6A68C633A65"
|
|
"228317843D200242340A207F287706380C8085A4E5F85843D1C3B379F9CE"
|
|
"19ED5A2DAAF476B8AFE10488BF12100C8CDB1DA4C9FEBE5BBB530FE0D3DA"
|
|
"8720F4DFB68F051A20F4BCCEEEA658C5DD18D7B841E6D8991E616B57B592"
|
|
"C44ED67050939B136815272280025CD92AB4672778CB865D528A2EAAAD06"
|
|
"435AE9186F1C159AFA1689473C4D8C8A5B8C64400CBBD0A02659EA0271A1"
|
|
"F40052030CA285B9C7211791BDD72193D5E01CEE43B0482DEAF034C8E9BD"
|
|
"88C7331BFA5CD71C2A3062EBD07CE1C80CCF3C5D7EC2D921D1BC5414D797"
|
|
"0CB098889D3FB5BF669EE5283E009CDCC880E79C77A21B12C7C0B8062D66"
|
|
"CBDEC2DCFD23885144C776B98C8A7A176C4EA183085EF02D2060904ADA3C"
|
|
"B161F4D198A0279DA19D7001EB2D20C70ABAA04B3760CB165006F6CBA4BE"
|
|
"0A2628C0C8398C122FF0DCF9292590E3C37BC7DB20F3B0921268F41FE76B"
|
|
"D3EE764EBA13A22FDABC170860503FB93CC4A08D61102519D56A25EB9E30"),
|
|
a2bs_hex(
|
|
"08011231121D1A1B0A190A09393837363534333231120892BE96420F0D5B"
|
|
"F32002280018022A0C31393132353333373731000030151A20F4FDBECE54"
|
|
"7252D12BB9D488DAD50C76577A2FBCCC73F36D3C6B35096B8A3DC6"),
|
|
a2bs_hex(
|
|
"0802123B0A190A09393837363534333231120892BE96420F0D5BF3200228"
|
|
"0112001A16200342120A106B63746C0000000071FEF30B0000000020F4DF"
|
|
"B68F051A2000351030900858FCFD6977B67803ADFD1280AA661E6B0BD30B"
|
|
"08B2C467355129"),
|
|
"https://test.google.com/license/GetCencLicense", 0x0123456789abcdef,
|
|
0x123456789abfedc, 0x0, "Name1 Value1 Name2 Value2 Name3 Value3",
|
|
a2bs_hex(
|
|
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021"
|
|
"22232425262728292a2b2c2d2e2f"),
|
|
15,
|
|
a2bs_hex(
|
|
"0AEE150802100122E7150801121408011210303132333435363738394142434445461"
|
|
"A9D0E080112950C0AD70B080112EF090AB002080212103E560EC5335E346F591BC4D0"
|
|
"7A7D5076189EDFB68F05228E023082010A0282010100CC1715C81AD3F6F279C686F82"
|
|
"6E6D7C8961EB13318367D06B4061BBC57E3C616A226A10F042CAD54D44C6484C725CD"
|
|
"721A2A97C088E60AFF0E9C8E03477A1B56B4C555C27CEAF55024375D8D3FB352DA4AA"
|
|
"A2E911C876CB1B36162922E9130CCC5FB72F8DD41D05DE6889C4814A7344BA8C605DE"
|
|
"399CA3CBBF1E7DE3411EDFC60F9D3802C0BEE2B98FB71A5AB9C1A3D53FB55599183B8"
|
|
"4FDDC98AC3096B2EF99C62B545C5DCA3371F4D27DEF2052A23F13DE42DE46B462CED2"
|
|
"ABABB96B610A47E0620AA10D862FEB66BB4F00B13DFE61703AE872F0B4850C39138FC"
|
|
"5DE4538E27BEAC8A48CC9526401BE3B42C7C6C5D9624662081D7A5A1C581EB09619DD"
|
|
"9DD3020301000128800130011280026AB9AC42F1C17C1ECFB710BF2C35383F41CF7EF"
|
|
"AB0DFDCC69090C20DE141CB43055FD707C611CDAEE700076A1EBA32432D5C2B62A73B"
|
|
"8B1672AD2C4303598C02D34823A6BE387046937F55BB65F5B3571FDC6A1F0D9470310"
|
|
"03BA651F8E48BF33D66B7A32A72CAC75EF66EF280B2D4F14FBCA70ECC508091FE83AD"
|
|
"886A680F55AB62F306435BC0043825F6A401BB9C341230127D3298B67F82767050C95"
|
|
"769964B0B5C27A36FA76ED161ABE4B6C18556C807706509A5146ADD958AF79B49EDE4"
|
|
"8CBCD6320C4DEC0BF564C5DD7E7EBA37A4CD1D27F8D80E1B6931C92AC8E5C3BEC0ADA"
|
|
"E621A3B78952485EBFC81A194BA75BBD2C821C28AEB5D21CBE0A270E55E1AB6050AB0"
|
|
"02080112102CE5CCF42200D6B5BCCF33D7CC2D9C7018EAD1B88D05228E023082010A0"
|
|
"282010100BE1B661EEC4700DF4B0C83292D02AE029B8A224DD3048125049F74E30E12"
|
|
"57FC2BE8D9CFAF0BFFCACAF7305351771C78FA451F13AF5EEBFB360941A4396A80583"
|
|
"3730DC6E534C62408B7C5076FC22568021C59ED34F98487196DA32078DAFCA37C7CFB"
|
|
"8E79612FA384963DF2167D5E87305D7BC92D621C10160672C27B9A691B1534F60D78C"
|
|
"5893E40C5FF8A3F9DF8898612E9A5CCB56F4A0CC2A61A7AEB04A9DCC015D9BC37DEF2"
|
|
"AB9EAA9AAFD838869081D9249755F129BB0DBECA3B894975A65A36FD005CE77CD407E"
|
|
"925D3172E33122A11D327968A08F8E771FAEB2540EB52D17C4906405F47C31F60F0AF"
|
|
"6C78AF53291B236E692B506A2AF92AF43E3A81020301000128800130011280033A08A"
|
|
"60418E5C81B8D71A5C0A28C26999FF4FA992E14107CA8A9E6A2B36259834000FE35DC"
|
|
"D814426F9C5D332418ED94C9C0C992217B1B6DC01C99085A3C3956C8267B8773BABCF"
|
|
"3F2C841C67D830F9DBC780DD68BF4E2FE424C6A54123BE4B2A1F7E1F4DB58AB1164DA"
|
|
"E9CF75C3392284A44B8CDB85D837E86C6B908243987E552C8693878C9A1B7BEA37597"
|
|
"83036F1595C406D6CBBA7F8642A9B3B244DAA1F00531D0B908ADE4B533FD9FAFA21D0"
|
|
"FB0C033D2AD5DDF24C60F4FAC30820758877F2E1A78EB44E9336DCFAFDF572BB22A84"
|
|
"A5DEFDF2EB87B61DE26EE9C4CEAA646A2AFDB2BB953845E6D7FE6F79A9501D1C379C9"
|
|
"6961316B5D2A66F38C222091AF74141B6CAF93507485A5D8F82808025451824F00C8B"
|
|
"6A0CD5803F6564584138C8B18BC679B442D837307B5CC90B1FD1FD32288B4A5D18D2D"
|
|
"80E5E6A7A9EFD255B8B363038BCC67AF534EAEE4A5903E304EED4990BB5BE735DB027"
|
|
"A6DE35329D321EC051B956C55A5B11674017517FCC3C7FF7397C13A7B7087A1F6AEC7"
|
|
"F6761A130A0C636F6D70616E795F6E616D6512034C47451A150A0A6D6F64656C5F6E6"
|
|
"16D6512074E6578757320341A200A116172636869746563747572655F6E616D65120B"
|
|
"61726D656162692D7637611A130A0B6465766963655F6E616D6512046D616B6F1A150"
|
|
"A0C70726F647563745F6E616D6512056F6363616D1A440A0A6275696C645F696E666F"
|
|
"1236676F6F676C652F6F6363616D2F6D616B6F3A342E332F4A425F4D52322F3731343"
|
|
"239313A7573657264656275672F6465762D6B6579731A210A096465766963655F6964"
|
|
"12144C474D433230313231303035303036333932373812250A230A140801121030313"
|
|
"23334353637383941424344454610021A09393837363534333231180120002A0C3330"
|
|
"3738303630323034000030151A8002B5CA9C6B097EF2CBE2F8136C761130F3456ED70"
|
|
"6127260151B4FF044DE233C1828B8618A312C031A2F844BEF0917F9B8C6B8993A5D33"
|
|
"E24B57B672A6C79D93EC98C46C5263EB8195FF7A5EBEBA08A6F1080C19340A068E575"
|
|
"568AE5EBADDD638FB435AC3EEC901E5F250BC974C498D6378C8BC1F4BACCED5725B8B"
|
|
"77160444923DA3B729DCB681186565B49EEFFE27CF1631F09EC31E543AAFE9F5996FB"
|
|
"0BEAA5F80305D67ECF173A8BD4A3B2CC75CEC3AA5881FF433E80838E1E1FA23CE7F22"
|
|
"346DDDF7FEC3DB0CE2C3F845CF9471088A022C8D0A63860764AE558BD0B5F66D78881"
|
|
"ADBF2D398F9BA349EFB2532C61E243DD45BB11C99422D13A82B7AAE967122F6040802"
|
|
"12CC020A190A09393837363534333231120892BE96420F0D5BF320022800124108011"
|
|
"801301E4239687474703A2F2F6B69723033666370673137342E7769646576696E652E"
|
|
"6E65742F7769646576696E652F6367692D62696E2F64726D2E6367691A661210BB2E2"
|
|
"D2B9C39697794897E08262749B41A50C0DED62431B1701F59E076E07EB0D2D43AEC6C"
|
|
"589B35790739EB0B0ED47236D0ECCE9A5408BE5F46F412334A5F4A4E3E493F202A263"
|
|
"E185F06AE37BA4351647BB9E6C997189FE1A03DCBF3FC90F46E5120011A7E0A103031"
|
|
"32333435363738394142434445461210319D7FB66154DFEC2AEDB164F29AAC301A207"
|
|
"448440734605CB29424FD1DA435A405DEE837757EA6A68C633A65228317843D200242"
|
|
"340A207F287706380C8085A4E5F85843D1C3B379F9CE19ED5A2DAAF476B8AFE10488B"
|
|
"F12100C8CDB1DA4C9FEBE5BBB530FE0D3DA8720F4DFB68F051A20F4BCCEEEA658C5DD"
|
|
"18D7B841E6D8991E616B57B592C44ED67050939B136815272280025CD92AB4672778C"
|
|
"B865D528A2EAAAD06435AE9186F1C159AFA1689473C4D8C8A5B8C64400CBBD0A02659"
|
|
"EA0271A1F40052030CA285B9C7211791BDD72193D5E01CEE43B0482DEAF034C8E9BD8"
|
|
"8C7331BFA5CD71C2A3062EBD07CE1C80CCF3C5D7EC2D921D1BC5414D7970CB098889D"
|
|
"3FB5BF669EE5283E009CDCC880E79C77A21B12C7C0B8062D66CBDEC2DCFD23885144C"
|
|
"776B98C8A7A176C4EA183085EF02D2060904ADA3CB161F4D198A0279DA19D7001EB2D"
|
|
"20C70ABAA04B3760CB165006F6CBA4BE0A2628C0C8398C122FF0DCF9292590E3C37BC"
|
|
"7DB20F3B0921268F41FE76BD3EE764EBA13A22FDABC170860503FB93CC4A08D611025"
|
|
"19D56A25EB9E302A5708011231121D1A1B0A190A09393837363534333231120892BE9"
|
|
"6420F0D5BF32002280018022A0C31393132353333373731000030151A20F4FDBECE54"
|
|
"7252D12BB9D488DAD50C76577A2FBCCC73F36D3C6B35096B8A3DC632610802123B0A1"
|
|
"90A09393837363534333231120892BE96420F0D5BF32002280112001A16200342120A"
|
|
"106B63746C0000000071FEF30B0000000020F4DFB68F051A2000351030900858FCFD6"
|
|
"977B67803ADFD1280AA661E6B0BD30B08B2C4673551293A2E68747470733A2F2F7465"
|
|
"73742E676F6F676C652E636F6D2F6C6963656E73652F47657443656E634C6963656E7"
|
|
"36540EF9BAFCDF8ACD1910148DCFDAFCDF8ACD1910158006230000102030405060708"
|
|
"090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2"
|
|
"B2C2D2E2F680F122009B8588A8E9926339289BA373DB8479A71F7AA1164083D90613F"
|
|
"766D60B07CBC")},
|
|
// license being released. all fields are identical except for license
|
|
// state and hashed file data
|
|
{"", DeviceFiles::kLicenseStateReleasing, "", "", "", "", "", "", 0, 0, 0,
|
|
"", "", 15,
|
|
a2bs_hex(
|
|
"0AEE150802100122E7150802121408011210303132333435363738394142434445461"
|
|
"A9D0E080112950C0AD70B080112EF090AB002080212103E560EC5335E346F591BC4D0"
|
|
"7A7D5076189EDFB68F05228E023082010A0282010100CC1715C81AD3F6F279C686F82"
|
|
"6E6D7C8961EB13318367D06B4061BBC57E3C616A226A10F042CAD54D44C6484C725CD"
|
|
"721A2A97C088E60AFF0E9C8E03477A1B56B4C555C27CEAF55024375D8D3FB352DA4AA"
|
|
"A2E911C876CB1B36162922E9130CCC5FB72F8DD41D05DE6889C4814A7344BA8C605DE"
|
|
"399CA3CBBF1E7DE3411EDFC60F9D3802C0BEE2B98FB71A5AB9C1A3D53FB55599183B8"
|
|
"4FDDC98AC3096B2EF99C62B545C5DCA3371F4D27DEF2052A23F13DE42DE46B462CED2"
|
|
"ABABB96B610A47E0620AA10D862FEB66BB4F00B13DFE61703AE872F0B4850C39138FC"
|
|
"5DE4538E27BEAC8A48CC9526401BE3B42C7C6C5D9624662081D7A5A1C581EB09619DD"
|
|
"9DD3020301000128800130011280026AB9AC42F1C17C1ECFB710BF2C35383F41CF7EF"
|
|
"AB0DFDCC69090C20DE141CB43055FD707C611CDAEE700076A1EBA32432D5C2B62A73B"
|
|
"8B1672AD2C4303598C02D34823A6BE387046937F55BB65F5B3571FDC6A1F0D9470310"
|
|
"03BA651F8E48BF33D66B7A32A72CAC75EF66EF280B2D4F14FBCA70ECC508091FE83AD"
|
|
"886A680F55AB62F306435BC0043825F6A401BB9C341230127D3298B67F82767050C95"
|
|
"769964B0B5C27A36FA76ED161ABE4B6C18556C807706509A5146ADD958AF79B49EDE4"
|
|
"8CBCD6320C4DEC0BF564C5DD7E7EBA37A4CD1D27F8D80E1B6931C92AC8E5C3BEC0ADA"
|
|
"E621A3B78952485EBFC81A194BA75BBD2C821C28AEB5D21CBE0A270E55E1AB6050AB0"
|
|
"02080112102CE5CCF42200D6B5BCCF33D7CC2D9C7018EAD1B88D05228E023082010A0"
|
|
"282010100BE1B661EEC4700DF4B0C83292D02AE029B8A224DD3048125049F74E30E12"
|
|
"57FC2BE8D9CFAF0BFFCACAF7305351771C78FA451F13AF5EEBFB360941A4396A80583"
|
|
"3730DC6E534C62408B7C5076FC22568021C59ED34F98487196DA32078DAFCA37C7CFB"
|
|
"8E79612FA384963DF2167D5E87305D7BC92D621C10160672C27B9A691B1534F60D78C"
|
|
"5893E40C5FF8A3F9DF8898612E9A5CCB56F4A0CC2A61A7AEB04A9DCC015D9BC37DEF2"
|
|
"AB9EAA9AAFD838869081D9249755F129BB0DBECA3B894975A65A36FD005CE77CD407E"
|
|
"925D3172E33122A11D327968A08F8E771FAEB2540EB52D17C4906405F47C31F60F0AF"
|
|
"6C78AF53291B236E692B506A2AF92AF43E3A81020301000128800130011280033A08A"
|
|
"60418E5C81B8D71A5C0A28C26999FF4FA992E14107CA8A9E6A2B36259834000FE35DC"
|
|
"D814426F9C5D332418ED94C9C0C992217B1B6DC01C99085A3C3956C8267B8773BABCF"
|
|
"3F2C841C67D830F9DBC780DD68BF4E2FE424C6A54123BE4B2A1F7E1F4DB58AB1164DA"
|
|
"E9CF75C3392284A44B8CDB85D837E86C6B908243987E552C8693878C9A1B7BEA37597"
|
|
"83036F1595C406D6CBBA7F8642A9B3B244DAA1F00531D0B908ADE4B533FD9FAFA21D0"
|
|
"FB0C033D2AD5DDF24C60F4FAC30820758877F2E1A78EB44E9336DCFAFDF572BB22A84"
|
|
"A5DEFDF2EB87B61DE26EE9C4CEAA646A2AFDB2BB953845E6D7FE6F79A9501D1C379C9"
|
|
"6961316B5D2A66F38C222091AF74141B6CAF93507485A5D8F82808025451824F00C8B"
|
|
"6A0CD5803F6564584138C8B18BC679B442D837307B5CC90B1FD1FD32288B4A5D18D2D"
|
|
"80E5E6A7A9EFD255B8B363038BCC67AF534EAEE4A5903E304EED4990BB5BE735DB027"
|
|
"A6DE35329D321EC051B956C55A5B11674017517FCC3C7FF7397C13A7B7087A1F6AEC7"
|
|
"F6761A130A0C636F6D70616E795F6E616D6512034C47451A150A0A6D6F64656C5F6E6"
|
|
"16D6512074E6578757320341A200A116172636869746563747572655F6E616D65120B"
|
|
"61726D656162692D7637611A130A0B6465766963655F6E616D6512046D616B6F1A150"
|
|
"A0C70726F647563745F6E616D6512056F6363616D1A440A0A6275696C645F696E666F"
|
|
"1236676F6F676C652F6F6363616D2F6D616B6F3A342E332F4A425F4D52322F3731343"
|
|
"239313A7573657264656275672F6465762D6B6579731A210A096465766963655F6964"
|
|
"12144C474D433230313231303035303036333932373812250A230A140801121030313"
|
|
"23334353637383941424344454610021A09393837363534333231180120002A0C3330"
|
|
"3738303630323034000030151A8002B5CA9C6B097EF2CBE2F8136C761130F3456ED70"
|
|
"6127260151B4FF044DE233C1828B8618A312C031A2F844BEF0917F9B8C6B8993A5D33"
|
|
"E24B57B672A6C79D93EC98C46C5263EB8195FF7A5EBEBA08A6F1080C19340A068E575"
|
|
"568AE5EBADDD638FB435AC3EEC901E5F250BC974C498D6378C8BC1F4BACCED5725B8B"
|
|
"77160444923DA3B729DCB681186565B49EEFFE27CF1631F09EC31E543AAFE9F5996FB"
|
|
"0BEAA5F80305D67ECF173A8BD4A3B2CC75CEC3AA5881FF433E80838E1E1FA23CE7F22"
|
|
"346DDDF7FEC3DB0CE2C3F845CF9471088A022C8D0A63860764AE558BD0B5F66D78881"
|
|
"ADBF2D398F9BA349EFB2532C61E243DD45BB11C99422D13A82B7AAE967122F6040802"
|
|
"12CC020A190A09393837363534333231120892BE96420F0D5BF320022800124108011"
|
|
"801301E4239687474703A2F2F6B69723033666370673137342E7769646576696E652E"
|
|
"6E65742F7769646576696E652F6367692D62696E2F64726D2E6367691A661210BB2E2"
|
|
"D2B9C39697794897E08262749B41A50C0DED62431B1701F59E076E07EB0D2D43AEC6C"
|
|
"589B35790739EB0B0ED47236D0ECCE9A5408BE5F46F412334A5F4A4E3E493F202A263"
|
|
"E185F06AE37BA4351647BB9E6C997189FE1A03DCBF3FC90F46E5120011A7E0A103031"
|
|
"32333435363738394142434445461210319D7FB66154DFEC2AEDB164F29AAC301A207"
|
|
"448440734605CB29424FD1DA435A405DEE837757EA6A68C633A65228317843D200242"
|
|
"340A207F287706380C8085A4E5F85843D1C3B379F9CE19ED5A2DAAF476B8AFE10488B"
|
|
"F12100C8CDB1DA4C9FEBE5BBB530FE0D3DA8720F4DFB68F051A20F4BCCEEEA658C5DD"
|
|
"18D7B841E6D8991E616B57B592C44ED67050939B136815272280025CD92AB4672778C"
|
|
"B865D528A2EAAAD06435AE9186F1C159AFA1689473C4D8C8A5B8C64400CBBD0A02659"
|
|
"EA0271A1F40052030CA285B9C7211791BDD72193D5E01CEE43B0482DEAF034C8E9BD8"
|
|
"8C7331BFA5CD71C2A3062EBD07CE1C80CCF3C5D7EC2D921D1BC5414D7970CB098889D"
|
|
"3FB5BF669EE5283E009CDCC880E79C77A21B12C7C0B8062D66CBDEC2DCFD23885144C"
|
|
"776B98C8A7A176C4EA183085EF02D2060904ADA3CB161F4D198A0279DA19D7001EB2D"
|
|
"20C70ABAA04B3760CB165006F6CBA4BE0A2628C0C8398C122FF0DCF9292590E3C37BC"
|
|
"7DB20F3B0921268F41FE76BD3EE764EBA13A22FDABC170860503FB93CC4A08D611025"
|
|
"19D56A25EB9E302A5708011231121D1A1B0A190A09393837363534333231120892BE9"
|
|
"6420F0D5BF32002280018022A0C31393132353333373731000030151A20F4FDBECE54"
|
|
"7252D12BB9D488DAD50C76577A2FBCCC73F36D3C6B35096B8A3DC632610802123B0A1"
|
|
"90A09393837363534333231120892BE96420F0D5BF32002280112001A16200342120A"
|
|
"106B63746C0000000071FEF30B0000000020F4DFB68F051A2000351030900858FCFD6"
|
|
"977B67803ADFD1280AA661E6B0BD30B08B2C4673551293A2E68747470733A2F2F7465"
|
|
"73742E676F6F676C652E636F6D2F6C6963656E73652F47657443656E634C6963656E7"
|
|
"36540EF9BAFCDF8ACD1910148DCFDAFCDF8ACD1910158006230000102030405060708"
|
|
"090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2"
|
|
"B2C2D2E2F680F12202F5B77A3168AC2A81832231A435D0587F6D1DF3B905A7058C5E8"
|
|
"565C81B96CA6")}};
|
|
|
|
// Application parameters were added to the License message. This data
|
|
// is used to verify that a License saved without application parameters can
|
|
// be read out correctly by an updated version of the CDM.
|
|
LicenseInfo license_app_parameters_backwards_compatibility_test_data = {
|
|
|
|
"ksid54C57C966E23CEF5", DeviceFiles::kLicenseStateActive,
|
|
a2bs_hex("0801121030313233343536373839414243444546"),
|
|
a2bs_hex(
|
|
"080112950C0AD70B080112EF090AB002080212103E560EC5335E346F591B"
|
|
"C4D07A7D507618A5D3A68F05228E023082010A0282010100A947904B8DBD"
|
|
"55FB685FDB3025574517CCCC74EE4FEAF6629D5179A52FF85CE7409528EF"
|
|
"FA0E5DFC3DE9A34BA5F08BE349553C319A9FB274905A8770ADC9CA4A2CBC"
|
|
"D8E556A1587FA18BFD4D286C644A6904F19EAAFBDFADD3B371B306D0B289"
|
|
"F459B491C814B5AD1F747610E990A60248A7DA5152F1CCFC047EF4230013"
|
|
"1F9C4758F4D9F30579393B860AAD9AD2EE43D721D6DB9F5800EF188386B9"
|
|
"4825AE05A883AC976D6970DF43EA6C83B86CE6D0F540207725B9890FCCEC"
|
|
"83A49027872DAFD2740B7748E9C3B1752D6F12859CED07E8882969B433EC"
|
|
"66F17FFC29AC6FDBEA79230B0FAED5D94CF6B829A420BBE3270323941776"
|
|
"EE60DD6BFD660BDDCA870203010001288001300112800250D1F8B1ECF849"
|
|
"B60FF93E37C4DEEF09E6FFB10BCFC996A4A24B7AA96928835ED5A72E1584"
|
|
"6D0A14015733239BD8B6E6D5E5D229B08394CE1E0692C159C44337CA7CAF"
|
|
"88476449B068D9D2FADED8EB1BC0F4B8F0FCAF293E8690E7403209534180"
|
|
"3408A0E8279E545945EE97838FDE7812F7171C3CC4F5ECF9418BBF1D336C"
|
|
"E58F4CBB1B44D4ADE6BF3364BAE7EC093281846E569E13E7719014030A60"
|
|
"59044FE7BBFF3E8F5723AEDD54DC6E0D041B309D7700B55575690E95CE60"
|
|
"85D0914F991C5F45E98CBB9C45BA33F47FD0862EBCC7EEBA8E60643C86E8"
|
|
"5476B18AEF8DE871571A75681A75F75028A5B58751C09A5296AAE99CEDCD"
|
|
"9785E9E2103240D40A1AB6050AB002080112102CE5CCF42200D6B5BCCF33"
|
|
"D7CC2D9C7018EAD1B88D05228E023082010A0282010100BE1B661EEC4700"
|
|
"DF4B0C83292D02AE029B8A224DD3048125049F74E30E1257FC2BE8D9CFAF"
|
|
"0BFFCACAF7305351771C78FA451F13AF5EEBFB360941A4396A805833730D"
|
|
"C6E534C62408B7C5076FC22568021C59ED34F98487196DA32078DAFCA37C"
|
|
"7CFB8E79612FA384963DF2167D5E87305D7BC92D621C10160672C27B9A69"
|
|
"1B1534F60D78C5893E40C5FF8A3F9DF8898612E9A5CCB56F4A0CC2A61A7A"
|
|
"EB04A9DCC015D9BC37DEF2AB9EAA9AAFD838869081D9249755F129BB0DBE"
|
|
"CA3B894975A65A36FD005CE77CD407E925D3172E33122A11D327968A08F8"
|
|
"E771FAEB2540EB52D17C4906405F47C31F60F0AF6C78AF53291B236E692B"
|
|
"506A2AF92AF43E3A81020301000128800130011280033A08A60418E5C81B"
|
|
"8D71A5C0A28C26999FF4FA992E14107CA8A9E6A2B36259834000FE35DCD8"
|
|
"14426F9C5D332418ED94C9C0C992217B1B6DC01C99085A3C3956C8267B87"
|
|
"73BABCF3F2C841C67D830F9DBC780DD68BF4E2FE424C6A54123BE4B2A1F7"
|
|
"E1F4DB58AB1164DAE9CF75C3392284A44B8CDB85D837E86C6B908243987E"
|
|
"552C8693878C9A1B7BEA3759783036F1595C406D6CBBA7F8642A9B3B244D"
|
|
"AA1F00531D0B908ADE4B533FD9FAFA21D0FB0C033D2AD5DDF24C60F4FAC3"
|
|
"0820758877F2E1A78EB44E9336DCFAFDF572BB22A84A5DEFDF2EB87B61DE"
|
|
"26EE9C4CEAA646A2AFDB2BB953845E6D7FE6F79A9501D1C379C96961316B"
|
|
"5D2A66F38C222091AF74141B6CAF93507485A5D8F82808025451824F00C8"
|
|
"B6A0CD5803F6564584138C8B18BC679B442D837307B5CC90B1FD1FD32288"
|
|
"B4A5D18D2D80E5E6A7A9EFD255B8B363038BCC67AF534EAEE4A5903E304E"
|
|
"ED4990BB5BE735DB027A6DE35329D321EC051B956C55A5B11674017517FC"
|
|
"C3C7FF7397C13A7B7087A1F6AEC7F6761A130A0C636F6D70616E795F6E61"
|
|
"6D6512034C47451A150A0A6D6F64656C5F6E616D6512074E657875732034"
|
|
"1A200A116172636869746563747572655F6E616D65120B61726D65616269"
|
|
"2D7637611A130A0B6465766963655F6E616D6512046D616B6F1A150A0C70"
|
|
"726F647563745F6E616D6512056F6363616D1A440A0A6275696C645F696E"
|
|
"666F1236676F6F676C652F6F6363616D2F6D616B6F3A342E332F4A425F4D"
|
|
"52322F3731343239313A7573657264656275672F6465762D6B6579731A21"
|
|
"0A096465766963655F696412144C474D4332303132313030353030363339"
|
|
"32373812250A230A14080112103031323334353637383941424344454610"
|
|
"021A09393837363534333231180120002A0C333934303739343733370000"
|
|
"30151A8002734FBDED946EB74A1B61811C4C4A491214F6BEA125A80F0141"
|
|
"65B28AA97AD0AF60E4D129EB7F424AD659F24E5EED4B702BEE328E38B72C"
|
|
"A6F38CD0ECFD2E6D7B98147744C9B8A9610B3BDFE17675FF7D584C5BF680"
|
|
"64B0FE513FC322C9148795E4C2F2443C3024F5C1F29E6FEFB6D77005DAB2"
|
|
"2CD2B63131908DE4D88795BB931CEA38452CC568BE25032245E372F07A12"
|
|
"97F51748C7EA02F2C88360AFE7ABBC71DCDD5366126258E5AFA27C2A20B3"
|
|
"39FA1E7AE925B494B361F6F7116F20BE8EE6E446146027F4FD4300F4A0B0"
|
|
"A3361EE34925F338D0AACF20AE919B4BAE81C1D57A8D2B8FA38732A57697"
|
|
"C316C180717C182A971C94E4AC4C7DF8F161CB8CC1"),
|
|
a2bs_hex(
|
|
"080212CC020A190A0939383736353433323112084B9F26DAB8B06E112002"
|
|
"2800124108011801301E4239687474703A2F2F6B69723033666370673137"
|
|
"342E7769646576696E652E6E65742F7769646576696E652F6367692D6269"
|
|
"6E2F64726D2E6367691A6612102531DFD6CCEA511D00F8C0172F1189AA1A"
|
|
"5057FF9D9DBD5A205B1DEB075E4A90467C1E074CDE6071BFF831AD590BD5"
|
|
"D117614F33CE2C3CE1824FC0D54B36ECEAE58DF5C8F9347C2FEED17A3327"
|
|
"E8F52B8ECA6313A1FA6A042EB9525DD328113C05F920011A7E0A10303132"
|
|
"3334353637383941424344454612106D23622142B58F6D1EDD33AF3ECD2C"
|
|
"7E1A20884EE13BEA9DECDDBF68B532131C82B11CEC4D23C7FA9F3EF4C5EE"
|
|
"172E7C9736200242340A2050BFE71BB1BA683E35E0B49BB33048E5103FBB"
|
|
"B9C3E1CD6EBCDA7DD485DBAF431210D69D6F14C95CB6CFDB998E50D00F4D"
|
|
"A020DBDFA68F051A20AE5D6895E70F86F42F5FE3C58A505A865D05AB94B1"
|
|
"ABAA6CC59C3322F61C458D228002331F2BE95B5C796E0921CC27A7295501"
|
|
"DA10044E5CA36C0E2866FF068EA3515A6786BD5D60D74D80C6BA8BE6AAD0"
|
|
"85AF967909A143171E9CDDE36EA528402867CD04FB6F97A150CDE55F9B81"
|
|
"9F4104BEF48E4280D76645569E10AEF524D34D865B5B9E3EBC66C45EEBBE"
|
|
"16AB04493E7AEC4F99E7A99F3FC08FA431BECCC1978A079FA4801DB75E13"
|
|
"29A9921604E6F80CB148AA2DD5C8348057E9F4FC2AEA57EA4D215D0A8D48"
|
|
"6294860DFB4F4C42D57D9542B76179E179DD4AA23F9F7B2AE432B39E4CE8"
|
|
"F156E84877DDA781AAAAFC797FF75AFE2019ADC3A2E419BF0253C705BD47"
|
|
"97A96866AC4C059AD8F2E9C6B617C60C6ADCDB894C25F0C7D29252F52FD5"),
|
|
a2bs_hex(
|
|
"08011231121D1A1B0A190A0939383736353433323112084B9F26DAB8B06E"
|
|
"112002280018022A0C31353532333030360000000030151A20C30375683C"
|
|
"4D2033E05DCC95DDFB278CFB5125A021C3C043A16ACC933A768A27"),
|
|
a2bs_hex(
|
|
"0802123B0A190A0939383736353433323112084B9F26DAB8B06E11200228"
|
|
"0112001A16200342120A106B63746C0000000000ECDCBE0000000020DBDF"
|
|
"A68F051A20182F029E35047A3841FA176C74E5B387350E8D58DEA6878FF0"
|
|
"BEA6CABACA1C2C"),
|
|
"https://test.google.com/license/GetCencLicense", 0x0, 0x0, 0x0, "", "", 0,
|
|
a2bs_hex(
|
|
"0AA8150802100122A1150801121408011210303132333435363738394142434445461"
|
|
"A9D0E080112950C0AD70B080112EF090AB002080212103E560EC5335E346F591BC4D0"
|
|
"7A7D507618A5D3A68F05228E023082010A0282010100A947904B8DBD55FB685FDB302"
|
|
"5574517CCCC74EE4FEAF6629D5179A52FF85CE7409528EFFA0E5DFC3DE9A34BA5F08B"
|
|
"E349553C319A9FB274905A8770ADC9CA4A2CBCD8E556A1587FA18BFD4D286C644A690"
|
|
"4F19EAAFBDFADD3B371B306D0B289F459B491C814B5AD1F747610E990A60248A7DA51"
|
|
"52F1CCFC047EF42300131F9C4758F4D9F30579393B860AAD9AD2EE43D721D6DB9F580"
|
|
"0EF188386B94825AE05A883AC976D6970DF43EA6C83B86CE6D0F540207725B9890FCC"
|
|
"EC83A49027872DAFD2740B7748E9C3B1752D6F12859CED07E8882969B433EC66F17FF"
|
|
"C29AC6FDBEA79230B0FAED5D94CF6B829A420BBE3270323941776EE60DD6BFD660BDD"
|
|
"CA870203010001288001300112800250D1F8B1ECF849B60FF93E37C4DEEF09E6FFB10"
|
|
"BCFC996A4A24B7AA96928835ED5A72E15846D0A14015733239BD8B6E6D5E5D229B083"
|
|
"94CE1E0692C159C44337CA7CAF88476449B068D9D2FADED8EB1BC0F4B8F0FCAF293E8"
|
|
"690E74032095341803408A0E8279E545945EE97838FDE7812F7171C3CC4F5ECF9418B"
|
|
"BF1D336CE58F4CBB1B44D4ADE6BF3364BAE7EC093281846E569E13E7719014030A605"
|
|
"9044FE7BBFF3E8F5723AEDD54DC6E0D041B309D7700B55575690E95CE6085D0914F99"
|
|
"1C5F45E98CBB9C45BA33F47FD0862EBCC7EEBA8E60643C86E85476B18AEF8DE871571"
|
|
"A75681A75F75028A5B58751C09A5296AAE99CEDCD9785E9E2103240D40A1AB6050AB0"
|
|
"02080112102CE5CCF42200D6B5BCCF33D7CC2D9C7018EAD1B88D05228E023082010A0"
|
|
"282010100BE1B661EEC4700DF4B0C83292D02AE029B8A224DD3048125049F74E30E12"
|
|
"57FC2BE8D9CFAF0BFFCACAF7305351771C78FA451F13AF5EEBFB360941A4396A80583"
|
|
"3730DC6E534C62408B7C5076FC22568021C59ED34F98487196DA32078DAFCA37C7CFB"
|
|
"8E79612FA384963DF2167D5E87305D7BC92D621C10160672C27B9A691B1534F60D78C"
|
|
"5893E40C5FF8A3F9DF8898612E9A5CCB56F4A0CC2A61A7AEB04A9DCC015D9BC37DEF2"
|
|
"AB9EAA9AAFD838869081D9249755F129BB0DBECA3B894975A65A36FD005CE77CD407E"
|
|
"925D3172E33122A11D327968A08F8E771FAEB2540EB52D17C4906405F47C31F60F0AF"
|
|
"6C78AF53291B236E692B506A2AF92AF43E3A81020301000128800130011280033A08A"
|
|
"60418E5C81B8D71A5C0A28C26999FF4FA992E14107CA8A9E6A2B36259834000FE35DC"
|
|
"D814426F9C5D332418ED94C9C0C992217B1B6DC01C99085A3C3956C8267B8773BABCF"
|
|
"3F2C841C67D830F9DBC780DD68BF4E2FE424C6A54123BE4B2A1F7E1F4DB58AB1164DA"
|
|
"E9CF75C3392284A44B8CDB85D837E86C6B908243987E552C8693878C9A1B7BEA37597"
|
|
"83036F1595C406D6CBBA7F8642A9B3B244DAA1F00531D0B908ADE4B533FD9FAFA21D0"
|
|
"FB0C033D2AD5DDF24C60F4FAC30820758877F2E1A78EB44E9336DCFAFDF572BB22A84"
|
|
"A5DEFDF2EB87B61DE26EE9C4CEAA646A2AFDB2BB953845E6D7FE6F79A9501D1C379C9"
|
|
"6961316B5D2A66F38C222091AF74141B6CAF93507485A5D8F82808025451824F00C8B"
|
|
"6A0CD5803F6564584138C8B18BC679B442D837307B5CC90B1FD1FD32288B4A5D18D2D"
|
|
"80E5E6A7A9EFD255B8B363038BCC67AF534EAEE4A5903E304EED4990BB5BE735DB027"
|
|
"A6DE35329D321EC051B956C55A5B11674017517FCC3C7FF7397C13A7B7087A1F6AEC7"
|
|
"F6761A130A0C636F6D70616E795F6E616D6512034C47451A150A0A6D6F64656C5F6E6"
|
|
"16D6512074E6578757320341A200A116172636869746563747572655F6E616D65120B"
|
|
"61726D656162692D7637611A130A0B6465766963655F6E616D6512046D616B6F1A150"
|
|
"A0C70726F647563745F6E616D6512056F6363616D1A440A0A6275696C645F696E666F"
|
|
"1236676F6F676C652F6F6363616D2F6D616B6F3A342E332F4A425F4D52322F3731343"
|
|
"239313A7573657264656275672F6465762D6B6579731A210A096465766963655F6964"
|
|
"12144C474D433230313231303035303036333932373812250A230A140801121030313"
|
|
"23334353637383941424344454610021A09393837363534333231180120002A0C3339"
|
|
"3430373934373337000030151A8002734FBDED946EB74A1B61811C4C4A491214F6BEA"
|
|
"125A80F014165B28AA97AD0AF60E4D129EB7F424AD659F24E5EED4B702BEE328E38B7"
|
|
"2CA6F38CD0ECFD2E6D7B98147744C9B8A9610B3BDFE17675FF7D584C5BF68064B0FE5"
|
|
"13FC322C9148795E4C2F2443C3024F5C1F29E6FEFB6D77005DAB22CD2B63131908DE4"
|
|
"D88795BB931CEA38452CC568BE25032245E372F07A1297F51748C7EA02F2C88360AFE"
|
|
"7ABBC71DCDD5366126258E5AFA27C2A20B339FA1E7AE925B494B361F6F7116F20BE8E"
|
|
"E6E446146027F4FD4300F4A0B0A3361EE34925F338D0AACF20AE919B4BAE81C1D57A8"
|
|
"D2B8FA38732A57697C316C180717C182A971C94E4AC4C7DF8F161CB8CC122F6040802"
|
|
"12CC020A190A0939383736353433323112084B9F26DAB8B06E1120022800124108011"
|
|
"801301E4239687474703A2F2F6B69723033666370673137342E7769646576696E652E"
|
|
"6E65742F7769646576696E652F6367692D62696E2F64726D2E6367691A6612102531D"
|
|
"FD6CCEA511D00F8C0172F1189AA1A5057FF9D9DBD5A205B1DEB075E4A90467C1E074C"
|
|
"DE6071BFF831AD590BD5D117614F33CE2C3CE1824FC0D54B36ECEAE58DF5C8F9347C2"
|
|
"FEED17A3327E8F52B8ECA6313A1FA6A042EB9525DD328113C05F920011A7E0A103031"
|
|
"323334353637383941424344454612106D23622142B58F6D1EDD33AF3ECD2C7E1A208"
|
|
"84EE13BEA9DECDDBF68B532131C82B11CEC4D23C7FA9F3EF4C5EE172E7C9736200242"
|
|
"340A2050BFE71BB1BA683E35E0B49BB33048E5103FBBB9C3E1CD6EBCDA7DD485DBAF4"
|
|
"31210D69D6F14C95CB6CFDB998E50D00F4DA020DBDFA68F051A20AE5D6895E70F86F4"
|
|
"2F5FE3C58A505A865D05AB94B1ABAA6CC59C3322F61C458D228002331F2BE95B5C796"
|
|
"E0921CC27A7295501DA10044E5CA36C0E2866FF068EA3515A6786BD5D60D74D80C6BA"
|
|
"8BE6AAD085AF967909A143171E9CDDE36EA528402867CD04FB6F97A150CDE55F9B819"
|
|
"F4104BEF48E4280D76645569E10AEF524D34D865B5B9E3EBC66C45EEBBE16AB04493E"
|
|
"7AEC4F99E7A99F3FC08FA431BECCC1978A079FA4801DB75E1329A9921604E6F80CB14"
|
|
"8AA2DD5C8348057E9F4FC2AEA57EA4D215D0A8D486294860DFB4F4C42D57D9542B761"
|
|
"79E179DD4AA23F9F7B2AE432B39E4CE8F156E84877DDA781AAAAFC797FF75AFE2019A"
|
|
"DC3A2E419BF0253C705BD4797A96866AC4C059AD8F2E9C6B617C60C6ADCDB894C25F0"
|
|
"C7D29252F52FD52A5708011231121D1A1B0A190A0939383736353433323112084B9F2"
|
|
"6DAB8B06E112002280018022A0C31353532333030360000000030151A20C30375683C"
|
|
"4D2033E05DCC95DDFB278CFB5125A021C3C043A16ACC933A768A2732610802123B0A1"
|
|
"90A0939383736353433323112084B9F26DAB8B06E112002280112001A16200342120A"
|
|
"106B63746C0000000000ECDCBE0000000020DBDFA68F051A20182F029E35047A3841F"
|
|
"A176C74E5B387350E8D58DEA6878FF0BEA6CABACA1C2C3A2E68747470733A2F2F7465"
|
|
"73742E676F6F676C652E636F6D2F6C6963656E73652F47657443656E634C6963656E7"
|
|
"365400048001220CD0599C2B85D9F2D573AC7893CE77CB5A10B326828BA8C89047505"
|
|
"A8C9B606AC")};
|
|
|
|
struct DeviceFilesTestListUsageInfoData {
|
|
std::string file_name;
|
|
bool is_usage_info_file;
|
|
};
|
|
|
|
DeviceFilesTestListUsageInfoData kTestListUsageInfoData[] = {
|
|
{"ksid056fe6e9c.lic", false}, {"usage.bin", true},
|
|
{"cert.bin", false}, {"usage345agdf==.bin", true},
|
|
{"usageyd6e.lic", false}, {"usgtable.bin", false},
|
|
{"usaget3ED.bin", true},
|
|
};
|
|
|
|
struct UsageInfo {
|
|
std::string app_id;
|
|
DeviceFiles::CdmUsageData usage_data;
|
|
std::string file_data;
|
|
};
|
|
|
|
std::string kEmptyUsageInfoFileData = a2bs_hex(
|
|
"0A06080310012A001220468A9A97B23D0E17147416276CB133175F0A18534155C6FFEF024A"
|
|
"D80371D7C4");
|
|
|
|
UsageInfo kUsageInfoTestData[] = {
|
|
// test vector 0, app id: "", usage entry 0
|
|
{"",
|
|
{
|
|
a2bs_hex("b8e7f26b6b8b59babf05b5a1f8927b412a85bc8551a928f00856329814ae"
|
|
"5a82"),
|
|
a2bs_hex("4463dc57079c27e34ae115c6f65b08f6311c4ea604a6512c42470b6f692a"
|
|
"76ea769d60d0b6bcf8d565ef31eb925f38e2095039c9f2f113ecee020f11"
|
|
"26eb30165372d538b551ebd7bae5cf0bbeebb3cdb6f180d42868051aab8f"
|
|
"f4947460dd96f0f8259fc6001059c998d2eb6902c064f9ae08e6cd3c7807"
|
|
"e50379507b41620d15dd76c0b1e7ed9417efd6825959b5077f464e6429a4"
|
|
"dee467a1ba2b05d38049912d5539f1ee9f5d8a569aa1c384384f847ed64f"
|
|
"6ffc101036da70e69c06e4916493e82e9fe3f65d85254c8c14f6ca0579bf"
|
|
"b3eaa86b2d7bb5ff572eccfd70f2ea4695f326beadf241ae4311e428c7c1"
|
|
"2a0d4d1915cd0537ff0f62cf13eb2fa2"),
|
|
a2bs_hex(
|
|
"bbe6b4b60da9d9bc34dcc8502fb81d8fd5fdbc8fa89605c86205f2b8c6530ff64"
|
|
"c8c31f579bd8eca603dfd5e397ac35e48931fd330351d01361bb31caaa7dbf816"
|
|
"a6144a12b6c22d1dceba20669ed635a40831066abd8071342119d7da11c43696b"
|
|
"2898d3df3b36beb8da013d9dc145343494b19d6da085f4a41e421d3def2ad8b72"
|
|
"dffffb6e79bbceaf8594045d16a62eed16904a3569860c531a32eaa5abb868b1d"
|
|
"d6a0b03d69c1a3f8336af80eb80badbbc7b80ca5943bd5b374302147052201fae"
|
|
"d30e9ffa99fc00b47f7eeb469512a413e873f91d959cccacccd3585b7f00ed8d4"
|
|
"685022101713c3adc439f27512a45926c1d2473477662c4bace72f380d105ddc9"
|
|
"f7be49ed71991b3d9e29a2038201373f98a845a57624a692f44ebd316d26c48fe"
|
|
"e82b655583317eca4aaa4dac841524a2dca111749629637ef29fa7e72645a8759"
|
|
"57fb3d98a5e6c8065b1349cfa23011cd6349d911c535475fed50be9eacb6a1ff3"
|
|
"ea7458823f0229f2fa90b7a7099e8ec349d3d0fe0277cba5157ca62c8fbaa893f"
|
|
"37b8c8cea2a0d2d2912caccf92d31aa17439479711b4a5b77445cc02c18bfe019"
|
|
"5ce8f1fe59e317214005cee5e25904c9fb0af7e2b6b4dccdf78e61e179a9f9399"
|
|
"6ec3c76f6da9b5a291bf08a73032b37edcbbbdd20cff94088a489167c56e5e75b"
|
|
"376874e9750212fe94d7656d9cd835db3b771ba5b58d2b255"),
|
|
"ksid854c8a60a5a547e122c24fca",
|
|
a2bs_hex("7d2b905e5eafd4b28aeeb7633283579e48add21a68eb26cc8c3b2e344579"
|
|
"003b12a38554336305525fa6ab70f024a18c73631bb1531eca3f0782c72d"
|
|
"ba017311b3f1e98c739632e305e4bc0b2561ae2b"),
|
|
5,
|
|
},
|
|
a2bs_hex(
|
|
"0AA407080310012A9D070A9A070A20B8E7F26B6B8B59BABF05B5A1F8927B412A85BC8"
|
|
"551A928F00856329814AE5A821280024463DC57079C27E34AE115C6F65B08F6311C4E"
|
|
"A604A6512C42470B6F692A76EA769D60D0B6BCF8D565EF31EB925F38E2095039C9F2F"
|
|
"113ECEE020F1126EB30165372D538B551EBD7BAE5CF0BBEEBB3CDB6F180D42868051A"
|
|
"AB8FF4947460DD96F0F8259FC6001059C998D2EB6902C064F9AE08E6CD3C7807E5037"
|
|
"9507B41620D15DD76C0B1E7ED9417EFD6825959B5077F464E6429A4DEE467A1BA2B05"
|
|
"D38049912D5539F1EE9F5D8A569AA1C384384F847ED64F6FFC101036DA70E69C06E49"
|
|
"16493E82E9FE3F65D85254C8C14F6CA0579BFB3EAA86B2D7BB5FF572ECCFD70F2EA46"
|
|
"95F326BEADF241AE4311E428C7C12A0D4D1915CD0537FF0F62CF13EB2FA21A8004BBE"
|
|
"6B4B60DA9D9BC34DCC8502FB81D8FD5FDBC8FA89605C86205F2B8C6530FF64C8C31F5"
|
|
"79BD8ECA603DFD5E397AC35E48931FD330351D01361BB31CAAA7DBF816A6144A12B6C"
|
|
"22D1DCEBA20669ED635A40831066ABD8071342119D7DA11C43696B2898D3DF3B36BEB"
|
|
"8DA013D9DC145343494B19D6DA085F4A41E421D3DEF2AD8B72DFFFFB6E79BBCEAF859"
|
|
"4045D16A62EED16904A3569860C531A32EAA5ABB868B1DD6A0B03D69C1A3F8336AF80"
|
|
"EB80BADBBC7B80CA5943BD5B374302147052201FAED30E9FFA99FC00B47F7EEB46951"
|
|
"2A413E873F91D959CCCACCCD3585B7F00ED8D4685022101713C3ADC439F27512A4592"
|
|
"6C1D2473477662C4BACE72F380D105DDC9F7BE49ED71991B3D9E29A2038201373F98A"
|
|
"845A57624A692F44EBD316D26C48FEE82B655583317ECA4AAA4DAC841524A2DCA1117"
|
|
"49629637EF29FA7E72645A875957FB3D98A5E6C8065B1349CFA23011CD6349D911C53"
|
|
"5475FED50BE9EACB6A1FF3EA7458823F0229F2FA90B7A7099E8EC349D3D0FE0277CBA"
|
|
"5157CA62C8FBAA893F37B8C8CEA2A0D2D2912CACCF92D31AA17439479711B4A5B7744"
|
|
"5CC02C18BFE0195CE8F1FE59E317214005CEE5E25904C9FB0AF7E2B6B4DCCDF78E61E"
|
|
"179A9F93996EC3C76F6DA9B5A291BF08A73032B37EDCBBBDD20CFF94088A489167C56"
|
|
"E5E75B376874E9750212FE94D7656D9CD835DB3B771BA5B58D2B255221C6B73696438"
|
|
"35346338613630613561353437653132326332346663612A507D2B905E5EAFD4B28AE"
|
|
"EB7633283579E48ADD21A68EB26CC8C3B2E344579003B12A38554336305525FA6AB70"
|
|
"F024A18C73631BB1531ECA3F0782C72DBA017311B3F1E98C739632E305E4BC0B2561A"
|
|
"E2B30051220BCA71B49A97A2CFD5A3C4619807FE9EFCB68F9C69C4D63254FF10B22F1"
|
|
"13FA82")},
|
|
// test vector 1, app id: "", usage entry 1
|
|
{"",
|
|
{
|
|
a2bs_hex("5d637be37a9722aa35c23d346470851aca7d2edcd1a27edf124ea6"),
|
|
a2bs_hex("bc96d6878e3086c33624821f1f3ece23f27e58222c2bb8d1615476a11792"
|
|
"63b58f6427e92911d961fc7a3afd947aed8c9aead1f08457925d2ce4e0f6"
|
|
"18b21942baa60b231eae864048f94f74ffa700e5777f812adb6f0cb6ba6f"
|
|
"0d145e3951191eb217140c32f2c7565053222131ff823bc36d80b24b561c"
|
|
"cbea9d397fe00942e7ff73b8152cdc083b63a9f9c4a77056a0d79f44f267"
|
|
"da0ed629d9c902f7e838957ea41aa442221c3aa9410db58302b468c6d7f2"
|
|
"113663809f0dcf187c108ced"),
|
|
a2bs_hex("f6fb3693413cc1d7d5e3459b856e4156c78f8d85d548939fd00474c8cded"
|
|
"c46835cc981758500fe61cc79383b4d9f87c3e33d19c2d25d7d15dd0f3d2"
|
|
"b1af4583b71e90c59886d297e78e929c2f3840c82c626914a4eb537b3a51"
|
|
"61d963472b6592c0fa1e415556bc009c2da22bcf743ac434e22f8a33b432"
|
|
"10dfd8aa09fe86105610f366e6fb7da18996cf7c7db425a9bb50e4a13190"
|
|
"a680b9f82d37d09658585abe3bf9f009a5c1ce38a7cefe17f71fb402768b"
|
|
"2d66b4ca523ed06729349695d7864d7cf7a1cc11d0da2b8a43db834d10b4"
|
|
"7d9579ec9e46986a133277b92c636cb2a6a823afe73317266c9c0601ddba"
|
|
"db76e1d254d6183b93a1ea91a7e6c567331b3ee3a5ab1484af91fd0f8dac"
|
|
"5fd980a67d8f33cc1d6cf20ee4c24582d03967ed48b6f28e7514e4d18f38"
|
|
"c8cb1e54fba59af7d6a79c6c5a7ab06baac964c7958d201910adca018022"
|
|
"fbeb8535b64f5ce83d3c"),
|
|
"ksid2f2e85ce8a677f60047d7024e07b5ae6",
|
|
a2bs_hex("b74880fbddc5bb9db82f09bc7de3ffd95a0a671b979d4c1f0564eaf63eb6"
|
|
"b5a8c3f16d9f964afbd011e2326f9c27afbe74536f3f0601a71d9c1c422f"
|
|
"335611bf3bf1a1c89e2dea27c17a9d9a58a74121e840b002e8a6fb590072"
|
|
"45be786c1f64"),
|
|
9,
|
|
},
|
|
a2bs_hex(
|
|
"0AE80C080310012AE10C0A9A070A20B8E7F26B6B8B59BABF05B5A1F8927B412A85BC8"
|
|
"551A928F00856329814AE5A821280024463DC57079C27E34AE115C6F65B08F6311C4E"
|
|
"A604A6512C42470B6F692A76EA769D60D0B6BCF8D565EF31EB925F38E2095039C9F2F"
|
|
"113ECEE020F1126EB30165372D538B551EBD7BAE5CF0BBEEBB3CDB6F180D42868051A"
|
|
"AB8FF4947460DD96F0F8259FC6001059C998D2EB6902C064F9AE08E6CD3C7807E5037"
|
|
"9507B41620D15DD76C0B1E7ED9417EFD6825959B5077F464E6429A4DEE467A1BA2B05"
|
|
"D38049912D5539F1EE9F5D8A569AA1C384384F847ED64F6FFC101036DA70E69C06E49"
|
|
"16493E82E9FE3F65D85254C8C14F6CA0579BFB3EAA86B2D7BB5FF572ECCFD70F2EA46"
|
|
"95F326BEADF241AE4311E428C7C12A0D4D1915CD0537FF0F62CF13EB2FA21A8004BBE"
|
|
"6B4B60DA9D9BC34DCC8502FB81D8FD5FDBC8FA89605C86205F2B8C6530FF64C8C31F5"
|
|
"79BD8ECA603DFD5E397AC35E48931FD330351D01361BB31CAAA7DBF816A6144A12B6C"
|
|
"22D1DCEBA20669ED635A40831066ABD8071342119D7DA11C43696B2898D3DF3B36BEB"
|
|
"8DA013D9DC145343494B19D6DA085F4A41E421D3DEF2AD8B72DFFFFB6E79BBCEAF859"
|
|
"4045D16A62EED16904A3569860C531A32EAA5ABB868B1DD6A0B03D69C1A3F8336AF80"
|
|
"EB80BADBBC7B80CA5943BD5B374302147052201FAED30E9FFA99FC00B47F7EEB46951"
|
|
"2A413E873F91D959CCCACCCD3585B7F00ED8D4685022101713C3ADC439F27512A4592"
|
|
"6C1D2473477662C4BACE72F380D105DDC9F7BE49ED71991B3D9E29A2038201373F98A"
|
|
"845A57624A692F44EBD316D26C48FEE82B655583317ECA4AAA4DAC841524A2DCA1117"
|
|
"49629637EF29FA7E72645A875957FB3D98A5E6C8065B1349CFA23011CD6349D911C53"
|
|
"5475FED50BE9EACB6A1FF3EA7458823F0229F2FA90B7A7099E8EC349D3D0FE0277CBA"
|
|
"5157CA62C8FBAA893F37B8C8CEA2A0D2D2912CACCF92D31AA17439479711B4A5B7744"
|
|
"5CC02C18BFE0195CE8F1FE59E317214005CEE5E25904C9FB0AF7E2B6B4DCCDF78E61E"
|
|
"179A9F93996EC3C76F6DA9B5A291BF08A73032B37EDCBBBDD20CFF94088A489167C56"
|
|
"E5E75B376874E9750212FE94D7656D9CD835DB3B771BA5B58D2B255221C6B73696438"
|
|
"35346338613630613561353437653132326332346663612A507D2B905E5EAFD4B28AE"
|
|
"EB7633283579E48ADD21A68EB26CC8C3B2E344579003B12A38554336305525FA6AB70"
|
|
"F024A18C73631BB1531ECA3F0782C72DBA017311B3F1E98C739632E305E4BC0B2561A"
|
|
"E2B30050AC1050A1B5D637BE37A9722AA35C23D346470851ACA7D2EDCD1A27EDF124E"
|
|
"A612C001BC96D6878E3086C33624821F1F3ECE23F27E58222C2BB8D1615476A117926"
|
|
"3B58F6427E92911D961FC7A3AFD947AED8C9AEAD1F08457925D2CE4E0F618B21942BA"
|
|
"A60B231EAE864048F94F74FFA700E5777F812ADB6F0CB6BA6F0D145E3951191EB2171"
|
|
"40C32F2C7565053222131FF823BC36D80B24B561CCBEA9D397FE00942E7FF73B8152C"
|
|
"DC083B63A9F9C4A77056A0D79F44F267DA0ED629D9C902F7E838957EA41AA442221C3"
|
|
"AA9410DB58302B468C6D7F2113663809F0DCF187C108CED1AD402F6FB3693413CC1D7"
|
|
"D5E3459B856E4156C78F8D85D548939FD00474C8CDEDC46835CC981758500FE61CC79"
|
|
"383B4D9F87C3E33D19C2D25D7D15DD0F3D2B1AF4583B71E90C59886D297E78E929C2F"
|
|
"3840C82C626914A4EB537B3A5161D963472B6592C0FA1E415556BC009C2DA22BCF743"
|
|
"AC434E22F8A33B43210DFD8AA09FE86105610F366E6FB7DA18996CF7C7DB425A9BB50"
|
|
"E4A13190A680B9F82D37D09658585ABE3BF9F009A5C1CE38A7CEFE17F71FB402768B2"
|
|
"D66B4CA523ED06729349695D7864D7CF7A1CC11D0DA2B8A43DB834D10B47D9579EC9E"
|
|
"46986A133277B92C636CB2A6A823AFE73317266C9C0601DDBADB76E1D254D6183B93A"
|
|
"1EA91A7E6C567331B3EE3A5AB1484AF91FD0F8DAC5FD980A67D8F33CC1D6CF20EE4C2"
|
|
"4582D03967ED48B6F28E7514E4D18F38C8CB1E54FBA59AF7D6A79C6C5A7AB06BAAC96"
|
|
"4C7958D201910ADCA018022FBEB8535B64F5CE83D3C22246B73696432663265383563"
|
|
"653861363737663630303437643730323465303762356165362A60B74880FBDDC5BB9"
|
|
"DB82F09BC7DE3FFD95A0A671B979D4C1F0564EAF63EB6B5A8C3F16D9F964AFBD011E2"
|
|
"326F9C27AFBE74536F3F0601A71D9C1C422F335611BF3BF1A1C89E2DEA27C17A9D9A5"
|
|
"8A74121E840B002E8A6FB59007245BE786C1F6430091220B9626315C7601BC2BD1E1C"
|
|
"88F752C956261CE7509669B2AEAA1E7F1304017941")},
|
|
// test vector 2, app id: "app_1", usage entry 0
|
|
{"app_1",
|
|
{
|
|
a2bs_hex("bb3370ccd3c3c49573d6b74386d1886d9888bd81fe3241bcd2bac9407d1a"
|
|
"834e"),
|
|
a2bs_hex("dc0e51cfa5863f6c0b32a4ad7fa40625dadcc2dcde9e7fa3983b8804d996"
|
|
"6803181682fc8ae831472e0b2fc26276242fbce624d286eedecce5555804"
|
|
"913b4f8f86c5ae86160b8434b109169a63da04c5265102d772c1180543ef"
|
|
"226d2140357aca6cf87da3f7e370dfc08ca92a1f7c7d314eab36292a9170"
|
|
"8f6c6ad84b37ee1c7dfafb99289206cb752d063f330efd85885f4b72ba1c"
|
|
"a5823eed865a461345e3d6417872bf3b0608b3d9e1004c11e7326d3ed406"
|
|
"192e13455d0ec4e1f558a147"),
|
|
a2bs_hex("f42a68ca3a14fb68f5992e4519f57970c3dae73f8da1d5b0b1da3eff7a95"
|
|
"4012a0dc634357f3f5477a820e182182f24ae8e835ab10c18386cc8a0727"
|
|
"d3f38b628639bfbd69a94d4053eab1c31e075e014cc578b226cfe24d6b42"
|
|
"db242972def8f23a4aae88451307c2abaf54c1803ae54e3f1149aa6e6d42"
|
|
"88cc7d474e876be07954e8b2deff4ade4bf30229fb6c92df4d66cd463f68"
|
|
"6b4754b940210eb59f1581d658ddf8de8389e0e2d123e2cae3c2be6eb194"
|
|
"8ccc896dd4cdf45f9090c96dfb925795cfb4ccda83e3eb4f745577b17fc1"
|
|
"66bf5f4103c9085134cad7863a41b04f32ef20201e54b55f1817ce589619"
|
|
"b096c254fd2c2fa4a06f4de35ccfd23e"),
|
|
"kside11109bf20cde544083ef4ee",
|
|
a2bs_hex("ea106c124476b753d39368a5966972a2729bb8bbea734a2b3e812b705eac"
|
|
"e016c8a03c9a406094d80059ef4ca26f1928fa2daa5de9a6f22372e5c7a9"
|
|
"41e610d1efb56ed7ce2228a70e2e150afb66edc2da066d463aa90ba0caff"
|
|
"078fbfec05c8"),
|
|
0,
|
|
},
|
|
a2bs_hex("0AF404080310012AED040AEA040A20BB3370CCD3C3C49573D6B74386D1886D98"
|
|
"88BD81FE3241BCD2BAC9407D1A834E12C001DC0E51CFA5863F6C0B32A4AD7FA4"
|
|
"0625DADCC2DCDE9E7FA3983B8804D9966803181682FC8AE831472E0B2FC26276"
|
|
"242FBCE624D286EEDECCE5555804913B4F8F86C5AE86160B8434B109169A63DA"
|
|
"04C5265102D772C1180543EF226D2140357ACA6CF87DA3F7E370DFC08CA92A1F"
|
|
"7C7D314EAB36292A91708F6C6AD84B37EE1C7DFAFB99289206CB752D063F330E"
|
|
"FD85885F4B72BA1CA5823EED865A461345E3D6417872BF3B0608B3D9E1004C11"
|
|
"E7326D3ED406192E13455D0EC4E1F558A1471A8002F42A68CA3A14FB68F5992E"
|
|
"4519F57970C3DAE73F8DA1D5B0B1DA3EFF7A954012A0DC634357F3F5477A820E"
|
|
"182182F24AE8E835AB10C18386CC8A0727D3F38B628639BFBD69A94D4053EAB1"
|
|
"C31E075E014CC578B226CFE24D6B42DB242972DEF8F23A4AAE88451307C2ABAF"
|
|
"54C1803AE54E3F1149AA6E6D4288CC7D474E876BE07954E8B2DEFF4ADE4BF302"
|
|
"29FB6C92DF4D66CD463F686B4754B940210EB59F1581D658DDF8DE8389E0E2D1"
|
|
"23E2CAE3C2BE6EB1948CCC896DD4CDF45F9090C96DFB925795CFB4CCDA83E3EB"
|
|
"4F745577B17FC166BF5F4103C9085134CAD7863A41B04F32EF20201E54B55F18"
|
|
"17CE589619B096C254FD2C2FA4A06F4DE35CCFD23E221C6B7369646531313130"
|
|
"396266323063646535343430383365663465652A60EA106C124476B753D39368"
|
|
"A5966972A2729BB8BBEA734A2B3E812B705EACE016C8A03C9A406094D80059EF"
|
|
"4CA26F1928FA2DAA5DE9A6F22372E5C7A941E610D1EFB56ED7CE2228A70E2E15"
|
|
"0AFB66EDC2DA066D463AA90BA0CAFF078FBFEC05C8300012203384AAAFD3A883"
|
|
"17E6ED20BB88B0B3C01388AB1DF721547AE6FCB586659BC437")},
|
|
// test vector 3, app id: "app_2", usage entry 0
|
|
{"app_2",
|
|
{
|
|
a2bs_hex(
|
|
"9212a6926f21c6727c1ee89d5607047a1636f206f70e21fda86e01b6a4b5"),
|
|
a2bs_hex("ef947abed64078edf5b21fe6d3fb65384595d63a6d03e4d1d397c5019dee"
|
|
"b6890d3ef8773002b91e255af0820fb594069df55d8abf96498e493f5c70"
|
|
"f6b85f50e12a1ed3c039ad0cd838fe44d3fa9e2bbddeb2919041203111ed"
|
|
"7778701b04d6b15f41d0bde799e20a38b27bf96fdbe844f10364baeb5935"
|
|
"96220993c608ac793de76c237ca350931a7e216538074dbd83ddf262d9f1"
|
|
"8acd91e1ea5372f7e773c5b64333"),
|
|
a2bs_hex("7709721b3aa48597e88c99e82eaf7dff07e87e0318d9d7cec29096ec5918"
|
|
"26aa7a359316d6de1d1329b408543e237de84c986987ead1bb6a0c38817e"
|
|
"93013e5c989d366f49590b834453ec64b7433bf0b3335b9e222bad4caf55"
|
|
"4d69575c58595283166fea42e89645fc7e2d3ac9e0c1399b096cf3fed1e5"
|
|
"deb1bc4e0ee894f0ae3f929dd7dba4530e5655edbbf6041df430482eb2e8"
|
|
"91b6a93af84d3c16dbad92733ffd34e8f4ce24506bead578d20cd3e291c2"
|
|
"fc2f811db875f49abc21a24277d2ba474fe6af6c14021cfead5513e0999e"
|
|
"094020ce08209bbc08f13fe2b96d7ba8213c8e9c85b6a623788d34da794e"
|
|
"17e4cd3bd65680b97fb30bad64ddc42b1bcfb0b83e5dda3501a5902ca609"
|
|
"f41837a0d5cd096e0659b67c"),
|
|
"ksid62d88ed7b292217b0238be",
|
|
a2bs_hex("5422463fd2e4dd47626e97dd6b4ee0b89523aaebe8d11e7e7be703ef01e4"
|
|
"9b17eaf020cede0a9e0e7b5d91e4db7abdce445936cb2deecdefefdb14b7"
|
|
"8f67b7ca5c733c9e88446fd814584584b86becbf6eb2b0e3d5603e8b"),
|
|
25,
|
|
},
|
|
a2bs_hex(
|
|
"0AE604080310012ADF040ADC040A1E9212A6926F21C6727C1EE89D5607047A1636F20"
|
|
"6F70E21FDA86E01B6A4B512A401EF947ABED64078EDF5B21FE6D3FB65384595D63A6D"
|
|
"03E4D1D397C5019DEEB6890D3EF8773002B91E255AF0820FB594069DF55D8ABF96498"
|
|
"E493F5C70F6B85F50E12A1ED3C039AD0CD838FE44D3FA9E2BBDDEB2919041203111ED"
|
|
"7778701B04D6B15F41D0BDE799E20A38B27BF96FDBE844F10364BAEB593596220993C"
|
|
"608AC793DE76C237CA350931A7E216538074DBD83DDF262D9F18ACD91E1EA5372F7E7"
|
|
"73C5B643331A9A027709721B3AA48597E88C99E82EAF7DFF07E87E0318D9D7CEC2909"
|
|
"6EC591826AA7A359316D6DE1D1329B408543E237DE84C986987EAD1BB6A0C38817E93"
|
|
"013E5C989D366F49590B834453EC64B7433BF0B3335B9E222BAD4CAF554D69575C585"
|
|
"95283166FEA42E89645FC7E2D3AC9E0C1399B096CF3FED1E5DEB1BC4E0EE894F0AE3F"
|
|
"929DD7DBA4530E5655EDBBF6041DF430482EB2E891B6A93AF84D3C16DBAD92733FFD3"
|
|
"4E8F4CE24506BEAD578D20CD3E291C2FC2F811DB875F49ABC21A24277D2BA474FE6AF"
|
|
"6C14021CFEAD5513E0999E094020CE08209BBC08F13FE2B96D7BA8213C8E9C85B6A62"
|
|
"3788D34DA794E17E4CD3BD65680B97FB30BAD64DDC42B1BCFB0B83E5DDA3501A5902C"
|
|
"A609F41837A0D5CD096E0659B67C221A6B73696436326438386564376232393232313"
|
|
"7623032333862652A585422463FD2E4DD47626E97DD6B4EE0B89523AAEBE8D11E7E7B"
|
|
"E703EF01E49B17EAF020CEDE0A9E0E7B5D91E4DB7ABDCE445936CB2DEECDEFEFDB14B"
|
|
"78F67B7CA5C733C9E88446FD814584584B86BECBF6EB2B0E3D5603E8B30191220E964"
|
|
"7EB0AC28F0CB11C85111D69B5FA74E80015F4A07FB5C144E6CFE0E8E3709")},
|
|
// test vector 4, app id: "app_2", usage entry 1
|
|
{"app_2",
|
|
{
|
|
a2bs_hex("831fad51e52a403524539eab6a1b201e46674ca3b9167b1c1b53f5e5e3"),
|
|
a2bs_hex("36d83acbc5e4ed027ed583e3b2169d98f4abedda15b781408e68efa14fef"
|
|
"a9f3f0309bcb5a9fff6580636ebe3548e5acb43b76cfeb29a9c86324e62a"
|
|
"eb40556005c6686e718f9bf61b0681d43b5b1e88084b3aea27a6b0e844e5"
|
|
"500b6fcfacf2ee44d6af7f64154ab3fd4fbd0b8056cf63971076a1eb3642"
|
|
"b78d5e76b84f4ed9f6220089863f8a4911691e79feffc9f804c4c36c7f85"
|
|
"e45b1d276c85875875267eb65da70fd2d5e9176d6914"),
|
|
a2bs_hex("317bd7063bfb9fae1b2e46f4cf15b7bc8c92517ff5c32cbb52ae4b67afc5"
|
|
"d569cb66a462def7a18a7d0acebf9f6e8a604356ade2c81450c5466a4728"
|
|
"90b03eefcf65388f060e24551c67b7d46ae5d4d841d5cc63d137fd543fae"
|
|
"2c771756590b90e480ca0126f1fc0090ace62499e47569fc52196c788f80"
|
|
"139755bdf12a7acb29fd6e23a46a4c036f04ff1ed6cd714094253bf1c587"
|
|
"62c93f0ddf8a73c4be927ffec2723a16d8ffe5128851f58537461275f6aa"
|
|
"1976e3b399b7243919207e040ec16c5328e8ab082278fce0e5d3df5c5f92"
|
|
"dba51fa6613587d4ece31f2c001b49bfaed434f9512e895c2e09c88ddbf1"
|
|
"84bfafe4d82e5d05a26ac06cde29faf6ab05b96685649c923779ce5ef7f3"
|
|
"16531ada8e74e45ab1dc1d75648aa2de052674728867e87639ff9b782a3"
|
|
"3"),
|
|
"kside1d30b33b55f2deb4716",
|
|
a2bs_hex("d44a9d70a7c582559f089b1c0fdfcbdaf5e26b672fca5d58e889b407a0ba"
|
|
"8599079cde11fadfab23aa1b97622839f3b7e1a96f8332bec5fbcbc9eb64"
|
|
"fd5ed05887b8fa3bfd6ecc7bc91e621342732062d2f4411b763e20328af6"
|
|
"f8ef5030e2f8027aef9e"),
|
|
6,
|
|
},
|
|
a2bs_hex(
|
|
"0AE809080310012AE1090ADC040A1E9212A6926F21C6727C1EE89D5607047A1636F20"
|
|
"6F70E21FDA86E01B6A4B512A401EF947ABED64078EDF5B21FE6D3FB65384595D63A6D"
|
|
"03E4D1D397C5019DEEB6890D3EF8773002B91E255AF0820FB594069DF55D8ABF96498"
|
|
"E493F5C70F6B85F50E12A1ED3C039AD0CD838FE44D3FA9E2BBDDEB2919041203111ED"
|
|
"7778701B04D6B15F41D0BDE799E20A38B27BF96FDBE844F10364BAEB593596220993C"
|
|
"608AC793DE76C237CA350931A7E216538074DBD83DDF262D9F18ACD91E1EA5372F7E7"
|
|
"73C5B643331A9A027709721B3AA48597E88C99E82EAF7DFF07E87E0318D9D7CEC2909"
|
|
"6EC591826AA7A359316D6DE1D1329B408543E237DE84C986987EAD1BB6A0C38817E93"
|
|
"013E5C989D366F49590B834453EC64B7433BF0B3335B9E222BAD4CAF554D69575C585"
|
|
"95283166FEA42E89645FC7E2D3AC9E0C1399B096CF3FED1E5DEB1BC4E0EE894F0AE3F"
|
|
"929DD7DBA4530E5655EDBBF6041DF430482EB2E891B6A93AF84D3C16DBAD92733FFD3"
|
|
"4E8F4CE24506BEAD578D20CD3E291C2FC2F811DB875F49ABC21A24277D2BA474FE6AF"
|
|
"6C14021CFEAD5513E0999E094020CE08209BBC08F13FE2B96D7BA8213C8E9C85B6A62"
|
|
"3788D34DA794E17E4CD3BD65680B97FB30BAD64DDC42B1BCFB0B83E5DDA3501A5902C"
|
|
"A609F41837A0D5CD096E0659B67C221A6B73696436326438386564376232393232313"
|
|
"7623032333862652A585422463FD2E4DD47626E97DD6B4EE0B89523AAEBE8D11E7E7B"
|
|
"E703EF01E49B17EAF020CEDE0A9E0E7B5D91E4DB7ABDCE445936CB2DEECDEFEFDB14B"
|
|
"78F67B7CA5C733C9E88446FD814584584B86BECBF6EB2B0E3D5603E8B30190AFF040A"
|
|
"1D831FAD51E52A403524539EAB6A1B201E46674CA3B9167B1C1B53F5E5E312AC0136D"
|
|
"83ACBC5E4ED027ED583E3B2169D98F4ABEDDA15B781408E68EFA14FEFA9F3F0309BCB"
|
|
"5A9FFF6580636EBE3548E5ACB43B76CFEB29A9C86324E62AEB40556005C6686E718F9"
|
|
"BF61B0681D43B5B1E88084B3AEA27A6B0E844E5500B6FCFACF2EE44D6AF7F64154AB3"
|
|
"FD4FBD0B8056CF63971076A1EB3642B78D5E76B84F4ED9F6220089863F8A4911691E7"
|
|
"9FEFFC9F804C4C36C7F85E45B1D276C85875875267EB65DA70FD2D5E9176D69141AAC"
|
|
"02317BD7063BFB9FAE1B2E46F4CF15B7BC8C92517FF5C32CBB52AE4B67AFC5D569CB6"
|
|
"6A462DEF7A18A7D0ACEBF9F6E8A604356ADE2C81450C5466A472890B03EEFCF65388F"
|
|
"060E24551C67B7D46AE5D4D841D5CC63D137FD543FAE2C771756590B90E480CA0126F"
|
|
"1FC0090ACE62499E47569FC52196C788F80139755BDF12A7ACB29FD6E23A46A4C036F"
|
|
"04FF1ED6CD714094253BF1C58762C93F0DDF8A73C4BE927FFEC2723A16D8FFE512885"
|
|
"1F58537461275F6AA1976E3B399B7243919207E040EC16C5328E8AB082278FCE0E5D3"
|
|
"DF5C5F92DBA51FA6613587D4ECE31F2C001B49BFAED434F9512E895C2E09C88DDBF18"
|
|
"4BFAFE4D82E5D05A26AC06CDE29FAF6AB05B96685649C923779CE5EF7F316531ADA8E"
|
|
"74E45AB1DC1D75648AA2DE052674728867E87639FF9B782A3322186B7369646531643"
|
|
"3306233336235356632646562343731362A64D44A9D70A7C582559F089B1C0FDFCBDA"
|
|
"F5E26B672FCA5D58E889B407A0BA8599079CDE11FADFAB23AA1B97622839F3B7E1A96"
|
|
"F8332BEC5FBCBC9EB64FD5ED05887B8FA3BFD6ECC7BC91E621342732062D2F4411B76"
|
|
"3E20328AF6F8EF5030E2F8027AEF9E300612203F1EEC1DDC56EE480AC744C1D72379E"
|
|
"AFFD4675FF15A7D53BD56AC9736D62FC1")},
|
|
// test vector 5, app id: "app_1", usage entry 1
|
|
{"app_1",
|
|
{
|
|
a2bs_hex("eace80e30bfda213f1ce4dbcfd9d4d24b8e2ae00054d167d9d7ae9954706"
|
|
"2b9113"),
|
|
a2bs_hex("68a7665a21348fc0590328608dc520be40f5b749328568fe383ef69c1a58"
|
|
"7ab2446cf9c41d821373d0856a883b316519a42218f80e7bd5764d16bac9"
|
|
"a9b427a7278f5940e563fcf6dee0ff3aadbb702ebf2c54ec354ae7acc84e"
|
|
"e6a54bca1f30e38ef71c44a81d0009b1484feaf4f1a56f58c35bb2372c80"
|
|
"c6dfb389e6de60bdd3d46c03975715260f6fdbe42facb64c22eda9635c04"
|
|
"da79434e1c41fbd2fdbbab6598283226c0278e8e0a96d780d3436523efd"
|
|
"1"),
|
|
a2bs_hex("ff6fecf7157828812a2d6dcb15383a6d9af4519ef804c6053a10c436002d"
|
|
"e3a4efcc017755f4ad1101bdc813e2d211732418dee529cbb413c48aa588"
|
|
"4c76a5c6f556a715055560d4247f5bf310956949a3a171a4aa608a484468"
|
|
"84e7676d558ff64d392b84e617805693d90f1e9b7b540c383d384d7f7ce0"
|
|
"6c23618681bd838ceb1a514047f1c562c43159cc5e21588fbfce8a354111"
|
|
"160f1a1e2bd3d798a000579bdfdb977252809ee1502df8045972fe8aac84"
|
|
"0211c2f8d9e4d5be18509c327c647d654c4b6cc430b98f1ff37c96fab087"
|
|
"fb561b8cc18480f877c873594d3148ff74b0e3c6327c27ca876dae742239"
|
|
"8fc5e85269cba49ad099"),
|
|
"ksid8e80350cbef6463a0025e6cc",
|
|
a2bs_hex("7ccc7ce96055e16a52fa192ea2cf3c9df3e89b9133a52286f71e6c6d82d0"
|
|
"435f6b2155dfde590b347d8c86f62d7dfbaae640c237256f609e5da9cc6c"
|
|
"103465fe3441612bbdfdf4d1c24b2147feb8565cef4993e439c9d564a39a"
|
|
"4ac5bb1da69acb44da06e4522c9a93d310cdda5dac1e1e0b91abff41e4e2"
|
|
"edda4001"),
|
|
7,
|
|
},
|
|
a2bs_hex(
|
|
"0AEC09080310012AE5090AEA040A20BB3370CCD3C3C49573D6B74386D1886D9888BD8"
|
|
"1FE3241BCD2BAC9407D1A834E12C001DC0E51CFA5863F6C0B32A4AD7FA40625DADCC2"
|
|
"DCDE9E7FA3983B8804D9966803181682FC8AE831472E0B2FC26276242FBCE624D286E"
|
|
"EDECCE5555804913B4F8F86C5AE86160B8434B109169A63DA04C5265102D772C11805"
|
|
"43EF226D2140357ACA6CF87DA3F7E370DFC08CA92A1F7C7D314EAB36292A91708F6C6"
|
|
"AD84B37EE1C7DFAFB99289206CB752D063F330EFD85885F4B72BA1CA5823EED865A46"
|
|
"1345E3D6417872BF3B0608B3D9E1004C11E7326D3ED406192E13455D0EC4E1F558A14"
|
|
"71A8002F42A68CA3A14FB68F5992E4519F57970C3DAE73F8DA1D5B0B1DA3EFF7A9540"
|
|
"12A0DC634357F3F5477A820E182182F24AE8E835AB10C18386CC8A0727D3F38B62863"
|
|
"9BFBD69A94D4053EAB1C31E075E014CC578B226CFE24D6B42DB242972DEF8F23A4AAE"
|
|
"88451307C2ABAF54C1803AE54E3F1149AA6E6D4288CC7D474E876BE07954E8B2DEFF4"
|
|
"ADE4BF30229FB6C92DF4D66CD463F686B4754B940210EB59F1581D658DDF8DE8389E0"
|
|
"E2D123E2CAE3C2BE6EB1948CCC896DD4CDF45F9090C96DFB925795CFB4CCDA83E3EB4"
|
|
"F745577B17FC166BF5F4103C9085134CAD7863A41B04F32EF20201E54B55F1817CE58"
|
|
"9619B096C254FD2C2FA4A06F4DE35CCFD23E221C6B736964653131313039626632306"
|
|
"3646535343430383365663465652A60EA106C124476B753D39368A5966972A2729BB8"
|
|
"BBEA734A2B3E812B705EACE016C8A03C9A406094D80059EF4CA26F1928FA2DAA5DE9A"
|
|
"6F22372E5C7A941E610D1EFB56ED7CE2228A70E2E150AFB66EDC2DA066D463AA90BA0"
|
|
"CAFF078FBFEC05C830000AF5040A21EACE80E30BFDA213F1CE4DBCFD9D4D24B8E2AE0"
|
|
"0054D167D9D7AE99547062B911312B40168A7665A21348FC0590328608DC520BE40F5"
|
|
"B749328568FE383EF69C1A587AB2446CF9C41D821373D0856A883B316519A42218F80"
|
|
"E7BD5764D16BAC9A9B427A7278F5940E563FCF6DEE0FF3AADBB702EBF2C54EC354AE7"
|
|
"ACC84EE6A54BCA1F30E38EF71C44A81D0009B1484FEAF4F1A56F58C35BB2372C80C6D"
|
|
"FB389E6DE60BDD3D46C03975715260F6FDBE42FACB64C22EDA9635C04DA79434E1C41"
|
|
"FBD2FDBBAB6598283226C0278E8E0A96D780D3436523EFD11AFA01FF6FECF71578288"
|
|
"12A2D6DCB15383A6D9AF4519EF804C6053A10C436002DE3A4EFCC017755F4AD1101BD"
|
|
"C813E2D211732418DEE529CBB413C48AA5884C76A5C6F556A715055560D4247F5BF31"
|
|
"0956949A3A171A4AA608A48446884E7676D558FF64D392B84E617805693D90F1E9B7B"
|
|
"540C383D384D7F7CE06C23618681BD838CEB1A514047F1C562C43159CC5E21588FBFC"
|
|
"E8A354111160F1A1E2BD3D798A000579BDFDB977252809EE1502DF8045972FE8AAC84"
|
|
"0211C2F8D9E4D5BE18509C327C647D654C4B6CC430B98F1FF37C96FAB087FB561B8CC"
|
|
"18480F877C873594D3148FF74B0E3C6327C27CA876DAE7422398FC5E85269CBA49AD0"
|
|
"99221C6B7369643865383033353063626566363436336130303235653663632A7C7CC"
|
|
"C7CE96055E16A52FA192EA2CF3C9DF3E89B9133A52286F71E6C6D82D0435F6B2155DF"
|
|
"DE590B347D8C86F62D7DFBAAE640C237256F609E5DA9CC6C103465FE3441612BBDFDF"
|
|
"4D1C24B2147FEB8565CEF4993E439C9D564A39A4AC5BB1DA69ACB44DA06E4522C9A93"
|
|
"D310CDDA5DAC1E1E0B91ABFF41E4E2EDDA40013007122062B0F22E176F77881114844"
|
|
"DABC6F0EB0F80381D8A06ECDF09913A5CF8E85B3F")},
|
|
// test vector 6, app id: "", usage entry 2
|
|
{"",
|
|
{
|
|
a2bs_hex("1fbf0a1d2432805a0f8292ff627a9a7c60b733a51b365892c832261d71"),
|
|
a2bs_hex("1ad116a26f423c7019fa8dca226c2d2bdeec91beb1fd38d6890e32745a4d"
|
|
"bb9409b65fe834c2522d92621b265a9d526b4fcadcacf4c4deb364661118"
|
|
"494fd1561621392bf4450e6833be290d49e59e665a031375ee56ad1f3392"
|
|
"436ba213abc5ac10a199e73123f84f7644282137da24cbde30c10a6eb847"
|
|
"ca72b8b311ad329d2c9cb0909c2ecbe3fbaf88e81bb5aeaa6480fff67e87"
|
|
"77fa00c783aa160f1e211cb9bf3835fa8f82923c05895c359cf306f5cb90"
|
|
"a73b8ce2ce9ed210485e1c57"),
|
|
a2bs_hex("0bf120627d01690d14321fa967d81997b959b35ed7745dee9e885dd402df"
|
|
"83c3b8f52999b16c2d1d47bf4724a9ced984175eb8a032d613294c148020"
|
|
"74154c34fd40fe6ea74fa830fdcb9cc7e0799a75aadaf41ddda3d0038896"
|
|
"da966b1a67ff4e6c7403debfdbe7d1d48f1a3304124f04c974bfa0eff4d0"
|
|
"b1733a84aa6f89ec74c89dad2168da4706f6dfcfd980502b573d0f7b3791"
|
|
"252cc918394e8b3a3e1ef37ce48b7fd6a2040db5915f55809f284ce4ec24"
|
|
"4149f53038b432964705e26c3bb6535461b7fff27ac8eff679dce8e5bfe1"
|
|
"d000b69a22d9efc1f310ba2f0115c96b00bc15888fbb3edd230834458491"
|
|
"eede2440550dd59c613dc8433efe979c71e9"),
|
|
"ksida5d27d7b0ccd433203e157",
|
|
a2bs_hex("1be7cd47cefdef69576348ef9a143be2311041a5f80259938fa886139679"
|
|
"4eabcc985a695be2ef4a8361d86979859c490922d92d3ed0484e1666270a"
|
|
"a96388bf6be3c4f4f0b7e2f59efc6b8e965d8fadd5ab86b2bb816d2573ec"
|
|
"36eb42b571297681be152d40639d"),
|
|
0,
|
|
},
|
|
a2bs_hex(
|
|
"0ADA11080310012AD3110A9A070A20B8E7F26B6B8B59BABF05B5A1F8927B412A85BC8"
|
|
"551A928F00856329814AE5A821280024463DC57079C27E34AE115C6F65B08F6311C4E"
|
|
"A604A6512C42470B6F692A76EA769D60D0B6BCF8D565EF31EB925F38E2095039C9F2F"
|
|
"113ECEE020F1126EB30165372D538B551EBD7BAE5CF0BBEEBB3CDB6F180D42868051A"
|
|
"AB8FF4947460DD96F0F8259FC6001059C998D2EB6902C064F9AE08E6CD3C7807E5037"
|
|
"9507B41620D15DD76C0B1E7ED9417EFD6825959B5077F464E6429A4DEE467A1BA2B05"
|
|
"D38049912D5539F1EE9F5D8A569AA1C384384F847ED64F6FFC101036DA70E69C06E49"
|
|
"16493E82E9FE3F65D85254C8C14F6CA0579BFB3EAA86B2D7BB5FF572ECCFD70F2EA46"
|
|
"95F326BEADF241AE4311E428C7C12A0D4D1915CD0537FF0F62CF13EB2FA21A8004BBE"
|
|
"6B4B60DA9D9BC34DCC8502FB81D8FD5FDBC8FA89605C86205F2B8C6530FF64C8C31F5"
|
|
"79BD8ECA603DFD5E397AC35E48931FD330351D01361BB31CAAA7DBF816A6144A12B6C"
|
|
"22D1DCEBA20669ED635A40831066ABD8071342119D7DA11C43696B2898D3DF3B36BEB"
|
|
"8DA013D9DC145343494B19D6DA085F4A41E421D3DEF2AD8B72DFFFFB6E79BBCEAF859"
|
|
"4045D16A62EED16904A3569860C531A32EAA5ABB868B1DD6A0B03D69C1A3F8336AF80"
|
|
"EB80BADBBC7B80CA5943BD5B374302147052201FAED30E9FFA99FC00B47F7EEB46951"
|
|
"2A413E873F91D959CCCACCCD3585B7F00ED8D4685022101713C3ADC439F27512A4592"
|
|
"6C1D2473477662C4BACE72F380D105DDC9F7BE49ED71991B3D9E29A2038201373F98A"
|
|
"845A57624A692F44EBD316D26C48FEE82B655583317ECA4AAA4DAC841524A2DCA1117"
|
|
"49629637EF29FA7E72645A875957FB3D98A5E6C8065B1349CFA23011CD6349D911C53"
|
|
"5475FED50BE9EACB6A1FF3EA7458823F0229F2FA90B7A7099E8EC349D3D0FE0277CBA"
|
|
"5157CA62C8FBAA893F37B8C8CEA2A0D2D2912CACCF92D31AA17439479711B4A5B7744"
|
|
"5CC02C18BFE0195CE8F1FE59E317214005CEE5E25904C9FB0AF7E2B6B4DCCDF78E61E"
|
|
"179A9F93996EC3C76F6DA9B5A291BF08A73032B37EDCBBBDD20CFF94088A489167C56"
|
|
"E5E75B376874E9750212FE94D7656D9CD835DB3B771BA5B58D2B255221C6B73696438"
|
|
"35346338613630613561353437653132326332346663612A507D2B905E5EAFD4B28AE"
|
|
"EB7633283579E48ADD21A68EB26CC8C3B2E344579003B12A38554336305525FA6AB70"
|
|
"F024A18C73631BB1531ECA3F0782C72DBA017311B3F1E98C739632E305E4BC0B2561A"
|
|
"E2B30050AC1050A1B5D637BE37A9722AA35C23D346470851ACA7D2EDCD1A27EDF124E"
|
|
"A612C001BC96D6878E3086C33624821F1F3ECE23F27E58222C2BB8D1615476A117926"
|
|
"3B58F6427E92911D961FC7A3AFD947AED8C9AEAD1F08457925D2CE4E0F618B21942BA"
|
|
"A60B231EAE864048F94F74FFA700E5777F812ADB6F0CB6BA6F0D145E3951191EB2171"
|
|
"40C32F2C7565053222131FF823BC36D80B24B561CCBEA9D397FE00942E7FF73B8152C"
|
|
"DC083B63A9F9C4A77056A0D79F44F267DA0ED629D9C902F7E838957EA41AA442221C3"
|
|
"AA9410DB58302B468C6D7F2113663809F0DCF187C108CED1AD402F6FB3693413CC1D7"
|
|
"D5E3459B856E4156C78F8D85D548939FD00474C8CDEDC46835CC981758500FE61CC79"
|
|
"383B4D9F87C3E33D19C2D25D7D15DD0F3D2B1AF4583B71E90C59886D297E78E929C2F"
|
|
"3840C82C626914A4EB537B3A5161D963472B6592C0FA1E415556BC009C2DA22BCF743"
|
|
"AC434E22F8A33B43210DFD8AA09FE86105610F366E6FB7DA18996CF7C7DB425A9BB50"
|
|
"E4A13190A680B9F82D37D09658585ABE3BF9F009A5C1CE38A7CEFE17F71FB402768B2"
|
|
"D66B4CA523ED06729349695D7864D7CF7A1CC11D0DA2B8A43DB834D10B47D9579EC9E"
|
|
"46986A133277B92C636CB2A6A823AFE73317266C9C0601DDBADB76E1D254D6183B93A"
|
|
"1EA91A7E6C567331B3EE3A5AB1484AF91FD0F8DAC5FD980A67D8F33CC1D6CF20EE4C2"
|
|
"4582D03967ED48B6F28E7514E4D18F38C8CB1E54FBA59AF7D6A79C6C5A7AB06BAAC96"
|
|
"4C7958D201910ADCA018022FBEB8535B64F5CE83D3C22246B73696432663265383563"
|
|
"653861363737663630303437643730323465303762356165362A60B74880FBDDC5BB9"
|
|
"DB82F09BC7DE3FFD95A0A671B979D4C1F0564EAF63EB6B5A8C3F16D9F964AFBD011E2"
|
|
"326F9C27AFBE74536F3F0601A71D9C1C422F335611BF3BF1A1C89E2DEA27C17A9D9A5"
|
|
"8A74121E840B002E8A6FB59007245BE786C1F6430090AEF040A1D1FBF0A1D2432805A"
|
|
"0F8292FF627A9A7C60B733A51B365892C832261D7112C0011AD116A26F423C7019FA8"
|
|
"DCA226C2D2BDEEC91BEB1FD38D6890E32745A4DBB9409B65FE834C2522D92621B265A"
|
|
"9D526B4FCADCACF4C4DEB364661118494FD1561621392BF4450E6833BE290D49E59E6"
|
|
"65A031375EE56AD1F3392436BA213ABC5AC10A199E73123F84F7644282137DA24CBDE"
|
|
"30C10A6EB847CA72B8B311AD329D2C9CB0909C2ECBE3FBAF88E81BB5AEAA6480FFF67"
|
|
"E8777FA00C783AA160F1E211CB9BF3835FA8F82923C05895C359CF306F5CB90A73B8C"
|
|
"E2CE9ED210485E1C571A82020BF120627D01690D14321FA967D81997B959B35ED7745"
|
|
"DEE9E885DD402DF83C3B8F52999B16C2D1D47BF4724A9CED984175EB8A032D613294C"
|
|
"14802074154C34FD40FE6EA74FA830FDCB9CC7E0799A75AADAF41DDDA3D0038896DA9"
|
|
"66B1A67FF4E6C7403DEBFDBE7D1D48F1A3304124F04C974BFA0EFF4D0B1733A84AA6F"
|
|
"89EC74C89DAD2168DA4706F6DFCFD980502B573D0F7B3791252CC918394E8B3A3E1EF"
|
|
"37CE48B7FD6A2040DB5915F55809F284CE4EC244149F53038B432964705E26C3BB653"
|
|
"5461B7FFF27AC8EFF679DCE8E5BFE1D000B69A22D9EFC1F310BA2F0115C96B00BC158"
|
|
"88FBB3EDD230834458491EEDE2440550DD59C613DC8433EFE979C71E9221A6B736964"
|
|
"613564323764376230636364343333323033653135372A681BE7CD47CEFDEF6957634"
|
|
"8EF9A143BE2311041A5F80259938FA8861396794EABCC985A695BE2EF4A8361D86979"
|
|
"859C490922D92D3ED0484E1666270AA96388BF6BE3C4F4F0B7E2F59EFC6B8E965D8FA"
|
|
"DD5AB86B2BB816D2573EC36EB42B571297681BE152D40639D3000122076CFC9DBA6CD"
|
|
"93FFC6BB74D61C1B644CC32121553C50817A9F6F00633575E659")},
|
|
// test vector 7, app id: "app_2", usage entry 2
|
|
{"app_2",
|
|
{
|
|
a2bs_hex("8f922e955b269458ed1345bde9a24516520a536817e8e8612154a1"),
|
|
a2bs_hex("d4acc596a52055cee710e1fec44796dbf3ae6b017ab156d9bff7bfdb8f1e"
|
|
"6352bfbe453034968f940c36ac18800e22bb2ff71268053702ef3fce3fb2"
|
|
"d607a078e0d1449fcc9d0675d41b1a65f78e3c02370d18112aae1e2577ff"
|
|
"9087825a45125db5dee8e27bd14ea8666b4e8e6aba6811c40b585aabb9c9"
|
|
"185209a48d11130ff690316916961f28286c71c3e985d7dc3352166e414b"
|
|
"89da2c17cc5b69fc9c00990697f5"),
|
|
a2bs_hex("169d3c432f9c2f8b99e11632bd7d6a63f3d57679c567bedcb2e596ace105"
|
|
"0453732040cb468e9c43f6009b430ca4a4046d017e67a4badd5b71c0c9fc"
|
|
"e2274817f0bcda311a4f8703e6dc32aedf30e6f9abd40e249fc8b0a5045c"
|
|
"c1e47e60a60b4893ef92602f5584e1162f4ff3ee6d906228f97b442ace1f"
|
|
"b175d113b671bdbe4ceffdd98f2bb094c0dfac03b79541a44d8affdc987f"
|
|
"4268706b5a554e998907eb7126e8c6bc07c837d8aeebea3249e37b4b7dd7"
|
|
"327300fe7e62c15981cf73a13e806d065bcadc2c747256907a5493592b07"
|
|
"a0c07f9cd805fcdc0d30f70e4c4b2959a0f52385c6bd3e6eeb4e3d81fdc1"
|
|
"a9dc3c76faf1bfed913d58567fa9b296d27dff5217c583e7c134a642601f"
|
|
"8237"),
|
|
"kside684918d6c39bfa652a40ad936",
|
|
a2bs_hex("703f69807c8f4d140168874b924a625132eb3b896a381d617b8fb83c7314"
|
|
"a6b634d840925f711ae330599f0e0863800902b05d201a8a87b88a4bc170"
|
|
"65a1a8a556c34bf86b53afcc9951be15bea9ab55"),
|
|
27,
|
|
},
|
|
a2bs_hex(
|
|
"0AB60E080310012AAF0E0ADC040A1E9212A6926F21C6727C1EE89D5607047A1636F20"
|
|
"6F70E21FDA86E01B6A4B512A401EF947ABED64078EDF5B21FE6D3FB65384595D63A6D"
|
|
"03E4D1D397C5019DEEB6890D3EF8773002B91E255AF0820FB594069DF55D8ABF96498"
|
|
"E493F5C70F6B85F50E12A1ED3C039AD0CD838FE44D3FA9E2BBDDEB2919041203111ED"
|
|
"7778701B04D6B15F41D0BDE799E20A38B27BF96FDBE844F10364BAEB593596220993C"
|
|
"608AC793DE76C237CA350931A7E216538074DBD83DDF262D9F18ACD91E1EA5372F7E7"
|
|
"73C5B643331A9A027709721B3AA48597E88C99E82EAF7DFF07E87E0318D9D7CEC2909"
|
|
"6EC591826AA7A359316D6DE1D1329B408543E237DE84C986987EAD1BB6A0C38817E93"
|
|
"013E5C989D366F49590B834453EC64B7433BF0B3335B9E222BAD4CAF554D69575C585"
|
|
"95283166FEA42E89645FC7E2D3AC9E0C1399B096CF3FED1E5DEB1BC4E0EE894F0AE3F"
|
|
"929DD7DBA4530E5655EDBBF6041DF430482EB2E891B6A93AF84D3C16DBAD92733FFD3"
|
|
"4E8F4CE24506BEAD578D20CD3E291C2FC2F811DB875F49ABC21A24277D2BA474FE6AF"
|
|
"6C14021CFEAD5513E0999E094020CE08209BBC08F13FE2B96D7BA8213C8E9C85B6A62"
|
|
"3788D34DA794E17E4CD3BD65680B97FB30BAD64DDC42B1BCFB0B83E5DDA3501A5902C"
|
|
"A609F41837A0D5CD096E0659B67C221A6B73696436326438386564376232393232313"
|
|
"7623032333862652A585422463FD2E4DD47626E97DD6B4EE0B89523AAEBE8D11E7E7B"
|
|
"E703EF01E49B17EAF020CEDE0A9E0E7B5D91E4DB7ABDCE445936CB2DEECDEFEFDB14B"
|
|
"78F67B7CA5C733C9E88446FD814584584B86BECBF6EB2B0E3D5603E8B30190AFF040A"
|
|
"1D831FAD51E52A403524539EAB6A1B201E46674CA3B9167B1C1B53F5E5E312AC0136D"
|
|
"83ACBC5E4ED027ED583E3B2169D98F4ABEDDA15B781408E68EFA14FEFA9F3F0309BCB"
|
|
"5A9FFF6580636EBE3548E5ACB43B76CFEB29A9C86324E62AEB40556005C6686E718F9"
|
|
"BF61B0681D43B5B1E88084B3AEA27A6B0E844E5500B6FCFACF2EE44D6AF7F64154AB3"
|
|
"FD4FBD0B8056CF63971076A1EB3642B78D5E76B84F4ED9F6220089863F8A4911691E7"
|
|
"9FEFFC9F804C4C36C7F85E45B1D276C85875875267EB65DA70FD2D5E9176D69141AAC"
|
|
"02317BD7063BFB9FAE1B2E46F4CF15B7BC8C92517FF5C32CBB52AE4B67AFC5D569CB6"
|
|
"6A462DEF7A18A7D0ACEBF9F6E8A604356ADE2C81450C5466A472890B03EEFCF65388F"
|
|
"060E24551C67B7D46AE5D4D841D5CC63D137FD543FAE2C771756590B90E480CA0126F"
|
|
"1FC0090ACE62499E47569FC52196C788F80139755BDF12A7ACB29FD6E23A46A4C036F"
|
|
"04FF1ED6CD714094253BF1C58762C93F0DDF8A73C4BE927FFEC2723A16D8FFE512885"
|
|
"1F58537461275F6AA1976E3B399B7243919207E040EC16C5328E8AB082278FCE0E5D3"
|
|
"DF5C5F92DBA51FA6613587D4ECE31F2C001B49BFAED434F9512E895C2E09C88DDBF18"
|
|
"4BFAFE4D82E5D05A26AC06CDE29FAF6AB05B96685649C923779CE5EF7F316531ADA8E"
|
|
"74E45AB1DC1D75648AA2DE052674728867E87639FF9B782A3322186B7369646531643"
|
|
"3306233336235356632646562343731362A64D44A9D70A7C582559F089B1C0FDFCBDA"
|
|
"F5E26B672FCA5D58E889B407A0BA8599079CDE11FADFAB23AA1B97622839F3B7E1A96"
|
|
"F8332BEC5FBCBC9EB64FD5ED05887B8FA3BFD6ECC7BC91E621342732062D2F4411B76"
|
|
"3E20328AF6F8EF5030E2F8027AEF9E30060ACB040A1B8F922E955B269458ED1345BDE"
|
|
"9A24516520A536817E8E8612154A112A401D4ACC596A52055CEE710E1FEC44796DBF3"
|
|
"AE6B017AB156D9BFF7BFDB8F1E6352BFBE453034968F940C36AC18800E22BB2FF7126"
|
|
"8053702EF3FCE3FB2D607A078E0D1449FCC9D0675D41B1A65F78E3C02370D18112AAE"
|
|
"1E2577FF9087825A45125DB5DEE8E27BD14EA8666B4E8E6ABA6811C40B585AABB9C91"
|
|
"85209A48D11130FF690316916961F28286C71C3E985D7DC3352166E414B89DA2C17CC"
|
|
"5B69FC9C00990697F51A9002169D3C432F9C2F8B99E11632BD7D6A63F3D57679C567B"
|
|
"EDCB2E596ACE1050453732040CB468E9C43F6009B430CA4A4046D017E67A4BADD5B71"
|
|
"C0C9FCE2274817F0BCDA311A4F8703E6DC32AEDF30E6F9ABD40E249FC8B0A5045CC1E"
|
|
"47E60A60B4893EF92602F5584E1162F4FF3EE6D906228F97B442ACE1FB175D113B671"
|
|
"BDBE4CEFFDD98F2BB094C0DFAC03B79541A44D8AFFDC987F4268706B5A554E998907E"
|
|
"B7126E8C6BC07C837D8AEEBEA3249E37B4B7DD7327300FE7E62C15981CF73A13E806D"
|
|
"065BCADC2C747256907A5493592B07A0C07F9CD805FCDC0D30F70E4C4B2959A0F5238"
|
|
"5C6BD3E6EEB4E3D81FDC1A9DC3C76FAF1BFED913D58567FA9B296D27DFF5217C583E7"
|
|
"C134A642601F8237221E6B73696465363834393138643663333962666136353261343"
|
|
"061643933362A50703F69807C8F4D140168874B924A625132EB3B896A381D617B8FB8"
|
|
"3C7314A6B634D840925F711AE330599F0E0863800902B05D201A8A87B88A4BC17065A"
|
|
"1A8A556C34BF86B53AFCC9951BE15BEA9AB55301B122002206F46D9D05740AD34B99F"
|
|
"10C21A2FA23B8E45DCB00713E32D5CECF239D0A8")},
|
|
// test vector 8, app id: "app_1", usage entry 2
|
|
{"app_1",
|
|
{
|
|
a2bs_hex("d0b9a07ad7ffeec13784bd60da011be3589f3e450227fd36b1a3f6786cdb"
|
|
"fe8f"),
|
|
a2bs_hex("a419c5687a592099dc67da8bc4f5ef238c80fe4ce3e2fcb025392efb1438"
|
|
"4b581b595a0e8fa95de637fb2184719eb36ad6539ee9df0f67697f91d018"
|
|
"6e04552e811196029cf4e256518ddf3215af8ec61442c17d6753b93f9d3a"
|
|
"9240bae39bacf5563659cf47d3a611ce20ed3ebbf86cddad60cc2847c459"
|
|
"5dcfd934d012ce205960052158461d7c5d480de2e597876e64e8f8de6928"
|
|
"29a3"),
|
|
a2bs_hex("f7c19357e50fc474437c1a635c5bae8f6f51afa20750766db19457dff7ae"
|
|
"f2cae78848a225cc6a088bbcffead5be6aab6fc8af091bf459c3bd9bcfa1"
|
|
"8de53ef76db1b4826cf0b8ff7b2d7c44bbadb3cd7aedd8f639d1f38c52a5"
|
|
"8611a9782aeace72be69a73d2e091a1120dc63f7ba6f1cb6cddd69e9a236"
|
|
"232ed8c14cee665756ba51f1d2e2530ab3662ce1b6efba91c5f10c53abc8"
|
|
"86d6f25b5dc40417e54270843f3b454c8c047fc366249e30379b0fbe0174"
|
|
"fcab8b8405ae7f20f6f2b81f11082ff0e270b75f1e1aa7ed5806f4e65b46"
|
|
"b872dbcb703d7bf20b9ecaa481425a5218d85a49595f3ed268d61f1be8e3"
|
|
"8e6126eb075fa6b7ae80431c8521c4bc2ce701e45d33bfca9a5b0b66b550"
|
|
"aab21eae41f84cadfd2517dee9a2c139ad475c387d25"),
|
|
"ksid321bb636f8a3f5cd5d54a236",
|
|
a2bs_hex("c3cb027611397b5d70cc0b08e0f5249cd19996da674e33722902173d45d7"
|
|
"09914a3d7e898d93170317bfcff34861c0d687048cc93542a75a2c99b232"
|
|
"3fafea1ee0c3e3d24edf2633"),
|
|
7,
|
|
},
|
|
a2bs_hex(
|
|
"0ABD0E080310012AB60E0AEA040A20BB3370CCD3C3C49573D6B74386D1886D9888BD8"
|
|
"1FE3241BCD2BAC9407D1A834E12C001DC0E51CFA5863F6C0B32A4AD7FA40625DADCC2"
|
|
"DCDE9E7FA3983B8804D9966803181682FC8AE831472E0B2FC26276242FBCE624D286E"
|
|
"EDECCE5555804913B4F8F86C5AE86160B8434B109169A63DA04C5265102D772C11805"
|
|
"43EF226D2140357ACA6CF87DA3F7E370DFC08CA92A1F7C7D314EAB36292A91708F6C6"
|
|
"AD84B37EE1C7DFAFB99289206CB752D063F330EFD85885F4B72BA1CA5823EED865A46"
|
|
"1345E3D6417872BF3B0608B3D9E1004C11E7326D3ED406192E13455D0EC4E1F558A14"
|
|
"71A8002F42A68CA3A14FB68F5992E4519F57970C3DAE73F8DA1D5B0B1DA3EFF7A9540"
|
|
"12A0DC634357F3F5477A820E182182F24AE8E835AB10C18386CC8A0727D3F38B62863"
|
|
"9BFBD69A94D4053EAB1C31E075E014CC578B226CFE24D6B42DB242972DEF8F23A4AAE"
|
|
"88451307C2ABAF54C1803AE54E3F1149AA6E6D4288CC7D474E876BE07954E8B2DEFF4"
|
|
"ADE4BF30229FB6C92DF4D66CD463F686B4754B940210EB59F1581D658DDF8DE8389E0"
|
|
"E2D123E2CAE3C2BE6EB1948CCC896DD4CDF45F9090C96DFB925795CFB4CCDA83E3EB4"
|
|
"F745577B17FC166BF5F4103C9085134CAD7863A41B04F32EF20201E54B55F1817CE58"
|
|
"9619B096C254FD2C2FA4A06F4DE35CCFD23E221C6B736964653131313039626632306"
|
|
"3646535343430383365663465652A60EA106C124476B753D39368A5966972A2729BB8"
|
|
"BBEA734A2B3E812B705EACE016C8A03C9A406094D80059EF4CA26F1928FA2DAA5DE9A"
|
|
"6F22372E5C7A941E610D1EFB56ED7CE2228A70E2E150AFB66EDC2DA066D463AA90BA0"
|
|
"CAFF078FBFEC05C830000AF5040A21EACE80E30BFDA213F1CE4DBCFD9D4D24B8E2AE0"
|
|
"0054D167D9D7AE99547062B911312B40168A7665A21348FC0590328608DC520BE40F5"
|
|
"B749328568FE383EF69C1A587AB2446CF9C41D821373D0856A883B316519A42218F80"
|
|
"E7BD5764D16BAC9A9B427A7278F5940E563FCF6DEE0FF3AADBB702EBF2C54EC354AE7"
|
|
"ACC84EE6A54BCA1F30E38EF71C44A81D0009B1484FEAF4F1A56F58C35BB2372C80C6D"
|
|
"FB389E6DE60BDD3D46C03975715260F6FDBE42FACB64C22EDA9635C04DA79434E1C41"
|
|
"FBD2FDBBAB6598283226C0278E8E0A96D780D3436523EFD11AFA01FF6FECF71578288"
|
|
"12A2D6DCB15383A6D9AF4519EF804C6053A10C436002DE3A4EFCC017755F4AD1101BD"
|
|
"C813E2D211732418DEE529CBB413C48AA5884C76A5C6F556A715055560D4247F5BF31"
|
|
"0956949A3A171A4AA608A48446884E7676D558FF64D392B84E617805693D90F1E9B7B"
|
|
"540C383D384D7F7CE06C23618681BD838CEB1A514047F1C562C43159CC5E21588FBFC"
|
|
"E8A354111160F1A1E2BD3D798A000579BDFDB977252809EE1502DF8045972FE8AAC84"
|
|
"0211C2F8D9E4D5BE18509C327C647D654C4B6CC430B98F1FF37C96FAB087FB561B8CC"
|
|
"18480F877C873594D3148FF74B0E3C6327C27CA876DAE7422398FC5E85269CBA49AD0"
|
|
"99221C6B7369643865383033353063626566363436336130303235653663632A7C7CC"
|
|
"C7CE96055E16A52FA192EA2CF3C9DF3E89B9133A52286F71E6C6D82D0435F6B2155DF"
|
|
"DE590B347D8C86F62D7DFBAAE640C237256F609E5DA9CC6C103465FE3441612BBDFDF"
|
|
"4D1C24B2147FEB8565CEF4993E439C9D564A39A4AC5BB1DA69ACB44DA06E4522C9A93"
|
|
"D310CDDA5DAC1E1E0B91ABFF41E4E2EDDA400130070ACE040A20D0B9A07AD7FFEEC13"
|
|
"784BD60DA011BE3589F3E450227FD36B1A3F6786CDBFE8F129801A419C5687A592099"
|
|
"DC67DA8BC4F5EF238C80FE4CE3E2FCB025392EFB14384B581B595A0E8FA95DE637FB2"
|
|
"184719EB36AD6539EE9DF0F67697F91D0186E04552E811196029CF4E256518DDF3215"
|
|
"AF8EC61442C17D6753B93F9D3A9240BAE39BACF5563659CF47D3A611CE20ED3EBBF86"
|
|
"CDDAD60CC2847C4595DCFD934D012CE205960052158461D7C5D480DE2E597876E64E8"
|
|
"F8DE692829A31AA402F7C19357E50FC474437C1A635C5BAE8F6F51AFA20750766DB19"
|
|
"457DFF7AEF2CAE78848A225CC6A088BBCFFEAD5BE6AAB6FC8AF091BF459C3BD9BCFA1"
|
|
"8DE53EF76DB1B4826CF0B8FF7B2D7C44BBADB3CD7AEDD8F639D1F38C52A58611A9782"
|
|
"AEACE72BE69A73D2E091A1120DC63F7BA6F1CB6CDDD69E9A236232ED8C14CEE665756"
|
|
"BA51F1D2E2530AB3662CE1B6EFBA91C5F10C53ABC886D6F25B5DC40417E54270843F3"
|
|
"B454C8C047FC366249E30379B0FBE0174FCAB8B8405AE7F20F6F2B81F11082FF0E270"
|
|
"B75F1E1AA7ED5806F4E65B46B872DBCB703D7BF20B9ECAA481425A5218D85A49595F3"
|
|
"ED268D61F1BE8E38E6126EB075FA6B7AE80431C8521C4BC2CE701E45D33BFCA9A5B0B"
|
|
"66B550AAB21EAE41F84CADFD2517DEE9A2C139AD475C387D25221C6B7369643332316"
|
|
"262363336663861336635636435643534613233362A48C3CB027611397B5D70CC0B08"
|
|
"E0F5249CD19996DA674E33722902173D45D709914A3D7E898D93170317BFCFF34861C"
|
|
"0D687048CC93542A75A2C99B2323FAFEA1EE0C3E3D24EDF263330071220B174821B32"
|
|
"5B0A6A900AD8C660C755D3B0273CA6E81D70E2C548CDEC07BE53FA")},
|
|
};
|
|
|
|
DeviceFiles::CdmUsageData kUsageInfoUpdateTestData = {
|
|
a2bs_hex("b8e7f26b6b83d6b74386d1886d9888bd81fe3241bca928f09407329814ae"
|
|
"5a82"),
|
|
a2bs_hex("4463dc57079c27e34ae115c6f65b08f6311c4ea604a6512c42470b6f692a"
|
|
"6803181682fc8ae831472e0b2fc26276242fbce624d286eedecce5555804"
|
|
"913b4f8f86c5ae86160b8434b109169a63da04c5265102d772c1180543ef"
|
|
"226d2140357aca6cf87da3f7e370dfc08ca92a1f7c7d314eab36292a9170"
|
|
"26eb30165372d538b551ebd7bae5cf0bbeebb3cdb6f180d42868051aab8f"
|
|
"e50379507b41620d15dd76c0b1e7ed9417efd6825959b5077f464e6429a4"
|
|
"6ffc101036da70e69c06e4916493e82e9fe3f65d85254c8c14f6ca0579bf"
|
|
"2a0d4d1915cd0537ff0f62cf13eb2fa2"),
|
|
a2bs_hex("bbe6b4b60da9d9bc34dcc8502fb81d8fd5fdbc8fa89605c86205f2b8c6530ff64"
|
|
"c84012a0dc634357f3f5477a820e182182f24ae8e835ab10c18386cc8a0727816"
|
|
"a6144a12b6c22d1dceba20669ed635a40831066abd8071342119d7da11c43696b"
|
|
"289d3f38b628639bfbd69a94d4053eab1c31e075e014cc578b226cfe24d6b4272"
|
|
"dffffb6e79bbceaf8594045d16a62eed16904a3569860c531a32eaa5abb868b1d"
|
|
"d6adb242972def8f23a4aae88451307c2abaf54c1803ae54e3f1149aa6e6d42ae"
|
|
"d30e9ffa99fc00b47f7eeb469512a413e873f91d959cccacccd3585b7f00ed8d4"
|
|
"685022101713c3adc439f27512a45926c1d2473477662c4bace72f380d105ddc9"
|
|
"f88cc7d474e876be07954e8b2deff4ade4bf30229fb6c92df4d66cd463f6848fe"
|
|
"e82b655583317eca4aaa4dac841524a2dca111749629637ef29fa7e72645a8759"
|
|
"57fb6b4754b940210eb59f1581d658ddf8de8389e0e2d123e2cae3c2be6eb1943"
|
|
"ea7458823f0229f2fa90b7a7099e8ec349d3d0fe0277cba5157ca62c8fbaa893f"
|
|
"37b8c8cea2a0d2d2912caccf92d31aa17439479711b4a5b77445cc02c18bfe019"
|
|
"5ce8ccc896dd4cdf45f9090c96dfb925795cfb4ccda83e3eb4f745577b17fc199"
|
|
"6ec66bf5f4103c9085134cad7863a41b04f32ef20201e54b55f1817ce5896195b"
|
|
"376874e9750212fe94d7656d9cd835db3b771ba5b58d2b255"),
|
|
"ksid854c89bf20cde54122c24fca",
|
|
a2bs_hex("7d2b905e368a5966972a2729bb8bbea734a2b21a68eb26cc8c3b2e344579"
|
|
"003b12a3855016c8a03c9a406094d80059ef4ca26f1928fa2a3f0782c72d"
|
|
"ba0e2228a70e2e150afb66e305e4bc0b2561ae2b"),
|
|
6,
|
|
};
|
|
|
|
struct HlsAttributesInfo {
|
|
std::string key_set_id;
|
|
CdmHlsMethod method;
|
|
std::string media_segment_iv;
|
|
std::string file_data;
|
|
};
|
|
|
|
HlsAttributesInfo kHlsAttributesTestData[] = {
|
|
{
|
|
"ksidC8EAA2579A282EB0", kHlsMethodAes128, // hls attributes 0
|
|
a2bs_hex("F7C4D15BD466BF285E241A4E58638543"),
|
|
a2bs_hex("0A1A08041001321408011210F7C4D15BD466BF285E241A4E5863854312201"
|
|
"39114B0372FF80FADF92614106E27BE8BD1588B4CAE6E1AEFB7F9C34EA52E"
|
|
"CC"),
|
|
},
|
|
{
|
|
"ksidE8C37662C88DC673", kHlsMethodSampleAes, // hls attributes 1
|
|
a2bs_hex("16413F038088438B5D4CD99F03EBB3D8"),
|
|
a2bs_hex("0A1A0804100132140802121016413F038088438B5D4CD99F03EBB3D812205"
|
|
"9EA13188B75C55D1EB78B3A65DB3EA3F43BD1B16642266D988E3543943C5F"
|
|
"41"),
|
|
}};
|
|
|
|
// Usage Table and Entry Test Data
|
|
// Note: Make sure the number of entries in kUsageEntriesTestData and
|
|
// kUsageTableInfoTestData are equal.
|
|
CdmUsageEntryInfo kUsageEntriesTestData[] = {
|
|
// usage entry 0
|
|
{
|
|
kStorageLicense, "ksid0", "",
|
|
},
|
|
// usage entry 1
|
|
{
|
|
kStorageLicense, "ksid1", "",
|
|
},
|
|
// usage entry 2
|
|
{
|
|
kStorageUsageInfo, "", "app_id_2",
|
|
},
|
|
// usage entry 3
|
|
{
|
|
kStorageUsageInfo, "", "app_id_3",
|
|
},
|
|
// usage entry 4
|
|
{
|
|
kStorageLicense, "ksid4", "",
|
|
},
|
|
// usage entry 5
|
|
{
|
|
kStorageUsageInfo, "", "app_id_5",
|
|
},
|
|
|
|
};
|
|
|
|
struct UsageTableTestInfo {
|
|
CdmUsageTableHeader usage_table_header;
|
|
std::string file_data;
|
|
};
|
|
|
|
UsageTableTestInfo kUsageTableInfoTestData[] = {
|
|
// usage table 0
|
|
|
|
{a2bs_hex("5574517CCC"),
|
|
a2bs_hex("0A18080510013A120A055574517CCC1209080112056B73696430122018268E3F"
|
|
"384F28D04BEE00304089C000463C22E987532855390915FD02C36B5C")},
|
|
// usage table 1
|
|
{a2bs_hex("CA870203010001288001"),
|
|
a2bs_hex("0A2C080510013A260A0ACA870203010001288001120B080112056B736964301A"
|
|
"00120B080112056B736964311A00122049A8F3481444A5B64B6C4F05FBCC2EF8"
|
|
"CB67444A08654763F2F5B80F658D7B38")},
|
|
// usage table 2
|
|
{a2bs_hex("7A7D507618A5D3A68F05228E023082010A028201"),
|
|
a2bs_hex("0A46080510013A400A147A7D507618A5D3A68F05228E023082010A028201120B"
|
|
"080112056B736964301A00120B080112056B736964311A00120E080212001A08"
|
|
"6170705F69645F321220783E93A02223BDB94E743856C0F69C35B213ACCDDE91"
|
|
"93E48E9186AA83B80584")},
|
|
// usage table 3
|
|
{a2bs_hex("E83A4902772DAFD2740B7748E9C3B1752D6F12859CED07E82969B4EC"),
|
|
a2bs_hex("0A5E080510013A580A1CE83A4902772DAFD2740B7748E9C3B1752D6F12859CED"
|
|
"07E82969B4EC120B080112056B736964301A00120B080112056B736964311A00"
|
|
"120E080212001A086170705F69645F32120E080212001A086170705F69645F33"
|
|
"122084E67F1338727291BC3D92E28442DC8B0F44CB5AF7B98A799313B7EB7F55"
|
|
"ED18")},
|
|
// usage table 4
|
|
{a2bs_hex("CA870203010001288001300112800250D1F8B1ECF849B60FF93E37C4DEEF"
|
|
"52F1CCFC047EF42300131F9C4758F4"),
|
|
a2bs_hex("0A7C080510013A760A2DCA870203010001288001300112800250D1F8B1ECF849"
|
|
"B60FF93E37C4DEEF52F1CCFC047EF42300131F9C4758F4120B080112056B7369"
|
|
"64301A00120B080112056B736964311A00120E080212001A086170705F69645F"
|
|
"32120E080212001A086170705F69645F33120B080112056B736964341A001220"
|
|
"1CDFCFED5E58A1DF77E1B335305424E1F0260340F9CC15985684C43A4207652"
|
|
"1")},
|
|
// usage table 5
|
|
{a2bs_hex("EC83A4902772DAFD2740B7748E9C3B1752D6F12859CED07E8882969B433E"
|
|
"C29AC6FDBE79230B0FAED5D94CF6B829A420BBE3270323941776EE60DD6B"),
|
|
a2bs_hex("0A9C01080510013A95010A3CEC83A4902772DAFD2740B7748E9C3B1752D6F128"
|
|
"59CED07E8882969B433EC29AC6FDBE79230B0FAED5D94CF6B829A420BBE32703"
|
|
"23941776EE60DD6B120B080112056B736964301A00120B080112056B73696431"
|
|
"1A00120E080212001A086170705F69645F32120E080212001A086170705F6964"
|
|
"5F33120B080112056B736964341A00120E080212001A086170705F69645F3512"
|
|
"20305C7A27A918268119E1996FC182C153DF805034A387F90C3585749E764731"
|
|
"32")},
|
|
};
|
|
|
|
class MockFile : public File {
|
|
public:
|
|
MockFile() {}
|
|
~MockFile() override {}
|
|
|
|
MOCK_METHOD2(Read, ssize_t(char*, size_t));
|
|
MOCK_METHOD2(Write, ssize_t(const char*, size_t));
|
|
};
|
|
|
|
class MockFileSystem : public FileSystem {
|
|
public:
|
|
MockFileSystem() {}
|
|
~MockFileSystem() {}
|
|
|
|
// Until gmock is updated to a version post-April 2017, we need this
|
|
// workaround to test functions that take or return smart pointers.
|
|
// See
|
|
// https://github.com/abseil/googletest/blob/master/googlemock/docs/CookBook.md#legacy-workarounds-for-move-only-types
|
|
std::unique_ptr<File> Open(const std::string& buffer, int flags) {
|
|
return std::unique_ptr<File>(DoOpen(buffer, flags));
|
|
}
|
|
|
|
MOCK_METHOD2(DoOpen, File*(const std::string&, int flags));
|
|
MOCK_METHOD0(IsFactoryReset, bool());
|
|
|
|
MOCK_METHOD1(Exists, bool(const std::string&));
|
|
MOCK_METHOD1(Remove, bool(const std::string&));
|
|
MOCK_METHOD1(FileSize, ssize_t(const std::string&));
|
|
MOCK_METHOD2(List, bool(const std::string&, std::vector<std::string>*));
|
|
};
|
|
|
|
} // namespace
|
|
|
|
// gmock methods
|
|
using ::testing::_;
|
|
using ::testing::AllOf;
|
|
using ::testing::DoAll;
|
|
using ::testing::Eq;
|
|
using ::testing::Gt;
|
|
using ::testing::HasSubstr;
|
|
using ::testing::InSequence;
|
|
using ::testing::InvokeWithoutArgs;
|
|
using ::testing::NotNull;
|
|
using ::testing::Return;
|
|
using ::testing::ReturnArg;
|
|
using ::testing::SetArgPointee;
|
|
using ::testing::SetArrayArgument;
|
|
using ::testing::StrEq;
|
|
|
|
class DeviceFilesTest : public ::testing::Test {
|
|
protected:
|
|
void SetUp() override {
|
|
ASSERT_TRUE(Properties::GetDeviceFilesBasePath(kSecurityLevelL1,
|
|
&device_base_path_));
|
|
}
|
|
|
|
std::string GenerateRandomData(uint32_t len) {
|
|
std::string data(len, 0);
|
|
for (size_t i = 0; i < len; i++) {
|
|
data[i] = rand() % 256;
|
|
}
|
|
return data;
|
|
}
|
|
|
|
size_t GetLicenseDataSize(LicenseInfo& data) {
|
|
CdmAppParameterMap app_parameters = GetAppParameters(data.app_parameters);
|
|
size_t app_parameters_len = 0;
|
|
CdmAppParameterMap::const_iterator itr = app_parameters.begin();
|
|
for (itr = app_parameters.begin(); itr != app_parameters.end(); ++itr) {
|
|
app_parameters_len += itr->first.length();
|
|
app_parameters_len += itr->second.length();
|
|
}
|
|
return sizeof(DeviceFiles::LicenseState) + data.pssh_data.size() +
|
|
data.key_request.size() + data.key_response.size() +
|
|
data.key_renewal_request.size() + data.key_renewal_response.size() +
|
|
data.key_release_url.size() + 3 * sizeof(int64_t) +
|
|
app_parameters_len + data.usage_entry.size();
|
|
}
|
|
|
|
CdmAppParameterMap GetAppParameters(std::string str) {
|
|
CdmAppParameterMap app_parameters;
|
|
size_t start_pos = 0;
|
|
size_t len = str.length();
|
|
while (start_pos < len) {
|
|
size_t name_end_pos = str.find(' ', start_pos);
|
|
if (name_end_pos == std::string::npos) return app_parameters;
|
|
if (name_end_pos + 1 >= len) return app_parameters;
|
|
size_t value_end_pos = str.find(' ', name_end_pos + 1);
|
|
app_parameters[str.substr(start_pos, name_end_pos)] =
|
|
str.substr(name_end_pos + 1, value_end_pos);
|
|
if (value_end_pos == std::string::npos || value_end_pos + 1 >= len)
|
|
return app_parameters;
|
|
start_pos = value_end_pos + 1;
|
|
}
|
|
return app_parameters;
|
|
}
|
|
|
|
std::string device_base_path_;
|
|
};
|
|
|
|
class DeviceFilesStoreTest : public DeviceFilesTest,
|
|
public ::testing::WithParamInterface<bool> {};
|
|
|
|
class DeviceCertificateStoreTest : public DeviceFilesTest {};
|
|
|
|
class DeviceCertificateTest : public DeviceFilesTest {};
|
|
|
|
class DeviceFilesSecurityLevelTest
|
|
: public DeviceFilesTest,
|
|
public ::testing::WithParamInterface<CdmSecurityLevel> {};
|
|
|
|
class DeviceFilesUsageInfoListTest
|
|
: public DeviceFilesTest,
|
|
public ::testing::WithParamInterface<int> {};
|
|
|
|
class DeviceFilesUsageInfoTest : public DeviceFilesTest,
|
|
public ::testing::WithParamInterface<int> {};
|
|
|
|
class DeviceFilesHlsAttributesTest
|
|
: public DeviceFilesTest,
|
|
public ::testing::WithParamInterface<HlsAttributesInfo*> {};
|
|
|
|
class DeviceFilesUsageTableTest : public DeviceFilesTest,
|
|
public ::testing::WithParamInterface<int> {};
|
|
|
|
MATCHER(IsCreateFileFlagSet, "") { return FileSystem::kCreate & arg; }
|
|
MATCHER_P(IsStrEq, str, "") {
|
|
// Estimating the length of data. We can have gmock provide length
|
|
// as well as pointer to data but that will introduce a dependency on tr1
|
|
return memcmp(arg, str.c_str(), str.size()) == 0;
|
|
}
|
|
MATCHER_P(ContainsAllElementsInVector, str_vector, "") {
|
|
// Estimating the length of data. We can have gmock provide length
|
|
// as well as pointer to data but that will introduce a dependency on tr1
|
|
size_t str_length = 0;
|
|
for (size_t i = 0; i < str_vector.size(); ++i) {
|
|
str_length += str_vector[i].size();
|
|
}
|
|
std::string data(arg, str_length + kProtobufEstimatedOverhead);
|
|
bool all_entries_found = true;
|
|
for (size_t i = 0; i < str_vector.size(); ++i) {
|
|
if (data.find(str_vector[i]) == std::string::npos) {
|
|
all_entries_found = false;
|
|
}
|
|
}
|
|
return all_entries_found;
|
|
}
|
|
MATCHER_P2(Contains, str1, size, "") {
|
|
// Estimating the length of data. We can have gmock provide length
|
|
// as well as pointer to data but that will introduce a dependency on tr1
|
|
std::string data(arg, size + str1.size() + kProtobufEstimatedOverhead);
|
|
return (data.find(str1) != std::string::npos);
|
|
}
|
|
MATCHER_P3(Contains, str1, str2, size, "") {
|
|
// Estimating the length of data. We can have gmock provide length
|
|
// as well as pointer to data but that will introduce a dependency on tr1
|
|
std::string data(
|
|
arg, size + str1.size() + str2.size() + kProtobufEstimatedOverhead);
|
|
return (data.find(str1) != std::string::npos &&
|
|
data.find(str2) != std::string::npos);
|
|
}
|
|
MATCHER_P4(Contains, str1, str2, str3, size, "") {
|
|
// Estimating the length of data. We can have gmock provide length
|
|
// as well as pointer to data but that will introduce a dependency on tr1
|
|
std::string data(arg, size + str1.size() + str2.size() + str3.size() +
|
|
kProtobufEstimatedOverhead);
|
|
return (data.find(str1) != std::string::npos &&
|
|
data.find(str2) != std::string::npos &&
|
|
data.find(str3) != std::string::npos);
|
|
}
|
|
MATCHER_P6(Contains, str1, str2, str3, str4, str5, size, "") {
|
|
// Estimating the length of data. We can have gmock provide length
|
|
// as well as pointer to data but that will introduce a dependency on tr1
|
|
std::string data(arg, size + str1.size() + str2.size() + str3.size() +
|
|
str4.size() + str5.size() +
|
|
kProtobufEstimatedOverhead);
|
|
return (data.find(str1) != std::string::npos &&
|
|
data.find(str2) != std::string::npos &&
|
|
data.find(str3) != std::string::npos &&
|
|
data.find(str4) != std::string::npos &&
|
|
data.find(str5) != std::string::npos);
|
|
}
|
|
MATCHER_P8(Contains, str1, str2, str3, str4, str5, str6, map7, str8, "") {
|
|
// Estimating the length of data. We can have gmock provide length
|
|
// as well as pointer to data but that will introduce a dependency on tr1
|
|
size_t map7_len = 0;
|
|
CdmAppParameterMap::const_iterator itr = map7.begin();
|
|
for (itr = map7.begin(); itr != map7.end(); ++itr) {
|
|
map7_len += itr->first.length();
|
|
map7_len += itr->second.length();
|
|
}
|
|
std::string data(arg, str1.size() + str2.size() + str3.size() + str4.size() +
|
|
str5.size() + str6.size() + map7_len + str8.size() +
|
|
kProtobufEstimatedOverhead);
|
|
bool map7_entries_present = true;
|
|
for (itr = map7.begin(); itr != map7.end(); ++itr) {
|
|
map7_entries_present = map7_entries_present &&
|
|
data.find(itr->first) != std::string::npos &&
|
|
data.find(itr->second) != std::string::npos;
|
|
}
|
|
return (data.find(str1) != std::string::npos &&
|
|
data.find(str2) != std::string::npos &&
|
|
data.find(str3) != std::string::npos &&
|
|
data.find(str4) != std::string::npos &&
|
|
data.find(str5) != std::string::npos &&
|
|
data.find(str6) != std::string::npos && map7_entries_present &&
|
|
data.find(str8) != std::string::npos);
|
|
}
|
|
|
|
TEST_F(DeviceCertificateStoreTest, StoreCertificate) {
|
|
MockFileSystem file_system;
|
|
std::string certificate(GenerateRandomData(kCertificateLen));
|
|
std::string wrapped_private_key(GenerateRandomData(kWrappedKeyLen));
|
|
std::string device_certificate_path =
|
|
device_base_path_ + DeviceFiles::GetCertificateFileName();
|
|
|
|
// Call to Open will return a unique_ptr, freeing this object.
|
|
MockFile* file = new MockFile();
|
|
EXPECT_CALL(file_system,
|
|
DoOpen(StrEq(device_certificate_path), IsCreateFileFlagSet()))
|
|
.WillOnce(Return(file));
|
|
EXPECT_CALL(*file, Write(Contains(certificate, wrapped_private_key, 0),
|
|
Gt(certificate.size() + wrapped_private_key.size())))
|
|
.WillOnce(ReturnArg<1>());
|
|
EXPECT_CALL(*file, Read(_, _)).Times(0);
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
EXPECT_TRUE(device_files.StoreCertificate(certificate, wrapped_private_key));
|
|
}
|
|
|
|
// TODO(tinskip): Fix. kTestCertificateFileData appears to be incorect.
|
|
TEST_F(DeviceCertificateTest, DISABLED_ReadCertificate) {
|
|
MockFileSystem file_system;
|
|
std::string device_certificate_path =
|
|
device_base_path_ + DeviceFiles::GetCertificateFileName();
|
|
std::string data = a2bs_hex(kTestCertificateFileData);
|
|
|
|
// Call to Open will return a unique_ptr, freeing this object.
|
|
MockFile* file = new MockFile();
|
|
EXPECT_CALL(file_system, Exists(StrEq(device_certificate_path)))
|
|
.WillOnce(Return(true));
|
|
EXPECT_CALL(file_system, FileSize(StrEq(device_certificate_path)))
|
|
.WillOnce(Return(data.size()));
|
|
EXPECT_CALL(file_system, DoOpen(StrEq(device_certificate_path), _))
|
|
.WillOnce(Return(file));
|
|
EXPECT_CALL(*file, Read(NotNull(), Eq(data.size())))
|
|
.WillOnce(DoAll(SetArrayArgument<0>(data.begin(), data.end()),
|
|
Return(data.size())));
|
|
EXPECT_CALL(*file, Write(_, _)).Times(0);
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
|
|
std::string certificate, wrapped_private_key;
|
|
std::string serial_number;
|
|
uint32_t system_id = 0;
|
|
ASSERT_TRUE(
|
|
device_files.RetrieveCertificate(&certificate, &wrapped_private_key,
|
|
&serial_number, &system_id));
|
|
EXPECT_EQ(kTestCertificate, b2a_hex(certificate));
|
|
EXPECT_EQ(kTestWrappedPrivateKey, b2a_hex(wrapped_private_key));
|
|
}
|
|
|
|
TEST_F(DeviceCertificateTest, HasCertificate) {
|
|
MockFileSystem file_system;
|
|
std::string device_certificate_path =
|
|
device_base_path_ + DeviceFiles::GetCertificateFileName();
|
|
|
|
EXPECT_CALL(file_system, Exists(StrEq(device_certificate_path)))
|
|
.WillOnce(Return(false))
|
|
.WillOnce(Return(true));
|
|
EXPECT_CALL(file_system, DoOpen(_, _)).Times(0);
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
ASSERT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
|
|
// MockFile returns false.
|
|
EXPECT_FALSE(device_files.HasCertificate());
|
|
// MockFile returns true.
|
|
EXPECT_TRUE(device_files.HasCertificate());
|
|
}
|
|
|
|
TEST_P(DeviceFilesSecurityLevelTest, SecurityLevel) {
|
|
MockFileSystem file_system;
|
|
std::string certificate(GenerateRandomData(kCertificateLen));
|
|
std::string wrapped_private_key(GenerateRandomData(kWrappedKeyLen));
|
|
|
|
CdmSecurityLevel security_level = GetParam();
|
|
std::string device_base_path;
|
|
ASSERT_TRUE(
|
|
Properties::GetDeviceFilesBasePath(security_level, &device_base_path));
|
|
std::string device_certificate_path =
|
|
device_base_path + DeviceFiles::GetCertificateFileName();
|
|
|
|
// Call to Open will return a unique_ptr, freeing this object.
|
|
MockFile* file = new MockFile();
|
|
EXPECT_CALL(file_system,
|
|
DoOpen(StrEq(device_certificate_path), IsCreateFileFlagSet()))
|
|
.WillOnce(Return(file));
|
|
EXPECT_CALL(*file, Write(Contains(certificate, wrapped_private_key, 0),
|
|
Gt(certificate.size() + wrapped_private_key.size())))
|
|
.WillOnce(ReturnArg<1>());
|
|
EXPECT_CALL(*file, Read(_, _)).Times(0);
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(security_level));
|
|
EXPECT_TRUE(device_files.StoreCertificate(certificate, wrapped_private_key));
|
|
}
|
|
|
|
INSTANTIATE_TEST_CASE_P(SecurityLevel, DeviceFilesSecurityLevelTest,
|
|
::testing::Values(kSecurityLevelL1, kSecurityLevelL3));
|
|
|
|
TEST_P(DeviceFilesStoreTest, StoreLicense) {
|
|
MockFileSystem file_system;
|
|
size_t license_num = 0;
|
|
std::string license_path = device_base_path_ +
|
|
license_test_data[license_num].key_set_id +
|
|
DeviceFiles::GetLicenseFileNameExtension();
|
|
|
|
CdmAppParameterMap app_parameters =
|
|
GetAppParameters(license_test_data[license_num].app_parameters);
|
|
|
|
// Call to Open will return a unique_ptr, freeing this object.
|
|
MockFile* file = new MockFile();
|
|
EXPECT_CALL(file_system, DoOpen(StrEq(license_path), IsCreateFileFlagSet()))
|
|
.WillOnce(Return(file));
|
|
EXPECT_CALL(
|
|
*file, Write(Contains(license_test_data[license_num].pssh_data,
|
|
license_test_data[license_num].key_request,
|
|
license_test_data[license_num].key_response,
|
|
license_test_data[license_num].key_renewal_request,
|
|
license_test_data[license_num].key_renewal_response,
|
|
license_test_data[license_num].key_release_url,
|
|
app_parameters,
|
|
license_test_data[license_num].usage_entry),
|
|
Gt(GetLicenseDataSize(license_test_data[license_num]))))
|
|
.WillOnce(ReturnArg<1>());
|
|
EXPECT_CALL(*file, Read(_, _)).Times(0);
|
|
|
|
DeviceFiles::ResponseType sub_error_code;
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
EXPECT_TRUE(device_files.StoreLicense(
|
|
license_test_data[license_num].key_set_id,
|
|
license_test_data[license_num].license_state,
|
|
license_test_data[license_num].pssh_data,
|
|
license_test_data[license_num].key_request,
|
|
license_test_data[license_num].key_response,
|
|
license_test_data[license_num].key_renewal_request,
|
|
license_test_data[license_num].key_renewal_response,
|
|
license_test_data[license_num].key_release_url,
|
|
license_test_data[license_num].playback_start_time,
|
|
license_test_data[license_num].last_playback_time,
|
|
license_test_data[license_num].grace_period_end_time, app_parameters,
|
|
license_test_data[license_num].usage_entry,
|
|
license_test_data[license_num].usage_entry_number, &sub_error_code));
|
|
EXPECT_EQ(DeviceFiles::kNoError, sub_error_code);
|
|
}
|
|
|
|
INSTANTIATE_TEST_CASE_P(StoreLicense, DeviceFilesStoreTest, ::testing::Bool());
|
|
|
|
TEST_F(DeviceFilesTest, StoreLicenses) {
|
|
MockFileSystem file_system;
|
|
|
|
for (size_t i = 0; i < kNumberOfLicenses; ++i) {
|
|
std::string license_path = device_base_path_ +
|
|
license_test_data[i].key_set_id +
|
|
DeviceFiles::GetLicenseFileNameExtension();
|
|
|
|
CdmAppParameterMap app_parameters =
|
|
GetAppParameters(license_test_data[i].app_parameters);
|
|
|
|
// Call to Open will return a unique_ptr, freeing this object.
|
|
MockFile* file = new MockFile();
|
|
EXPECT_CALL(file_system, DoOpen(StrEq(license_path), IsCreateFileFlagSet()))
|
|
.WillOnce(Return(file));
|
|
|
|
EXPECT_CALL(
|
|
*file, Write(Contains(license_test_data[i].pssh_data,
|
|
license_test_data[i].key_request,
|
|
license_test_data[i].key_response,
|
|
license_test_data[i].key_renewal_request,
|
|
license_test_data[i].key_renewal_response,
|
|
license_test_data[i].key_release_url,
|
|
app_parameters, license_test_data[i].usage_entry),
|
|
Gt(GetLicenseDataSize(license_test_data[i]))))
|
|
.WillOnce(ReturnArg<1>());
|
|
EXPECT_CALL(*file, Read(_, _)).Times(0);
|
|
}
|
|
|
|
DeviceFiles::ResponseType sub_error_code;
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
for (size_t i = 0; i < kNumberOfLicenses; i++) {
|
|
CdmAppParameterMap app_parameters =
|
|
GetAppParameters(license_test_data[i].app_parameters);
|
|
|
|
EXPECT_TRUE(device_files.StoreLicense(
|
|
license_test_data[i].key_set_id, license_test_data[i].license_state,
|
|
license_test_data[i].pssh_data, license_test_data[i].key_request,
|
|
license_test_data[i].key_response,
|
|
license_test_data[i].key_renewal_request,
|
|
license_test_data[i].key_renewal_response,
|
|
license_test_data[i].key_release_url,
|
|
license_test_data[i].playback_start_time,
|
|
license_test_data[i].last_playback_time,
|
|
license_test_data[i].grace_period_end_time, app_parameters,
|
|
license_test_data[i].usage_entry,
|
|
license_test_data[i].usage_entry_number, &sub_error_code));
|
|
EXPECT_EQ(DeviceFiles::kNoError, sub_error_code);
|
|
}
|
|
}
|
|
|
|
TEST_F(DeviceFilesTest, RetrieveLicenses) {
|
|
MockFileSystem file_system;
|
|
|
|
for (size_t i = 0; i < kNumberOfLicenses; ++i) {
|
|
std::string license_path = device_base_path_ +
|
|
license_test_data[i].key_set_id +
|
|
DeviceFiles::GetLicenseFileNameExtension();
|
|
|
|
size_t size = license_test_data[i].file_data.size();
|
|
|
|
// Call to Open will return a unique_ptr, freeing this object.
|
|
MockFile* file = new MockFile();
|
|
|
|
EXPECT_CALL(file_system, Exists(StrEq(license_path)))
|
|
.WillOnce(Return(true));
|
|
EXPECT_CALL(file_system, FileSize(StrEq(license_path)))
|
|
.WillOnce(Return(size));
|
|
EXPECT_CALL(file_system, DoOpen(StrEq(license_path), _))
|
|
.WillOnce(Return(file));
|
|
EXPECT_CALL(*file, Read(NotNull(), Eq(size)))
|
|
.WillOnce(
|
|
DoAll(SetArrayArgument<0>(license_test_data[i].file_data.begin(),
|
|
license_test_data[i].file_data.end()),
|
|
Return(size)));
|
|
EXPECT_CALL(*file, Write(_, _)).Times(0);
|
|
}
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
CdmInitData pssh_data;
|
|
CdmKeyMessage key_request;
|
|
CdmKeyResponse key_response;
|
|
CdmKeyMessage key_renewal_request;
|
|
CdmKeyResponse key_renewal_response;
|
|
int64_t playback_start_time, last_playback_time;
|
|
int64_t grace_period_end_time;
|
|
std::string release_server_url;
|
|
CdmAppParameterMap app_parameters;
|
|
std::string usage_entry;
|
|
uint32_t usage_entry_number;
|
|
DeviceFiles::ResponseType sub_error_code;
|
|
|
|
for (size_t i = 0; i < kNumberOfLicenses; i++) {
|
|
DeviceFiles::LicenseState license_state;
|
|
EXPECT_TRUE(device_files.RetrieveLicense(
|
|
license_test_data[i].key_set_id, &license_state, &pssh_data,
|
|
&key_request, &key_response, &key_renewal_request,
|
|
&key_renewal_response, &release_server_url, &playback_start_time,
|
|
&last_playback_time, &grace_period_end_time, &app_parameters,
|
|
&usage_entry, &usage_entry_number, &sub_error_code));
|
|
EXPECT_EQ(license_test_data[i].license_state, license_state);
|
|
EXPECT_EQ(license_test_data[i].pssh_data, pssh_data);
|
|
EXPECT_EQ(license_test_data[i].key_request, key_request);
|
|
EXPECT_EQ(license_test_data[i].key_response, key_response);
|
|
EXPECT_EQ(license_test_data[i].key_request, key_request);
|
|
EXPECT_EQ(license_test_data[i].key_response, key_response);
|
|
EXPECT_EQ(license_test_data[i].playback_start_time, playback_start_time);
|
|
EXPECT_EQ(license_test_data[i].last_playback_time, last_playback_time);
|
|
EXPECT_EQ(license_test_data[i].grace_period_end_time,
|
|
grace_period_end_time);
|
|
EXPECT_EQ(license_test_data[i].usage_entry, usage_entry);
|
|
EXPECT_EQ(license_test_data[i].usage_entry_number, usage_entry_number);
|
|
EXPECT_EQ(DeviceFiles::kNoError, sub_error_code);
|
|
|
|
std::map<std::string, std::string>::iterator itr;
|
|
for (itr = app_parameters.begin(); itr != app_parameters.end(); ++itr) {
|
|
EXPECT_NE(std::string::npos,
|
|
license_test_data[i].app_parameters.find(itr->first));
|
|
EXPECT_NE(std::string::npos,
|
|
license_test_data[i].app_parameters.find(itr->second));
|
|
}
|
|
}
|
|
}
|
|
|
|
TEST_F(DeviceFilesTest, AppParametersBackwardCompatibility) {
|
|
MockFileSystem file_system;
|
|
LicenseInfo* test_data =
|
|
&license_app_parameters_backwards_compatibility_test_data;
|
|
|
|
std::string license_path = device_base_path_ + test_data->key_set_id +
|
|
DeviceFiles::GetLicenseFileNameExtension();
|
|
|
|
size_t size = test_data->file_data.size();
|
|
|
|
// Call to Open will return a unique_ptr, freeing this object.
|
|
MockFile* file = new MockFile();
|
|
EXPECT_CALL(file_system, Exists(StrEq(license_path))).WillOnce(Return(true));
|
|
EXPECT_CALL(file_system, FileSize(StrEq(license_path)))
|
|
.WillOnce(Return(size));
|
|
EXPECT_CALL(file_system, DoOpen(StrEq(license_path), _))
|
|
.WillOnce(Return(file));
|
|
EXPECT_CALL(*file, Read(NotNull(), Eq(size)))
|
|
.WillOnce(DoAll(SetArrayArgument<0>(test_data->file_data.begin(),
|
|
test_data->file_data.end()),
|
|
Return(size)));
|
|
|
|
EXPECT_CALL(*file, Write(_, _)).Times(0);
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
DeviceFiles::LicenseState license_state;
|
|
CdmInitData pssh_data;
|
|
CdmKeyMessage key_request;
|
|
CdmKeyResponse key_response;
|
|
CdmKeyMessage key_renewal_request;
|
|
CdmKeyResponse key_renewal_response;
|
|
int64_t playback_start_time, last_playback_time;
|
|
int64_t grace_period_end_time;
|
|
std::string release_server_url;
|
|
CdmAppParameterMap app_parameters;
|
|
std::string usage_entry;
|
|
uint32_t usage_entry_number;
|
|
DeviceFiles::ResponseType sub_error_code;
|
|
|
|
EXPECT_TRUE(device_files.RetrieveLicense(
|
|
test_data->key_set_id, &license_state, &pssh_data, &key_request,
|
|
&key_response, &key_renewal_request, &key_renewal_response,
|
|
&release_server_url, &playback_start_time, &last_playback_time,
|
|
&grace_period_end_time, &app_parameters, &usage_entry,
|
|
&usage_entry_number, &sub_error_code));
|
|
EXPECT_EQ(test_data->license_state, license_state);
|
|
EXPECT_EQ(test_data->pssh_data, pssh_data);
|
|
EXPECT_EQ(test_data->key_request, key_request);
|
|
EXPECT_EQ(test_data->key_response, key_response);
|
|
EXPECT_EQ(test_data->key_request, key_request);
|
|
EXPECT_EQ(test_data->key_response, key_response);
|
|
EXPECT_EQ(test_data->playback_start_time, playback_start_time);
|
|
EXPECT_EQ(test_data->last_playback_time, last_playback_time);
|
|
EXPECT_EQ(test_data->grace_period_end_time, grace_period_end_time);
|
|
EXPECT_EQ(0u, app_parameters.size());
|
|
EXPECT_EQ(test_data->usage_entry, usage_entry);
|
|
EXPECT_EQ(test_data->usage_entry_number, usage_entry_number);
|
|
EXPECT_EQ(DeviceFiles::kNoError, sub_error_code);
|
|
}
|
|
|
|
TEST_F(DeviceFilesTest, UpdateLicenseState) {
|
|
MockFileSystem file_system;
|
|
std::string license_path = device_base_path_ +
|
|
license_update_test_data[0].key_set_id +
|
|
DeviceFiles::GetLicenseFileNameExtension();
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
|
|
for (size_t i = 0; i < sizeof(license_update_test_data) / sizeof(LicenseInfo);
|
|
i++) {
|
|
// Call to Open will return a unique_ptr, freeing this object.
|
|
MockFile* file = new MockFile();
|
|
EXPECT_CALL(file_system, DoOpen(StrEq(license_path), IsCreateFileFlagSet()))
|
|
.WillOnce(Return(file));
|
|
EXPECT_CALL(*file, Write(IsStrEq(license_update_test_data[i].file_data),
|
|
Eq(license_update_test_data[i].file_data.size())))
|
|
.WillOnce(ReturnArg<1>());
|
|
EXPECT_CALL(*file, Read(_, _)).Times(0);
|
|
DeviceFiles::ResponseType sub_error_code;
|
|
EXPECT_TRUE(device_files.StoreLicense(
|
|
license_update_test_data[0].key_set_id,
|
|
license_update_test_data[i].license_state,
|
|
license_update_test_data[0].pssh_data,
|
|
license_update_test_data[0].key_request,
|
|
license_update_test_data[0].key_response,
|
|
license_update_test_data[0].key_renewal_request,
|
|
license_update_test_data[0].key_renewal_response,
|
|
license_update_test_data[0].key_release_url,
|
|
license_update_test_data[0].playback_start_time,
|
|
license_update_test_data[0].last_playback_time,
|
|
license_update_test_data[0].grace_period_end_time,
|
|
GetAppParameters(license_test_data[0].app_parameters),
|
|
license_update_test_data[0].usage_entry,
|
|
license_update_test_data[0].usage_entry_number, &sub_error_code));
|
|
EXPECT_EQ(DeviceFiles::kNoError, sub_error_code);
|
|
}
|
|
}
|
|
|
|
TEST_F(DeviceFilesTest, DeleteLicense) {
|
|
MockFileSystem file_system;
|
|
std::string license_path = device_base_path_ +
|
|
license_test_data[0].key_set_id +
|
|
DeviceFiles::GetLicenseFileNameExtension();
|
|
|
|
size_t size = license_test_data[0].file_data.size();
|
|
|
|
// Call to Open will return a unique_ptr, freeing this object.
|
|
MockFile* file = new MockFile();
|
|
EXPECT_CALL(file_system, Exists(StrEq(license_path)))
|
|
.Times(2)
|
|
.WillOnce(Return(true))
|
|
.WillOnce(Return(false));
|
|
EXPECT_CALL(file_system, FileSize(StrEq(license_path)))
|
|
.WillOnce(Return(size));
|
|
EXPECT_CALL(file_system, DoOpen(StrEq(license_path), _))
|
|
.WillOnce(Return(file));
|
|
EXPECT_CALL(*file, Read(NotNull(), Eq(size)))
|
|
.WillOnce(
|
|
DoAll(SetArrayArgument<0>(license_test_data[0].file_data.begin(),
|
|
license_test_data[0].file_data.end()),
|
|
Return(size)));
|
|
EXPECT_CALL(file_system, Remove(StrEq(license_path))).WillOnce(Return(true));
|
|
EXPECT_CALL(*file, Write(_, _)).Times(0);
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
DeviceFiles::LicenseState license_state;
|
|
CdmInitData pssh_data;
|
|
CdmKeyMessage key_request;
|
|
CdmKeyResponse key_response;
|
|
CdmKeyMessage key_renewal_request;
|
|
CdmKeyResponse key_renewal_response;
|
|
std::string release_server_url;
|
|
int64_t playback_start_time, last_playback_time, grace_period_end_time;
|
|
CdmAppParameterMap app_parameters;
|
|
std::string usage_entry;
|
|
uint32_t usage_entry_number;
|
|
DeviceFiles::ResponseType sub_error_code;
|
|
|
|
EXPECT_TRUE(device_files.RetrieveLicense(
|
|
license_test_data[0].key_set_id, &license_state, &pssh_data, &key_request,
|
|
&key_response, &key_renewal_request, &key_renewal_response,
|
|
&release_server_url, &playback_start_time, &last_playback_time,
|
|
&grace_period_end_time, &app_parameters, &usage_entry,
|
|
&usage_entry_number, &sub_error_code));
|
|
EXPECT_EQ(license_test_data[0].license_state, license_state);
|
|
EXPECT_EQ(license_test_data[0].pssh_data, pssh_data);
|
|
EXPECT_EQ(license_test_data[0].key_request, key_request);
|
|
EXPECT_EQ(license_test_data[0].key_response, key_response);
|
|
EXPECT_EQ(license_test_data[0].key_request, key_request);
|
|
EXPECT_EQ(license_test_data[0].key_response, key_response);
|
|
EXPECT_EQ(license_test_data[0].playback_start_time, playback_start_time);
|
|
EXPECT_EQ(license_test_data[0].last_playback_time, last_playback_time);
|
|
EXPECT_EQ(license_test_data[0].grace_period_end_time, grace_period_end_time);
|
|
std::map<std::string, std::string>::iterator itr;
|
|
for (itr = app_parameters.begin(); itr != app_parameters.end(); ++itr) {
|
|
EXPECT_NE(license_test_data[0].app_parameters.find(itr->first),
|
|
std::string::npos);
|
|
EXPECT_NE(license_test_data[0].app_parameters.find(itr->second),
|
|
std::string::npos);
|
|
}
|
|
EXPECT_EQ(license_test_data[0].usage_entry, usage_entry);
|
|
EXPECT_EQ(license_test_data[0].usage_entry_number, usage_entry_number);
|
|
EXPECT_EQ(DeviceFiles::kNoError, sub_error_code);
|
|
|
|
EXPECT_TRUE(device_files.DeleteLicense(license_test_data[0].key_set_id));
|
|
EXPECT_FALSE(device_files.LicenseExists(license_test_data[0].key_set_id));
|
|
}
|
|
|
|
TEST_F(DeviceFilesTest, ReserveLicenseIdsDoesNotUseFileSystem) {
|
|
// Validate that ReserveLicenseIds does not touch the file system.
|
|
MockFileSystem file_system;
|
|
EXPECT_CALL(file_system, DoOpen(_, _)).Times(0);
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
for (size_t i = 0; i < kNumberOfLicenses; i++) {
|
|
EXPECT_TRUE(device_files.ReserveLicenseId(license_test_data[i].key_set_id));
|
|
// Validate that the license IDs are actually reserved.
|
|
EXPECT_TRUE(device_files.LicenseExists(license_test_data[i].key_set_id));
|
|
// Unreserve these IDs to avoid polluting other tests.
|
|
EXPECT_TRUE(device_files.UnreserveLicenseId(license_test_data[i].key_set_id));
|
|
}
|
|
}
|
|
|
|
TEST_F(DeviceFilesUsageInfoTest, ListNullParam) {
|
|
MockFileSystem file_system;
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
EXPECT_FALSE(device_files.ListUsageInfoFiles(NULL));
|
|
}
|
|
|
|
TEST_F(DeviceFilesUsageInfoTest, ListIdsNull) {
|
|
MockFileSystem file_system;
|
|
|
|
std::string app_id = kUsageInfoTestData[0].app_id;
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
EXPECT_FALSE(device_files.ListUsageIds(app_id, NULL, NULL));
|
|
}
|
|
|
|
TEST_F(DeviceFilesUsageInfoTest, ListUsageIds) {
|
|
MockFileSystem file_system;
|
|
|
|
int index = 8;
|
|
std::string app_id = kUsageInfoTestData[index].app_id;
|
|
|
|
std::string file_name = DeviceFiles::GetUsageInfoFileName(app_id);
|
|
std::string path = device_base_path_ + file_name;
|
|
std::string file_data = (index < 0) ? kEmptyUsageInfoFileData
|
|
: kUsageInfoTestData[index].file_data;
|
|
if (index >= 0) {
|
|
// Call to Open will return a unique_ptr, freeing this object.
|
|
MockFile* file = new MockFile();
|
|
EXPECT_CALL(file_system, Exists(StrEq(path)))
|
|
.Times(2)
|
|
.WillRepeatedly(Return(true));
|
|
EXPECT_CALL(file_system, FileSize(StrEq(path)))
|
|
.Times(2)
|
|
.WillRepeatedly(Return(kUsageInfoTestData[index].file_data.size()));
|
|
EXPECT_CALL(file_system, DoOpen(StrEq(path), _)).WillOnce(Return(file));
|
|
EXPECT_CALL(*file,
|
|
Read(NotNull(), Eq(kUsageInfoTestData[index].file_data.size())))
|
|
.WillOnce(DoAll(SetArrayArgument<0>(file_data.begin(), file_data.end()),
|
|
Return(file_data.size())));
|
|
} else {
|
|
EXPECT_CALL(file_system, Exists(StrEq(path))).WillOnce(Return(false));
|
|
}
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
|
|
std::vector<std::string> key_set_ids;
|
|
std::vector<std::string> provider_session_tokens;
|
|
EXPECT_TRUE(device_files.ListUsageIds(
|
|
app_id, &key_set_ids, &provider_session_tokens));
|
|
|
|
EXPECT_EQ(key_set_ids.size(), provider_session_tokens.size());
|
|
if (index >= 0) {
|
|
for (size_t i = 0; i < provider_session_tokens.size(); ++i) {
|
|
bool found = false;
|
|
for (int j = 0; !found && j <= index; ++j) {
|
|
if (app_id == kUsageInfoTestData[j].app_id &&
|
|
kUsageInfoTestData[j].usage_data.provider_session_token ==
|
|
provider_session_tokens[i] &&
|
|
kUsageInfoTestData[j].usage_data.key_set_id ==
|
|
key_set_ids[i]) {
|
|
found = true;
|
|
}
|
|
}
|
|
EXPECT_TRUE(found);
|
|
}
|
|
}
|
|
}
|
|
|
|
TEST_P(DeviceFilesUsageInfoListTest, UsageInfoList) {
|
|
MockFileSystem file_system;
|
|
|
|
int index = GetParam();
|
|
std::vector<std::string> file_list;
|
|
std::vector<std::string> expected_usage_file_list;
|
|
for (int i = 0; i <= index; ++i) {
|
|
file_list.push_back(kTestListUsageInfoData[i].file_name);
|
|
if (kTestListUsageInfoData[i].is_usage_info_file)
|
|
expected_usage_file_list.push_back(kTestListUsageInfoData[i].file_name);
|
|
}
|
|
|
|
EXPECT_CALL(file_system, List(StrEq(device_base_path_), NotNull()))
|
|
.WillOnce(DoAll(SetArgPointee<1>(file_list), Return(true)));
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
|
|
std::vector<std::string> usage_info_file_names;
|
|
EXPECT_TRUE(device_files.ListUsageInfoFiles(&usage_info_file_names));
|
|
EXPECT_EQ(expected_usage_file_list.size(), usage_info_file_names.size());
|
|
EXPECT_THAT(usage_info_file_names,
|
|
::testing::UnorderedElementsAreArray(expected_usage_file_list));
|
|
}
|
|
|
|
INSTANTIATE_TEST_CASE_P(UsageInfo, DeviceFilesUsageInfoListTest,
|
|
::testing::Range(0, 7));
|
|
|
|
TEST_P(DeviceFilesUsageInfoTest, Store) {
|
|
MockFileSystem file_system;
|
|
// Call to Open will return a unique_ptr, freeing this object.
|
|
MockFile* file = new MockFile();
|
|
|
|
int index = GetParam();
|
|
|
|
std::string app_id;
|
|
if (index >= 0) app_id = kUsageInfoTestData[index].app_id;
|
|
std::string file_name = DeviceFiles::GetUsageInfoFileName(app_id);
|
|
std::string path = device_base_path_ + file_name;
|
|
|
|
size_t usage_data_fields_length = 0;
|
|
std::vector<std::string> usage_data_fields;
|
|
std::vector<DeviceFiles::CdmUsageData> usage_data_list;
|
|
|
|
for (int i = 0; i <= index; ++i) {
|
|
if (kUsageInfoTestData[i].app_id == app_id) {
|
|
usage_data_list.push_back(kUsageInfoTestData[i].usage_data);
|
|
usage_data_fields.push_back(
|
|
kUsageInfoTestData[i].usage_data.provider_session_token);
|
|
usage_data_fields.push_back(
|
|
kUsageInfoTestData[i].usage_data.license_request);
|
|
usage_data_fields.push_back(kUsageInfoTestData[i].usage_data.license);
|
|
usage_data_fields.push_back(kUsageInfoTestData[i].usage_data.key_set_id);
|
|
usage_data_fields.push_back(kUsageInfoTestData[i].usage_data.usage_entry);
|
|
usage_data_fields_length +=
|
|
kUsageInfoTestData[i].usage_data.provider_session_token.size() +
|
|
kUsageInfoTestData[i].usage_data.license_request.size() +
|
|
kUsageInfoTestData[i].usage_data.license.size() +
|
|
kUsageInfoTestData[i].usage_data.key_set_id.size() +
|
|
kUsageInfoTestData[i].usage_data.usage_entry.size();
|
|
}
|
|
}
|
|
|
|
EXPECT_CALL(file_system, DoOpen(StrEq(path), _)).WillOnce(Return(file));
|
|
EXPECT_CALL(*file, Write(ContainsAllElementsInVector(usage_data_fields),
|
|
Gt(usage_data_fields_length)))
|
|
.WillOnce(ReturnArg<1>());
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
|
|
EXPECT_TRUE(device_files.StoreUsageInfo(file_name, usage_data_list));
|
|
}
|
|
|
|
TEST_P(DeviceFilesUsageInfoTest, Retrieve) {
|
|
MockFileSystem file_system;
|
|
|
|
int index = GetParam();
|
|
|
|
std::string app_id;
|
|
if (index >= 0) app_id = kUsageInfoTestData[index].app_id;
|
|
|
|
std::string file_name = DeviceFiles::GetUsageInfoFileName(app_id);
|
|
std::string path = device_base_path_ + file_name;
|
|
std::string file_data = (index < 0) ? kEmptyUsageInfoFileData
|
|
: kUsageInfoTestData[index].file_data;
|
|
if (index >= 0) {
|
|
// Call to Open will return a unique_ptr, freeing this object.
|
|
MockFile* file = new MockFile();
|
|
EXPECT_CALL(file_system, Exists(StrEq(path)))
|
|
.Times(2)
|
|
.WillRepeatedly(Return(true));
|
|
EXPECT_CALL(file_system, FileSize(StrEq(path)))
|
|
.Times(2)
|
|
.WillRepeatedly(Return(kUsageInfoTestData[index].file_data.size()));
|
|
EXPECT_CALL(file_system, DoOpen(StrEq(path), _)).WillOnce(Return(file));
|
|
EXPECT_CALL(*file,
|
|
Read(NotNull(), Eq(kUsageInfoTestData[index].file_data.size())))
|
|
.WillOnce(DoAll(SetArrayArgument<0>(file_data.begin(), file_data.end()),
|
|
Return(file_data.size())));
|
|
} else {
|
|
EXPECT_CALL(file_system, Exists(StrEq(path))).WillOnce(Return(false));
|
|
}
|
|
|
|
std::vector<DeviceFiles::CdmUsageData> usage_data_list;
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
|
|
EXPECT_TRUE(device_files.RetrieveUsageInfo(file_name, &usage_data_list));
|
|
|
|
for (size_t i = 0; i < usage_data_list.size(); ++i) {
|
|
bool found = false;
|
|
int j = 0;
|
|
while (!found && j <= index) {
|
|
if (app_id == kUsageInfoTestData[j].app_id &&
|
|
usage_data_list[i].provider_session_token ==
|
|
kUsageInfoTestData[j].usage_data.provider_session_token) {
|
|
EXPECT_EQ(kUsageInfoTestData[j].usage_data.license_request,
|
|
usage_data_list[i].license_request);
|
|
EXPECT_EQ(kUsageInfoTestData[j].usage_data.license,
|
|
usage_data_list[i].license);
|
|
EXPECT_EQ(kUsageInfoTestData[j].usage_data.key_set_id,
|
|
usage_data_list[i].key_set_id);
|
|
EXPECT_EQ(kUsageInfoTestData[j].usage_data.usage_entry,
|
|
usage_data_list[i].usage_entry);
|
|
EXPECT_EQ(kUsageInfoTestData[j].usage_data.usage_entry_number,
|
|
usage_data_list[i].usage_entry_number);
|
|
found = true;
|
|
}
|
|
++j;
|
|
}
|
|
EXPECT_TRUE(found);
|
|
}
|
|
}
|
|
|
|
TEST_P(DeviceFilesUsageInfoTest, ListKeySetIds) {
|
|
MockFileSystem file_system;
|
|
|
|
int index = GetParam();
|
|
|
|
std::string app_id;
|
|
if (index >= 0) app_id = kUsageInfoTestData[index].app_id;
|
|
|
|
std::string file_name = DeviceFiles::GetUsageInfoFileName(app_id);
|
|
std::string path = device_base_path_ + file_name;
|
|
std::string file_data = (index < 0) ? kEmptyUsageInfoFileData
|
|
: kUsageInfoTestData[index].file_data;
|
|
if (index >= 0) {
|
|
// Call to Open will return a unique_ptr, freeing this object.
|
|
MockFile* file = new MockFile();
|
|
EXPECT_CALL(file_system, Exists(StrEq(path)))
|
|
.Times(2)
|
|
.WillRepeatedly(Return(true));
|
|
EXPECT_CALL(file_system, FileSize(StrEq(path)))
|
|
.Times(2)
|
|
.WillRepeatedly(Return(kUsageInfoTestData[index].file_data.size()));
|
|
EXPECT_CALL(file_system, DoOpen(StrEq(path), _)).WillOnce(Return(file));
|
|
EXPECT_CALL(*file,
|
|
Read(NotNull(), Eq(kUsageInfoTestData[index].file_data.size())))
|
|
.WillOnce(DoAll(SetArrayArgument<0>(file_data.begin(), file_data.end()),
|
|
Return(file_data.size())));
|
|
} else {
|
|
EXPECT_CALL(file_system, Exists(StrEq(path))).WillOnce(Return(false));
|
|
}
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
|
|
std::vector<std::string> key_set_ids;
|
|
EXPECT_TRUE(device_files.ListUsageIds(app_id, &key_set_ids, NULL));
|
|
|
|
if (index >= 0) {
|
|
for (size_t i = 0; i < key_set_ids.size(); ++i) {
|
|
bool found = false;
|
|
for (int j = 0; !found && j <= index; ++j) {
|
|
if (app_id == kUsageInfoTestData[j].app_id &&
|
|
kUsageInfoTestData[j].usage_data.key_set_id ==
|
|
key_set_ids[i]) {
|
|
found = true;
|
|
}
|
|
}
|
|
EXPECT_TRUE(found);
|
|
}
|
|
}
|
|
}
|
|
|
|
TEST_P(DeviceFilesUsageInfoTest, ListProviderSessionTokenIds) {
|
|
MockFileSystem file_system;
|
|
|
|
int index = GetParam();
|
|
|
|
std::string app_id;
|
|
if (index >= 0) app_id = kUsageInfoTestData[index].app_id;
|
|
|
|
std::string file_name = DeviceFiles::GetUsageInfoFileName(app_id);
|
|
std::string path = device_base_path_ + file_name;
|
|
std::string file_data = (index < 0) ? kEmptyUsageInfoFileData
|
|
: kUsageInfoTestData[index].file_data;
|
|
if (index >= 0) {
|
|
// Call to Open will return a unique_ptr, freeing this object.
|
|
MockFile* file = new MockFile();
|
|
EXPECT_CALL(file_system, Exists(StrEq(path)))
|
|
.Times(2)
|
|
.WillRepeatedly(Return(true));
|
|
EXPECT_CALL(file_system, FileSize(StrEq(path)))
|
|
.Times(2)
|
|
.WillRepeatedly(Return(kUsageInfoTestData[index].file_data.size()));
|
|
EXPECT_CALL(file_system, DoOpen(StrEq(path), _)).WillOnce(Return(file));
|
|
EXPECT_CALL(*file,
|
|
Read(NotNull(), Eq(kUsageInfoTestData[index].file_data.size())))
|
|
.WillOnce(DoAll(SetArrayArgument<0>(file_data.begin(), file_data.end()),
|
|
Return(file_data.size())));
|
|
} else {
|
|
EXPECT_CALL(file_system, Exists(StrEq(path))).WillOnce(Return(false));
|
|
}
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
|
|
std::vector<std::string> provider_session_tokens;
|
|
EXPECT_TRUE(
|
|
device_files.ListUsageIds(app_id, NULL, &provider_session_tokens));
|
|
|
|
if (index >= 0) {
|
|
for (size_t i = 0; i < provider_session_tokens.size(); ++i) {
|
|
bool found = false;
|
|
for (int j = 0; !found && j <= index; ++j) {
|
|
if (app_id == kUsageInfoTestData[j].app_id &&
|
|
kUsageInfoTestData[j].usage_data.provider_session_token ==
|
|
provider_session_tokens[i]) {
|
|
found = true;
|
|
}
|
|
}
|
|
EXPECT_TRUE(found);
|
|
}
|
|
}
|
|
}
|
|
|
|
TEST_P(DeviceFilesUsageInfoTest, RetrieveByProviderSessionToken) {
|
|
MockFileSystem file_system;
|
|
// Call to Open will return a unique_ptr, freeing this object.
|
|
MockFile* file = new MockFile();
|
|
|
|
int index = GetParam();
|
|
|
|
std::string app_id;
|
|
if (index >= 0) app_id = kUsageInfoTestData[index].app_id;
|
|
|
|
std::string file_name = DeviceFiles::GetUsageInfoFileName(app_id);
|
|
std::string path = device_base_path_ + file_name;
|
|
|
|
size_t max_index_by_app_id = 0;
|
|
for (size_t i = 0; i < sizeof(kUsageInfoTestData) / sizeof(UsageInfo); ++i) {
|
|
if (app_id == kUsageInfoTestData[i].app_id) max_index_by_app_id = i;
|
|
}
|
|
std::string file_data =
|
|
(index < 0) ? kEmptyUsageInfoFileData
|
|
: kUsageInfoTestData[max_index_by_app_id].file_data;
|
|
std::string provider_session_token = kUsageInfoTestData[index < 0 ? 0 : index]
|
|
.usage_data.provider_session_token;
|
|
|
|
EXPECT_CALL(file_system, Exists(StrEq(path))).WillOnce(Return(true));
|
|
EXPECT_CALL(file_system, FileSize(StrEq(path)))
|
|
.WillOnce(Return(file_data.size()));
|
|
EXPECT_CALL(file_system, DoOpen(StrEq(path), _)).WillOnce(Return(file));
|
|
EXPECT_CALL(*file, Read(NotNull(), Eq(file_data.size())))
|
|
.WillOnce(DoAll(SetArrayArgument<0>(file_data.begin(), file_data.end()),
|
|
Return(file_data.size())));
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
|
|
DeviceFiles::CdmUsageData usage_data;
|
|
|
|
if (index < 0) {
|
|
EXPECT_FALSE(device_files.RetrieveUsageInfo(
|
|
file_name, provider_session_token, &usage_data));
|
|
} else {
|
|
EXPECT_TRUE(device_files.RetrieveUsageInfo(
|
|
file_name, provider_session_token, &usage_data));
|
|
|
|
EXPECT_EQ(kUsageInfoTestData[index].usage_data.provider_session_token,
|
|
usage_data.provider_session_token);
|
|
EXPECT_EQ(kUsageInfoTestData[index].usage_data.license_request,
|
|
usage_data.license_request);
|
|
EXPECT_EQ(kUsageInfoTestData[index].usage_data.license, usage_data.license);
|
|
EXPECT_EQ(kUsageInfoTestData[index].usage_data.key_set_id,
|
|
usage_data.key_set_id);
|
|
EXPECT_EQ(kUsageInfoTestData[index].usage_data.usage_entry,
|
|
usage_data.usage_entry);
|
|
EXPECT_EQ(kUsageInfoTestData[index].usage_data.usage_entry_number,
|
|
usage_data.usage_entry_number);
|
|
}
|
|
}
|
|
|
|
TEST_P(DeviceFilesUsageInfoTest, UpdateUsageInfo) {
|
|
MockFileSystem file_system;
|
|
// Call to Open will return a unique_ptr, freeing this object.
|
|
MockFile* file = new MockFile();
|
|
|
|
int index = GetParam();
|
|
|
|
std::string app_id;
|
|
if (index >= 0) app_id = kUsageInfoTestData[index].app_id;
|
|
|
|
std::string file_name = DeviceFiles::GetUsageInfoFileName(app_id);
|
|
std::string path = device_base_path_ + file_name;
|
|
|
|
size_t usage_data_fields_length = 0;
|
|
std::vector<std::string> usage_data_fields;
|
|
|
|
size_t max_index_by_app_id = 0;
|
|
for (size_t i = 0; i < sizeof(kUsageInfoTestData) / sizeof(UsageInfo); ++i) {
|
|
if (app_id == kUsageInfoTestData[i].app_id) {
|
|
max_index_by_app_id = i;
|
|
|
|
if ((int)i != index) {
|
|
usage_data_fields.push_back(
|
|
kUsageInfoTestData[i].usage_data.provider_session_token);
|
|
usage_data_fields.push_back(
|
|
kUsageInfoTestData[i].usage_data.license_request);
|
|
usage_data_fields.push_back(kUsageInfoTestData[i].usage_data.license);
|
|
usage_data_fields.push_back(
|
|
kUsageInfoTestData[i].usage_data.key_set_id);
|
|
usage_data_fields.push_back(
|
|
kUsageInfoTestData[i].usage_data.usage_entry);
|
|
usage_data_fields_length +=
|
|
kUsageInfoTestData[i].usage_data.provider_session_token.size() +
|
|
kUsageInfoTestData[i].usage_data.license_request.size() +
|
|
kUsageInfoTestData[i].usage_data.license.size() +
|
|
kUsageInfoTestData[i].usage_data.key_set_id.size() +
|
|
kUsageInfoTestData[i].usage_data.usage_entry.size();
|
|
}
|
|
}
|
|
}
|
|
|
|
if (index >= 0) {
|
|
usage_data_fields.push_back(
|
|
kUsageInfoTestData[index].usage_data.provider_session_token);
|
|
usage_data_fields.push_back(kUsageInfoUpdateTestData.license_request);
|
|
usage_data_fields.push_back(kUsageInfoUpdateTestData.license);
|
|
usage_data_fields.push_back(kUsageInfoUpdateTestData.key_set_id);
|
|
usage_data_fields.push_back(kUsageInfoUpdateTestData.usage_entry);
|
|
usage_data_fields_length +=
|
|
kUsageInfoTestData[index].usage_data.provider_session_token.size() +
|
|
kUsageInfoUpdateTestData.license_request.size() +
|
|
kUsageInfoUpdateTestData.license.size() +
|
|
kUsageInfoUpdateTestData.key_set_id.size() +
|
|
kUsageInfoUpdateTestData.usage_entry.size();
|
|
}
|
|
|
|
std::string file_data =
|
|
(index < 0) ? kEmptyUsageInfoFileData
|
|
: kUsageInfoTestData[max_index_by_app_id].file_data;
|
|
std::string provider_session_token = kUsageInfoTestData[index < 0 ? 0 : index]
|
|
.usage_data.provider_session_token;
|
|
|
|
EXPECT_CALL(file_system, Exists(StrEq(path)))
|
|
.Times(2)
|
|
.WillRepeatedly(Return(true));
|
|
EXPECT_CALL(file_system, FileSize(StrEq(path)))
|
|
.WillOnce(Return(file_data.size()));
|
|
EXPECT_CALL(*file, Read(NotNull(), Eq(file_data.size())))
|
|
.WillOnce(DoAll(SetArrayArgument<0>(file_data.begin(), file_data.end()),
|
|
Return(file_data.size())));
|
|
|
|
bool write_called = false;
|
|
if (index < 0) {
|
|
EXPECT_CALL(file_system, DoOpen(StrEq(path), _)).WillOnce(Return(file));
|
|
} else {
|
|
MockFile* next_file = new MockFile();
|
|
EXPECT_CALL(file_system, DoOpen(StrEq(path), _))
|
|
.Times(2)
|
|
.WillOnce(Return(file))
|
|
.WillOnce(Return(next_file));
|
|
ON_CALL(*file, Write(ContainsAllElementsInVector(usage_data_fields),
|
|
Gt(usage_data_fields_length)))
|
|
.WillByDefault(DoAll(InvokeWithoutArgs([&write_called]() -> void {
|
|
write_called = true;
|
|
}),
|
|
ReturnArg<1>()));
|
|
ON_CALL(*next_file, Write(ContainsAllElementsInVector(usage_data_fields),
|
|
Gt(usage_data_fields_length)))
|
|
.WillByDefault(DoAll(InvokeWithoutArgs([&write_called]() -> void {
|
|
write_called = true;
|
|
}),
|
|
ReturnArg<1>()));
|
|
}
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
|
|
bool expected_result = index >= 0;
|
|
EXPECT_EQ(expected_result,
|
|
device_files.UpdateUsageInfo(file_name, provider_session_token,
|
|
kUsageInfoUpdateTestData));
|
|
if (index >= 0) EXPECT_TRUE(write_called);
|
|
}
|
|
|
|
INSTANTIATE_TEST_CASE_P(UsageInfo, DeviceFilesUsageInfoTest,
|
|
::testing::Range(-1, 9));
|
|
|
|
TEST_P(DeviceFilesHlsAttributesTest, Read) {
|
|
MockFileSystem file_system;
|
|
// Call to Open will return a unique_ptr, freeing this object.
|
|
MockFile* file = new MockFile();
|
|
HlsAttributesInfo* param = GetParam();
|
|
std::string path = device_base_path_ + param->key_set_id +
|
|
DeviceFiles::GetHlsAttributesFileNameExtension();
|
|
|
|
EXPECT_CALL(file_system, Exists(StrEq(path))).WillRepeatedly(Return(true));
|
|
EXPECT_CALL(file_system, FileSize(StrEq(path)))
|
|
.WillRepeatedly(Return(param->file_data.size()));
|
|
EXPECT_CALL(file_system, DoOpen(StrEq(path), _)).WillOnce(Return(file));
|
|
EXPECT_CALL(*file, Read(NotNull(), Eq(param->file_data.size())))
|
|
.WillOnce(DoAll(
|
|
SetArrayArgument<0>(param->file_data.begin(), param->file_data.end()),
|
|
Return(param->file_data.size())));
|
|
|
|
EXPECT_CALL(*file, Write(_, _)).Times(0);
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
|
|
CdmHlsMethod method;
|
|
std::vector<uint8_t> media_segment_iv;
|
|
ASSERT_TRUE(device_files.RetrieveHlsAttributes(param->key_set_id, &method,
|
|
&media_segment_iv));
|
|
EXPECT_EQ(param->method, method);
|
|
EXPECT_EQ(b2a_hex(param->media_segment_iv), b2a_hex(media_segment_iv));
|
|
}
|
|
|
|
TEST_P(DeviceFilesHlsAttributesTest, Store) {
|
|
MockFileSystem file_system;
|
|
// Call to Open will return a unique_ptr, freeing this object.
|
|
MockFile* file = new MockFile();
|
|
HlsAttributesInfo* param = GetParam();
|
|
std::string path = device_base_path_ + param->key_set_id +
|
|
DeviceFiles::GetHlsAttributesFileNameExtension();
|
|
|
|
EXPECT_CALL(file_system, Exists(StrEq(path))).WillRepeatedly(Return(true));
|
|
EXPECT_CALL(file_system, DoOpen(StrEq(path), _)).WillOnce(Return(file));
|
|
EXPECT_CALL(*file, Write(Contains(param->media_segment_iv, 0),
|
|
Gt(param->media_segment_iv.size())))
|
|
.WillOnce(ReturnArg<1>());
|
|
EXPECT_CALL(*file, Read(_, _)).Times(0);
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
std::vector<uint8_t> iv(param->media_segment_iv.begin(),
|
|
param->media_segment_iv.end());
|
|
ASSERT_TRUE(
|
|
device_files.StoreHlsAttributes(param->key_set_id, param->method, iv));
|
|
}
|
|
|
|
TEST_P(DeviceFilesHlsAttributesTest, Delete) {
|
|
MockFileSystem file_system;
|
|
HlsAttributesInfo* param = GetParam();
|
|
std::string path = device_base_path_ + param->key_set_id +
|
|
DeviceFiles::GetHlsAttributesFileNameExtension();
|
|
|
|
EXPECT_CALL(file_system, Remove(StrEq(path))).WillOnce(Return(true));
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
ASSERT_TRUE(device_files.DeleteHlsAttributes(param->key_set_id));
|
|
}
|
|
|
|
INSTANTIATE_TEST_CASE_P(HlsAttributes, DeviceFilesHlsAttributesTest,
|
|
::testing::Range(&kHlsAttributesTestData[0],
|
|
&kHlsAttributesTestData[2]));
|
|
|
|
TEST_P(DeviceFilesUsageTableTest, Store) {
|
|
MockFileSystem file_system;
|
|
// Call to Open will return a unique_ptr, freeing this object.
|
|
MockFile* file = new MockFile();
|
|
int index = GetParam();
|
|
|
|
size_t entry_data_length = 0;
|
|
std::vector<std::string> entry_data;
|
|
std::vector<CdmUsageEntryInfo> usage_entry_info;
|
|
usage_entry_info.resize(index + 1);
|
|
for (int i = 0; i <= index; ++i) {
|
|
usage_entry_info[i] = kUsageEntriesTestData[i];
|
|
entry_data.push_back(kUsageEntriesTestData[i].key_set_id);
|
|
entry_data.push_back(kUsageEntriesTestData[i].usage_info_file_name);
|
|
entry_data_length += kUsageEntriesTestData[i].key_set_id.size() +
|
|
kUsageEntriesTestData[i].usage_info_file_name.size();
|
|
}
|
|
entry_data.push_back(kUsageTableInfoTestData[index].usage_table_header);
|
|
entry_data_length += kUsageTableInfoTestData[index].usage_table_header.size();
|
|
|
|
std::string path = device_base_path_ + DeviceFiles::GetUsageTableFileName();
|
|
|
|
EXPECT_CALL(file_system, Exists(StrEq(path))).WillRepeatedly(Return(true));
|
|
EXPECT_CALL(file_system, DoOpen(StrEq(path), _)).WillOnce(Return(file));
|
|
EXPECT_CALL(*file, Write(ContainsAllElementsInVector(entry_data),
|
|
Gt(entry_data_length)))
|
|
.WillOnce(ReturnArg<1>());
|
|
EXPECT_CALL(*file, Read(_, _)).Times(0);
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
ASSERT_TRUE(device_files.StoreUsageTableInfo(
|
|
kUsageTableInfoTestData[index].usage_table_header, usage_entry_info));
|
|
}
|
|
|
|
TEST_P(DeviceFilesUsageTableTest, Read) {
|
|
MockFileSystem file_system;
|
|
// Call to Open will return a unique_ptr, freeing this object.
|
|
MockFile* file = new MockFile();
|
|
size_t index = GetParam();
|
|
|
|
std::string path = device_base_path_ + DeviceFiles::GetUsageTableFileName();
|
|
|
|
const std::string& file_data = kUsageTableInfoTestData[index].file_data;
|
|
EXPECT_CALL(file_system, Exists(StrEq(path))).WillRepeatedly(Return(true));
|
|
EXPECT_CALL(file_system, FileSize(StrEq(path)))
|
|
.WillRepeatedly(Return(file_data.size()));
|
|
EXPECT_CALL(file_system, DoOpen(StrEq(path), _)).WillOnce(Return(file));
|
|
EXPECT_CALL(*file, Read(NotNull(), Eq(file_data.size())))
|
|
.WillOnce(DoAll(SetArrayArgument<0>(file_data.begin(), file_data.end()),
|
|
Return(file_data.size())));
|
|
|
|
EXPECT_CALL(*file, Write(_, _)).Times(0);
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
|
|
std::vector<CdmUsageEntryInfo> usage_entry_info;
|
|
CdmUsageTableHeader usage_table_header;
|
|
ASSERT_TRUE(device_files.RetrieveUsageTableInfo(&usage_table_header,
|
|
&usage_entry_info));
|
|
EXPECT_EQ(kUsageTableInfoTestData[index].usage_table_header,
|
|
usage_table_header);
|
|
EXPECT_EQ(index + 1u, usage_entry_info.size());
|
|
|
|
for (size_t i = 0; i <= index; ++i) {
|
|
EXPECT_EQ(kUsageEntriesTestData[i].storage_type,
|
|
usage_entry_info[i].storage_type);
|
|
EXPECT_EQ(kUsageEntriesTestData[i].key_set_id,
|
|
usage_entry_info[i].key_set_id);
|
|
EXPECT_EQ(
|
|
kUsageEntriesTestData[i].usage_info_file_name,
|
|
usage_entry_info[i].usage_info_file_name);
|
|
}
|
|
}
|
|
|
|
INSTANTIATE_TEST_CASE_P(UsageInfo, DeviceFilesUsageTableTest,
|
|
::testing::Range(0, 6));
|
|
|
|
} // namespace wvcdm
|