6712 lines
391 KiB
C++
6712 lines
391 KiB
C++
// Copyright 2018 Google LLC. All Rights Reserved. This file and proprietary
|
|
// source code may only be used and distributed under the Widevine License
|
|
// Agreement.
|
|
|
|
#include "device_files.h"
|
|
|
|
#include <gmock/gmock.h>
|
|
#include <gtest/gtest.h>
|
|
|
|
#include <memory>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#include "arraysize.h"
|
|
#include "cdm_random.h"
|
|
#include "crypto_wrapped_key.h"
|
|
#include "file_store.h"
|
|
#include "okp_info.h"
|
|
#include "properties.h"
|
|
#include "string_conversions.h"
|
|
#include "wv_cdm_constants.h"
|
|
#include "wv_cdm_types.h"
|
|
|
|
namespace wvcdm {
|
|
|
|
namespace {
|
|
using wvutil::a2bs_hex;
|
|
using wvutil::ArraySize;
|
|
using wvutil::b2a_hex;
|
|
using wvutil::CdmRandom;
|
|
using wvutil::File;
|
|
|
|
const uint32_t kCertificateLen = 700;
|
|
const uint32_t kWrappedKeyLen = 500;
|
|
constexpr size_t kZero = 0;
|
|
const std::string kOemCertificate = "an oem certificate";
|
|
const std::string kDrmCertificate = "a drm certificate";
|
|
const std::string kAnotherDrmCertificate = "another drm certificate";
|
|
const std::string kWrappedPrivateKey = "a wrapped private key";
|
|
const std::string kAnotherWrappedPrivateKey = "another wrapped private key";
|
|
const CryptoWrappedKey kCryptoWrappedKey(CryptoWrappedKey::kRsa,
|
|
kWrappedPrivateKey);
|
|
const CryptoWrappedKey kAnotherCryptoWrappedKey(CryptoWrappedKey::kEcc,
|
|
kAnotherWrappedPrivateKey);
|
|
|
|
const std::string kEmptyString;
|
|
|
|
// Structurally valid test certificate of provisioning 3.0.
|
|
// {'certificate': {'algorithm': 'RSA',
|
|
// 'creation_time': '2020-12-14T23:17:27',
|
|
// 'public_key': ... 270 bytes,
|
|
// 'serial_number': '7CB49F987A635E1E0A52184694582D6E',
|
|
// 'type': 'DRM_USER_DEVICE'},
|
|
// 'signature': ... 256 bytes,
|
|
// 'signer': {
|
|
// 'certificate': {'creation_time': '2017-11-17T13:21:39',
|
|
// 'public_key': ... 270 bytes,
|
|
// 'serial_number': '65802C9B625E5A319C33DC1CB7C3C6D4',
|
|
// 'type': 'DRM_INTERMEDIATE'},
|
|
// 'signature': ... 384 bytes }
|
|
// }
|
|
// Value of |certificate| in DeviceCertFile proto messages
|
|
// kTestCertificateFileData and kTestCertificateFileWithoutKeyTypeData
|
|
// This can be used for both ATSC and Legacy certificate
|
|
const std::string kTestCertificateWithoutExpiration = a2bs_hex(
|
|
"0AEB03080212107CB49F987A635E1E0A52184694582D6E1887C6E1FE05228E023082010A"
|
|
"0282010100DB13F5089C061E8EB62562692B3A06A774A99129BD63445FEC24448D07C30D"
|
|
"7343553442A989AF000B7D962033C290D9A81DDCBCF3980512445EB7E6CF544FC1FB3FC7"
|
|
"58FB9E06B6C28562A841E4AE2D3368795C41A2D6043CA9830E0F36583C8FDB839C2752C1"
|
|
"3E184034EE412BA8A90271295B094255A16319706F4D6C9CF1EBB1B39BA2A7B9B2780344"
|
|
"DD5834BF71F4D5185508D2FDFB10419BD4F48E79DDFC78471C11B9E99DF98221D6FAB25A"
|
|
"EE24574FB02D614974942A36527C62B73A6FB7CA9EF828EB598DA59060D654851103F857"
|
|
"A041E66B2FFB99713D31A64605932833E8CCDA6CF0F888AE6E78EDC9DA0D88A185B97FEB"
|
|
"3EA74CF146BE7D9267020301000128E83D3A0C7769646576696E652E636F6D480152AA01"
|
|
"080110001A8101044F554B9400E10B17185036B6A1628EFC61B22166DE2235717A44F953"
|
|
"B7928F3415B9D113835B10106CB6C2187F34188723D82ECF95CF5ECAB58923F173186081"
|
|
"5999F08BF4BE4A44DB7B991B5F915F2ADCEE481E26096AAEC3AC761B624A92158AC91035"
|
|
"041173392B1E495428F0D17406B10889B6B701FAF08D2284F95DBBCA2220595267DCA89A"
|
|
"2E57E7D4CA3C62ED6D12742408A07C103DF860DC0520C3664EEB1280028CD44E12AA7C1A"
|
|
"8EBF88C81A2A54EFD29F8BC6C377B0C11C3404F84D8B9EAD52A0E18E929A4923A4172C2A"
|
|
"C1CDADD16E41A7833AA0DE9D09F685DAC9ACC702CB9061632C1C82333A6FB6BC9C4B2540"
|
|
"BE18CED4AB0AF1C3EFE521308F3D4CF513C20500064FE935FDDF7BBAC0BA99AA7FA66017"
|
|
"898DEE6F6F5EF90C875D5D8DA39E769E8D1485253EEE93A97B35A8EAE8D3213D392B552F"
|
|
"B4B4A37955EBE7362287502EB649D982F06D308178642C1F69B12383B050CF60CD292093"
|
|
"29C148FB4F422ED5ED139A25A89E13D4AB2E8DB940299D1414AF30DDF0D06AF55C1978F6"
|
|
"E71E4548F20FFAE953A99D492F3D2847783338D74F66D2DFEBB50896ACBC4795A81AB405"
|
|
"0AAE020801121065802C9B625E5A319C33DC1CB7C3C6D418E3A5BDD005228E023082010A"
|
|
"0282010100B80502043C2A8A0FD8D25C613E1E3E3B5E349F332F04516A7510D38021A562"
|
|
"9B9AA027AEAD3C759B7AFE70BED65F3DF6860FF5EB60B983A3FFA33FDE06F3B73014DFC8"
|
|
"45AB371C6600562E9D904F842B8BA4A5D9200FFA3ED45D705520A5C372A889F9E3143862"
|
|
"34C6897AE655851FCD9ADB4EF9126C78386EA93BCB25BA3EC475C55C608E771C763AB025"
|
|
"06F9B07252D6ABF7EA64B1EBDE7B95C6407690533BD6890B9274C16066F74FC401EA355F"
|
|
"0A02106814D49BF0C89E6E1F8DB2A47841CD0DAD793296A107C36223404F2BF1FCA16FD0"
|
|
"A4B982634DB62407F8F14ACAE3B05A038BD3E4BBBAE4391BBFA7A47FB9D01DE857EA88E5"
|
|
"E36EE36E245859FC0F020301000128E83D1280037E06581A019184AB572AFDCADDD03F16"
|
|
"1CE68200F8E6F8AD161947360BC8D49C0D68009B1C4644F9B3F3FB6DDFD92EF92DE62D41"
|
|
"D459D29D81BFAEF3970A3A39D25B2662ECB03B2DA7B68302FAA6DD98D95A143CC8C1CB6A"
|
|
"DDA76D2EE9C3723FAF95A29CDC3E968B6821A91C051CA280A86669710A1AD7A44BF92180"
|
|
"27460DF694E2E9270396DF221963F21EE6AA220A5EE4A4D0FEB3D53EB5732F8F91E9A96B"
|
|
"3B8BE284C51339EA284D4D0EDD55B6AD56F7416420E05E059F9734A96BE25AA44560DBA8"
|
|
"C38755A42A82BD7F88EDD19DF346A667B33B8114C76A8838C423D824A50B23251A088136"
|
|
"D6E8F475299D2AFD46CEA51B5CBDF789A572125CD24FBB813B387A10CD2A30E3447634AB"
|
|
"3408F96B9CF3D98896D405F3F540D9C57962760FCD177CDD101EB8A4148B9C29CED5EAD6"
|
|
"45A95B698F1CDC6E1DB6678B85074186080D68D13CD37E07B16DE370CD9AFB9B25564A73"
|
|
"A30E2AF8085EA37D310C474F0E67AC00CA992A5296FAEDAD7AA06ECD790F1E3D426558FA"
|
|
"98383E3CD2ED4830");
|
|
|
|
// Certificate data:
|
|
// Similar to kTestCertificateWithoutExpiration
|
|
// creation_time_seconds: 0
|
|
// expiration_time_seconds: unset
|
|
const std::string kTestCertificateNoExpirationWithUnlimitedCreationTime =
|
|
a2bs_hex(
|
|
"0AE703080212107CB49F987A635E1E0A52184694582D6E1800228E023082010A028201"
|
|
"0100DB13F5089C061E8EB62562692B3A06A774A99129BD63445FEC24448D07C30D7343"
|
|
"553442A989AF000B7D962033C290D9A81DDCBCF3980512445EB7E6CF544FC1FB3FC758"
|
|
"FB9E06B6C28562A841E4AE2D3368795C41A2D6043CA9830E0F36583C8FDB839C2752C1"
|
|
"3E184034EE412BA8A90271295B094255A16319706F4D6C9CF1EBB1B39BA2A7B9B27803"
|
|
"44DD5834BF71F4D5185508D2FDFB10419BD4F48E79DDFC78471C11B9E99DF98221D6FA"
|
|
"B25AEE24574FB02D614974942A36527C62B73A6FB7CA9EF828EB598DA59060D6548511"
|
|
"03F857A041E66B2FFB99713D31A64605932833E8CCDA6CF0F888AE6E78EDC9DA0D88A1"
|
|
"85B97FEB3EA74CF146BE7D9267020301000128E83D3A0C7769646576696E652E636F6D"
|
|
"480152AA01080110001A8101044F554B9400E10B17185036B6A1628EFC61B22166DE22"
|
|
"35717A44F953B7928F3415B9D113835B10106CB6C2187F34188723D82ECF95CF5ECAB5"
|
|
"8923F1731860815999F08BF4BE4A44DB7B991B5F915F2ADCEE481E26096AAEC3AC761B"
|
|
"624A92158AC91035041173392B1E495428F0D17406B10889B6B701FAF08D2284F95DBB"
|
|
"CA2220595267DCA89A2E57E7D4CA3C62ED6D12742408A07C103DF860DC0520C3664EEB"
|
|
"1280028CD44E12AA7C1A8EBF88C81A2A54EFD29F8BC6C377B0C11C3404F84D8B9EAD52"
|
|
"A0E18E929A4923A4172C2AC1CDADD16E41A7833AA0DE9D09F685DAC9ACC702CB906163"
|
|
"2C1C82333A6FB6BC9C4B2540BE18CED4AB0AF1C3EFE521308F3D4CF513C20500064FE9"
|
|
"35FDDF7BBAC0BA99AA7FA66017898DEE6F6F5EF90C875D5D8DA39E769E8D1485253EEE"
|
|
"93A97B35A8EAE8D3213D392B552FB4B4A37955EBE7362287502EB649D982F06D308178"
|
|
"642C1F69B12383B050CF60CD29209329C148FB4F422ED5ED139A25A89E13D4AB2E8DB9"
|
|
"40299D1414AF30DDF0D06AF55C1978F6E71E4548F20FFAE953A99D492F3D2847783338"
|
|
"D74F66D2DFEBB50896ACBC4795A81AB4050AAE020801121065802C9B625E5A319C33DC"
|
|
"1CB7C3C6D418E3A5BDD005228E023082010A0282010100B80502043C2A8A0FD8D25C61"
|
|
"3E1E3E3B5E349F332F04516A7510D38021A5629B9AA027AEAD3C759B7AFE70BED65F3D"
|
|
"F6860FF5EB60B983A3FFA33FDE06F3B73014DFC845AB371C6600562E9D904F842B8BA4"
|
|
"A5D9200FFA3ED45D705520A5C372A889F9E314386234C6897AE655851FCD9ADB4EF912"
|
|
"6C78386EA93BCB25BA3EC475C55C608E771C763AB02506F9B07252D6ABF7EA64B1EBDE"
|
|
"7B95C6407690533BD6890B9274C16066F74FC401EA355F0A02106814D49BF0C89E6E1F"
|
|
"8DB2A47841CD0DAD793296A107C36223404F2BF1FCA16FD0A4B982634DB62407F8F14A"
|
|
"CAE3B05A038BD3E4BBBAE4391BBFA7A47FB9D01DE857EA88E5E36EE36E245859FC0F02"
|
|
"0301000128E83D1280037E06581A019184AB572AFDCADDD03F161CE68200F8E6F8AD16"
|
|
"1947360BC8D49C0D68009B1C4644F9B3F3FB6DDFD92EF92DE62D41D459D29D81BFAEF3"
|
|
"970A3A39D25B2662ECB03B2DA7B68302FAA6DD98D95A143CC8C1CB6ADDA76D2EE9C372"
|
|
"3FAF95A29CDC3E968B6821A91C051CA280A86669710A1AD7A44BF9218027460DF694E2"
|
|
"E9270396DF221963F21EE6AA220A5EE4A4D0FEB3D53EB5732F8F91E9A96B3B8BE284C5"
|
|
"1339EA284D4D0EDD55B6AD56F7416420E05E059F9734A96BE25AA44560DBA8C38755A4"
|
|
"2A82BD7F88EDD19DF346A667B33B8114C76A8838C423D824A50B23251A088136D6E8F4"
|
|
"75299D2AFD46CEA51B5CBDF789A572125CD24FBB813B387A10CD2A30E3447634AB3408"
|
|
"F96B9CF3D98896D405F3F540D9C57962760FCD177CDD101EB8A4148B9C29CED5EAD645"
|
|
"A95B698F1CDC6E1DB6678B85074186080D68D13CD37E07B16DE370CD9AFB9B25564A73"
|
|
"A30E2AF8085EA37D310C474F0E67AC00CA992A5296FAEDAD7AA06ECD790F1E3D426558"
|
|
"FA98383E3CD2ED4830");
|
|
|
|
// Certificate data:
|
|
// Similar to kTestCertificateWithoutExpiration
|
|
// creation_time_seconds: -5
|
|
// expiration_time_seconds: unset
|
|
const std::string kTestCertificateWithInvalidCreationTime = a2bs_hex(
|
|
"0AEB03080212107CB49F987A635E1E0A52184694582D6E18FBFFFFFF0F228E023082010A02"
|
|
"82010100DB13F5089C061E8EB62562692B3A06A774A99129BD63445FEC24448D07C30D7343"
|
|
"553442A989AF000B7D962033C290D9A81DDCBCF3980512445EB7E6CF544FC1FB3FC758FB9E"
|
|
"06B6C28562A841E4AE2D3368795C41A2D6043CA9830E0F36583C8FDB839C2752C13E184034"
|
|
"EE412BA8A90271295B094255A16319706F4D6C9CF1EBB1B39BA2A7B9B2780344DD5834BF71"
|
|
"F4D5185508D2FDFB10419BD4F48E79DDFC78471C11B9E99DF98221D6FAB25AEE24574FB02D"
|
|
"614974942A36527C62B73A6FB7CA9EF828EB598DA59060D654851103F857A041E66B2FFB99"
|
|
"713D31A64605932833E8CCDA6CF0F888AE6E78EDC9DA0D88A185B97FEB3EA74CF146BE7D92"
|
|
"67020301000128E83D3A0C7769646576696E652E636F6D480152AA01080110001A8101044F"
|
|
"554B9400E10B17185036B6A1628EFC61B22166DE2235717A44F953B7928F3415B9D113835B"
|
|
"10106CB6C2187F34188723D82ECF95CF5ECAB58923F1731860815999F08BF4BE4A44DB7B99"
|
|
"1B5F915F2ADCEE481E26096AAEC3AC761B624A92158AC91035041173392B1E495428F0D174"
|
|
"06B10889B6B701FAF08D2284F95DBBCA2220595267DCA89A2E57E7D4CA3C62ED6D12742408"
|
|
"A07C103DF860DC0520C3664EEB1280028CD44E12AA7C1A8EBF88C81A2A54EFD29F8BC6C377"
|
|
"B0C11C3404F84D8B9EAD52A0E18E929A4923A4172C2AC1CDADD16E41A7833AA0DE9D09F685"
|
|
"DAC9ACC702CB9061632C1C82333A6FB6BC9C4B2540BE18CED4AB0AF1C3EFE521308F3D4CF5"
|
|
"13C20500064FE935FDDF7BBAC0BA99AA7FA66017898DEE6F6F5EF90C875D5D8DA39E769E8D"
|
|
"1485253EEE93A97B35A8EAE8D3213D392B552FB4B4A37955EBE7362287502EB649D982F06D"
|
|
"308178642C1F69B12383B050CF60CD29209329C148FB4F422ED5ED139A25A89E13D4AB2E8D"
|
|
"B940299D1414AF30DDF0D06AF55C1978F6E71E4548F20FFAE953A99D492F3D2847783338D7"
|
|
"4F66D2DFEBB50896ACBC4795A81AB4050AAE020801121065802C9B625E5A319C33DC1CB7C3"
|
|
"C6D418E3A5BDD005228E023082010A0282010100B80502043C2A8A0FD8D25C613E1E3E3B5E"
|
|
"349F332F04516A7510D38021A5629B9AA027AEAD3C759B7AFE70BED65F3DF6860FF5EB60B9"
|
|
"83A3FFA33FDE06F3B73014DFC845AB371C6600562E9D904F842B8BA4A5D9200FFA3ED45D70"
|
|
"5520A5C372A889F9E314386234C6897AE655851FCD9ADB4EF9126C78386EA93BCB25BA3EC4"
|
|
"75C55C608E771C763AB02506F9B07252D6ABF7EA64B1EBDE7B95C6407690533BD6890B9274"
|
|
"C16066F74FC401EA355F0A02106814D49BF0C89E6E1F8DB2A47841CD0DAD793296A107C362"
|
|
"23404F2BF1FCA16FD0A4B982634DB62407F8F14ACAE3B05A038BD3E4BBBAE4391BBFA7A47F"
|
|
"B9D01DE857EA88E5E36EE36E245859FC0F020301000128E83D1280037E06581A019184AB57"
|
|
"2AFDCADDD03F161CE68200F8E6F8AD161947360BC8D49C0D68009B1C4644F9B3F3FB6DDFD9"
|
|
"2EF92DE62D41D459D29D81BFAEF3970A3A39D25B2662ECB03B2DA7B68302FAA6DD98D95A14"
|
|
"3CC8C1CB6ADDA76D2EE9C3723FAF95A29CDC3E968B6821A91C051CA280A86669710A1AD7A4"
|
|
"4BF9218027460DF694E2E9270396DF221963F21EE6AA220A5EE4A4D0FEB3D53EB5732F8F91"
|
|
"E9A96B3B8BE284C51339EA284D4D0EDD55B6AD56F7416420E05E059F9734A96BE25AA44560"
|
|
"DBA8C38755A42A82BD7F88EDD19DF346A667B33B8114C76A8838C423D824A50B23251A0881"
|
|
"36D6E8F475299D2AFD46CEA51B5CBDF789A572125CD24FBB813B387A10CD2A30E3447634AB"
|
|
"3408F96B9CF3D98896D405F3F540D9C57962760FCD177CDD101EB8A4148B9C29CED5EAD645"
|
|
"A95B698F1CDC6E1DB6678B85074186080D68D13CD37E07B16DE370CD9AFB9B25564A73A30E"
|
|
"2AF8085EA37D310C474F0E67AC00CA992A5296FAEDAD7AA06ECD790F1E3D426558FA98383E"
|
|
"3CD2ED4830");
|
|
|
|
// Certificate data:
|
|
// Similar to kTestCertificateWithoutExpiration
|
|
// creation_time_seconds: ~ 03/16/2021
|
|
// expiration_time_seconds: ~ 03/2031
|
|
const std::string kTestCertificateWithFutureExpiration = a2bs_hex(
|
|
"0AF103080212107CB49F987A635E1E0A52184694582D6E1887C6E1FE05228E023082010A02"
|
|
"82010100DB13F5089C061E8EB62562692B3A06A774A99129BD63445FEC24448D07C30D7343"
|
|
"553442A989AF000B7D962033C290D9A81DDCBCF3980512445EB7E6CF544FC1FB3FC758FB9E"
|
|
"06B6C28562A841E4AE2D3368795C41A2D6043CA9830E0F36583C8FDB839C2752C13E184034"
|
|
"EE412BA8A90271295B094255A16319706F4D6C9CF1EBB1B39BA2A7B9B2780344DD5834BF71"
|
|
"F4D5185508D2FDFB10419BD4F48E79DDFC78471C11B9E99DF98221D6FAB25AEE24574FB02D"
|
|
"614974942A36527C62B73A6FB7CA9EF828EB598DA59060D654851103F857A041E66B2FFB99"
|
|
"713D31A64605932833E8CCDA6CF0F888AE6E78EDC9DA0D88A185B97FEB3EA74CF146BE7D92"
|
|
"67020301000128E83D3A0C7769646576696E652E636F6D480152AA01080110001A8101044F"
|
|
"554B9400E10B17185036B6A1628EFC61B22166DE2235717A44F953B7928F3415B9D113835B"
|
|
"10106CB6C2187F34188723D82ECF95CF5ECAB58923F1731860815999F08BF4BE4A44DB7B99"
|
|
"1B5F915F2ADCEE481E26096AAEC3AC761B624A92158AC91035041173392B1E495428F0D174"
|
|
"06B10889B6B701FAF08D2284F95DBBCA2220595267DCA89A2E57E7D4CA3C62ED6D12742408"
|
|
"A07C103DF860DC0520C3664EEB60E29D8399071280028CD44E12AA7C1A8EBF88C81A2A54EF"
|
|
"D29F8BC6C377B0C11C3404F84D8B9EAD52A0E18E929A4923A4172C2AC1CDADD16E41A7833A"
|
|
"A0DE9D09F685DAC9ACC702CB9061632C1C82333A6FB6BC9C4B2540BE18CED4AB0AF1C3EFE5"
|
|
"21308F3D4CF513C20500064FE935FDDF7BBAC0BA99AA7FA66017898DEE6F6F5EF90C875D5D"
|
|
"8DA39E769E8D1485253EEE93A97B35A8EAE8D3213D392B552FB4B4A37955EBE7362287502E"
|
|
"B649D982F06D308178642C1F69B12383B050CF60CD29209329C148FB4F422ED5ED139A25A8"
|
|
"9E13D4AB2E8DB940299D1414AF30DDF0D06AF55C1978F6E71E4548F20FFAE953A99D492F3D"
|
|
"2847783338D74F66D2DFEBB50896ACBC4795A81AB4050AAE020801121065802C9B625E5A31"
|
|
"9C33DC1CB7C3C6D418E3A5BDD005228E023082010A0282010100B80502043C2A8A0FD8D25C"
|
|
"613E1E3E3B5E349F332F04516A7510D38021A5629B9AA027AEAD3C759B7AFE70BED65F3DF6"
|
|
"860FF5EB60B983A3FFA33FDE06F3B73014DFC845AB371C6600562E9D904F842B8BA4A5D920"
|
|
"0FFA3ED45D705520A5C372A889F9E314386234C6897AE655851FCD9ADB4EF9126C78386EA9"
|
|
"3BCB25BA3EC475C55C608E771C763AB02506F9B07252D6ABF7EA64B1EBDE7B95C640769053"
|
|
"3BD6890B9274C16066F74FC401EA355F0A02106814D49BF0C89E6E1F8DB2A47841CD0DAD79"
|
|
"3296A107C36223404F2BF1FCA16FD0A4B982634DB62407F8F14ACAE3B05A038BD3E4BBBAE4"
|
|
"391BBFA7A47FB9D01DE857EA88E5E36EE36E245859FC0F020301000128E83D1280037E0658"
|
|
"1A019184AB572AFDCADDD03F161CE68200F8E6F8AD161947360BC8D49C0D68009B1C4644F9"
|
|
"B3F3FB6DDFD92EF92DE62D41D459D29D81BFAEF3970A3A39D25B2662ECB03B2DA7B68302FA"
|
|
"A6DD98D95A143CC8C1CB6ADDA76D2EE9C3723FAF95A29CDC3E968B6821A91C051CA280A866"
|
|
"69710A1AD7A44BF9218027460DF694E2E9270396DF221963F21EE6AA220A5EE4A4D0FEB3D5"
|
|
"3EB5732F8F91E9A96B3B8BE284C51339EA284D4D0EDD55B6AD56F7416420E05E059F9734A9"
|
|
"6BE25AA44560DBA8C38755A42A82BD7F88EDD19DF346A667B33B8114C76A8838C423D824A5"
|
|
"0B23251A088136D6E8F475299D2AFD46CEA51B5CBDF789A572125CD24FBB813B387A10CD2A"
|
|
"30E3447634AB3408F96B9CF3D98896D405F3F540D9C57962760FCD177CDD101EB8A4148B9C"
|
|
"29CED5EAD645A95B698F1CDC6E1DB6678B85074186080D68D13CD37E07B16DE370CD9AFB9B"
|
|
"25564A73A30E2AF8085EA37D310C474F0E67AC00CA992A5296FAEDAD7AA06ECD790F1E3D42"
|
|
"6558FA98383E3CD2ED4830");
|
|
|
|
// Certificate data:
|
|
// Similar to kTestCertificateWithoutExpiration
|
|
// creation_time_seconds: ~ 03/17/2021
|
|
// expiration_time_seconds: 0
|
|
const std::string kTestCertificateNeverExpires = a2bs_hex(
|
|
"0AED03080212107CB49F987A635E1E0A52184694582D6E1894AECC8206228E023082010A02"
|
|
"82010100DB13F5089C061E8EB62562692B3A06A774A99129BD63445FEC24448D07C30D7343"
|
|
"553442A989AF000B7D962033C290D9A81DDCBCF3980512445EB7E6CF544FC1FB3FC758FB9E"
|
|
"06B6C28562A841E4AE2D3368795C41A2D6043CA9830E0F36583C8FDB839C2752C13E184034"
|
|
"EE412BA8A90271295B094255A16319706F4D6C9CF1EBB1B39BA2A7B9B2780344DD5834BF71"
|
|
"F4D5185508D2FDFB10419BD4F48E79DDFC78471C11B9E99DF98221D6FAB25AEE24574FB02D"
|
|
"614974942A36527C62B73A6FB7CA9EF828EB598DA59060D654851103F857A041E66B2FFB99"
|
|
"713D31A64605932833E8CCDA6CF0F888AE6E78EDC9DA0D88A185B97FEB3EA74CF146BE7D92"
|
|
"67020301000128E83D3A0C7769646576696E652E636F6D480152AA01080110001A8101044F"
|
|
"554B9400E10B17185036B6A1628EFC61B22166DE2235717A44F953B7928F3415B9D113835B"
|
|
"10106CB6C2187F34188723D82ECF95CF5ECAB58923F1731860815999F08BF4BE4A44DB7B99"
|
|
"1B5F915F2ADCEE481E26096AAEC3AC761B624A92158AC91035041173392B1E495428F0D174"
|
|
"06B10889B6B701FAF08D2284F95DBBCA2220595267DCA89A2E57E7D4CA3C62ED6D12742408"
|
|
"A07C103DF860DC0520C3664EEB60001280028CD44E12AA7C1A8EBF88C81A2A54EFD29F8BC6"
|
|
"C377B0C11C3404F84D8B9EAD52A0E18E929A4923A4172C2AC1CDADD16E41A7833AA0DE9D09"
|
|
"F685DAC9ACC702CB9061632C1C82333A6FB6BC9C4B2540BE18CED4AB0AF1C3EFE521308F3D"
|
|
"4CF513C20500064FE935FDDF7BBAC0BA99AA7FA66017898DEE6F6F5EF90C875D5D8DA39E76"
|
|
"9E8D1485253EEE93A97B35A8EAE8D3213D392B552FB4B4A37955EBE7362287502EB649D982"
|
|
"F06D308178642C1F69B12383B050CF60CD29209329C148FB4F422ED5ED139A25A89E13D4AB"
|
|
"2E8DB940299D1414AF30DDF0D06AF55C1978F6E71E4548F20FFAE953A99D492F3D28477833"
|
|
"38D74F66D2DFEBB50896ACBC4795A81AB4050AAE020801121065802C9B625E5A319C33DC1C"
|
|
"B7C3C6D418E3A5BDD005228E023082010A0282010100B80502043C2A8A0FD8D25C613E1E3E"
|
|
"3B5E349F332F04516A7510D38021A5629B9AA027AEAD3C759B7AFE70BED65F3DF6860FF5EB"
|
|
"60B983A3FFA33FDE06F3B73014DFC845AB371C6600562E9D904F842B8BA4A5D9200FFA3ED4"
|
|
"5D705520A5C372A889F9E314386234C6897AE655851FCD9ADB4EF9126C78386EA93BCB25BA"
|
|
"3EC475C55C608E771C763AB02506F9B07252D6ABF7EA64B1EBDE7B95C6407690533BD6890B"
|
|
"9274C16066F74FC401EA355F0A02106814D49BF0C89E6E1F8DB2A47841CD0DAD793296A107"
|
|
"C36223404F2BF1FCA16FD0A4B982634DB62407F8F14ACAE3B05A038BD3E4BBBAE4391BBFA7"
|
|
"A47FB9D01DE857EA88E5E36EE36E245859FC0F020301000128E83D1280037E06581A019184"
|
|
"AB572AFDCADDD03F161CE68200F8E6F8AD161947360BC8D49C0D68009B1C4644F9B3F3FB6D"
|
|
"DFD92EF92DE62D41D459D29D81BFAEF3970A3A39D25B2662ECB03B2DA7B68302FAA6DD98D9"
|
|
"5A143CC8C1CB6ADDA76D2EE9C3723FAF95A29CDC3E968B6821A91C051CA280A86669710A1A"
|
|
"D7A44BF9218027460DF694E2E9270396DF221963F21EE6AA220A5EE4A4D0FEB3D53EB5732F"
|
|
"8F91E9A96B3B8BE284C51339EA284D4D0EDD55B6AD56F7416420E05E059F9734A96BE25AA4"
|
|
"4560DBA8C38755A42A82BD7F88EDD19DF346A667B33B8114C76A8838C423D824A50B23251A"
|
|
"088136D6E8F475299D2AFD46CEA51B5CBDF789A572125CD24FBB813B387A10CD2A30E34476"
|
|
"34AB3408F96B9CF3D98896D405F3F540D9C57962760FCD177CDD101EB8A4148B9C29CED5EA"
|
|
"D645A95B698F1CDC6E1DB6678B85074186080D68D13CD37E07B16DE370CD9AFB9B25564A73"
|
|
"A30E2AF8085EA37D310C474F0E67AC00CA992A5296FAEDAD7AA06ECD790F1E3D426558FA98"
|
|
"383E3CD2ED4830");
|
|
|
|
// Certificate data:
|
|
// Similar to kTestCertificateWithoutExpiration
|
|
// creation_time_seconds: ~ 03/07/2021
|
|
// expiration_time_seconds: ~ 03/08/2021
|
|
const std::string kTestCertificateExpired = a2bs_hex(
|
|
"0AF103080212107CB49F987A635E1E0A52184694582D6E189EF0968206228E023082010A02"
|
|
"82010100DB13F5089C061E8EB62562692B3A06A774A99129BD63445FEC24448D07C30D7343"
|
|
"553442A989AF000B7D962033C290D9A81DDCBCF3980512445EB7E6CF544FC1FB3FC758FB9E"
|
|
"06B6C28562A841E4AE2D3368795C41A2D6043CA9830E0F36583C8FDB839C2752C13E184034"
|
|
"EE412BA8A90271295B094255A16319706F4D6C9CF1EBB1B39BA2A7B9B2780344DD5834BF71"
|
|
"F4D5185508D2FDFB10419BD4F48E79DDFC78471C11B9E99DF98221D6FAB25AEE24574FB02D"
|
|
"614974942A36527C62B73A6FB7CA9EF828EB598DA59060D654851103F857A041E66B2FFB99"
|
|
"713D31A64605932833E8CCDA6CF0F888AE6E78EDC9DA0D88A185B97FEB3EA74CF146BE7D92"
|
|
"67020301000128E83D3A0C7769646576696E652E636F6D480152AA01080110001A8101044F"
|
|
"554B9400E10B17185036B6A1628EFC61B22166DE2235717A44F953B7928F3415B9D113835B"
|
|
"10106CB6C2187F34188723D82ECF95CF5ECAB58923F1731860815999F08BF4BE4A44DB7B99"
|
|
"1B5F915F2ADCEE481E26096AAEC3AC761B624A92158AC91035041173392B1E495428F0D174"
|
|
"06B10889B6B701FAF08D2284F95DBBCA2220595267DCA89A2E57E7D4CA3C62ED6D12742408"
|
|
"A07C103DF860DC0520C3664EEB609E939C82061280028CD44E12AA7C1A8EBF88C81A2A54EF"
|
|
"D29F8BC6C377B0C11C3404F84D8B9EAD52A0E18E929A4923A4172C2AC1CDADD16E41A7833A"
|
|
"A0DE9D09F685DAC9ACC702CB9061632C1C82333A6FB6BC9C4B2540BE18CED4AB0AF1C3EFE5"
|
|
"21308F3D4CF513C20500064FE935FDDF7BBAC0BA99AA7FA66017898DEE6F6F5EF90C875D5D"
|
|
"8DA39E769E8D1485253EEE93A97B35A8EAE8D3213D392B552FB4B4A37955EBE7362287502E"
|
|
"B649D982F06D308178642C1F69B12383B050CF60CD29209329C148FB4F422ED5ED139A25A8"
|
|
"9E13D4AB2E8DB940299D1414AF30DDF0D06AF55C1978F6E71E4548F20FFAE953A99D492F3D"
|
|
"2847783338D74F66D2DFEBB50896ACBC4795A81AB4050AAE020801121065802C9B625E5A31"
|
|
"9C33DC1CB7C3C6D418E3A5BDD005228E023082010A0282010100B80502043C2A8A0FD8D25C"
|
|
"613E1E3E3B5E349F332F04516A7510D38021A5629B9AA027AEAD3C759B7AFE70BED65F3DF6"
|
|
"860FF5EB60B983A3FFA33FDE06F3B73014DFC845AB371C6600562E9D904F842B8BA4A5D920"
|
|
"0FFA3ED45D705520A5C372A889F9E314386234C6897AE655851FCD9ADB4EF9126C78386EA9"
|
|
"3BCB25BA3EC475C55C608E771C763AB02506F9B07252D6ABF7EA64B1EBDE7B95C640769053"
|
|
"3BD6890B9274C16066F74FC401EA355F0A02106814D49BF0C89E6E1F8DB2A47841CD0DAD79"
|
|
"3296A107C36223404F2BF1FCA16FD0A4B982634DB62407F8F14ACAE3B05A038BD3E4BBBAE4"
|
|
"391BBFA7A47FB9D01DE857EA88E5E36EE36E245859FC0F020301000128E83D1280037E0658"
|
|
"1A019184AB572AFDCADDD03F161CE68200F8E6F8AD161947360BC8D49C0D68009B1C4644F9"
|
|
"B3F3FB6DDFD92EF92DE62D41D459D29D81BFAEF3970A3A39D25B2662ECB03B2DA7B68302FA"
|
|
"A6DD98D95A143CC8C1CB6ADDA76D2EE9C3723FAF95A29CDC3E968B6821A91C051CA280A866"
|
|
"69710A1AD7A44BF9218027460DF694E2E9270396DF221963F21EE6AA220A5EE4A4D0FEB3D5"
|
|
"3EB5732F8F91E9A96B3B8BE284C51339EA284D4D0EDD55B6AD56F7416420E05E059F9734A9"
|
|
"6BE25AA44560DBA8C38755A42A82BD7F88EDD19DF346A667B33B8114C76A8838C423D824A5"
|
|
"0B23251A088136D6E8F475299D2AFD46CEA51B5CBDF789A572125CD24FBB813B387A10CD2A"
|
|
"30E3447634AB3408F96B9CF3D98896D405F3F540D9C57962760FCD177CDD101EB8A4148B9C"
|
|
"29CED5EAD645A95B698F1CDC6E1DB6678B85074186080D68D13CD37E07B16DE370CD9AFB9B"
|
|
"25564A73A30E2AF8085EA37D310C474F0E67AC00CA992A5296FAEDAD7AA06ECD790F1E3D42"
|
|
"6558FA98383E3CD2ED4830");
|
|
|
|
// Certificate data:
|
|
// Similar to kTestCertificateWithoutExpiration
|
|
// creation_time_seconds: unset
|
|
// expiration_time_seconds: ~ 03/08/2031
|
|
const std::string kTestCertificateWithInvalidCreationFutureExpiration =
|
|
a2bs_hex(
|
|
"0AEB03080212107CB49F987A635E1E0A52184694582D6E228E023082010A0282010100"
|
|
"DB13F5089C061E8EB62562692B3A06A774A99129BD63445FEC24448D07C30D73435534"
|
|
"42A989AF000B7D962033C290D9A81DDCBCF3980512445EB7E6CF544FC1FB3FC758FB9E"
|
|
"06B6C28562A841E4AE2D3368795C41A2D6043CA9830E0F36583C8FDB839C2752C13E18"
|
|
"4034EE412BA8A90271295B094255A16319706F4D6C9CF1EBB1B39BA2A7B9B2780344DD"
|
|
"5834BF71F4D5185508D2FDFB10419BD4F48E79DDFC78471C11B9E99DF98221D6FAB25A"
|
|
"EE24574FB02D614974942A36527C62B73A6FB7CA9EF828EB598DA59060D654851103F8"
|
|
"57A041E66B2FFB99713D31A64605932833E8CCDA6CF0F888AE6E78EDC9DA0D88A185B9"
|
|
"7FEB3EA74CF146BE7D9267020301000128E83D3A0C7769646576696E652E636F6D4801"
|
|
"52AA01080110001A8101044F554B9400E10B17185036B6A1628EFC61B22166DE223571"
|
|
"7A44F953B7928F3415B9D113835B10106CB6C2187F34188723D82ECF95CF5ECAB58923"
|
|
"F1731860815999F08BF4BE4A44DB7B991B5F915F2ADCEE481E26096AAEC3AC761B624A"
|
|
"92158AC91035041173392B1E495428F0D17406B10889B6B701FAF08D2284F95DBBCA22"
|
|
"20595267DCA89A2E57E7D4CA3C62ED6D12742408A07C103DF860DC0520C3664EEB60FD"
|
|
"8AFC98071280028CD44E12AA7C1A8EBF88C81A2A54EFD29F8BC6C377B0C11C3404F84D"
|
|
"8B9EAD52A0E18E929A4923A4172C2AC1CDADD16E41A7833AA0DE9D09F685DAC9ACC702"
|
|
"CB9061632C1C82333A6FB6BC9C4B2540BE18CED4AB0AF1C3EFE521308F3D4CF513C205"
|
|
"00064FE935FDDF7BBAC0BA99AA7FA66017898DEE6F6F5EF90C875D5D8DA39E769E8D14"
|
|
"85253EEE93A97B35A8EAE8D3213D392B552FB4B4A37955EBE7362287502EB649D982F0"
|
|
"6D308178642C1F69B12383B050CF60CD29209329C148FB4F422ED5ED139A25A89E13D4"
|
|
"AB2E8DB940299D1414AF30DDF0D06AF55C1978F6E71E4548F20FFAE953A99D492F3D28"
|
|
"47783338D74F66D2DFEBB50896ACBC4795A81AB4050AAE020801121065802C9B625E5A"
|
|
"319C33DC1CB7C3C6D418E3A5BDD005228E023082010A0282010100B80502043C2A8A0F"
|
|
"D8D25C613E1E3E3B5E349F332F04516A7510D38021A5629B9AA027AEAD3C759B7AFE70"
|
|
"BED65F3DF6860FF5EB60B983A3FFA33FDE06F3B73014DFC845AB371C6600562E9D904F"
|
|
"842B8BA4A5D9200FFA3ED45D705520A5C372A889F9E314386234C6897AE655851FCD9A"
|
|
"DB4EF9126C78386EA93BCB25BA3EC475C55C608E771C763AB02506F9B07252D6ABF7EA"
|
|
"64B1EBDE7B95C6407690533BD6890B9274C16066F74FC401EA355F0A02106814D49BF0"
|
|
"C89E6E1F8DB2A47841CD0DAD793296A107C36223404F2BF1FCA16FD0A4B982634DB624"
|
|
"07F8F14ACAE3B05A038BD3E4BBBAE4391BBFA7A47FB9D01DE857EA88E5E36EE36E2458"
|
|
"59FC0F020301000128E83D1280037E06581A019184AB572AFDCADDD03F161CE68200F8"
|
|
"E6F8AD161947360BC8D49C0D68009B1C4644F9B3F3FB6DDFD92EF92DE62D41D459D29D"
|
|
"81BFAEF3970A3A39D25B2662ECB03B2DA7B68302FAA6DD98D95A143CC8C1CB6ADDA76D"
|
|
"2EE9C3723FAF95A29CDC3E968B6821A91C051CA280A86669710A1AD7A44BF921802746"
|
|
"0DF694E2E9270396DF221963F21EE6AA220A5EE4A4D0FEB3D53EB5732F8F91E9A96B3B"
|
|
"8BE284C51339EA284D4D0EDD55B6AD56F7416420E05E059F9734A96BE25AA44560DBA8"
|
|
"C38755A42A82BD7F88EDD19DF346A667B33B8114C76A8838C423D824A50B23251A0881"
|
|
"36D6E8F475299D2AFD46CEA51B5CBDF789A572125CD24FBB813B387A10CD2A30E34476"
|
|
"34AB3408F96B9CF3D98896D405F3F540D9C57962760FCD177CDD101EB8A4148B9C29CE"
|
|
"D5EAD645A95B698F1CDC6E1DB6678B85074186080D68D13CD37E07B16DE370CD9AFB9B"
|
|
"25564A73A30E2AF8085EA37D310C474F0E67AC00CA992A5296FAEDAD7AA06ECD790F1E"
|
|
"3D426558FA98383E3CD2ED4830");
|
|
|
|
// Certificate data:
|
|
// Similar to kTestCertificateWithoutExpiration
|
|
// creation_time_seconds: 0
|
|
// expiration_time_seconds: ~2031
|
|
const std::string kTestCertificateWithUnlimitedCreationFutureExpiration =
|
|
a2bs_hex(
|
|
"0AEB03080212107CB49F987A635E1E0A52184694582D6E228E023082010A0282010100"
|
|
"DB13F5089C061E8EB62562692B3A06A774A99129BD63445FEC24448D07C30D73435534"
|
|
"42A989AF000B7D962033C290D9A81DDCBCF3980512445EB7E6CF544FC1FB3FC758FB9E"
|
|
"06B6C28562A841E4AE2D3368795C41A2D6043CA9830E0F36583C8FDB839C2752C13E18"
|
|
"4034EE412BA8A90271295B094255A16319706F4D6C9CF1EBB1B39BA2A7B9B2780344DD"
|
|
"5834BF71F4D5185508D2FDFB10419BD4F48E79DDFC78471C11B9E99DF98221D6FAB25A"
|
|
"EE24574FB02D614974942A36527C62B73A6FB7CA9EF828EB598DA59060D654851103F8"
|
|
"57A041E66B2FFB99713D31A64605932833E8CCDA6CF0F888AE6E78EDC9DA0D88A185B9"
|
|
"7FEB3EA74CF146BE7D9267020301000128E83D3A0C7769646576696E652E636F6D4801"
|
|
"52AA01080110001A8101044F554B9400E10B17185036B6A1628EFC61B22166DE223571"
|
|
"7A44F953B7928F3415B9D113835B10106CB6C2187F34188723D82ECF95CF5ECAB58923"
|
|
"F1731860815999F08BF4BE4A44DB7B991B5F915F2ADCEE481E26096AAEC3AC761B624A"
|
|
"92158AC91035041173392B1E495428F0D17406B10889B6B701FAF08D2284F95DBBCA22"
|
|
"20595267DCA89A2E57E7D4CA3C62ED6D12742408A07C103DF860DC0520C3664EEB60AE"
|
|
"91FC98071280028CD44E12AA7C1A8EBF88C81A2A54EFD29F8BC6C377B0C11C3404F84D"
|
|
"8B9EAD52A0E18E929A4923A4172C2AC1CDADD16E41A7833AA0DE9D09F685DAC9ACC702"
|
|
"CB9061632C1C82333A6FB6BC9C4B2540BE18CED4AB0AF1C3EFE521308F3D4CF513C205"
|
|
"00064FE935FDDF7BBAC0BA99AA7FA66017898DEE6F6F5EF90C875D5D8DA39E769E8D14"
|
|
"85253EEE93A97B35A8EAE8D3213D392B552FB4B4A37955EBE7362287502EB649D982F0"
|
|
"6D308178642C1F69B12383B050CF60CD29209329C148FB4F422ED5ED139A25A89E13D4"
|
|
"AB2E8DB940299D1414AF30DDF0D06AF55C1978F6E71E4548F20FFAE953A99D492F3D28"
|
|
"47783338D74F66D2DFEBB50896ACBC4795A81AB4050AAE020801121065802C9B625E5A"
|
|
"319C33DC1CB7C3C6D418E3A5BDD005228E023082010A0282010100B80502043C2A8A0F"
|
|
"D8D25C613E1E3E3B5E349F332F04516A7510D38021A5629B9AA027AEAD3C759B7AFE70"
|
|
"BED65F3DF6860FF5EB60B983A3FFA33FDE06F3B73014DFC845AB371C6600562E9D904F"
|
|
"842B8BA4A5D9200FFA3ED45D705520A5C372A889F9E314386234C6897AE655851FCD9A"
|
|
"DB4EF9126C78386EA93BCB25BA3EC475C55C608E771C763AB02506F9B07252D6ABF7EA"
|
|
"64B1EBDE7B95C6407690533BD6890B9274C16066F74FC401EA355F0A02106814D49BF0"
|
|
"C89E6E1F8DB2A47841CD0DAD793296A107C36223404F2BF1FCA16FD0A4B982634DB624"
|
|
"07F8F14ACAE3B05A038BD3E4BBBAE4391BBFA7A47FB9D01DE857EA88E5E36EE36E2458"
|
|
"59FC0F020301000128E83D1280037E06581A019184AB572AFDCADDD03F161CE68200F8"
|
|
"E6F8AD161947360BC8D49C0D68009B1C4644F9B3F3FB6DDFD92EF92DE62D41D459D29D"
|
|
"81BFAEF3970A3A39D25B2662ECB03B2DA7B68302FAA6DD98D95A143CC8C1CB6ADDA76D"
|
|
"2EE9C3723FAF95A29CDC3E968B6821A91C051CA280A86669710A1AD7A44BF921802746"
|
|
"0DF694E2E9270396DF221963F21EE6AA220A5EE4A4D0FEB3D53EB5732F8F91E9A96B3B"
|
|
"8BE284C51339EA284D4D0EDD55B6AD56F7416420E05E059F9734A96BE25AA44560DBA8"
|
|
"C38755A42A82BD7F88EDD19DF346A667B33B8114C76A8838C423D824A50B23251A0881"
|
|
"36D6E8F475299D2AFD46CEA51B5CBDF789A572125CD24FBB813B387A10CD2A30E34476"
|
|
"34AB3408F96B9CF3D98896D405F3F540D9C57962760FCD177CDD101EB8A4148B9C29CE"
|
|
"D5EAD645A95B698F1CDC6E1DB6678B85074186080D68D13CD37E07B16DE370CD9AFB9B"
|
|
"25564A73A30E2AF8085EA37D310C474F0E67AC00CA992A5296FAEDAD7AA06ECD790F1E"
|
|
"3D426558FA98383E3CD2ED4830");
|
|
|
|
// Certificate data:
|
|
// Similar to kTestCertificateWithoutExpiration
|
|
// creation_time_seconds: 03/17/2021
|
|
// expiration_time_seconds: 03/07/2021
|
|
const std::string kTestCertificateExpiresBeforeCreationTime = a2bs_hex(
|
|
"0AF103080212107CB49F987A635E1E0A52184694582D6E18EC95CC8206228E023082010A02"
|
|
"82010100DB13F5089C061E8EB62562692B3A06A774A99129BD63445FEC24448D07C30D7343"
|
|
"553442A989AF000B7D962033C290D9A81DDCBCF3980512445EB7E6CF544FC1FB3FC758FB9E"
|
|
"06B6C28562A841E4AE2D3368795C41A2D6043CA9830E0F36583C8FDB839C2752C13E184034"
|
|
"EE412BA8A90271295B094255A16319706F4D6C9CF1EBB1B39BA2A7B9B2780344DD5834BF71"
|
|
"F4D5185508D2FDFB10419BD4F48E79DDFC78471C11B9E99DF98221D6FAB25AEE24574FB02D"
|
|
"614974942A36527C62B73A6FB7CA9EF828EB598DA59060D654851103F857A041E66B2FFB99"
|
|
"713D31A64605932833E8CCDA6CF0F888AE6E78EDC9DA0D88A185B97FEB3EA74CF146BE7D92"
|
|
"67020301000128E83D3A0C7769646576696E652E636F6D480152AA01080110001A8101044F"
|
|
"554B9400E10B17185036B6A1628EFC61B22166DE2235717A44F953B7928F3415B9D113835B"
|
|
"10106CB6C2187F34188723D82ECF95CF5ECAB58923F1731860815999F08BF4BE4A44DB7B99"
|
|
"1B5F915F2ADCEE481E26096AAEC3AC761B624A92158AC91035041173392B1E495428F0D174"
|
|
"06B10889B6B701FAF08D2284F95DBBCA2220595267DCA89A2E57E7D4CA3C62ED6D12742408"
|
|
"A07C103DF860DC0520C3664EEB60ECB79782061280028CD44E12AA7C1A8EBF88C81A2A54EF"
|
|
"D29F8BC6C377B0C11C3404F84D8B9EAD52A0E18E929A4923A4172C2AC1CDADD16E41A7833A"
|
|
"A0DE9D09F685DAC9ACC702CB9061632C1C82333A6FB6BC9C4B2540BE18CED4AB0AF1C3EFE5"
|
|
"21308F3D4CF513C20500064FE935FDDF7BBAC0BA99AA7FA66017898DEE6F6F5EF90C875D5D"
|
|
"8DA39E769E8D1485253EEE93A97B35A8EAE8D3213D392B552FB4B4A37955EBE7362287502E"
|
|
"B649D982F06D308178642C1F69B12383B050CF60CD29209329C148FB4F422ED5ED139A25A8"
|
|
"9E13D4AB2E8DB940299D1414AF30DDF0D06AF55C1978F6E71E4548F20FFAE953A99D492F3D"
|
|
"2847783338D74F66D2DFEBB50896ACBC4795A81AB4050AAE020801121065802C9B625E5A31"
|
|
"9C33DC1CB7C3C6D418E3A5BDD005228E023082010A0282010100B80502043C2A8A0FD8D25C"
|
|
"613E1E3E3B5E349F332F04516A7510D38021A5629B9AA027AEAD3C759B7AFE70BED65F3DF6"
|
|
"860FF5EB60B983A3FFA33FDE06F3B73014DFC845AB371C6600562E9D904F842B8BA4A5D920"
|
|
"0FFA3ED45D705520A5C372A889F9E314386234C6897AE655851FCD9ADB4EF9126C78386EA9"
|
|
"3BCB25BA3EC475C55C608E771C763AB02506F9B07252D6ABF7EA64B1EBDE7B95C640769053"
|
|
"3BD6890B9274C16066F74FC401EA355F0A02106814D49BF0C89E6E1F8DB2A47841CD0DAD79"
|
|
"3296A107C36223404F2BF1FCA16FD0A4B982634DB62407F8F14ACAE3B05A038BD3E4BBBAE4"
|
|
"391BBFA7A47FB9D01DE857EA88E5E36EE36E245859FC0F020301000128E83D1280037E0658"
|
|
"1A019184AB572AFDCADDD03F161CE68200F8E6F8AD161947360BC8D49C0D68009B1C4644F9"
|
|
"B3F3FB6DDFD92EF92DE62D41D459D29D81BFAEF3970A3A39D25B2662ECB03B2DA7B68302FA"
|
|
"A6DD98D95A143CC8C1CB6ADDA76D2EE9C3723FAF95A29CDC3E968B6821A91C051CA280A866"
|
|
"69710A1AD7A44BF9218027460DF694E2E9270396DF221963F21EE6AA220A5EE4A4D0FEB3D5"
|
|
"3EB5732F8F91E9A96B3B8BE284C51339EA284D4D0EDD55B6AD56F7416420E05E059F9734A9"
|
|
"6BE25AA44560DBA8C38755A42A82BD7F88EDD19DF346A667B33B8114C76A8838C423D824A5"
|
|
"0B23251A088136D6E8F475299D2AFD46CEA51B5CBDF789A572125CD24FBB813B387A10CD2A"
|
|
"30E3447634AB3408F96B9CF3D98896D405F3F540D9C57962760FCD177CDD101EB8A4148B9C"
|
|
"29CED5EAD645A95B698F1CDC6E1DB6678B85074186080D68D13CD37E07B16DE370CD9AFB9B"
|
|
"25564A73A30E2AF8085EA37D310C474F0E67AC00CA992A5296FAEDAD7AA06ECD790F1E3D42"
|
|
"6558FA98383E3CD2ED4830");
|
|
|
|
// A Wrapped Private Key
|
|
// Value of |wrapped_private_key| in DeviceCertFile proto messages
|
|
// kTestCertificateFileData and kTestCertificateFileWithoutKeyTypeData.
|
|
// Value is randomly generated value and is not compatible with a real
|
|
// OEMCrypto implementation.
|
|
const std::string kTestWrappedPrivateKeyData = a2bs_hex(
|
|
"B36550E6BEACCB34F6C3B2ABF86634EE5383829C844F9B0C14DCF9A22FE3543CCBA8FD61"
|
|
"E21CEE503E7A40B93B07A4186A362D9E6F88DD48D4516635C6D0C253C03F12EFA6095618"
|
|
"D647F5212C518C4A6AA7172BC691530703FEDDFDB25ECF885A53FF2B4B98773979D61AE6"
|
|
"59E340489811512A5C2FD445A4B0AE88A3A7F29ACE5B01ECF580D0993227BC408B602B0B"
|
|
"C099920C17044FE66242372C2B2E8CA5C1EEC0844BC19198ADADE47FB449DC9B30784952"
|
|
"B3A8131B912CE928070D665C0557EBE7484FDABFBCA0F2C2BFD4FBDDB6681C4689FD276C"
|
|
"231B72B15AC4E5C3C088449DE4785F1D4835AC44E39B119991EFF6E72C7D3B8C75CE588D"
|
|
"B0B3AD69EB79C19B22CB518EF964C9D985AFD3677F0D13015AD7BEA84CD01E335E68AF15"
|
|
"3B989FE8BEEC60A94753C638535FA3F215F750F6954AC395F8702941409E7276910CE118"
|
|
"19649641318B5BD1B78DECEADB2B562312CC286DB0BCC14A60C84CB21AB6E75E59DAFBE7"
|
|
"01D6405DD3F47D2F8A95422ED8EB5ECE330C9886406B3B69180B697521F3865B4A05DF2B"
|
|
"B51D16CAFEF05866E5D55C360C759F5B10E0D354D63D5A14E5BA19DBF9394E18E474E790"
|
|
"63B4E877C2FE6BCA732ED39B091B6D7A21DD9D6D6750C1CA2ABC5DEC2A81B5359771849E"
|
|
"7B4560EB6D329E59455A70F57F035DFB50EC4354D7E068ADFAFAD4081ACA67FD");
|
|
const CryptoWrappedKey kTestWrappedKey = {CryptoWrappedKey::kRsa,
|
|
kTestWrappedPrivateKeyData};
|
|
|
|
// Structurally valid test certificate device file, missing |key_type| field.
|
|
// {'certificate': kTestCertificate,
|
|
// 'wrapped_private_key': kTestWrappedPrivateKeyData
|
|
// }
|
|
const std::string kTestCertificateFileWithoutKeyTypeData = a2bs_hex(
|
|
"0AA90F080110011AA20F0AA80B0AEB03080212107CB49F987A635E1E0A52184694582D6E"
|
|
"1887C6E1FE05228E023082010A0282010100DB13F5089C061E8EB62562692B3A06A774A9"
|
|
"9129BD63445FEC24448D07C30D7343553442A989AF000B7D962033C290D9A81DDCBCF398"
|
|
"0512445EB7E6CF544FC1FB3FC758FB9E06B6C28562A841E4AE2D3368795C41A2D6043CA9"
|
|
"830E0F36583C8FDB839C2752C13E184034EE412BA8A90271295B094255A16319706F4D6C"
|
|
"9CF1EBB1B39BA2A7B9B2780344DD5834BF71F4D5185508D2FDFB10419BD4F48E79DDFC78"
|
|
"471C11B9E99DF98221D6FAB25AEE24574FB02D614974942A36527C62B73A6FB7CA9EF828"
|
|
"EB598DA59060D654851103F857A041E66B2FFB99713D31A64605932833E8CCDA6CF0F888"
|
|
"AE6E78EDC9DA0D88A185B97FEB3EA74CF146BE7D9267020301000128E83D3A0C77696465"
|
|
"76696E652E636F6D480152AA01080110001A8101044F554B9400E10B17185036B6A1628E"
|
|
"FC61B22166DE2235717A44F953B7928F3415B9D113835B10106CB6C2187F34188723D82E"
|
|
"CF95CF5ECAB58923F1731860815999F08BF4BE4A44DB7B991B5F915F2ADCEE481E26096A"
|
|
"AEC3AC761B624A92158AC91035041173392B1E495428F0D17406B10889B6B701FAF08D22"
|
|
"84F95DBBCA2220595267DCA89A2E57E7D4CA3C62ED6D12742408A07C103DF860DC0520C3"
|
|
"664EEB1280028CD44E12AA7C1A8EBF88C81A2A54EFD29F8BC6C377B0C11C3404F84D8B9E"
|
|
"AD52A0E18E929A4923A4172C2AC1CDADD16E41A7833AA0DE9D09F685DAC9ACC702CB9061"
|
|
"632C1C82333A6FB6BC9C4B2540BE18CED4AB0AF1C3EFE521308F3D4CF513C20500064FE9"
|
|
"35FDDF7BBAC0BA99AA7FA66017898DEE6F6F5EF90C875D5D8DA39E769E8D1485253EEE93"
|
|
"A97B35A8EAE8D3213D392B552FB4B4A37955EBE7362287502EB649D982F06D308178642C"
|
|
"1F69B12383B050CF60CD29209329C148FB4F422ED5ED139A25A89E13D4AB2E8DB940299D"
|
|
"1414AF30DDF0D06AF55C1978F6E71E4548F20FFAE953A99D492F3D2847783338D74F66D2"
|
|
"DFEBB50896ACBC4795A81AB4050AAE020801121065802C9B625E5A319C33DC1CB7C3C6D4"
|
|
"18E3A5BDD005228E023082010A0282010100B80502043C2A8A0FD8D25C613E1E3E3B5E34"
|
|
"9F332F04516A7510D38021A5629B9AA027AEAD3C759B7AFE70BED65F3DF6860FF5EB60B9"
|
|
"83A3FFA33FDE06F3B73014DFC845AB371C6600562E9D904F842B8BA4A5D9200FFA3ED45D"
|
|
"705520A5C372A889F9E314386234C6897AE655851FCD9ADB4EF9126C78386EA93BCB25BA"
|
|
"3EC475C55C608E771C763AB02506F9B07252D6ABF7EA64B1EBDE7B95C6407690533BD689"
|
|
"0B9274C16066F74FC401EA355F0A02106814D49BF0C89E6E1F8DB2A47841CD0DAD793296"
|
|
"A107C36223404F2BF1FCA16FD0A4B982634DB62407F8F14ACAE3B05A038BD3E4BBBAE439"
|
|
"1BBFA7A47FB9D01DE857EA88E5E36EE36E245859FC0F020301000128E83D1280037E0658"
|
|
"1A019184AB572AFDCADDD03F161CE68200F8E6F8AD161947360BC8D49C0D68009B1C4644"
|
|
"F9B3F3FB6DDFD92EF92DE62D41D459D29D81BFAEF3970A3A39D25B2662ECB03B2DA7B683"
|
|
"02FAA6DD98D95A143CC8C1CB6ADDA76D2EE9C3723FAF95A29CDC3E968B6821A91C051CA2"
|
|
"80A86669710A1AD7A44BF9218027460DF694E2E9270396DF221963F21EE6AA220A5EE4A4"
|
|
"D0FEB3D53EB5732F8F91E9A96B3B8BE284C51339EA284D4D0EDD55B6AD56F7416420E05E"
|
|
"059F9734A96BE25AA44560DBA8C38755A42A82BD7F88EDD19DF346A667B33B8114C76A88"
|
|
"38C423D824A50B23251A088136D6E8F475299D2AFD46CEA51B5CBDF789A572125CD24FBB"
|
|
"813B387A10CD2A30E3447634AB3408F96B9CF3D98896D405F3F540D9C57962760FCD177C"
|
|
"DD101EB8A4148B9C29CED5EAD645A95B698F1CDC6E1DB6678B85074186080D68D13CD37E"
|
|
"07B16DE370CD9AFB9B25564A73A30E2AF8085EA37D310C474F0E67AC00CA992A5296FAED"
|
|
"AD7AA06ECD790F1E3D426558FA98383E3CD2ED483012F403B36550E6BEACCB34F6C3B2AB"
|
|
"F86634EE5383829C844F9B0C14DCF9A22FE3543CCBA8FD61E21CEE503E7A40B93B07A418"
|
|
"6A362D9E6F88DD48D4516635C6D0C253C03F12EFA6095618D647F5212C518C4A6AA7172B"
|
|
"C691530703FEDDFDB25ECF885A53FF2B4B98773979D61AE659E340489811512A5C2FD445"
|
|
"A4B0AE88A3A7F29ACE5B01ECF580D0993227BC408B602B0BC099920C17044FE66242372C"
|
|
"2B2E8CA5C1EEC0844BC19198ADADE47FB449DC9B30784952B3A8131B912CE928070D665C"
|
|
"0557EBE7484FDABFBCA0F2C2BFD4FBDDB6681C4689FD276C231B72B15AC4E5C3C088449D"
|
|
"E4785F1D4835AC44E39B119991EFF6E72C7D3B8C75CE588DB0B3AD69EB79C19B22CB518E"
|
|
"F964C9D985AFD3677F0D13015AD7BEA84CD01E335E68AF153B989FE8BEEC60A94753C638"
|
|
"535FA3F215F750F6954AC395F8702941409E7276910CE11819649641318B5BD1B78DECEA"
|
|
"DB2B562312CC286DB0BCC14A60C84CB21AB6E75E59DAFBE701D6405DD3F47D2F8A95422E"
|
|
"D8EB5ECE330C9886406B3B69180B697521F3865B4A05DF2BB51D16CAFEF05866E5D55C36"
|
|
"0C759F5B10E0D354D63D5A14E5BA19DBF9394E18E474E79063B4E877C2FE6BCA732ED39B"
|
|
"091B6D7A21DD9D6D6750C1CA2ABC5DEC2A81B5359771849E7B4560EB6D329E59455A70F5"
|
|
"7F035DFB50EC4354D7E068ADFAFAD4081ACA67FD1220F07050C50264B496211432D47DAA"
|
|
"88EE59BAD141B8FD372BAE67A6FF05C74DAC");
|
|
|
|
// Structurally valid test certificate device file.
|
|
// {'certificate': kTestCertificateWithoutExpiration,
|
|
// 'key_type': 'RSA',
|
|
// 'wrapped_private_key': kTestWrappedPrivateKeyData
|
|
// 'acquisition_time_seconds': unset
|
|
// 'expiration_time_seconds': unset
|
|
// }
|
|
const std::string kTestCertificateFileDataWithoutExpiration = a2bs_hex(
|
|
"0AAB0F080110011AA40F0AA80B0AEB03080212107CB49F987A635E1E0A52184694582D6E"
|
|
"1887C6E1FE05228E023082010A0282010100DB13F5089C061E8EB62562692B3A06A774A9"
|
|
"9129BD63445FEC24448D07C30D7343553442A989AF000B7D962033C290D9A81DDCBCF398"
|
|
"0512445EB7E6CF544FC1FB3FC758FB9E06B6C28562A841E4AE2D3368795C41A2D6043CA9"
|
|
"830E0F36583C8FDB839C2752C13E184034EE412BA8A90271295B094255A16319706F4D6C"
|
|
"9CF1EBB1B39BA2A7B9B2780344DD5834BF71F4D5185508D2FDFB10419BD4F48E79DDFC78"
|
|
"471C11B9E99DF98221D6FAB25AEE24574FB02D614974942A36527C62B73A6FB7CA9EF828"
|
|
"EB598DA59060D654851103F857A041E66B2FFB99713D31A64605932833E8CCDA6CF0F888"
|
|
"AE6E78EDC9DA0D88A185B97FEB3EA74CF146BE7D9267020301000128E83D3A0C77696465"
|
|
"76696E652E636F6D480152AA01080110001A8101044F554B9400E10B17185036B6A1628E"
|
|
"FC61B22166DE2235717A44F953B7928F3415B9D113835B10106CB6C2187F34188723D82E"
|
|
"CF95CF5ECAB58923F1731860815999F08BF4BE4A44DB7B991B5F915F2ADCEE481E26096A"
|
|
"AEC3AC761B624A92158AC91035041173392B1E495428F0D17406B10889B6B701FAF08D22"
|
|
"84F95DBBCA2220595267DCA89A2E57E7D4CA3C62ED6D12742408A07C103DF860DC0520C3"
|
|
"664EEB1280028CD44E12AA7C1A8EBF88C81A2A54EFD29F8BC6C377B0C11C3404F84D8B9E"
|
|
"AD52A0E18E929A4923A4172C2AC1CDADD16E41A7833AA0DE9D09F685DAC9ACC702CB9061"
|
|
"632C1C82333A6FB6BC9C4B2540BE18CED4AB0AF1C3EFE521308F3D4CF513C20500064FE9"
|
|
"35FDDF7BBAC0BA99AA7FA66017898DEE6F6F5EF90C875D5D8DA39E769E8D1485253EEE93"
|
|
"A97B35A8EAE8D3213D392B552FB4B4A37955EBE7362287502EB649D982F06D308178642C"
|
|
"1F69B12383B050CF60CD29209329C148FB4F422ED5ED139A25A89E13D4AB2E8DB940299D"
|
|
"1414AF30DDF0D06AF55C1978F6E71E4548F20FFAE953A99D492F3D2847783338D74F66D2"
|
|
"DFEBB50896ACBC4795A81AB4050AAE020801121065802C9B625E5A319C33DC1CB7C3C6D4"
|
|
"18E3A5BDD005228E023082010A0282010100B80502043C2A8A0FD8D25C613E1E3E3B5E34"
|
|
"9F332F04516A7510D38021A5629B9AA027AEAD3C759B7AFE70BED65F3DF6860FF5EB60B9"
|
|
"83A3FFA33FDE06F3B73014DFC845AB371C6600562E9D904F842B8BA4A5D9200FFA3ED45D"
|
|
"705520A5C372A889F9E314386234C6897AE655851FCD9ADB4EF9126C78386EA93BCB25BA"
|
|
"3EC475C55C608E771C763AB02506F9B07252D6ABF7EA64B1EBDE7B95C6407690533BD689"
|
|
"0B9274C16066F74FC401EA355F0A02106814D49BF0C89E6E1F8DB2A47841CD0DAD793296"
|
|
"A107C36223404F2BF1FCA16FD0A4B982634DB62407F8F14ACAE3B05A038BD3E4BBBAE439"
|
|
"1BBFA7A47FB9D01DE857EA88E5E36EE36E245859FC0F020301000128E83D1280037E0658"
|
|
"1A019184AB572AFDCADDD03F161CE68200F8E6F8AD161947360BC8D49C0D68009B1C4644"
|
|
"F9B3F3FB6DDFD92EF92DE62D41D459D29D81BFAEF3970A3A39D25B2662ECB03B2DA7B683"
|
|
"02FAA6DD98D95A143CC8C1CB6ADDA76D2EE9C3723FAF95A29CDC3E968B6821A91C051CA2"
|
|
"80A86669710A1AD7A44BF9218027460DF694E2E9270396DF221963F21EE6AA220A5EE4A4"
|
|
"D0FEB3D53EB5732F8F91E9A96B3B8BE284C51339EA284D4D0EDD55B6AD56F7416420E05E"
|
|
"059F9734A96BE25AA44560DBA8C38755A42A82BD7F88EDD19DF346A667B33B8114C76A88"
|
|
"38C423D824A50B23251A088136D6E8F475299D2AFD46CEA51B5CBDF789A572125CD24FBB"
|
|
"813B387A10CD2A30E3447634AB3408F96B9CF3D98896D405F3F540D9C57962760FCD177C"
|
|
"DD101EB8A4148B9C29CED5EAD645A95B698F1CDC6E1DB6678B85074186080D68D13CD37E"
|
|
"07B16DE370CD9AFB9B25564A73A30E2AF8085EA37D310C474F0E67AC00CA992A5296FAED"
|
|
"AD7AA06ECD790F1E3D426558FA98383E3CD2ED483012F403B36550E6BEACCB34F6C3B2AB"
|
|
"F86634EE5383829C844F9B0C14DCF9A22FE3543CCBA8FD61E21CEE503E7A40B93B07A418"
|
|
"6A362D9E6F88DD48D4516635C6D0C253C03F12EFA6095618D647F5212C518C4A6AA7172B"
|
|
"C691530703FEDDFDB25ECF885A53FF2B4B98773979D61AE659E340489811512A5C2FD445"
|
|
"A4B0AE88A3A7F29ACE5B01ECF580D0993227BC408B602B0BC099920C17044FE66242372C"
|
|
"2B2E8CA5C1EEC0844BC19198ADADE47FB449DC9B30784952B3A8131B912CE928070D665C"
|
|
"0557EBE7484FDABFBCA0F2C2BFD4FBDDB6681C4689FD276C231B72B15AC4E5C3C088449D"
|
|
"E4785F1D4835AC44E39B119991EFF6E72C7D3B8C75CE588DB0B3AD69EB79C19B22CB518E"
|
|
"F964C9D985AFD3677F0D13015AD7BEA84CD01E335E68AF153B989FE8BEEC60A94753C638"
|
|
"535FA3F215F750F6954AC395F8702941409E7276910CE11819649641318B5BD1B78DECEA"
|
|
"DB2B562312CC286DB0BCC14A60C84CB21AB6E75E59DAFBE701D6405DD3F47D2F8A95422E"
|
|
"D8EB5ECE330C9886406B3B69180B697521F3865B4A05DF2BB51D16CAFEF05866E5D55C36"
|
|
"0C759F5B10E0D354D63D5A14E5BA19DBF9394E18E474E79063B4E877C2FE6BCA732ED39B"
|
|
"091B6D7A21DD9D6D6750C1CA2ABC5DEC2A81B5359771849E7B4560EB6D329E59455A70F5"
|
|
"7F035DFB50EC4354D7E068ADFAFAD4081ACA67FD18001220A28ED0C0D4697C870B56192C"
|
|
"F2AF86D7362398EB250F6A29BE3A0C4887F0D653");
|
|
|
|
// Structurally valid test certificate device file.
|
|
// {'certificate': kTestCertificateWithoutExpiration,
|
|
// 'key_type': 'RSA',
|
|
// 'wrapped_private_key': kTestWrappedPrivateKeyData
|
|
// 'acquisition_time_seconds': unset
|
|
// 'expiration_time_seconds': ~2031
|
|
// }
|
|
const std::string kTestLegacyCertificateFileDataWithClientExpiration = a2bs_hex(
|
|
"0AB10F080110011AAA0F0AA80B0AEB03080212107CB49F987A635E1E0A52184694582D6E18"
|
|
"87C6E1FE05228E023082010A0282010100DB13F5089C061E8EB62562692B3A06A774A99129"
|
|
"BD63445FEC24448D07C30D7343553442A989AF000B7D962033C290D9A81DDCBCF398051244"
|
|
"5EB7E6CF544FC1FB3FC758FB9E06B6C28562A841E4AE2D3368795C41A2D6043CA9830E0F36"
|
|
"583C8FDB839C2752C13E184034EE412BA8A90271295B094255A16319706F4D6C9CF1EBB1B3"
|
|
"9BA2A7B9B2780344DD5834BF71F4D5185508D2FDFB10419BD4F48E79DDFC78471C11B9E99D"
|
|
"F98221D6FAB25AEE24574FB02D614974942A36527C62B73A6FB7CA9EF828EB598DA59060D6"
|
|
"54851103F857A041E66B2FFB99713D31A64605932833E8CCDA6CF0F888AE6E78EDC9DA0D88"
|
|
"A185B97FEB3EA74CF146BE7D9267020301000128E83D3A0C7769646576696E652E636F6D48"
|
|
"0152AA01080110001A8101044F554B9400E10B17185036B6A1628EFC61B22166DE2235717A"
|
|
"44F953B7928F3415B9D113835B10106CB6C2187F34188723D82ECF95CF5ECAB58923F17318"
|
|
"60815999F08BF4BE4A44DB7B991B5F915F2ADCEE481E26096AAEC3AC761B624A92158AC910"
|
|
"35041173392B1E495428F0D17406B10889B6B701FAF08D2284F95DBBCA2220595267DCA89A"
|
|
"2E57E7D4CA3C62ED6D12742408A07C103DF860DC0520C3664EEB1280028CD44E12AA7C1A8E"
|
|
"BF88C81A2A54EFD29F8BC6C377B0C11C3404F84D8B9EAD52A0E18E929A4923A4172C2AC1CD"
|
|
"ADD16E41A7833AA0DE9D09F685DAC9ACC702CB9061632C1C82333A6FB6BC9C4B2540BE18CE"
|
|
"D4AB0AF1C3EFE521308F3D4CF513C20500064FE935FDDF7BBAC0BA99AA7FA66017898DEE6F"
|
|
"6F5EF90C875D5D8DA39E769E8D1485253EEE93A97B35A8EAE8D3213D392B552FB4B4A37955"
|
|
"EBE7362287502EB649D982F06D308178642C1F69B12383B050CF60CD29209329C148FB4F42"
|
|
"2ED5ED139A25A89E13D4AB2E8DB940299D1414AF30DDF0D06AF55C1978F6E71E4548F20FFA"
|
|
"E953A99D492F3D2847783338D74F66D2DFEBB50896ACBC4795A81AB4050AAE020801121065"
|
|
"802C9B625E5A319C33DC1CB7C3C6D418E3A5BDD005228E023082010A0282010100B8050204"
|
|
"3C2A8A0FD8D25C613E1E3E3B5E349F332F04516A7510D38021A5629B9AA027AEAD3C759B7A"
|
|
"FE70BED65F3DF6860FF5EB60B983A3FFA33FDE06F3B73014DFC845AB371C6600562E9D904F"
|
|
"842B8BA4A5D9200FFA3ED45D705520A5C372A889F9E314386234C6897AE655851FCD9ADB4E"
|
|
"F9126C78386EA93BCB25BA3EC475C55C608E771C763AB02506F9B07252D6ABF7EA64B1EBDE"
|
|
"7B95C6407690533BD6890B9274C16066F74FC401EA355F0A02106814D49BF0C89E6E1F8DB2"
|
|
"A47841CD0DAD793296A107C36223404F2BF1FCA16FD0A4B982634DB62407F8F14ACAE3B05A"
|
|
"038BD3E4BBBAE4391BBFA7A47FB9D01DE857EA88E5E36EE36E245859FC0F020301000128E8"
|
|
"3D1280037E06581A019184AB572AFDCADDD03F161CE68200F8E6F8AD161947360BC8D49C0D"
|
|
"68009B1C4644F9B3F3FB6DDFD92EF92DE62D41D459D29D81BFAEF3970A3A39D25B2662ECB0"
|
|
"3B2DA7B68302FAA6DD98D95A143CC8C1CB6ADDA76D2EE9C3723FAF95A29CDC3E968B6821A9"
|
|
"1C051CA280A86669710A1AD7A44BF9218027460DF694E2E9270396DF221963F21EE6AA220A"
|
|
"5EE4A4D0FEB3D53EB5732F8F91E9A96B3B8BE284C51339EA284D4D0EDD55B6AD56F7416420"
|
|
"E05E059F9734A96BE25AA44560DBA8C38755A42A82BD7F88EDD19DF346A667B33B8114C76A"
|
|
"8838C423D824A50B23251A088136D6E8F475299D2AFD46CEA51B5CBDF789A572125CD24FBB"
|
|
"813B387A10CD2A30E3447634AB3408F96B9CF3D98896D405F3F540D9C57962760FCD177CDD"
|
|
"101EB8A4148B9C29CED5EAD645A95B698F1CDC6E1DB6678B85074186080D68D13CD37E07B1"
|
|
"6DE370CD9AFB9B25564A73A30E2AF8085EA37D310C474F0E67AC00CA992A5296FAEDAD7AA0"
|
|
"6ECD790F1E3D426558FA98383E3CD2ED483012F403B36550E6BEACCB34F6C3B2ABF86634EE"
|
|
"5383829C844F9B0C14DCF9A22FE3543CCBA8FD61E21CEE503E7A40B93B07A4186A362D9E6F"
|
|
"88DD48D4516635C6D0C253C03F12EFA6095618D647F5212C518C4A6AA7172BC691530703FE"
|
|
"DDFDB25ECF885A53FF2B4B98773979D61AE659E340489811512A5C2FD445A4B0AE88A3A7F2"
|
|
"9ACE5B01ECF580D0993227BC408B602B0BC099920C17044FE66242372C2B2E8CA5C1EEC084"
|
|
"4BC19198ADADE47FB449DC9B30784952B3A8131B912CE928070D665C0557EBE7484FDABFBC"
|
|
"A0F2C2BFD4FBDDB6681C4689FD276C231B72B15AC4E5C3C088449DE4785F1D4835AC44E39B"
|
|
"119991EFF6E72C7D3B8C75CE588DB0B3AD69EB79C19B22CB518EF964C9D985AFD3677F0D13"
|
|
"015AD7BEA84CD01E335E68AF153B989FE8BEEC60A94753C638535FA3F215F750F6954AC395"
|
|
"F8702941409E7276910CE11819649641318B5BD1B78DECEADB2B562312CC286DB0BCC14A60"
|
|
"C84CB21AB6E75E59DAFBE701D6405DD3F47D2F8A95422ED8EB5ECE330C9886406B3B69180B"
|
|
"697521F3865B4A05DF2BB51D16CAFEF05866E5D55C360C759F5B10E0D354D63D5A14E5BA19"
|
|
"DBF9394E18E474E79063B4E877C2FE6BCA732ED39B091B6D7A21DD9D6D6750C1CA2ABC5DEC"
|
|
"2A81B5359771849E7B4560EB6D329E59455A70F57F035DFB50EC4354D7E068ADFAFAD4081A"
|
|
"CA67FD180028B7BA8499071220752DEC6BBB7DCB2750411F58DEBA61BFE55AEDC0EE92C3C6"
|
|
"BCDBC0C86A75798C");
|
|
|
|
// Structurally valid test certificate device file.
|
|
// {'certificate': kTestCertificateWithoutExpiration,
|
|
// 'key_type': 'RSA',
|
|
// 'wrapped_private_key': kTestWrappedPrivateKeyData
|
|
// 'acquisition_time_seconds': unset
|
|
// 'expiration_time_seconds': ~2020
|
|
// }
|
|
const std::string kTestLegacyCertificateFileDataClientExpired = a2bs_hex(
|
|
"0AB10F080110011AAA0F0AA80B0AEB03080212107CB49F987A635E1E0A52184694582D6E18"
|
|
"87C6E1FE05228E023082010A0282010100DB13F5089C061E8EB62562692B3A06A774A99129"
|
|
"BD63445FEC24448D07C30D7343553442A989AF000B7D962033C290D9A81DDCBCF398051244"
|
|
"5EB7E6CF544FC1FB3FC758FB9E06B6C28562A841E4AE2D3368795C41A2D6043CA9830E0F36"
|
|
"583C8FDB839C2752C13E184034EE412BA8A90271295B094255A16319706F4D6C9CF1EBB1B3"
|
|
"9BA2A7B9B2780344DD5834BF71F4D5185508D2FDFB10419BD4F48E79DDFC78471C11B9E99D"
|
|
"F98221D6FAB25AEE24574FB02D614974942A36527C62B73A6FB7CA9EF828EB598DA59060D6"
|
|
"54851103F857A041E66B2FFB99713D31A64605932833E8CCDA6CF0F888AE6E78EDC9DA0D88"
|
|
"A185B97FEB3EA74CF146BE7D9267020301000128E83D3A0C7769646576696E652E636F6D48"
|
|
"0152AA01080110001A8101044F554B9400E10B17185036B6A1628EFC61B22166DE2235717A"
|
|
"44F953B7928F3415B9D113835B10106CB6C2187F34188723D82ECF95CF5ECAB58923F17318"
|
|
"60815999F08BF4BE4A44DB7B991B5F915F2ADCEE481E26096AAEC3AC761B624A92158AC910"
|
|
"35041173392B1E495428F0D17406B10889B6B701FAF08D2284F95DBBCA2220595267DCA89A"
|
|
"2E57E7D4CA3C62ED6D12742408A07C103DF860DC0520C3664EEB1280028CD44E12AA7C1A8E"
|
|
"BF88C81A2A54EFD29F8BC6C377B0C11C3404F84D8B9EAD52A0E18E929A4923A4172C2AC1CD"
|
|
"ADD16E41A7833AA0DE9D09F685DAC9ACC702CB9061632C1C82333A6FB6BC9C4B2540BE18CE"
|
|
"D4AB0AF1C3EFE521308F3D4CF513C20500064FE935FDDF7BBAC0BA99AA7FA66017898DEE6F"
|
|
"6F5EF90C875D5D8DA39E769E8D1485253EEE93A97B35A8EAE8D3213D392B552FB4B4A37955"
|
|
"EBE7362287502EB649D982F06D308178642C1F69B12383B050CF60CD29209329C148FB4F42"
|
|
"2ED5ED139A25A89E13D4AB2E8DB940299D1414AF30DDF0D06AF55C1978F6E71E4548F20FFA"
|
|
"E953A99D492F3D2847783338D74F66D2DFEBB50896ACBC4795A81AB4050AAE020801121065"
|
|
"802C9B625E5A319C33DC1CB7C3C6D418E3A5BDD005228E023082010A0282010100B8050204"
|
|
"3C2A8A0FD8D25C613E1E3E3B5E349F332F04516A7510D38021A5629B9AA027AEAD3C759B7A"
|
|
"FE70BED65F3DF6860FF5EB60B983A3FFA33FDE06F3B73014DFC845AB371C6600562E9D904F"
|
|
"842B8BA4A5D9200FFA3ED45D705520A5C372A889F9E314386234C6897AE655851FCD9ADB4E"
|
|
"F9126C78386EA93BCB25BA3EC475C55C608E771C763AB02506F9B07252D6ABF7EA64B1EBDE"
|
|
"7B95C6407690533BD6890B9274C16066F74FC401EA355F0A02106814D49BF0C89E6E1F8DB2"
|
|
"A47841CD0DAD793296A107C36223404F2BF1FCA16FD0A4B982634DB62407F8F14ACAE3B05A"
|
|
"038BD3E4BBBAE4391BBFA7A47FB9D01DE857EA88E5E36EE36E245859FC0F020301000128E8"
|
|
"3D1280037E06581A019184AB572AFDCADDD03F161CE68200F8E6F8AD161947360BC8D49C0D"
|
|
"68009B1C4644F9B3F3FB6DDFD92EF92DE62D41D459D29D81BFAEF3970A3A39D25B2662ECB0"
|
|
"3B2DA7B68302FAA6DD98D95A143CC8C1CB6ADDA76D2EE9C3723FAF95A29CDC3E968B6821A9"
|
|
"1C051CA280A86669710A1AD7A44BF9218027460DF694E2E9270396DF221963F21EE6AA220A"
|
|
"5EE4A4D0FEB3D53EB5732F8F91E9A96B3B8BE284C51339EA284D4D0EDD55B6AD56F7416420"
|
|
"E05E059F9734A96BE25AA44560DBA8C38755A42A82BD7F88EDD19DF346A667B33B8114C76A"
|
|
"8838C423D824A50B23251A088136D6E8F475299D2AFD46CEA51B5CBDF789A572125CD24FBB"
|
|
"813B387A10CD2A30E3447634AB3408F96B9CF3D98896D405F3F540D9C57962760FCD177CDD"
|
|
"101EB8A4148B9C29CED5EAD645A95B698F1CDC6E1DB6678B85074186080D68D13CD37E07B1"
|
|
"6DE370CD9AFB9B25564A73A30E2AF8085EA37D310C474F0E67AC00CA992A5296FAEDAD7AA0"
|
|
"6ECD790F1E3D426558FA98383E3CD2ED483012F403B36550E6BEACCB34F6C3B2ABF86634EE"
|
|
"5383829C844F9B0C14DCF9A22FE3543CCBA8FD61E21CEE503E7A40B93B07A4186A362D9E6F"
|
|
"88DD48D4516635C6D0C253C03F12EFA6095618D647F5212C518C4A6AA7172BC691530703FE"
|
|
"DDFDB25ECF885A53FF2B4B98773979D61AE659E340489811512A5C2FD445A4B0AE88A3A7F2"
|
|
"9ACE5B01ECF580D0993227BC408B602B0BC099920C17044FE66242372C2B2E8CA5C1EEC084"
|
|
"4BC19198ADADE47FB449DC9B30784952B3A8131B912CE928070D665C0557EBE7484FDABFBC"
|
|
"A0F2C2BFD4FBDDB6681C4689FD276C231B72B15AC4E5C3C088449DE4785F1D4835AC44E39B"
|
|
"119991EFF6E72C7D3B8C75CE588DB0B3AD69EB79C19B22CB518EF964C9D985AFD3677F0D13"
|
|
"015AD7BEA84CD01E335E68AF153B989FE8BEEC60A94753C638535FA3F215F750F6954AC395"
|
|
"F8702941409E7276910CE11819649641318B5BD1B78DECEADB2B562312CC286DB0BCC14A60"
|
|
"C84CB21AB6E75E59DAFBE701D6405DD3F47D2F8A95422ED8EB5ECE330C9886406B3B69180B"
|
|
"697521F3865B4A05DF2BB51D16CAFEF05866E5D55C360C759F5B10E0D354D63D5A14E5BA19"
|
|
"DBF9394E18E474E79063B4E877C2FE6BCA732ED39B091B6D7A21DD9D6D6750C1CA2ABC5DEC"
|
|
"2A81B5359771849E7B4560EB6D329E59455A70F57F035DFB50EC4354D7E068ADFAFAD4081A"
|
|
"CA67FD180028B9A8C2F3051220D2F932E432C200B5B30228317A3BA4A207C429B3F788C072"
|
|
"8F1E9615DFDD7A34");
|
|
|
|
// Structurally valid test certificate device file.
|
|
// {'certificate': kTestCertificateWithoutExpiration,
|
|
// 'key_type': 'RSA',
|
|
// 'wrapped_private_key': kTestWrappedPrivateKeyData
|
|
// 'acquisition_time_seconds': unset
|
|
// 'expiration_time_seconds': -5
|
|
// }
|
|
const std::string kTestLegacyCertificateFileDataInvalidClientExpiration =
|
|
a2bs_hex(
|
|
"0AB60F080110011AAF0F0AA80B0AEB03080212107CB49F987A635E1E0A52184694582D"
|
|
"6E1887C6E1FE05228E023082010A0282010100DB13F5089C061E8EB62562692B3A06A7"
|
|
"74A99129BD63445FEC24448D07C30D7343553442A989AF000B7D962033C290D9A81DDC"
|
|
"BCF3980512445EB7E6CF544FC1FB3FC758FB9E06B6C28562A841E4AE2D3368795C41A2"
|
|
"D6043CA9830E0F36583C8FDB839C2752C13E184034EE412BA8A90271295B094255A163"
|
|
"19706F4D6C9CF1EBB1B39BA2A7B9B2780344DD5834BF71F4D5185508D2FDFB10419BD4"
|
|
"F48E79DDFC78471C11B9E99DF98221D6FAB25AEE24574FB02D614974942A36527C62B7"
|
|
"3A6FB7CA9EF828EB598DA59060D654851103F857A041E66B2FFB99713D31A646059328"
|
|
"33E8CCDA6CF0F888AE6E78EDC9DA0D88A185B97FEB3EA74CF146BE7D92670203010001"
|
|
"28E83D3A0C7769646576696E652E636F6D480152AA01080110001A8101044F554B9400"
|
|
"E10B17185036B6A1628EFC61B22166DE2235717A44F953B7928F3415B9D113835B1010"
|
|
"6CB6C2187F34188723D82ECF95CF5ECAB58923F1731860815999F08BF4BE4A44DB7B99"
|
|
"1B5F915F2ADCEE481E26096AAEC3AC761B624A92158AC91035041173392B1E495428F0"
|
|
"D17406B10889B6B701FAF08D2284F95DBBCA2220595267DCA89A2E57E7D4CA3C62ED6D"
|
|
"12742408A07C103DF860DC0520C3664EEB1280028CD44E12AA7C1A8EBF88C81A2A54EF"
|
|
"D29F8BC6C377B0C11C3404F84D8B9EAD52A0E18E929A4923A4172C2AC1CDADD16E41A7"
|
|
"833AA0DE9D09F685DAC9ACC702CB9061632C1C82333A6FB6BC9C4B2540BE18CED4AB0A"
|
|
"F1C3EFE521308F3D4CF513C20500064FE935FDDF7BBAC0BA99AA7FA66017898DEE6F6F"
|
|
"5EF90C875D5D8DA39E769E8D1485253EEE93A97B35A8EAE8D3213D392B552FB4B4A379"
|
|
"55EBE7362287502EB649D982F06D308178642C1F69B12383B050CF60CD29209329C148"
|
|
"FB4F422ED5ED139A25A89E13D4AB2E8DB940299D1414AF30DDF0D06AF55C1978F6E71E"
|
|
"4548F20FFAE953A99D492F3D2847783338D74F66D2DFEBB50896ACBC4795A81AB4050A"
|
|
"AE020801121065802C9B625E5A319C33DC1CB7C3C6D418E3A5BDD005228E023082010A"
|
|
"0282010100B80502043C2A8A0FD8D25C613E1E3E3B5E349F332F04516A7510D38021A5"
|
|
"629B9AA027AEAD3C759B7AFE70BED65F3DF6860FF5EB60B983A3FFA33FDE06F3B73014"
|
|
"DFC845AB371C6600562E9D904F842B8BA4A5D9200FFA3ED45D705520A5C372A889F9E3"
|
|
"14386234C6897AE655851FCD9ADB4EF9126C78386EA93BCB25BA3EC475C55C608E771C"
|
|
"763AB02506F9B07252D6ABF7EA64B1EBDE7B95C6407690533BD6890B9274C16066F74F"
|
|
"C401EA355F0A02106814D49BF0C89E6E1F8DB2A47841CD0DAD793296A107C36223404F"
|
|
"2BF1FCA16FD0A4B982634DB62407F8F14ACAE3B05A038BD3E4BBBAE4391BBFA7A47FB9"
|
|
"D01DE857EA88E5E36EE36E245859FC0F020301000128E83D1280037E06581A019184AB"
|
|
"572AFDCADDD03F161CE68200F8E6F8AD161947360BC8D49C0D68009B1C4644F9B3F3FB"
|
|
"6DDFD92EF92DE62D41D459D29D81BFAEF3970A3A39D25B2662ECB03B2DA7B68302FAA6"
|
|
"DD98D95A143CC8C1CB6ADDA76D2EE9C3723FAF95A29CDC3E968B6821A91C051CA280A8"
|
|
"6669710A1AD7A44BF9218027460DF694E2E9270396DF221963F21EE6AA220A5EE4A4D0"
|
|
"FEB3D53EB5732F8F91E9A96B3B8BE284C51339EA284D4D0EDD55B6AD56F7416420E05E"
|
|
"059F9734A96BE25AA44560DBA8C38755A42A82BD7F88EDD19DF346A667B33B8114C76A"
|
|
"8838C423D824A50B23251A088136D6E8F475299D2AFD46CEA51B5CBDF789A572125CD2"
|
|
"4FBB813B387A10CD2A30E3447634AB3408F96B9CF3D98896D405F3F540D9C57962760F"
|
|
"CD177CDD101EB8A4148B9C29CED5EAD645A95B698F1CDC6E1DB6678B85074186080D68"
|
|
"D13CD37E07B16DE370CD9AFB9B25564A73A30E2AF8085EA37D310C474F0E67AC00CA99"
|
|
"2A5296FAEDAD7AA06ECD790F1E3D426558FA98383E3CD2ED483012F403B36550E6BEAC"
|
|
"CB34F6C3B2ABF86634EE5383829C844F9B0C14DCF9A22FE3543CCBA8FD61E21CEE503E"
|
|
"7A40B93B07A4186A362D9E6F88DD48D4516635C6D0C253C03F12EFA6095618D647F521"
|
|
"2C518C4A6AA7172BC691530703FEDDFDB25ECF885A53FF2B4B98773979D61AE659E340"
|
|
"489811512A5C2FD445A4B0AE88A3A7F29ACE5B01ECF580D0993227BC408B602B0BC099"
|
|
"920C17044FE66242372C2B2E8CA5C1EEC0844BC19198ADADE47FB449DC9B30784952B3"
|
|
"A8131B912CE928070D665C0557EBE7484FDABFBCA0F2C2BFD4FBDDB6681C4689FD276C"
|
|
"231B72B15AC4E5C3C088449DE4785F1D4835AC44E39B119991EFF6E72C7D3B8C75CE58"
|
|
"8DB0B3AD69EB79C19B22CB518EF964C9D985AFD3677F0D13015AD7BEA84CD01E335E68"
|
|
"AF153B989FE8BEEC60A94753C638535FA3F215F750F6954AC395F8702941409E727691"
|
|
"0CE11819649641318B5BD1B78DECEADB2B562312CC286DB0BCC14A60C84CB21AB6E75E"
|
|
"59DAFBE701D6405DD3F47D2F8A95422ED8EB5ECE330C9886406B3B69180B697521F386"
|
|
"5B4A05DF2BB51D16CAFEF05866E5D55C360C759F5B10E0D354D63D5A14E5BA19DBF939"
|
|
"4E18E474E79063B4E877C2FE6BCA732ED39B091B6D7A21DD9D6D6750C1CA2ABC5DEC2A"
|
|
"81B5359771849E7B4560EB6D329E59455A70F57F035DFB50EC4354D7E068ADFAFAD408"
|
|
"1ACA67FD180028FBFFFFFFFFFFFFFFFF0112201CC3506DE1B3FC6A8DBB4AD85D34B62C"
|
|
"7EBA023FAD1AACCDBE1C932CFB6A1369");
|
|
|
|
// Structurally valid test certificate device file.
|
|
// {'certificate': kTestCertificateWithFutureExpiration,
|
|
// 'key_type': 'RSA',
|
|
// 'wrapped_private_key': kTestWrappedPrivateKeyData
|
|
// 'acquisition_time_seconds': 03/17/2021
|
|
// 'expiration_time_seconds': unset
|
|
// }
|
|
const std::string kTestDefaultCertificateFileDataFutureExpiration = a2bs_hex(
|
|
"0AB70F080110011AB00F0AAE0B0AF103080212107CB49F987A635E1E0A52184694582D6E18"
|
|
"87C6E1FE05228E023082010A0282010100DB13F5089C061E8EB62562692B3A06A774A99129"
|
|
"BD63445FEC24448D07C30D7343553442A989AF000B7D962033C290D9A81DDCBCF398051244"
|
|
"5EB7E6CF544FC1FB3FC758FB9E06B6C28562A841E4AE2D3368795C41A2D6043CA9830E0F36"
|
|
"583C8FDB839C2752C13E184034EE412BA8A90271295B094255A16319706F4D6C9CF1EBB1B3"
|
|
"9BA2A7B9B2780344DD5834BF71F4D5185508D2FDFB10419BD4F48E79DDFC78471C11B9E99D"
|
|
"F98221D6FAB25AEE24574FB02D614974942A36527C62B73A6FB7CA9EF828EB598DA59060D6"
|
|
"54851103F857A041E66B2FFB99713D31A64605932833E8CCDA6CF0F888AE6E78EDC9DA0D88"
|
|
"A185B97FEB3EA74CF146BE7D9267020301000128E83D3A0C7769646576696E652E636F6D48"
|
|
"0152AA01080110001A8101044F554B9400E10B17185036B6A1628EFC61B22166DE2235717A"
|
|
"44F953B7928F3415B9D113835B10106CB6C2187F34188723D82ECF95CF5ECAB58923F17318"
|
|
"60815999F08BF4BE4A44DB7B991B5F915F2ADCEE481E26096AAEC3AC761B624A92158AC910"
|
|
"35041173392B1E495428F0D17406B10889B6B701FAF08D2284F95DBBCA2220595267DCA89A"
|
|
"2E57E7D4CA3C62ED6D12742408A07C103DF860DC0520C3664EEB60E29D8399071280028CD4"
|
|
"4E12AA7C1A8EBF88C81A2A54EFD29F8BC6C377B0C11C3404F84D8B9EAD52A0E18E929A4923"
|
|
"A4172C2AC1CDADD16E41A7833AA0DE9D09F685DAC9ACC702CB9061632C1C82333A6FB6BC9C"
|
|
"4B2540BE18CED4AB0AF1C3EFE521308F3D4CF513C20500064FE935FDDF7BBAC0BA99AA7FA6"
|
|
"6017898DEE6F6F5EF90C875D5D8DA39E769E8D1485253EEE93A97B35A8EAE8D3213D392B55"
|
|
"2FB4B4A37955EBE7362287502EB649D982F06D308178642C1F69B12383B050CF60CD292093"
|
|
"29C148FB4F422ED5ED139A25A89E13D4AB2E8DB940299D1414AF30DDF0D06AF55C1978F6E7"
|
|
"1E4548F20FFAE953A99D492F3D2847783338D74F66D2DFEBB50896ACBC4795A81AB4050AAE"
|
|
"020801121065802C9B625E5A319C33DC1CB7C3C6D418E3A5BDD005228E023082010A028201"
|
|
"0100B80502043C2A8A0FD8D25C613E1E3E3B5E349F332F04516A7510D38021A5629B9AA027"
|
|
"AEAD3C759B7AFE70BED65F3DF6860FF5EB60B983A3FFA33FDE06F3B73014DFC845AB371C66"
|
|
"00562E9D904F842B8BA4A5D9200FFA3ED45D705520A5C372A889F9E314386234C6897AE655"
|
|
"851FCD9ADB4EF9126C78386EA93BCB25BA3EC475C55C608E771C763AB02506F9B07252D6AB"
|
|
"F7EA64B1EBDE7B95C6407690533BD6890B9274C16066F74FC401EA355F0A02106814D49BF0"
|
|
"C89E6E1F8DB2A47841CD0DAD793296A107C36223404F2BF1FCA16FD0A4B982634DB62407F8"
|
|
"F14ACAE3B05A038BD3E4BBBAE4391BBFA7A47FB9D01DE857EA88E5E36EE36E245859FC0F02"
|
|
"0301000128E83D1280037E06581A019184AB572AFDCADDD03F161CE68200F8E6F8AD161947"
|
|
"360BC8D49C0D68009B1C4644F9B3F3FB6DDFD92EF92DE62D41D459D29D81BFAEF3970A3A39"
|
|
"D25B2662ECB03B2DA7B68302FAA6DD98D95A143CC8C1CB6ADDA76D2EE9C3723FAF95A29CDC"
|
|
"3E968B6821A91C051CA280A86669710A1AD7A44BF9218027460DF694E2E9270396DF221963"
|
|
"F21EE6AA220A5EE4A4D0FEB3D53EB5732F8F91E9A96B3B8BE284C51339EA284D4D0EDD55B6"
|
|
"AD56F7416420E05E059F9734A96BE25AA44560DBA8C38755A42A82BD7F88EDD19DF346A667"
|
|
"B33B8114C76A8838C423D824A50B23251A088136D6E8F475299D2AFD46CEA51B5CBDF789A5"
|
|
"72125CD24FBB813B387A10CD2A30E3447634AB3408F96B9CF3D98896D405F3F540D9C57962"
|
|
"760FCD177CDD101EB8A4148B9C29CED5EAD645A95B698F1CDC6E1DB6678B85074186080D68"
|
|
"D13CD37E07B16DE370CD9AFB9B25564A73A30E2AF8085EA37D310C474F0E67AC00CA992A52"
|
|
"96FAEDAD7AA06ECD790F1E3D426558FA98383E3CD2ED483012F403B36550E6BEACCB34F6C3"
|
|
"B2ABF86634EE5383829C844F9B0C14DCF9A22FE3543CCBA8FD61E21CEE503E7A40B93B07A4"
|
|
"186A362D9E6F88DD48D4516635C6D0C253C03F12EFA6095618D647F5212C518C4A6AA7172B"
|
|
"C691530703FEDDFDB25ECF885A53FF2B4B98773979D61AE659E340489811512A5C2FD445A4"
|
|
"B0AE88A3A7F29ACE5B01ECF580D0993227BC408B602B0BC099920C17044FE66242372C2B2E"
|
|
"8CA5C1EEC0844BC19198ADADE47FB449DC9B30784952B3A8131B912CE928070D665C0557EB"
|
|
"E7484FDABFBCA0F2C2BFD4FBDDB6681C4689FD276C231B72B15AC4E5C3C088449DE4785F1D"
|
|
"4835AC44E39B119991EFF6E72C7D3B8C75CE588DB0B3AD69EB79C19B22CB518EF964C9D985"
|
|
"AFD3677F0D13015AD7BEA84CD01E335E68AF153B989FE8BEEC60A94753C638535FA3F215F7"
|
|
"50F6954AC395F8702941409E7276910CE11819649641318B5BD1B78DECEADB2B562312CC28"
|
|
"6DB0BCC14A60C84CB21AB6E75E59DAFBE701D6405DD3F47D2F8A95422ED8EB5ECE330C9886"
|
|
"406B3B69180B697521F3865B4A05DF2BB51D16CAFEF05866E5D55C360C759F5B10E0D354D6"
|
|
"3D5A14E5BA19DBF9394E18E474E79063B4E877C2FE6BCA732ED39B091B6D7A21DD9D6D6750"
|
|
"C1CA2ABC5DEC2A81B5359771849E7B4560EB6D329E59455A70F57F035DFB50EC4354D7E068"
|
|
"ADFAFAD4081ACA67FD180020EA80CA820612204DDB25CD2B324880675C1006CB104524B42C"
|
|
"9BBA110F0304E6C1E4C6ADF5DA6C");
|
|
|
|
// Structurally valid test certificate device file.
|
|
//
|
|
// {'certificate': kTestCertificateNeverExpires,
|
|
// 'key_type': 'RSA',
|
|
// 'wrapped_private_key': kTestWrappedPrivateKeyData
|
|
// 'acquisition_time_seconds': 03/17/2021
|
|
// 'expiration_time_seconds': unset
|
|
// }
|
|
const std::string kTestDefaultCertificateFileDataNeverExpires = a2bs_hex(
|
|
"0AB30F080110011AAC0F0AAA0B0AED03080212107CB49F987A635E1E0A52184694582D6E18"
|
|
"94AECC8206228E023082010A0282010100DB13F5089C061E8EB62562692B3A06A774A99129"
|
|
"BD63445FEC24448D07C30D7343553442A989AF000B7D962033C290D9A81DDCBCF398051244"
|
|
"5EB7E6CF544FC1FB3FC758FB9E06B6C28562A841E4AE2D3368795C41A2D6043CA9830E0F36"
|
|
"583C8FDB839C2752C13E184034EE412BA8A90271295B094255A16319706F4D6C9CF1EBB1B3"
|
|
"9BA2A7B9B2780344DD5834BF71F4D5185508D2FDFB10419BD4F48E79DDFC78471C11B9E99D"
|
|
"F98221D6FAB25AEE24574FB02D614974942A36527C62B73A6FB7CA9EF828EB598DA59060D6"
|
|
"54851103F857A041E66B2FFB99713D31A64605932833E8CCDA6CF0F888AE6E78EDC9DA0D88"
|
|
"A185B97FEB3EA74CF146BE7D9267020301000128E83D3A0C7769646576696E652E636F6D48"
|
|
"0152AA01080110001A8101044F554B9400E10B17185036B6A1628EFC61B22166DE2235717A"
|
|
"44F953B7928F3415B9D113835B10106CB6C2187F34188723D82ECF95CF5ECAB58923F17318"
|
|
"60815999F08BF4BE4A44DB7B991B5F915F2ADCEE481E26096AAEC3AC761B624A92158AC910"
|
|
"35041173392B1E495428F0D17406B10889B6B701FAF08D2284F95DBBCA2220595267DCA89A"
|
|
"2E57E7D4CA3C62ED6D12742408A07C103DF860DC0520C3664EEB60001280028CD44E12AA7C"
|
|
"1A8EBF88C81A2A54EFD29F8BC6C377B0C11C3404F84D8B9EAD52A0E18E929A4923A4172C2A"
|
|
"C1CDADD16E41A7833AA0DE9D09F685DAC9ACC702CB9061632C1C82333A6FB6BC9C4B2540BE"
|
|
"18CED4AB0AF1C3EFE521308F3D4CF513C20500064FE935FDDF7BBAC0BA99AA7FA66017898D"
|
|
"EE6F6F5EF90C875D5D8DA39E769E8D1485253EEE93A97B35A8EAE8D3213D392B552FB4B4A3"
|
|
"7955EBE7362287502EB649D982F06D308178642C1F69B12383B050CF60CD29209329C148FB"
|
|
"4F422ED5ED139A25A89E13D4AB2E8DB940299D1414AF30DDF0D06AF55C1978F6E71E4548F2"
|
|
"0FFAE953A99D492F3D2847783338D74F66D2DFEBB50896ACBC4795A81AB4050AAE02080112"
|
|
"1065802C9B625E5A319C33DC1CB7C3C6D418E3A5BDD005228E023082010A0282010100B805"
|
|
"02043C2A8A0FD8D25C613E1E3E3B5E349F332F04516A7510D38021A5629B9AA027AEAD3C75"
|
|
"9B7AFE70BED65F3DF6860FF5EB60B983A3FFA33FDE06F3B73014DFC845AB371C6600562E9D"
|
|
"904F842B8BA4A5D9200FFA3ED45D705520A5C372A889F9E314386234C6897AE655851FCD9A"
|
|
"DB4EF9126C78386EA93BCB25BA3EC475C55C608E771C763AB02506F9B07252D6ABF7EA64B1"
|
|
"EBDE7B95C6407690533BD6890B9274C16066F74FC401EA355F0A02106814D49BF0C89E6E1F"
|
|
"8DB2A47841CD0DAD793296A107C36223404F2BF1FCA16FD0A4B982634DB62407F8F14ACAE3"
|
|
"B05A038BD3E4BBBAE4391BBFA7A47FB9D01DE857EA88E5E36EE36E245859FC0F0203010001"
|
|
"28E83D1280037E06581A019184AB572AFDCADDD03F161CE68200F8E6F8AD161947360BC8D4"
|
|
"9C0D68009B1C4644F9B3F3FB6DDFD92EF92DE62D41D459D29D81BFAEF3970A3A39D25B2662"
|
|
"ECB03B2DA7B68302FAA6DD98D95A143CC8C1CB6ADDA76D2EE9C3723FAF95A29CDC3E968B68"
|
|
"21A91C051CA280A86669710A1AD7A44BF9218027460DF694E2E9270396DF221963F21EE6AA"
|
|
"220A5EE4A4D0FEB3D53EB5732F8F91E9A96B3B8BE284C51339EA284D4D0EDD55B6AD56F741"
|
|
"6420E05E059F9734A96BE25AA44560DBA8C38755A42A82BD7F88EDD19DF346A667B33B8114"
|
|
"C76A8838C423D824A50B23251A088136D6E8F475299D2AFD46CEA51B5CBDF789A572125CD2"
|
|
"4FBB813B387A10CD2A30E3447634AB3408F96B9CF3D98896D405F3F540D9C57962760FCD17"
|
|
"7CDD101EB8A4148B9C29CED5EAD645A95B698F1CDC6E1DB6678B85074186080D68D13CD37E"
|
|
"07B16DE370CD9AFB9B25564A73A30E2AF8085EA37D310C474F0E67AC00CA992A5296FAEDAD"
|
|
"7AA06ECD790F1E3D426558FA98383E3CD2ED483012F403B36550E6BEACCB34F6C3B2ABF866"
|
|
"34EE5383829C844F9B0C14DCF9A22FE3543CCBA8FD61E21CEE503E7A40B93B07A4186A362D"
|
|
"9E6F88DD48D4516635C6D0C253C03F12EFA6095618D647F5212C518C4A6AA7172BC6915307"
|
|
"03FEDDFDB25ECF885A53FF2B4B98773979D61AE659E340489811512A5C2FD445A4B0AE88A3"
|
|
"A7F29ACE5B01ECF580D0993227BC408B602B0BC099920C17044FE66242372C2B2E8CA5C1EE"
|
|
"C0844BC19198ADADE47FB449DC9B30784952B3A8131B912CE928070D665C0557EBE7484FDA"
|
|
"BFBCA0F2C2BFD4FBDDB6681C4689FD276C231B72B15AC4E5C3C088449DE4785F1D4835AC44"
|
|
"E39B119991EFF6E72C7D3B8C75CE588DB0B3AD69EB79C19B22CB518EF964C9D985AFD3677F"
|
|
"0D13015AD7BEA84CD01E335E68AF153B989FE8BEEC60A94753C638535FA3F215F750F6954A"
|
|
"C395F8702941409E7276910CE11819649641318B5BD1B78DECEADB2B562312CC286DB0BCC1"
|
|
"4A60C84CB21AB6E75E59DAFBE701D6405DD3F47D2F8A95422ED8EB5ECE330C9886406B3B69"
|
|
"180B697521F3865B4A05DF2BB51D16CAFEF05866E5D55C360C759F5B10E0D354D63D5A14E5"
|
|
"BA19DBF9394E18E474E79063B4E877C2FE6BCA732ED39B091B6D7A21DD9D6D6750C1CA2ABC"
|
|
"5DEC2A81B5359771849E7B4560EB6D329E59455A70F57F035DFB50EC4354D7E068ADFAFAD4"
|
|
"081ACA67FD18002094AECC82061220494C9C49993FA8A9F0982FD684A62B99CC442E2AF264"
|
|
"CA351478C2BA1077A394");
|
|
|
|
// Structurally valid test certificate device file.
|
|
// {'certificate': kTestCertificateExpired
|
|
// 'key_type': 'RSA',
|
|
// 'wrapped_private_key': kTestWrappedPrivateKeyData
|
|
// 'acquisition_time_seconds': 03/12/2021
|
|
// 'expiration_time_seconds': unset
|
|
// }
|
|
const std::string kTestDefaultCertificateFileDataExpired = a2bs_hex(
|
|
"0AB70F080110011AB00F0AAE0B0AF103080212107CB49F987A635E1E0A52184694582D6E18"
|
|
"9EF0968206228E023082010A0282010100DB13F5089C061E8EB62562692B3A06A774A99129"
|
|
"BD63445FEC24448D07C30D7343553442A989AF000B7D962033C290D9A81DDCBCF398051244"
|
|
"5EB7E6CF544FC1FB3FC758FB9E06B6C28562A841E4AE2D3368795C41A2D6043CA9830E0F36"
|
|
"583C8FDB839C2752C13E184034EE412BA8A90271295B094255A16319706F4D6C9CF1EBB1B3"
|
|
"9BA2A7B9B2780344DD5834BF71F4D5185508D2FDFB10419BD4F48E79DDFC78471C11B9E99D"
|
|
"F98221D6FAB25AEE24574FB02D614974942A36527C62B73A6FB7CA9EF828EB598DA59060D6"
|
|
"54851103F857A041E66B2FFB99713D31A64605932833E8CCDA6CF0F888AE6E78EDC9DA0D88"
|
|
"A185B97FEB3EA74CF146BE7D9267020301000128E83D3A0C7769646576696E652E636F6D48"
|
|
"0152AA01080110001A8101044F554B9400E10B17185036B6A1628EFC61B22166DE2235717A"
|
|
"44F953B7928F3415B9D113835B10106CB6C2187F34188723D82ECF95CF5ECAB58923F17318"
|
|
"60815999F08BF4BE4A44DB7B991B5F915F2ADCEE481E26096AAEC3AC761B624A92158AC910"
|
|
"35041173392B1E495428F0D17406B10889B6B701FAF08D2284F95DBBCA2220595267DCA89A"
|
|
"2E57E7D4CA3C62ED6D12742408A07C103DF860DC0520C3664EEB609E939C82061280028CD4"
|
|
"4E12AA7C1A8EBF88C81A2A54EFD29F8BC6C377B0C11C3404F84D8B9EAD52A0E18E929A4923"
|
|
"A4172C2AC1CDADD16E41A7833AA0DE9D09F685DAC9ACC702CB9061632C1C82333A6FB6BC9C"
|
|
"4B2540BE18CED4AB0AF1C3EFE521308F3D4CF513C20500064FE935FDDF7BBAC0BA99AA7FA6"
|
|
"6017898DEE6F6F5EF90C875D5D8DA39E769E8D1485253EEE93A97B35A8EAE8D3213D392B55"
|
|
"2FB4B4A37955EBE7362287502EB649D982F06D308178642C1F69B12383B050CF60CD292093"
|
|
"29C148FB4F422ED5ED139A25A89E13D4AB2E8DB940299D1414AF30DDF0D06AF55C1978F6E7"
|
|
"1E4548F20FFAE953A99D492F3D2847783338D74F66D2DFEBB50896ACBC4795A81AB4050AAE"
|
|
"020801121065802C9B625E5A319C33DC1CB7C3C6D418E3A5BDD005228E023082010A028201"
|
|
"0100B80502043C2A8A0FD8D25C613E1E3E3B5E349F332F04516A7510D38021A5629B9AA027"
|
|
"AEAD3C759B7AFE70BED65F3DF6860FF5EB60B983A3FFA33FDE06F3B73014DFC845AB371C66"
|
|
"00562E9D904F842B8BA4A5D9200FFA3ED45D705520A5C372A889F9E314386234C6897AE655"
|
|
"851FCD9ADB4EF9126C78386EA93BCB25BA3EC475C55C608E771C763AB02506F9B07252D6AB"
|
|
"F7EA64B1EBDE7B95C6407690533BD6890B9274C16066F74FC401EA355F0A02106814D49BF0"
|
|
"C89E6E1F8DB2A47841CD0DAD793296A107C36223404F2BF1FCA16FD0A4B982634DB62407F8"
|
|
"F14ACAE3B05A038BD3E4BBBAE4391BBFA7A47FB9D01DE857EA88E5E36EE36E245859FC0F02"
|
|
"0301000128E83D1280037E06581A019184AB572AFDCADDD03F161CE68200F8E6F8AD161947"
|
|
"360BC8D49C0D68009B1C4644F9B3F3FB6DDFD92EF92DE62D41D459D29D81BFAEF3970A3A39"
|
|
"D25B2662ECB03B2DA7B68302FAA6DD98D95A143CC8C1CB6ADDA76D2EE9C3723FAF95A29CDC"
|
|
"3E968B6821A91C051CA280A86669710A1AD7A44BF9218027460DF694E2E9270396DF221963"
|
|
"F21EE6AA220A5EE4A4D0FEB3D53EB5732F8F91E9A96B3B8BE284C51339EA284D4D0EDD55B6"
|
|
"AD56F7416420E05E059F9734A96BE25AA44560DBA8C38755A42A82BD7F88EDD19DF346A667"
|
|
"B33B8114C76A8838C423D824A50B23251A088136D6E8F475299D2AFD46CEA51B5CBDF789A5"
|
|
"72125CD24FBB813B387A10CD2A30E3447634AB3408F96B9CF3D98896D405F3F540D9C57962"
|
|
"760FCD177CDD101EB8A4148B9C29CED5EAD645A95B698F1CDC6E1DB6678B85074186080D68"
|
|
"D13CD37E07B16DE370CD9AFB9B25564A73A30E2AF8085EA37D310C474F0E67AC00CA992A52"
|
|
"96FAEDAD7AA06ECD790F1E3D426558FA98383E3CD2ED483012F403B36550E6BEACCB34F6C3"
|
|
"B2ABF86634EE5383829C844F9B0C14DCF9A22FE3543CCBA8FD61E21CEE503E7A40B93B07A4"
|
|
"186A362D9E6F88DD48D4516635C6D0C253C03F12EFA6095618D647F5212C518C4A6AA7172B"
|
|
"C691530703FEDDFDB25ECF885A53FF2B4B98773979D61AE659E340489811512A5C2FD445A4"
|
|
"B0AE88A3A7F29ACE5B01ECF580D0993227BC408B602B0BC099920C17044FE66242372C2B2E"
|
|
"8CA5C1EEC0844BC19198ADADE47FB449DC9B30784952B3A8131B912CE928070D665C0557EB"
|
|
"E7484FDABFBCA0F2C2BFD4FBDDB6681C4689FD276C231B72B15AC4E5C3C088449DE4785F1D"
|
|
"4835AC44E39B119991EFF6E72C7D3B8C75CE588DB0B3AD69EB79C19B22CB518EF964C9D985"
|
|
"AFD3677F0D13015AD7BEA84CD01E335E68AF153B989FE8BEEC60A94753C638535FA3F215F7"
|
|
"50F6954AC395F8702941409E7276910CE11819649641318B5BD1B78DECEADB2B562312CC28"
|
|
"6DB0BCC14A60C84CB21AB6E75E59DAFBE701D6405DD3F47D2F8A95422ED8EB5ECE330C9886"
|
|
"406B3B69180B697521F3865B4A05DF2BB51D16CAFEF05866E5D55C360C759F5B10E0D354D6"
|
|
"3D5A14E5BA19DBF9394E18E474E79063B4E877C2FE6BCA732ED39B091B6D7A21DD9D6D6750"
|
|
"C1CA2ABC5DEC2A81B5359771849E7B4560EB6D329E59455A70F57F035DFB50EC4354D7E068"
|
|
"ADFAFAD4081ACA67FD1800209E9FB182061220AB902564B722E023C7F31F485B194969C7D9"
|
|
"F4FB6ADB4EEF1312A0F663A3F092");
|
|
|
|
// Structurally valid test certificate device file.
|
|
// {'certificate': kTestCertificateWithInvalidCreationFutureExpiration
|
|
// 'key_type': 'RSA',
|
|
// 'wrapped_private_key': kTestWrappedPrivateKeyData
|
|
// 'acquisition_time_seconds': 03/17/2021
|
|
// 'expiration_time_seconds': unset
|
|
// }
|
|
const std::string kTestDefaultCertificateWithInvalidCreationFutureExpiration =
|
|
a2bs_hex(
|
|
"0AB10F080110011AAA0F0AA80B0AEB03080212107CB49F987A635E1E0A52184694582D"
|
|
"6E228E023082010A0282010100DB13F5089C061E8EB62562692B3A06A774A99129BD63"
|
|
"445FEC24448D07C30D7343553442A989AF000B7D962033C290D9A81DDCBCF398051244"
|
|
"5EB7E6CF544FC1FB3FC758FB9E06B6C28562A841E4AE2D3368795C41A2D6043CA9830E"
|
|
"0F36583C8FDB839C2752C13E184034EE412BA8A90271295B094255A16319706F4D6C9C"
|
|
"F1EBB1B39BA2A7B9B2780344DD5834BF71F4D5185508D2FDFB10419BD4F48E79DDFC78"
|
|
"471C11B9E99DF98221D6FAB25AEE24574FB02D614974942A36527C62B73A6FB7CA9EF8"
|
|
"28EB598DA59060D654851103F857A041E66B2FFB99713D31A64605932833E8CCDA6CF0"
|
|
"F888AE6E78EDC9DA0D88A185B97FEB3EA74CF146BE7D9267020301000128E83D3A0C77"
|
|
"69646576696E652E636F6D480152AA01080110001A8101044F554B9400E10B17185036"
|
|
"B6A1628EFC61B22166DE2235717A44F953B7928F3415B9D113835B10106CB6C2187F34"
|
|
"188723D82ECF95CF5ECAB58923F1731860815999F08BF4BE4A44DB7B991B5F915F2ADC"
|
|
"EE481E26096AAEC3AC761B624A92158AC91035041173392B1E495428F0D17406B10889"
|
|
"B6B701FAF08D2284F95DBBCA2220595267DCA89A2E57E7D4CA3C62ED6D12742408A07C"
|
|
"103DF860DC0520C3664EEB60FD8AFC98071280028CD44E12AA7C1A8EBF88C81A2A54EF"
|
|
"D29F8BC6C377B0C11C3404F84D8B9EAD52A0E18E929A4923A4172C2AC1CDADD16E41A7"
|
|
"833AA0DE9D09F685DAC9ACC702CB9061632C1C82333A6FB6BC9C4B2540BE18CED4AB0A"
|
|
"F1C3EFE521308F3D4CF513C20500064FE935FDDF7BBAC0BA99AA7FA66017898DEE6F6F"
|
|
"5EF90C875D5D8DA39E769E8D1485253EEE93A97B35A8EAE8D3213D392B552FB4B4A379"
|
|
"55EBE7362287502EB649D982F06D308178642C1F69B12383B050CF60CD29209329C148"
|
|
"FB4F422ED5ED139A25A89E13D4AB2E8DB940299D1414AF30DDF0D06AF55C1978F6E71E"
|
|
"4548F20FFAE953A99D492F3D2847783338D74F66D2DFEBB50896ACBC4795A81AB4050A"
|
|
"AE020801121065802C9B625E5A319C33DC1CB7C3C6D418E3A5BDD005228E023082010A"
|
|
"0282010100B80502043C2A8A0FD8D25C613E1E3E3B5E349F332F04516A7510D38021A5"
|
|
"629B9AA027AEAD3C759B7AFE70BED65F3DF6860FF5EB60B983A3FFA33FDE06F3B73014"
|
|
"DFC845AB371C6600562E9D904F842B8BA4A5D9200FFA3ED45D705520A5C372A889F9E3"
|
|
"14386234C6897AE655851FCD9ADB4EF9126C78386EA93BCB25BA3EC475C55C608E771C"
|
|
"763AB02506F9B07252D6ABF7EA64B1EBDE7B95C6407690533BD6890B9274C16066F74F"
|
|
"C401EA355F0A02106814D49BF0C89E6E1F8DB2A47841CD0DAD793296A107C36223404F"
|
|
"2BF1FCA16FD0A4B982634DB62407F8F14ACAE3B05A038BD3E4BBBAE4391BBFA7A47FB9"
|
|
"D01DE857EA88E5E36EE36E245859FC0F020301000128E83D1280037E06581A019184AB"
|
|
"572AFDCADDD03F161CE68200F8E6F8AD161947360BC8D49C0D68009B1C4644F9B3F3FB"
|
|
"6DDFD92EF92DE62D41D459D29D81BFAEF3970A3A39D25B2662ECB03B2DA7B68302FAA6"
|
|
"DD98D95A143CC8C1CB6ADDA76D2EE9C3723FAF95A29CDC3E968B6821A91C051CA280A8"
|
|
"6669710A1AD7A44BF9218027460DF694E2E9270396DF221963F21EE6AA220A5EE4A4D0"
|
|
"FEB3D53EB5732F8F91E9A96B3B8BE284C51339EA284D4D0EDD55B6AD56F7416420E05E"
|
|
"059F9734A96BE25AA44560DBA8C38755A42A82BD7F88EDD19DF346A667B33B8114C76A"
|
|
"8838C423D824A50B23251A088136D6E8F475299D2AFD46CEA51B5CBDF789A572125CD2"
|
|
"4FBB813B387A10CD2A30E3447634AB3408F96B9CF3D98896D405F3F540D9C57962760F"
|
|
"CD177CDD101EB8A4148B9C29CED5EAD645A95B698F1CDC6E1DB6678B85074186080D68"
|
|
"D13CD37E07B16DE370CD9AFB9B25564A73A30E2AF8085EA37D310C474F0E67AC00CA99"
|
|
"2A5296FAEDAD7AA06ECD790F1E3D426558FA98383E3CD2ED483012F403B36550E6BEAC"
|
|
"CB34F6C3B2ABF86634EE5383829C844F9B0C14DCF9A22FE3543CCBA8FD61E21CEE503E"
|
|
"7A40B93B07A4186A362D9E6F88DD48D4516635C6D0C253C03F12EFA6095618D647F521"
|
|
"2C518C4A6AA7172BC691530703FEDDFDB25ECF885A53FF2B4B98773979D61AE659E340"
|
|
"489811512A5C2FD445A4B0AE88A3A7F29ACE5B01ECF580D0993227BC408B602B0BC099"
|
|
"920C17044FE66242372C2B2E8CA5C1EEC0844BC19198ADADE47FB449DC9B30784952B3"
|
|
"A8131B912CE928070D665C0557EBE7484FDABFBCA0F2C2BFD4FBDDB6681C4689FD276C"
|
|
"231B72B15AC4E5C3C088449DE4785F1D4835AC44E39B119991EFF6E72C7D3B8C75CE58"
|
|
"8DB0B3AD69EB79C19B22CB518EF964C9D985AFD3677F0D13015AD7BEA84CD01E335E68"
|
|
"AF153B989FE8BEEC60A94753C638535FA3F215F750F6954AC395F8702941409E727691"
|
|
"0CE11819649641318B5BD1B78DECEADB2B562312CC286DB0BCC14A60C84CB21AB6E75E"
|
|
"59DAFBE701D6405DD3F47D2F8A95422ED8EB5ECE330C9886406B3B69180B697521F386"
|
|
"5B4A05DF2BB51D16CAFEF05866E5D55C360C759F5B10E0D354D63D5A14E5BA19DBF939"
|
|
"4E18E474E79063B4E877C2FE6BCA732ED39B091B6D7A21DD9D6D6750C1CA2ABC5DEC2A"
|
|
"81B5359771849E7B4560EB6D329E59455A70F57F035DFB50EC4354D7E068ADFAFAD408"
|
|
"1ACA67FD180020FD84CC8206122040597EA4CA5BDDB92960D3D616B402EFC44699E3C4"
|
|
"DF3E0F78A2D3218C3E3055");
|
|
|
|
// Structurally valid test certificate device file.
|
|
// {'certificate': kTestCertificateWithUnlimitedCreationFutureExpiration
|
|
// 'key_type': 'RSA',
|
|
// 'wrapped_private_key': kTestWrappedPrivateKeyData
|
|
// 'acquisition_time_seconds': 03/17/2021
|
|
// 'expiration_time_seconds': unset
|
|
// }
|
|
const std::string kTestDefaultCertificateFileDataCreationTimeUnlimited =
|
|
a2bs_hex(
|
|
"0AB10F080110011AAA0F0AA80B0AEB03080212107CB49F987A635E1E0A52184694582D"
|
|
"6E228E023082010A0282010100DB13F5089C061E8EB62562692B3A06A774A99129BD63"
|
|
"445FEC24448D07C30D7343553442A989AF000B7D962033C290D9A81DDCBCF398051244"
|
|
"5EB7E6CF544FC1FB3FC758FB9E06B6C28562A841E4AE2D3368795C41A2D6043CA9830E"
|
|
"0F36583C8FDB839C2752C13E184034EE412BA8A90271295B094255A16319706F4D6C9C"
|
|
"F1EBB1B39BA2A7B9B2780344DD5834BF71F4D5185508D2FDFB10419BD4F48E79DDFC78"
|
|
"471C11B9E99DF98221D6FAB25AEE24574FB02D614974942A36527C62B73A6FB7CA9EF8"
|
|
"28EB598DA59060D654851103F857A041E66B2FFB99713D31A64605932833E8CCDA6CF0"
|
|
"F888AE6E78EDC9DA0D88A185B97FEB3EA74CF146BE7D9267020301000128E83D3A0C77"
|
|
"69646576696E652E636F6D480152AA01080110001A8101044F554B9400E10B17185036"
|
|
"B6A1628EFC61B22166DE2235717A44F953B7928F3415B9D113835B10106CB6C2187F34"
|
|
"188723D82ECF95CF5ECAB58923F1731860815999F08BF4BE4A44DB7B991B5F915F2ADC"
|
|
"EE481E26096AAEC3AC761B624A92158AC91035041173392B1E495428F0D17406B10889"
|
|
"B6B701FAF08D2284F95DBBCA2220595267DCA89A2E57E7D4CA3C62ED6D12742408A07C"
|
|
"103DF860DC0520C3664EEB60AE91FC98071280028CD44E12AA7C1A8EBF88C81A2A54EF"
|
|
"D29F8BC6C377B0C11C3404F84D8B9EAD52A0E18E929A4923A4172C2AC1CDADD16E41A7"
|
|
"833AA0DE9D09F685DAC9ACC702CB9061632C1C82333A6FB6BC9C4B2540BE18CED4AB0A"
|
|
"F1C3EFE521308F3D4CF513C20500064FE935FDDF7BBAC0BA99AA7FA66017898DEE6F6F"
|
|
"5EF90C875D5D8DA39E769E8D1485253EEE93A97B35A8EAE8D3213D392B552FB4B4A379"
|
|
"55EBE7362287502EB649D982F06D308178642C1F69B12383B050CF60CD29209329C148"
|
|
"FB4F422ED5ED139A25A89E13D4AB2E8DB940299D1414AF30DDF0D06AF55C1978F6E71E"
|
|
"4548F20FFAE953A99D492F3D2847783338D74F66D2DFEBB50896ACBC4795A81AB4050A"
|
|
"AE020801121065802C9B625E5A319C33DC1CB7C3C6D418E3A5BDD005228E023082010A"
|
|
"0282010100B80502043C2A8A0FD8D25C613E1E3E3B5E349F332F04516A7510D38021A5"
|
|
"629B9AA027AEAD3C759B7AFE70BED65F3DF6860FF5EB60B983A3FFA33FDE06F3B73014"
|
|
"DFC845AB371C6600562E9D904F842B8BA4A5D9200FFA3ED45D705520A5C372A889F9E3"
|
|
"14386234C6897AE655851FCD9ADB4EF9126C78386EA93BCB25BA3EC475C55C608E771C"
|
|
"763AB02506F9B07252D6ABF7EA64B1EBDE7B95C6407690533BD6890B9274C16066F74F"
|
|
"C401EA355F0A02106814D49BF0C89E6E1F8DB2A47841CD0DAD793296A107C36223404F"
|
|
"2BF1FCA16FD0A4B982634DB62407F8F14ACAE3B05A038BD3E4BBBAE4391BBFA7A47FB9"
|
|
"D01DE857EA88E5E36EE36E245859FC0F020301000128E83D1280037E06581A019184AB"
|
|
"572AFDCADDD03F161CE68200F8E6F8AD161947360BC8D49C0D68009B1C4644F9B3F3FB"
|
|
"6DDFD92EF92DE62D41D459D29D81BFAEF3970A3A39D25B2662ECB03B2DA7B68302FAA6"
|
|
"DD98D95A143CC8C1CB6ADDA76D2EE9C3723FAF95A29CDC3E968B6821A91C051CA280A8"
|
|
"6669710A1AD7A44BF9218027460DF694E2E9270396DF221963F21EE6AA220A5EE4A4D0"
|
|
"FEB3D53EB5732F8F91E9A96B3B8BE284C51339EA284D4D0EDD55B6AD56F7416420E05E"
|
|
"059F9734A96BE25AA44560DBA8C38755A42A82BD7F88EDD19DF346A667B33B8114C76A"
|
|
"8838C423D824A50B23251A088136D6E8F475299D2AFD46CEA51B5CBDF789A572125CD2"
|
|
"4FBB813B387A10CD2A30E3447634AB3408F96B9CF3D98896D405F3F540D9C57962760F"
|
|
"CD177CDD101EB8A4148B9C29CED5EAD645A95B698F1CDC6E1DB6678B85074186080D68"
|
|
"D13CD37E07B16DE370CD9AFB9B25564A73A30E2AF8085EA37D310C474F0E67AC00CA99"
|
|
"2A5296FAEDAD7AA06ECD790F1E3D426558FA98383E3CD2ED483012F403B36550E6BEAC"
|
|
"CB34F6C3B2ABF86634EE5383829C844F9B0C14DCF9A22FE3543CCBA8FD61E21CEE503E"
|
|
"7A40B93B07A4186A362D9E6F88DD48D4516635C6D0C253C03F12EFA6095618D647F521"
|
|
"2C518C4A6AA7172BC691530703FEDDFDB25ECF885A53FF2B4B98773979D61AE659E340"
|
|
"489811512A5C2FD445A4B0AE88A3A7F29ACE5B01ECF580D0993227BC408B602B0BC099"
|
|
"920C17044FE66242372C2B2E8CA5C1EEC0844BC19198ADADE47FB449DC9B30784952B3"
|
|
"A8131B912CE928070D665C0557EBE7484FDABFBCA0F2C2BFD4FBDDB6681C4689FD276C"
|
|
"231B72B15AC4E5C3C088449DE4785F1D4835AC44E39B119991EFF6E72C7D3B8C75CE58"
|
|
"8DB0B3AD69EB79C19B22CB518EF964C9D985AFD3677F0D13015AD7BEA84CD01E335E68"
|
|
"AF153B989FE8BEEC60A94753C638535FA3F215F750F6954AC395F8702941409E727691"
|
|
"0CE11819649641318B5BD1B78DECEADB2B562312CC286DB0BCC14A60C84CB21AB6E75E"
|
|
"59DAFBE701D6405DD3F47D2F8A95422ED8EB5ECE330C9886406B3B69180B697521F386"
|
|
"5B4A05DF2BB51D16CAFEF05866E5D55C360C759F5B10E0D354D63D5A14E5BA19DBF939"
|
|
"4E18E474E79063B4E877C2FE6BCA732ED39B091B6D7A21DD9D6D6750C1CA2ABC5DEC2A"
|
|
"81B5359771849E7B4560EB6D329E59455A70F57F035DFB50EC4354D7E068ADFAFAD408"
|
|
"1ACA67FD180020AE8BCC82061220BA04B988A5E9D931946F2AB8FF3E3DD31C630300CD"
|
|
"065083437401CD752F8CD2");
|
|
|
|
// Structurally valid test certificate device file.
|
|
// {'certificate': kTestCertificateWithoutExpiration
|
|
// 'key_type': 'RSA',
|
|
// 'wrapped_private_key': kTestWrappedPrivateKeyData
|
|
// 'acquisition_time_seconds': 03/17/2021
|
|
// 'expiration_time_seconds': unset
|
|
// }
|
|
const std::string kTestDefaultCertificateFileDataExpirationUnset = a2bs_hex(
|
|
"0AB10F080110011AAA0F0AA80B0AEB03080212107CB49F987A635E1E0A52184694582D6E18"
|
|
"D991CC8206228E023082010A0282010100DB13F5089C061E8EB62562692B3A06A774A99129"
|
|
"BD63445FEC24448D07C30D7343553442A989AF000B7D962033C290D9A81DDCBCF398051244"
|
|
"5EB7E6CF544FC1FB3FC758FB9E06B6C28562A841E4AE2D3368795C41A2D6043CA9830E0F36"
|
|
"583C8FDB839C2752C13E184034EE412BA8A90271295B094255A16319706F4D6C9CF1EBB1B3"
|
|
"9BA2A7B9B2780344DD5834BF71F4D5185508D2FDFB10419BD4F48E79DDFC78471C11B9E99D"
|
|
"F98221D6FAB25AEE24574FB02D614974942A36527C62B73A6FB7CA9EF828EB598DA59060D6"
|
|
"54851103F857A041E66B2FFB99713D31A64605932833E8CCDA6CF0F888AE6E78EDC9DA0D88"
|
|
"A185B97FEB3EA74CF146BE7D9267020301000128E83D3A0C7769646576696E652E636F6D48"
|
|
"0152AA01080110001A8101044F554B9400E10B17185036B6A1628EFC61B22166DE2235717A"
|
|
"44F953B7928F3415B9D113835B10106CB6C2187F34188723D82ECF95CF5ECAB58923F17318"
|
|
"60815999F08BF4BE4A44DB7B991B5F915F2ADCEE481E26096AAEC3AC761B624A92158AC910"
|
|
"35041173392B1E495428F0D17406B10889B6B701FAF08D2284F95DBBCA2220595267DCA89A"
|
|
"2E57E7D4CA3C62ED6D12742408A07C103DF860DC0520C3664EEB1280028CD44E12AA7C1A8E"
|
|
"BF88C81A2A54EFD29F8BC6C377B0C11C3404F84D8B9EAD52A0E18E929A4923A4172C2AC1CD"
|
|
"ADD16E41A7833AA0DE9D09F685DAC9ACC702CB9061632C1C82333A6FB6BC9C4B2540BE18CE"
|
|
"D4AB0AF1C3EFE521308F3D4CF513C20500064FE935FDDF7BBAC0BA99AA7FA66017898DEE6F"
|
|
"6F5EF90C875D5D8DA39E769E8D1485253EEE93A97B35A8EAE8D3213D392B552FB4B4A37955"
|
|
"EBE7362287502EB649D982F06D308178642C1F69B12383B050CF60CD29209329C148FB4F42"
|
|
"2ED5ED139A25A89E13D4AB2E8DB940299D1414AF30DDF0D06AF55C1978F6E71E4548F20FFA"
|
|
"E953A99D492F3D2847783338D74F66D2DFEBB50896ACBC4795A81AB4050AAE020801121065"
|
|
"802C9B625E5A319C33DC1CB7C3C6D418E3A5BDD005228E023082010A0282010100B8050204"
|
|
"3C2A8A0FD8D25C613E1E3E3B5E349F332F04516A7510D38021A5629B9AA027AEAD3C759B7A"
|
|
"FE70BED65F3DF6860FF5EB60B983A3FFA33FDE06F3B73014DFC845AB371C6600562E9D904F"
|
|
"842B8BA4A5D9200FFA3ED45D705520A5C372A889F9E314386234C6897AE655851FCD9ADB4E"
|
|
"F9126C78386EA93BCB25BA3EC475C55C608E771C763AB02506F9B07252D6ABF7EA64B1EBDE"
|
|
"7B95C6407690533BD6890B9274C16066F74FC401EA355F0A02106814D49BF0C89E6E1F8DB2"
|
|
"A47841CD0DAD793296A107C36223404F2BF1FCA16FD0A4B982634DB62407F8F14ACAE3B05A"
|
|
"038BD3E4BBBAE4391BBFA7A47FB9D01DE857EA88E5E36EE36E245859FC0F020301000128E8"
|
|
"3D1280037E06581A019184AB572AFDCADDD03F161CE68200F8E6F8AD161947360BC8D49C0D"
|
|
"68009B1C4644F9B3F3FB6DDFD92EF92DE62D41D459D29D81BFAEF3970A3A39D25B2662ECB0"
|
|
"3B2DA7B68302FAA6DD98D95A143CC8C1CB6ADDA76D2EE9C3723FAF95A29CDC3E968B6821A9"
|
|
"1C051CA280A86669710A1AD7A44BF9218027460DF694E2E9270396DF221963F21EE6AA220A"
|
|
"5EE4A4D0FEB3D53EB5732F8F91E9A96B3B8BE284C51339EA284D4D0EDD55B6AD56F7416420"
|
|
"E05E059F9734A96BE25AA44560DBA8C38755A42A82BD7F88EDD19DF346A667B33B8114C76A"
|
|
"8838C423D824A50B23251A088136D6E8F475299D2AFD46CEA51B5CBDF789A572125CD24FBB"
|
|
"813B387A10CD2A30E3447634AB3408F96B9CF3D98896D405F3F540D9C57962760FCD177CDD"
|
|
"101EB8A4148B9C29CED5EAD645A95B698F1CDC6E1DB6678B85074186080D68D13CD37E07B1"
|
|
"6DE370CD9AFB9B25564A73A30E2AF8085EA37D310C474F0E67AC00CA992A5296FAEDAD7AA0"
|
|
"6ECD790F1E3D426558FA98383E3CD2ED483012F403B36550E6BEACCB34F6C3B2ABF86634EE"
|
|
"5383829C844F9B0C14DCF9A22FE3543CCBA8FD61E21CEE503E7A40B93B07A4186A362D9E6F"
|
|
"88DD48D4516635C6D0C253C03F12EFA6095618D647F5212C518C4A6AA7172BC691530703FE"
|
|
"DDFDB25ECF885A53FF2B4B98773979D61AE659E340489811512A5C2FD445A4B0AE88A3A7F2"
|
|
"9ACE5B01ECF580D0993227BC408B602B0BC099920C17044FE66242372C2B2E8CA5C1EEC084"
|
|
"4BC19198ADADE47FB449DC9B30784952B3A8131B912CE928070D665C0557EBE7484FDABFBC"
|
|
"A0F2C2BFD4FBDDB6681C4689FD276C231B72B15AC4E5C3C088449DE4785F1D4835AC44E39B"
|
|
"119991EFF6E72C7D3B8C75CE588DB0B3AD69EB79C19B22CB518EF964C9D985AFD3677F0D13"
|
|
"015AD7BEA84CD01E335E68AF153B989FE8BEEC60A94753C638535FA3F215F750F6954AC395"
|
|
"F8702941409E7276910CE11819649641318B5BD1B78DECEADB2B562312CC286DB0BCC14A60"
|
|
"C84CB21AB6E75E59DAFBE701D6405DD3F47D2F8A95422ED8EB5ECE330C9886406B3B69180B"
|
|
"697521F3865B4A05DF2BB51D16CAFEF05866E5D55C360C759F5B10E0D354D63D5A14E5BA19"
|
|
"DBF9394E18E474E79063B4E877C2FE6BCA732ED39B091B6D7A21DD9D6D6750C1CA2ABC5DEC"
|
|
"2A81B5359771849E7B4560EB6D329E59455A70F57F035DFB50EC4354D7E068ADFAFAD4081A"
|
|
"CA67FD180020D991CC82061220CD90FA6F091C73BA7CC7EF0B777B986F4799DCEB5B03C8BC"
|
|
"360092DCC97CEF0A");
|
|
|
|
// Structurally valid test certificate device file.
|
|
// {'certificate': kTestCertificateExpiresBeforeCreationTime
|
|
// 'key_type': 'RSA',
|
|
// 'wrapped_private_key': kTestWrappedPrivateKeyData
|
|
// 'acquisition_time_seconds': 03/17/2021
|
|
// 'expiration_time_seconds': unset
|
|
// }
|
|
const std::string kTestDefaultCertificateFileDataExpiresBeforeCreationTime =
|
|
a2bs_hex(
|
|
"0AB70F080110011AB00F0AAE0B0AF103080212107CB49F987A635E1E0A52184694582D"
|
|
"6E18EC95CC8206228E023082010A0282010100DB13F5089C061E8EB62562692B3A06A7"
|
|
"74A99129BD63445FEC24448D07C30D7343553442A989AF000B7D962033C290D9A81DDC"
|
|
"BCF3980512445EB7E6CF544FC1FB3FC758FB9E06B6C28562A841E4AE2D3368795C41A2"
|
|
"D6043CA9830E0F36583C8FDB839C2752C13E184034EE412BA8A90271295B094255A163"
|
|
"19706F4D6C9CF1EBB1B39BA2A7B9B2780344DD5834BF71F4D5185508D2FDFB10419BD4"
|
|
"F48E79DDFC78471C11B9E99DF98221D6FAB25AEE24574FB02D614974942A36527C62B7"
|
|
"3A6FB7CA9EF828EB598DA59060D654851103F857A041E66B2FFB99713D31A646059328"
|
|
"33E8CCDA6CF0F888AE6E78EDC9DA0D88A185B97FEB3EA74CF146BE7D92670203010001"
|
|
"28E83D3A0C7769646576696E652E636F6D480152AA01080110001A8101044F554B9400"
|
|
"E10B17185036B6A1628EFC61B22166DE2235717A44F953B7928F3415B9D113835B1010"
|
|
"6CB6C2187F34188723D82ECF95CF5ECAB58923F1731860815999F08BF4BE4A44DB7B99"
|
|
"1B5F915F2ADCEE481E26096AAEC3AC761B624A92158AC91035041173392B1E495428F0"
|
|
"D17406B10889B6B701FAF08D2284F95DBBCA2220595267DCA89A2E57E7D4CA3C62ED6D"
|
|
"12742408A07C103DF860DC0520C3664EEB60ECB79782061280028CD44E12AA7C1A8EBF"
|
|
"88C81A2A54EFD29F8BC6C377B0C11C3404F84D8B9EAD52A0E18E929A4923A4172C2AC1"
|
|
"CDADD16E41A7833AA0DE9D09F685DAC9ACC702CB9061632C1C82333A6FB6BC9C4B2540"
|
|
"BE18CED4AB0AF1C3EFE521308F3D4CF513C20500064FE935FDDF7BBAC0BA99AA7FA660"
|
|
"17898DEE6F6F5EF90C875D5D8DA39E769E8D1485253EEE93A97B35A8EAE8D3213D392B"
|
|
"552FB4B4A37955EBE7362287502EB649D982F06D308178642C1F69B12383B050CF60CD"
|
|
"29209329C148FB4F422ED5ED139A25A89E13D4AB2E8DB940299D1414AF30DDF0D06AF5"
|
|
"5C1978F6E71E4548F20FFAE953A99D492F3D2847783338D74F66D2DFEBB50896ACBC47"
|
|
"95A81AB4050AAE020801121065802C9B625E5A319C33DC1CB7C3C6D418E3A5BDD00522"
|
|
"8E023082010A0282010100B80502043C2A8A0FD8D25C613E1E3E3B5E349F332F04516A"
|
|
"7510D38021A5629B9AA027AEAD3C759B7AFE70BED65F3DF6860FF5EB60B983A3FFA33F"
|
|
"DE06F3B73014DFC845AB371C6600562E9D904F842B8BA4A5D9200FFA3ED45D705520A5"
|
|
"C372A889F9E314386234C6897AE655851FCD9ADB4EF9126C78386EA93BCB25BA3EC475"
|
|
"C55C608E771C763AB02506F9B07252D6ABF7EA64B1EBDE7B95C6407690533BD6890B92"
|
|
"74C16066F74FC401EA355F0A02106814D49BF0C89E6E1F8DB2A47841CD0DAD793296A1"
|
|
"07C36223404F2BF1FCA16FD0A4B982634DB62407F8F14ACAE3B05A038BD3E4BBBAE439"
|
|
"1BBFA7A47FB9D01DE857EA88E5E36EE36E245859FC0F020301000128E83D1280037E06"
|
|
"581A019184AB572AFDCADDD03F161CE68200F8E6F8AD161947360BC8D49C0D68009B1C"
|
|
"4644F9B3F3FB6DDFD92EF92DE62D41D459D29D81BFAEF3970A3A39D25B2662ECB03B2D"
|
|
"A7B68302FAA6DD98D95A143CC8C1CB6ADDA76D2EE9C3723FAF95A29CDC3E968B6821A9"
|
|
"1C051CA280A86669710A1AD7A44BF9218027460DF694E2E9270396DF221963F21EE6AA"
|
|
"220A5EE4A4D0FEB3D53EB5732F8F91E9A96B3B8BE284C51339EA284D4D0EDD55B6AD56"
|
|
"F7416420E05E059F9734A96BE25AA44560DBA8C38755A42A82BD7F88EDD19DF346A667"
|
|
"B33B8114C76A8838C423D824A50B23251A088136D6E8F475299D2AFD46CEA51B5CBDF7"
|
|
"89A572125CD24FBB813B387A10CD2A30E3447634AB3408F96B9CF3D98896D405F3F540"
|
|
"D9C57962760FCD177CDD101EB8A4148B9C29CED5EAD645A95B698F1CDC6E1DB6678B85"
|
|
"074186080D68D13CD37E07B16DE370CD9AFB9B25564A73A30E2AF8085EA37D310C474F"
|
|
"0E67AC00CA992A5296FAEDAD7AA06ECD790F1E3D426558FA98383E3CD2ED483012F403"
|
|
"B36550E6BEACCB34F6C3B2ABF86634EE5383829C844F9B0C14DCF9A22FE3543CCBA8FD"
|
|
"61E21CEE503E7A40B93B07A4186A362D9E6F88DD48D4516635C6D0C253C03F12EFA609"
|
|
"5618D647F5212C518C4A6AA7172BC691530703FEDDFDB25ECF885A53FF2B4B98773979"
|
|
"D61AE659E340489811512A5C2FD445A4B0AE88A3A7F29ACE5B01ECF580D0993227BC40"
|
|
"8B602B0BC099920C17044FE66242372C2B2E8CA5C1EEC0844BC19198ADADE47FB449DC"
|
|
"9B30784952B3A8131B912CE928070D665C0557EBE7484FDABFBCA0F2C2BFD4FBDDB668"
|
|
"1C4689FD276C231B72B15AC4E5C3C088449DE4785F1D4835AC44E39B119991EFF6E72C"
|
|
"7D3B8C75CE588DB0B3AD69EB79C19B22CB518EF964C9D985AFD3677F0D13015AD7BEA8"
|
|
"4CD01E335E68AF153B989FE8BEEC60A94753C638535FA3F215F750F6954AC395F87029"
|
|
"41409E7276910CE11819649641318B5BD1B78DECEADB2B562312CC286DB0BCC14A60C8"
|
|
"4CB21AB6E75E59DAFBE701D6405DD3F47D2F8A95422ED8EB5ECE330C9886406B3B6918"
|
|
"0B697521F3865B4A05DF2BB51D16CAFEF05866E5D55C360C759F5B10E0D354D63D5A14"
|
|
"E5BA19DBF9394E18E474E79063B4E877C2FE6BCA732ED39B091B6D7A21DD9D6D6750C1"
|
|
"CA2ABC5DEC2A81B5359771849E7B4560EB6D329E59455A70F57F035DFB50EC4354D7E0"
|
|
"68ADFAFAD4081ACA67FD180020EC95CC82061220463AF8A7AE265E06A0BF07C366E6E0"
|
|
"52301A32F3A1DA487EA556519910C7534E");
|
|
|
|
// Structurally valid test certificate device file.
|
|
// {'certificate': kTestCertificateWithFutureExpiration,
|
|
// 'key_type': 'RSA',
|
|
// 'wrapped_private_key': kTestWrappedPrivateKeyData
|
|
// 'acquisition_time_seconds': unset
|
|
// 'expiration_time_seconds': unset
|
|
// }
|
|
const std::string kTestDefaultCertificateFileDataAcquisitionTimeUnset =
|
|
a2bs_hex(
|
|
"0AB10F080110011AAA0F0AAE0B0AF103080212107CB49F987A635E1E0A52184694582D"
|
|
"6E1887C6E1FE05228E023082010A0282010100DB13F5089C061E8EB62562692B3A06A7"
|
|
"74A99129BD63445FEC24448D07C30D7343553442A989AF000B7D962033C290D9A81DDC"
|
|
"BCF3980512445EB7E6CF544FC1FB3FC758FB9E06B6C28562A841E4AE2D3368795C41A2"
|
|
"D6043CA9830E0F36583C8FDB839C2752C13E184034EE412BA8A90271295B094255A163"
|
|
"19706F4D6C9CF1EBB1B39BA2A7B9B2780344DD5834BF71F4D5185508D2FDFB10419BD4"
|
|
"F48E79DDFC78471C11B9E99DF98221D6FAB25AEE24574FB02D614974942A36527C62B7"
|
|
"3A6FB7CA9EF828EB598DA59060D654851103F857A041E66B2FFB99713D31A646059328"
|
|
"33E8CCDA6CF0F888AE6E78EDC9DA0D88A185B97FEB3EA74CF146BE7D92670203010001"
|
|
"28E83D3A0C7769646576696E652E636F6D480152AA01080110001A8101044F554B9400"
|
|
"E10B17185036B6A1628EFC61B22166DE2235717A44F953B7928F3415B9D113835B1010"
|
|
"6CB6C2187F34188723D82ECF95CF5ECAB58923F1731860815999F08BF4BE4A44DB7B99"
|
|
"1B5F915F2ADCEE481E26096AAEC3AC761B624A92158AC91035041173392B1E495428F0"
|
|
"D17406B10889B6B701FAF08D2284F95DBBCA2220595267DCA89A2E57E7D4CA3C62ED6D"
|
|
"12742408A07C103DF860DC0520C3664EEB60E29D8399071280028CD44E12AA7C1A8EBF"
|
|
"88C81A2A54EFD29F8BC6C377B0C11C3404F84D8B9EAD52A0E18E929A4923A4172C2AC1"
|
|
"CDADD16E41A7833AA0DE9D09F685DAC9ACC702CB9061632C1C82333A6FB6BC9C4B2540"
|
|
"BE18CED4AB0AF1C3EFE521308F3D4CF513C20500064FE935FDDF7BBAC0BA99AA7FA660"
|
|
"17898DEE6F6F5EF90C875D5D8DA39E769E8D1485253EEE93A97B35A8EAE8D3213D392B"
|
|
"552FB4B4A37955EBE7362287502EB649D982F06D308178642C1F69B12383B050CF60CD"
|
|
"29209329C148FB4F422ED5ED139A25A89E13D4AB2E8DB940299D1414AF30DDF0D06AF5"
|
|
"5C1978F6E71E4548F20FFAE953A99D492F3D2847783338D74F66D2DFEBB50896ACBC47"
|
|
"95A81AB4050AAE020801121065802C9B625E5A319C33DC1CB7C3C6D418E3A5BDD00522"
|
|
"8E023082010A0282010100B80502043C2A8A0FD8D25C613E1E3E3B5E349F332F04516A"
|
|
"7510D38021A5629B9AA027AEAD3C759B7AFE70BED65F3DF6860FF5EB60B983A3FFA33F"
|
|
"DE06F3B73014DFC845AB371C6600562E9D904F842B8BA4A5D9200FFA3ED45D705520A5"
|
|
"C372A889F9E314386234C6897AE655851FCD9ADB4EF9126C78386EA93BCB25BA3EC475"
|
|
"C55C608E771C763AB02506F9B07252D6ABF7EA64B1EBDE7B95C6407690533BD6890B92"
|
|
"74C16066F74FC401EA355F0A02106814D49BF0C89E6E1F8DB2A47841CD0DAD793296A1"
|
|
"07C36223404F2BF1FCA16FD0A4B982634DB62407F8F14ACAE3B05A038BD3E4BBBAE439"
|
|
"1BBFA7A47FB9D01DE857EA88E5E36EE36E245859FC0F020301000128E83D1280037E06"
|
|
"581A019184AB572AFDCADDD03F161CE68200F8E6F8AD161947360BC8D49C0D68009B1C"
|
|
"4644F9B3F3FB6DDFD92EF92DE62D41D459D29D81BFAEF3970A3A39D25B2662ECB03B2D"
|
|
"A7B68302FAA6DD98D95A143CC8C1CB6ADDA76D2EE9C3723FAF95A29CDC3E968B6821A9"
|
|
"1C051CA280A86669710A1AD7A44BF9218027460DF694E2E9270396DF221963F21EE6AA"
|
|
"220A5EE4A4D0FEB3D53EB5732F8F91E9A96B3B8BE284C51339EA284D4D0EDD55B6AD56"
|
|
"F7416420E05E059F9734A96BE25AA44560DBA8C38755A42A82BD7F88EDD19DF346A667"
|
|
"B33B8114C76A8838C423D824A50B23251A088136D6E8F475299D2AFD46CEA51B5CBDF7"
|
|
"89A572125CD24FBB813B387A10CD2A30E3447634AB3408F96B9CF3D98896D405F3F540"
|
|
"D9C57962760FCD177CDD101EB8A4148B9C29CED5EAD645A95B698F1CDC6E1DB6678B85"
|
|
"074186080D68D13CD37E07B16DE370CD9AFB9B25564A73A30E2AF8085EA37D310C474F"
|
|
"0E67AC00CA992A5296FAEDAD7AA06ECD790F1E3D426558FA98383E3CD2ED483012F403"
|
|
"B36550E6BEACCB34F6C3B2ABF86634EE5383829C844F9B0C14DCF9A22FE3543CCBA8FD"
|
|
"61E21CEE503E7A40B93B07A4186A362D9E6F88DD48D4516635C6D0C253C03F12EFA609"
|
|
"5618D647F5212C518C4A6AA7172BC691530703FEDDFDB25ECF885A53FF2B4B98773979"
|
|
"D61AE659E340489811512A5C2FD445A4B0AE88A3A7F29ACE5B01ECF580D0993227BC40"
|
|
"8B602B0BC099920C17044FE66242372C2B2E8CA5C1EEC0844BC19198ADADE47FB449DC"
|
|
"9B30784952B3A8131B912CE928070D665C0557EBE7484FDABFBCA0F2C2BFD4FBDDB668"
|
|
"1C4689FD276C231B72B15AC4E5C3C088449DE4785F1D4835AC44E39B119991EFF6E72C"
|
|
"7D3B8C75CE588DB0B3AD69EB79C19B22CB518EF964C9D985AFD3677F0D13015AD7BEA8"
|
|
"4CD01E335E68AF153B989FE8BEEC60A94753C638535FA3F215F750F6954AC395F87029"
|
|
"41409E7276910CE11819649641318B5BD1B78DECEADB2B562312CC286DB0BCC14A60C8"
|
|
"4CB21AB6E75E59DAFBE701D6405DD3F47D2F8A95422ED8EB5ECE330C9886406B3B6918"
|
|
"0B697521F3865B4A05DF2BB51D16CAFEF05866E5D55C360C759F5B10E0D354D63D5A14"
|
|
"E5BA19DBF9394E18E474E79063B4E877C2FE6BCA732ED39B091B6D7A21DD9D6D6750C1"
|
|
"CA2ABC5DEC2A81B5359771849E7B4560EB6D329E59455A70F57F035DFB50EC4354D7E0"
|
|
"68ADFAFAD4081ACA67FD180012205984768E4F372E0DF787C4215A337355CD62B5FC0A"
|
|
"EAE8CC5BA82EA29C2E7A01");
|
|
|
|
// Structurally valid test certificate device file.
|
|
// {'certificate': kTestCertificateWithFutureExpiration,
|
|
// 'key_type': 'RSA',
|
|
// 'wrapped_private_key': kTestWrappedPrivateKeyData
|
|
// 'acquisition_time_seconds': -5
|
|
// 'expiration_time_seconds': unset
|
|
// }
|
|
const std::string kTestDefaultCertificateFileDataAcquisitionTimeInvalid =
|
|
a2bs_hex(
|
|
"0ABC0F080110011AB50F0AAE0B0AF103080212107CB49F987A635E1E0A52184694582D"
|
|
"6E1887C6E1FE05228E023082010A0282010100DB13F5089C061E8EB62562692B3A06A7"
|
|
"74A99129BD63445FEC24448D07C30D7343553442A989AF000B7D962033C290D9A81DDC"
|
|
"BCF3980512445EB7E6CF544FC1FB3FC758FB9E06B6C28562A841E4AE2D3368795C41A2"
|
|
"D6043CA9830E0F36583C8FDB839C2752C13E184034EE412BA8A90271295B094255A163"
|
|
"19706F4D6C9CF1EBB1B39BA2A7B9B2780344DD5834BF71F4D5185508D2FDFB10419BD4"
|
|
"F48E79DDFC78471C11B9E99DF98221D6FAB25AEE24574FB02D614974942A36527C62B7"
|
|
"3A6FB7CA9EF828EB598DA59060D654851103F857A041E66B2FFB99713D31A646059328"
|
|
"33E8CCDA6CF0F888AE6E78EDC9DA0D88A185B97FEB3EA74CF146BE7D92670203010001"
|
|
"28E83D3A0C7769646576696E652E636F6D480152AA01080110001A8101044F554B9400"
|
|
"E10B17185036B6A1628EFC61B22166DE2235717A44F953B7928F3415B9D113835B1010"
|
|
"6CB6C2187F34188723D82ECF95CF5ECAB58923F1731860815999F08BF4BE4A44DB7B99"
|
|
"1B5F915F2ADCEE481E26096AAEC3AC761B624A92158AC91035041173392B1E495428F0"
|
|
"D17406B10889B6B701FAF08D2284F95DBBCA2220595267DCA89A2E57E7D4CA3C62ED6D"
|
|
"12742408A07C103DF860DC0520C3664EEB60E29D8399071280028CD44E12AA7C1A8EBF"
|
|
"88C81A2A54EFD29F8BC6C377B0C11C3404F84D8B9EAD52A0E18E929A4923A4172C2AC1"
|
|
"CDADD16E41A7833AA0DE9D09F685DAC9ACC702CB9061632C1C82333A6FB6BC9C4B2540"
|
|
"BE18CED4AB0AF1C3EFE521308F3D4CF513C20500064FE935FDDF7BBAC0BA99AA7FA660"
|
|
"17898DEE6F6F5EF90C875D5D8DA39E769E8D1485253EEE93A97B35A8EAE8D3213D392B"
|
|
"552FB4B4A37955EBE7362287502EB649D982F06D308178642C1F69B12383B050CF60CD"
|
|
"29209329C148FB4F422ED5ED139A25A89E13D4AB2E8DB940299D1414AF30DDF0D06AF5"
|
|
"5C1978F6E71E4548F20FFAE953A99D492F3D2847783338D74F66D2DFEBB50896ACBC47"
|
|
"95A81AB4050AAE020801121065802C9B625E5A319C33DC1CB7C3C6D418E3A5BDD00522"
|
|
"8E023082010A0282010100B80502043C2A8A0FD8D25C613E1E3E3B5E349F332F04516A"
|
|
"7510D38021A5629B9AA027AEAD3C759B7AFE70BED65F3DF6860FF5EB60B983A3FFA33F"
|
|
"DE06F3B73014DFC845AB371C6600562E9D904F842B8BA4A5D9200FFA3ED45D705520A5"
|
|
"C372A889F9E314386234C6897AE655851FCD9ADB4EF9126C78386EA93BCB25BA3EC475"
|
|
"C55C608E771C763AB02506F9B07252D6ABF7EA64B1EBDE7B95C6407690533BD6890B92"
|
|
"74C16066F74FC401EA355F0A02106814D49BF0C89E6E1F8DB2A47841CD0DAD793296A1"
|
|
"07C36223404F2BF1FCA16FD0A4B982634DB62407F8F14ACAE3B05A038BD3E4BBBAE439"
|
|
"1BBFA7A47FB9D01DE857EA88E5E36EE36E245859FC0F020301000128E83D1280037E06"
|
|
"581A019184AB572AFDCADDD03F161CE68200F8E6F8AD161947360BC8D49C0D68009B1C"
|
|
"4644F9B3F3FB6DDFD92EF92DE62D41D459D29D81BFAEF3970A3A39D25B2662ECB03B2D"
|
|
"A7B68302FAA6DD98D95A143CC8C1CB6ADDA76D2EE9C3723FAF95A29CDC3E968B6821A9"
|
|
"1C051CA280A86669710A1AD7A44BF9218027460DF694E2E9270396DF221963F21EE6AA"
|
|
"220A5EE4A4D0FEB3D53EB5732F8F91E9A96B3B8BE284C51339EA284D4D0EDD55B6AD56"
|
|
"F7416420E05E059F9734A96BE25AA44560DBA8C38755A42A82BD7F88EDD19DF346A667"
|
|
"B33B8114C76A8838C423D824A50B23251A088136D6E8F475299D2AFD46CEA51B5CBDF7"
|
|
"89A572125CD24FBB813B387A10CD2A30E3447634AB3408F96B9CF3D98896D405F3F540"
|
|
"D9C57962760FCD177CDD101EB8A4148B9C29CED5EAD645A95B698F1CDC6E1DB6678B85"
|
|
"074186080D68D13CD37E07B16DE370CD9AFB9B25564A73A30E2AF8085EA37D310C474F"
|
|
"0E67AC00CA992A5296FAEDAD7AA06ECD790F1E3D426558FA98383E3CD2ED483012F403"
|
|
"B36550E6BEACCB34F6C3B2ABF86634EE5383829C844F9B0C14DCF9A22FE3543CCBA8FD"
|
|
"61E21CEE503E7A40B93B07A4186A362D9E6F88DD48D4516635C6D0C253C03F12EFA609"
|
|
"5618D647F5212C518C4A6AA7172BC691530703FEDDFDB25ECF885A53FF2B4B98773979"
|
|
"D61AE659E340489811512A5C2FD445A4B0AE88A3A7F29ACE5B01ECF580D0993227BC40"
|
|
"8B602B0BC099920C17044FE66242372C2B2E8CA5C1EEC0844BC19198ADADE47FB449DC"
|
|
"9B30784952B3A8131B912CE928070D665C0557EBE7484FDABFBCA0F2C2BFD4FBDDB668"
|
|
"1C4689FD276C231B72B15AC4E5C3C088449DE4785F1D4835AC44E39B119991EFF6E72C"
|
|
"7D3B8C75CE588DB0B3AD69EB79C19B22CB518EF964C9D985AFD3677F0D13015AD7BEA8"
|
|
"4CD01E335E68AF153B989FE8BEEC60A94753C638535FA3F215F750F6954AC395F87029"
|
|
"41409E7276910CE11819649641318B5BD1B78DECEADB2B562312CC286DB0BCC14A60C8"
|
|
"4CB21AB6E75E59DAFBE701D6405DD3F47D2F8A95422ED8EB5ECE330C9886406B3B6918"
|
|
"0B697521F3865B4A05DF2BB51D16CAFEF05866E5D55C360C759F5B10E0D354D63D5A14"
|
|
"E5BA19DBF9394E18E474E79063B4E877C2FE6BCA732ED39B091B6D7A21DD9D6D6750C1"
|
|
"CA2ABC5DEC2A81B5359771849E7B4560EB6D329E59455A70F57F035DFB50EC4354D7E0"
|
|
"68ADFAFAD4081ACA67FD180020FBFFFFFFFFFFFFFFFF011220F653E5406D56276BCB28"
|
|
"E9D1F8E9D83233A7AF24476732208AEBD9DD33BD6C41");
|
|
|
|
// Structurally valid test certificate device file.
|
|
// {'certificate': kTestCertificateWithFutureExpiration,
|
|
// 'key_type': 'RSA',
|
|
// 'wrapped_private_key': kTestWrappedPrivateKeyData
|
|
// 'acquisition_time_seconds': 0
|
|
// 'expiration_time_seconds': unset
|
|
// }
|
|
const std::string kTestDefaultCertificateFileDataAcquisitionTimeUnlimited =
|
|
a2bs_hex(
|
|
"0AB30F080110011AAC0F0AAE0B0AF103080212107CB49F987A635E1E0A52184694582D"
|
|
"6E1887C6E1FE05228E023082010A0282010100DB13F5089C061E8EB62562692B3A06A7"
|
|
"74A99129BD63445FEC24448D07C30D7343553442A989AF000B7D962033C290D9A81DDC"
|
|
"BCF3980512445EB7E6CF544FC1FB3FC758FB9E06B6C28562A841E4AE2D3368795C41A2"
|
|
"D6043CA9830E0F36583C8FDB839C2752C13E184034EE412BA8A90271295B094255A163"
|
|
"19706F4D6C9CF1EBB1B39BA2A7B9B2780344DD5834BF71F4D5185508D2FDFB10419BD4"
|
|
"F48E79DDFC78471C11B9E99DF98221D6FAB25AEE24574FB02D614974942A36527C62B7"
|
|
"3A6FB7CA9EF828EB598DA59060D654851103F857A041E66B2FFB99713D31A646059328"
|
|
"33E8CCDA6CF0F888AE6E78EDC9DA0D88A185B97FEB3EA74CF146BE7D92670203010001"
|
|
"28E83D3A0C7769646576696E652E636F6D480152AA01080110001A8101044F554B9400"
|
|
"E10B17185036B6A1628EFC61B22166DE2235717A44F953B7928F3415B9D113835B1010"
|
|
"6CB6C2187F34188723D82ECF95CF5ECAB58923F1731860815999F08BF4BE4A44DB7B99"
|
|
"1B5F915F2ADCEE481E26096AAEC3AC761B624A92158AC91035041173392B1E495428F0"
|
|
"D17406B10889B6B701FAF08D2284F95DBBCA2220595267DCA89A2E57E7D4CA3C62ED6D"
|
|
"12742408A07C103DF860DC0520C3664EEB60E29D8399071280028CD44E12AA7C1A8EBF"
|
|
"88C81A2A54EFD29F8BC6C377B0C11C3404F84D8B9EAD52A0E18E929A4923A4172C2AC1"
|
|
"CDADD16E41A7833AA0DE9D09F685DAC9ACC702CB9061632C1C82333A6FB6BC9C4B2540"
|
|
"BE18CED4AB0AF1C3EFE521308F3D4CF513C20500064FE935FDDF7BBAC0BA99AA7FA660"
|
|
"17898DEE6F6F5EF90C875D5D8DA39E769E8D1485253EEE93A97B35A8EAE8D3213D392B"
|
|
"552FB4B4A37955EBE7362287502EB649D982F06D308178642C1F69B12383B050CF60CD"
|
|
"29209329C148FB4F422ED5ED139A25A89E13D4AB2E8DB940299D1414AF30DDF0D06AF5"
|
|
"5C1978F6E71E4548F20FFAE953A99D492F3D2847783338D74F66D2DFEBB50896ACBC47"
|
|
"95A81AB4050AAE020801121065802C9B625E5A319C33DC1CB7C3C6D418E3A5BDD00522"
|
|
"8E023082010A0282010100B80502043C2A8A0FD8D25C613E1E3E3B5E349F332F04516A"
|
|
"7510D38021A5629B9AA027AEAD3C759B7AFE70BED65F3DF6860FF5EB60B983A3FFA33F"
|
|
"DE06F3B73014DFC845AB371C6600562E9D904F842B8BA4A5D9200FFA3ED45D705520A5"
|
|
"C372A889F9E314386234C6897AE655851FCD9ADB4EF9126C78386EA93BCB25BA3EC475"
|
|
"C55C608E771C763AB02506F9B07252D6ABF7EA64B1EBDE7B95C6407690533BD6890B92"
|
|
"74C16066F74FC401EA355F0A02106814D49BF0C89E6E1F8DB2A47841CD0DAD793296A1"
|
|
"07C36223404F2BF1FCA16FD0A4B982634DB62407F8F14ACAE3B05A038BD3E4BBBAE439"
|
|
"1BBFA7A47FB9D01DE857EA88E5E36EE36E245859FC0F020301000128E83D1280037E06"
|
|
"581A019184AB572AFDCADDD03F161CE68200F8E6F8AD161947360BC8D49C0D68009B1C"
|
|
"4644F9B3F3FB6DDFD92EF92DE62D41D459D29D81BFAEF3970A3A39D25B2662ECB03B2D"
|
|
"A7B68302FAA6DD98D95A143CC8C1CB6ADDA76D2EE9C3723FAF95A29CDC3E968B6821A9"
|
|
"1C051CA280A86669710A1AD7A44BF9218027460DF694E2E9270396DF221963F21EE6AA"
|
|
"220A5EE4A4D0FEB3D53EB5732F8F91E9A96B3B8BE284C51339EA284D4D0EDD55B6AD56"
|
|
"F7416420E05E059F9734A96BE25AA44560DBA8C38755A42A82BD7F88EDD19DF346A667"
|
|
"B33B8114C76A8838C423D824A50B23251A088136D6E8F475299D2AFD46CEA51B5CBDF7"
|
|
"89A572125CD24FBB813B387A10CD2A30E3447634AB3408F96B9CF3D98896D405F3F540"
|
|
"D9C57962760FCD177CDD101EB8A4148B9C29CED5EAD645A95B698F1CDC6E1DB6678B85"
|
|
"074186080D68D13CD37E07B16DE370CD9AFB9B25564A73A30E2AF8085EA37D310C474F"
|
|
"0E67AC00CA992A5296FAEDAD7AA06ECD790F1E3D426558FA98383E3CD2ED483012F403"
|
|
"B36550E6BEACCB34F6C3B2ABF86634EE5383829C844F9B0C14DCF9A22FE3543CCBA8FD"
|
|
"61E21CEE503E7A40B93B07A4186A362D9E6F88DD48D4516635C6D0C253C03F12EFA609"
|
|
"5618D647F5212C518C4A6AA7172BC691530703FEDDFDB25ECF885A53FF2B4B98773979"
|
|
"D61AE659E340489811512A5C2FD445A4B0AE88A3A7F29ACE5B01ECF580D0993227BC40"
|
|
"8B602B0BC099920C17044FE66242372C2B2E8CA5C1EEC0844BC19198ADADE47FB449DC"
|
|
"9B30784952B3A8131B912CE928070D665C0557EBE7484FDABFBCA0F2C2BFD4FBDDB668"
|
|
"1C4689FD276C231B72B15AC4E5C3C088449DE4785F1D4835AC44E39B119991EFF6E72C"
|
|
"7D3B8C75CE588DB0B3AD69EB79C19B22CB518EF964C9D985AFD3677F0D13015AD7BEA8"
|
|
"4CD01E335E68AF153B989FE8BEEC60A94753C638535FA3F215F750F6954AC395F87029"
|
|
"41409E7276910CE11819649641318B5BD1B78DECEADB2B562312CC286DB0BCC14A60C8"
|
|
"4CB21AB6E75E59DAFBE701D6405DD3F47D2F8A95422ED8EB5ECE330C9886406B3B6918"
|
|
"0B697521F3865B4A05DF2BB51D16CAFEF05866E5D55C360C759F5B10E0D354D63D5A14"
|
|
"E5BA19DBF9394E18E474E79063B4E877C2FE6BCA732ED39B091B6D7A21DD9D6D6750C1"
|
|
"CA2ABC5DEC2A81B5359771849E7B4560EB6D329E59455A70F57F035DFB50EC4354D7E0"
|
|
"68ADFAFAD4081ACA67FD1800200012207CBD5A3A5258C9FDF467270ACD4F8B10B33FEC"
|
|
"3FBCD3409BFB38542C954B9BFD");
|
|
|
|
// Structurally valid test certificate device file.
|
|
// {'certificate': kTestCertificateWithFutureExpiration,
|
|
// 'key_type': 'RSA',
|
|
// 'wrapped_private_key': kTestWrappedPrivateKeyData
|
|
// 'acquisition_time_seconds': ~2030
|
|
// 'expiration_time_seconds': unset
|
|
// }
|
|
const std::string kTestDefaultCertificateFileDataAcquisitionTimeInTheFuture =
|
|
a2bs_hex(
|
|
"0AB70F080110011AB00F0AAE0B0AF103080212107CB49F987A635E1E0A52184694582D"
|
|
"6E1887C6E1FE05228E023082010A0282010100DB13F5089C061E8EB62562692B3A06A7"
|
|
"74A99129BD63445FEC24448D07C30D7343553442A989AF000B7D962033C290D9A81DDC"
|
|
"BCF3980512445EB7E6CF544FC1FB3FC758FB9E06B6C28562A841E4AE2D3368795C41A2"
|
|
"D6043CA9830E0F36583C8FDB839C2752C13E184034EE412BA8A90271295B094255A163"
|
|
"19706F4D6C9CF1EBB1B39BA2A7B9B2780344DD5834BF71F4D5185508D2FDFB10419BD4"
|
|
"F48E79DDFC78471C11B9E99DF98221D6FAB25AEE24574FB02D614974942A36527C62B7"
|
|
"3A6FB7CA9EF828EB598DA59060D654851103F857A041E66B2FFB99713D31A646059328"
|
|
"33E8CCDA6CF0F888AE6E78EDC9DA0D88A185B97FEB3EA74CF146BE7D92670203010001"
|
|
"28E83D3A0C7769646576696E652E636F6D480152AA01080110001A8101044F554B9400"
|
|
"E10B17185036B6A1628EFC61B22166DE2235717A44F953B7928F3415B9D113835B1010"
|
|
"6CB6C2187F34188723D82ECF95CF5ECAB58923F1731860815999F08BF4BE4A44DB7B99"
|
|
"1B5F915F2ADCEE481E26096AAEC3AC761B624A92158AC91035041173392B1E495428F0"
|
|
"D17406B10889B6B701FAF08D2284F95DBBCA2220595267DCA89A2E57E7D4CA3C62ED6D"
|
|
"12742408A07C103DF860DC0520C3664EEB60E29D8399071280028CD44E12AA7C1A8EBF"
|
|
"88C81A2A54EFD29F8BC6C377B0C11C3404F84D8B9EAD52A0E18E929A4923A4172C2AC1"
|
|
"CDADD16E41A7833AA0DE9D09F685DAC9ACC702CB9061632C1C82333A6FB6BC9C4B2540"
|
|
"BE18CED4AB0AF1C3EFE521308F3D4CF513C20500064FE935FDDF7BBAC0BA99AA7FA660"
|
|
"17898DEE6F6F5EF90C875D5D8DA39E769E8D1485253EEE93A97B35A8EAE8D3213D392B"
|
|
"552FB4B4A37955EBE7362287502EB649D982F06D308178642C1F69B12383B050CF60CD"
|
|
"29209329C148FB4F422ED5ED139A25A89E13D4AB2E8DB940299D1414AF30DDF0D06AF5"
|
|
"5C1978F6E71E4548F20FFAE953A99D492F3D2847783338D74F66D2DFEBB50896ACBC47"
|
|
"95A81AB4050AAE020801121065802C9B625E5A319C33DC1CB7C3C6D418E3A5BDD00522"
|
|
"8E023082010A0282010100B80502043C2A8A0FD8D25C613E1E3E3B5E349F332F04516A"
|
|
"7510D38021A5629B9AA027AEAD3C759B7AFE70BED65F3DF6860FF5EB60B983A3FFA33F"
|
|
"DE06F3B73014DFC845AB371C6600562E9D904F842B8BA4A5D9200FFA3ED45D705520A5"
|
|
"C372A889F9E314386234C6897AE655851FCD9ADB4EF9126C78386EA93BCB25BA3EC475"
|
|
"C55C608E771C763AB02506F9B07252D6ABF7EA64B1EBDE7B95C6407690533BD6890B92"
|
|
"74C16066F74FC401EA355F0A02106814D49BF0C89E6E1F8DB2A47841CD0DAD793296A1"
|
|
"07C36223404F2BF1FCA16FD0A4B982634DB62407F8F14ACAE3B05A038BD3E4BBBAE439"
|
|
"1BBFA7A47FB9D01DE857EA88E5E36EE36E245859FC0F020301000128E83D1280037E06"
|
|
"581A019184AB572AFDCADDD03F161CE68200F8E6F8AD161947360BC8D49C0D68009B1C"
|
|
"4644F9B3F3FB6DDFD92EF92DE62D41D459D29D81BFAEF3970A3A39D25B2662ECB03B2D"
|
|
"A7B68302FAA6DD98D95A143CC8C1CB6ADDA76D2EE9C3723FAF95A29CDC3E968B6821A9"
|
|
"1C051CA280A86669710A1AD7A44BF9218027460DF694E2E9270396DF221963F21EE6AA"
|
|
"220A5EE4A4D0FEB3D53EB5732F8F91E9A96B3B8BE284C51339EA284D4D0EDD55B6AD56"
|
|
"F7416420E05E059F9734A96BE25AA44560DBA8C38755A42A82BD7F88EDD19DF346A667"
|
|
"B33B8114C76A8838C423D824A50B23251A088136D6E8F475299D2AFD46CEA51B5CBDF7"
|
|
"89A572125CD24FBB813B387A10CD2A30E3447634AB3408F96B9CF3D98896D405F3F540"
|
|
"D9C57962760FCD177CDD101EB8A4148B9C29CED5EAD645A95B698F1CDC6E1DB6678B85"
|
|
"074186080D68D13CD37E07B16DE370CD9AFB9B25564A73A30E2AF8085EA37D310C474F"
|
|
"0E67AC00CA992A5296FAEDAD7AA06ECD790F1E3D426558FA98383E3CD2ED483012F403"
|
|
"B36550E6BEACCB34F6C3B2ABF86634EE5383829C844F9B0C14DCF9A22FE3543CCBA8FD"
|
|
"61E21CEE503E7A40B93B07A4186A362D9E6F88DD48D4516635C6D0C253C03F12EFA609"
|
|
"5618D647F5212C518C4A6AA7172BC691530703FEDDFDB25ECF885A53FF2B4B98773979"
|
|
"D61AE659E340489811512A5C2FD445A4B0AE88A3A7F29ACE5B01ECF580D0993227BC40"
|
|
"8B602B0BC099920C17044FE66242372C2B2E8CA5C1EEC0844BC19198ADADE47FB449DC"
|
|
"9B30784952B3A8131B912CE928070D665C0557EBE7484FDABFBCA0F2C2BFD4FBDDB668"
|
|
"1C4689FD276C231B72B15AC4E5C3C088449DE4785F1D4835AC44E39B119991EFF6E72C"
|
|
"7D3B8C75CE588DB0B3AD69EB79C19B22CB518EF964C9D985AFD3677F0D13015AD7BEA8"
|
|
"4CD01E335E68AF153B989FE8BEEC60A94753C638535FA3F215F750F6954AC395F87029"
|
|
"41409E7276910CE11819649641318B5BD1B78DECEADB2B562312CC286DB0BCC14A60C8"
|
|
"4CB21AB6E75E59DAFBE701D6405DD3F47D2F8A95422ED8EB5ECE330C9886406B3B6918"
|
|
"0B697521F3865B4A05DF2BB51D16CAFEF05866E5D55C360C759F5B10E0D354D63D5A14"
|
|
"E5BA19DBF9394E18E474E79063B4E877C2FE6BCA732ED39B091B6D7A21DD9D6D6750C1"
|
|
"CA2ABC5DEC2A81B5359771849E7B4560EB6D329E59455A70F57F035DFB50EC4354D7E0"
|
|
"68ADFAFAD4081ACA67FD1800208FC2F789071220E3A52D11E90193A9532977A681F032"
|
|
"D01C8F97E2EAB6C964A0F207D61499D679");
|
|
|
|
struct CertificateErrorData {
|
|
DeviceFiles::CertificateState certificate_state;
|
|
std::string file_data;
|
|
};
|
|
|
|
const CertificateErrorData kRetrieveLegacyCertificateErrorData[] = {
|
|
// Certificate expired based on expiration time set by the client
|
|
{DeviceFiles::kCertificateExpired,
|
|
kTestLegacyCertificateFileDataClientExpired},
|
|
// Certificate contains an invalid expiration time set by the client
|
|
{DeviceFiles::kCertificateInvalid,
|
|
kTestLegacyCertificateFileDataInvalidClientExpiration},
|
|
};
|
|
|
|
/* TODO(b/192430982): Renable expiration of legacy DRM certificates
|
|
constexpr size_t kNumberOfLegacyCertificates =
|
|
ArraySize(kRetrieveLegacyCertificateErrorData);
|
|
*/
|
|
|
|
const CertificateErrorData kRetrieveDefaultCertificateErrorData[] = {
|
|
// Certificate expired
|
|
{DeviceFiles::kCertificateExpired, kTestDefaultCertificateFileDataExpired},
|
|
// Certificate has a creation time in the future
|
|
{DeviceFiles::kCertificateInvalid,
|
|
kTestDefaultCertificateWithInvalidCreationFutureExpiration},
|
|
// Certificate has a never expires creation time
|
|
{DeviceFiles::kCertificateInvalid,
|
|
kTestDefaultCertificateFileDataCreationTimeUnlimited},
|
|
// Certificate expiration time field is not set
|
|
{DeviceFiles::kCertificateInvalid,
|
|
kTestDefaultCertificateFileDataExpirationUnset},
|
|
// Certificate expires before creation time
|
|
{DeviceFiles::kCertificateInvalid,
|
|
kTestDefaultCertificateFileDataExpiresBeforeCreationTime},
|
|
// Certificate acqusition time field is not set
|
|
{DeviceFiles::kCertificateInvalid,
|
|
kTestDefaultCertificateFileDataAcquisitionTimeUnset},
|
|
// Certificate acqusition time is invalid
|
|
{DeviceFiles::kCertificateInvalid,
|
|
kTestDefaultCertificateFileDataAcquisitionTimeInvalid},
|
|
// Certificate has a never expires acqusition
|
|
{DeviceFiles::kCertificateInvalid,
|
|
kTestDefaultCertificateFileDataAcquisitionTimeUnlimited},
|
|
// Certificate acqusition time is in the future
|
|
{DeviceFiles::kCannotHandle,
|
|
kTestDefaultCertificateFileDataAcquisitionTimeInTheFuture},
|
|
};
|
|
|
|
constexpr size_t kNumberOfDefaultCertificates =
|
|
ArraySize(kRetrieveDefaultCertificateErrorData);
|
|
|
|
struct LicenseInfo {
|
|
std::string key_set_id;
|
|
CdmOfflineLicenseState 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_index;
|
|
std::string drm_certificate;
|
|
CryptoWrappedKey::Type key_type;
|
|
std::string private_key;
|
|
std::string file_data;
|
|
};
|
|
|
|
// 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.
|
|
const LicenseInfo kLicenseTestData[] = {
|
|
|
|
// license 0
|
|
{"ksid54C57C966E23CEF5", 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,
|
|
"", CryptoWrappedKey::kUninitialized, "",
|
|
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", 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, "", CryptoWrappedKey::kUninitialized, "",
|
|
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", 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, "", CryptoWrappedKey::kUninitialized, "",
|
|
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")},
|
|
|
|
// license 3
|
|
{"ksidF991C5F45E98CB97", kLicenseStateActive,
|
|
a2bs_hex("0801121030313233343536373839414243444546"),
|
|
a2bs_hex("080112950C0AD70B080112EF090AB002080212103E560EC5335E346F591B"
|
|
"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"
|
|
"55FB685FDB3025574517CCCC74EE4FEAF6629D5179A52FF85CE7409528EF"
|
|
"C316C180717C182A971C94E4AC4C7DF8F161CB8CC1"),
|
|
a2bs_hex("080212CC020A190A0939383736353433323112084B9F26DAB8B06E112002"
|
|
"342E7769646576696E652E6E65742F7769646576696E652F6367692D6269"
|
|
"6E2F64726D2E6367691A6612102531DFD6CCEA511D00F8C0172F1189AA1A"
|
|
"5057FF9D9DBD5A205B1DEB075E4A90467C1E074CDE6071BFF831AD590BD5"
|
|
"D117614F33CE2C3CE1824FC0D54B36ECEAE58DF5C8F9347C2FEED17A3327"
|
|
"E8F52B8ECA6313A1FA6A042EB9525DD328113C05F920011A7E0A10303132"
|
|
"3334353637383941424344454612106D23622142B58F6D1EDD33AF3ECD2C"
|
|
"7E1A20884EE13BEA9DECDDBF68B532131C82B11CEC4D23C7FA9F3EF4C5EE"
|
|
"172E7C9736200242340A2050BFE71BB1BA683E35E0B49BB33048E5103FBB"
|
|
"B9C3E1CD6EBCDA7DD485DBAF431210D69D6F14C95CB6CFDB998E50D00F4D"
|
|
"A020DBDFA68F051A20AE5D6895E70F86F42F5FE3C58A505A865D05AB94B1"
|
|
"ABAA6CC59C3322F61C458D228002331F2BE95B5C796E0921CC27A7295501"
|
|
"DA10044E5CA36C0E2866FF068EA3515A6786BD5D60D74D80C6BA8BE6AAD0"
|
|
"85AF967909A143171E9CDDE36EA528402867CD04FB6F97A150CDE55F9B81"
|
|
"9F4104BEF48E4280D76645569E10AEF524D34D865B5B9E3EBC66C45EEBBE"
|
|
"16AB04493E7AEC4F99E7A99F3FC08FA431BECCC1978A079FA4801DB75E13"
|
|
"29A9921604E6F80CB148AA2DD5C8348057E9F4FC2AEA57EA4D215D0A8D48"
|
|
"6294860DFB4F4C42D57D9542B76179E179DD4AA23F9F7B2AE432B39E4CE8"
|
|
"F156E84877DDA781AAAAFC797FF75AFE2019ADC3A2E419BF0253C705BD47"
|
|
"2800124108011801301E4239687474703A2F2F6B69723033666370673137"
|
|
"97A96866AC4C059AD8F2E9C6B617C60C6ADCDB894C25F0C7D29252F52FD5"),
|
|
a2bs_hex("08011231121D1A1B0A190A0939383736353433323112084B9F26DAB8B06E"
|
|
"4D2033E05DCC95DDFB278CFB5125A021C3C043A16ACC933A768A27112002"
|
|
"280018022A0C31353532333030360000000030151A20C30375683C"),
|
|
a2bs_hex("0802123B0A190A0939383736353433323112084B9F26DAB8B06E11200228"
|
|
"A68F051A20182F029E35047A3841FA176C74E5B387350E8D58DEA6878FF0"
|
|
"0112001A16200342120A106B63746C0000000000ECDCBE0000000020DBDF"
|
|
"BEA6CABACA1C2C"),
|
|
"https://test.google.com/license/GetCencLicense", 0x1234, 0x1324, 0x10,
|
|
"Name3 Value3",
|
|
a2bs_hex("08011231121D1A1B0A190A0939383736353433323112084B9F26DAB8B06E"),
|
|
5, kTestCertificateWithFutureExpiration, CryptoWrappedKey::kRsa,
|
|
kTestWrappedPrivateKeyData,
|
|
a2bs_hex(
|
|
"0AEE240802100122E7240801121408011210303132333435363738394142434445461"
|
|
"AFF0D080112950C0AD70B080112EF090AB002080212103E560EC5335E346F591BFA0E"
|
|
"5DFC3DE9A34BA5F08BE349553C319A9FB274905A8770ADC9CA4A2CBCD8E556A1587FA"
|
|
"18BFD4D286C644A6904F19EAAFBDFADD3B371B306D0B289F459B491C814B5AD1F7476"
|
|
"10E990A60248A7DA5152F1CCFC047EF42300131F9C4758F4D9F30579393B860AAD9AD"
|
|
"2EE43D721D6DB9F5800EF188386B94825AE05A883AC976D6970DF43EA6C83B86CE6D0"
|
|
"F540207725B9890FCCEC83A49027872DAFD2740B7748E9C3B1752D6F12859CED07E88"
|
|
"82969B433EC66F17FFC29AC6FDBEA79230B0FAED5D94CF6B829A420BBE32703239417"
|
|
"76EE60DD6BFD660BDDCA870203010001288001300112800250D1F8B1ECF849B60FF93"
|
|
"E37C4DEEF09E6FFB10BCFC996A4A24B7AA96928835ED5A72E15846D0A14015733239B"
|
|
"D8B6E6D5E5D229B08394CE1E0692C159C44337CA7CAF88476449B068D9D2FADED8EB1"
|
|
"BC0F4B8F0FCAF293E8690E74032095341803408A0E8279E545945EE97838FDE7812F7"
|
|
"171C3CC4F5ECF9418BBF1D336CE58F4CBB1B44D4ADE6BF3364BAE7EC093281846E569"
|
|
"E13E7719014030A6059044FE7BBFF3E8F5723AEDD54DC6E0D041B309D7700B5557569"
|
|
"0E95CE6085D0914F991C5F45E98CBB9C45BA33F47FD0862EBCC7EEBA8E60643C86E85"
|
|
"476B18AEF8DE871571A75681A75F75028A5B58751C09A5296AAE99CEDCD9785E9E210"
|
|
"3240D40A1AB6050AB002080112102CE5CCF42200D6B5BCCF33D7CC2D9C7018EAD1B88"
|
|
"D05228E023082010A0282010100BE1B661EEC4700DF4B0C83292D02AE029B8A224DD3"
|
|
"048125049F74E30E1257FC2BE8D9CFAF0BFFCACAF7305351771C78FA451F13AF5EEBF"
|
|
"B360941A4396A805833730DC6E534C62408B7C5076FC22568021C59ED34F98487196D"
|
|
"A32078DAFCA37C7CFB8E79612FA384963DF2167D5E87305D7BC92D621C10160672C27"
|
|
"B9A691B1534F60D78C5893E40C5FF8A3F9DF8898612E9A5CCB56F4A0CC2A61A7AEB04"
|
|
"A9DCC015D9BC37DEF2AB9EAA9AAFD838869081D9249755F129BB0DBECA3B894975A65"
|
|
"A36FD005CE77CD407E925D3172E33122A11D327968A08F8E771FAEB2540EB52D17C49"
|
|
"06405F47C31F60F0AF6C78AF53291B236E692B506A2AF92AF43E3A810203010001288"
|
|
"00130011280033A08A60418E5C81B8D71A5C0A28C26999FF4FA992E14107CA8A9E6A2"
|
|
"B36259834000FE35DCD814426F9C5D332418ED94C9C0C992217B1B6DC01C99085A3C3"
|
|
"956C8267B8773BABCF3F2C841C67D830F9DBC780DD68BF4E2FE424C6A54123BE4B2A1"
|
|
"F7E1F4DB58AB1164DAE9CF75C3392284A44B8CDB85D837E86C6B908243987E552C869"
|
|
"3878C9A1B7BEA3759783036F1595C406D6CBBA7F8642A9B3B244DAA1F00531D0B908A"
|
|
"DE4B533FD9FAFA21D0FB0C033D2AD5DDF24C60F4FAC30820758877F2E1A78EB44E933"
|
|
"6DCFAFDF572BB22A84A5DEFDF2EB87B61DE26EE9C4CEAA646A2AFDB2BB953845E6D7F"
|
|
"E6F79A9501D1C379C96961316B5D2A66F38C222091AF74141B6CAF93507485A5D8F82"
|
|
"808025451824F00C8B6A0CD5803F6564584138C8B18BC679B442D837307B5CC90B1FD"
|
|
"1FD32288B4A5D18D2D80E5E6A7A9EFD255B8B363038BCC67AF534EAEE4A5903E304EE"
|
|
"D4990BB5BE735DB027A6DE35329D321EC051B956C55A5B11674017517FCC3C7FF7397"
|
|
"C13A7B7087A1F6AEC7F6761A130A0C636F6D70616E795F6E616D6512034C47451A150"
|
|
"A0A6D6F64656C5F6E616D6512074E6578757320341A200A1161726368697465637475"
|
|
"72655F6E616D65120B61726D656162692D7637611A130A0B6465766963655F6E616D6"
|
|
"512046D616B6F1A150A0C70726F647563745F6E616D6512056F6363616D1A440A0A62"
|
|
"75696C645F696E666F1236676F6F676C652F6F6363616D2F6D616B6F3A342E332F4A4"
|
|
"25F4D52322F3731343239313A7573657264656275672F6465762D6B6579731A210A09"
|
|
"6465766963655F696412144C474D433230313231303035303036333932373812250A2"
|
|
"30A14080112103031323334353637383941424344454610021A093938373635343332"
|
|
"31180120002A0C33393430373934373337000030151A8002734FBDED946EB74A1B618"
|
|
"11C4C4A491214F6BEA125A80F014165B28AA97AD0AF60E4D129EB7F424AD659F24E5E"
|
|
"ED4B702BEE328E38B72CA6F38CD0ECFD2E6D7B98147744C9B8A9610B3BDFE17675FF7"
|
|
"D584C5BF68064B0FE513FC322C9148795E4C2F2443C3024F5C1F29E6FEFB6D77005DA"
|
|
"B22CD2B63131908DE4D88795BB931CEA38452CC568BE25032245E372F07A1297F5174"
|
|
"8C7EA02F2C88360AFE7ABBC71DCDD5366126258E5AFA27C2A20B339FA1E7AE925B494"
|
|
"B361F6F7116F20BE8EE6E446146027F4FD4300F4A0B0A3361EE34925F338D0AACF20A"
|
|
"E919B4BAE81C1D57A8D2B8FA38732A5769755FB685FDB3025574517CCCC74EE4FEAF6"
|
|
"629D5179A52FF85CE7409528EFC316C180717C182A971C94E4AC4C7DF8F161CB8CC12"
|
|
"2F604080212CC020A190A0939383736353433323112084B9F26DAB8B06E112002342E"
|
|
"7769646576696E652E6E65742F7769646576696E652F6367692D62696E2F64726D2E6"
|
|
"367691A6612102531DFD6CCEA511D00F8C0172F1189AA1A5057FF9D9DBD5A205B1DEB"
|
|
"075E4A90467C1E074CDE6071BFF831AD590BD5D117614F33CE2C3CE1824FC0D54B36E"
|
|
"CEAE58DF5C8F9347C2FEED17A3327E8F52B8ECA6313A1FA6A042EB9525DD328113C05"
|
|
"F920011A7E0A103031323334353637383941424344454612106D23622142B58F6D1ED"
|
|
"D33AF3ECD2C7E1A20884EE13BEA9DECDDBF68B532131C82B11CEC4D23C7FA9F3EF4C5"
|
|
"EE172E7C9736200242340A2050BFE71BB1BA683E35E0B49BB33048E5103FBBB9C3E1C"
|
|
"D6EBCDA7DD485DBAF431210D69D6F14C95CB6CFDB998E50D00F4DA020DBDFA68F051A"
|
|
"20AE5D6895E70F86F42F5FE3C58A505A865D05AB94B1ABAA6CC59C3322F61C458D228"
|
|
"002331F2BE95B5C796E0921CC27A7295501DA10044E5CA36C0E2866FF068EA3515A67"
|
|
"86BD5D60D74D80C6BA8BE6AAD085AF967909A143171E9CDDE36EA528402867CD04FB6"
|
|
"F97A150CDE55F9B819F4104BEF48E4280D76645569E10AEF524D34D865B5B9E3EBC66"
|
|
"C45EEBBE16AB04493E7AEC4F99E7A99F3FC08FA431BECCC1978A079FA4801DB75E132"
|
|
"9A9921604E6F80CB148AA2DD5C8348057E9F4FC2AEA57EA4D215D0A8D486294860DFB"
|
|
"4F4C42D57D9542B76179E179DD4AA23F9F7B2AE432B39E4CE8F156E84877DDA781AAA"
|
|
"AFC797FF75AFE2019ADC3A2E419BF0253C705BD472800124108011801301E42396874"
|
|
"74703A2F2F6B6972303366637067313797A96866AC4C059AD8F2E9C6B617C60C6ADCD"
|
|
"B894C25F0C7D29252F52FD52A5708011231121D1A1B0A190A09393837363534333231"
|
|
"12084B9F26DAB8B06E4D2033E05DCC95DDFB278CFB5125A021C3C043A16ACC933A768"
|
|
"A27112002280018022A0C31353532333030360000000030151A20C30375683C326108"
|
|
"02123B0A190A0939383736353433323112084B9F26DAB8B06E11200228A68F051A201"
|
|
"82F029E35047A3841FA176C74E5B387350E8D58DEA6878FF00112001A16200342120A"
|
|
"106B63746C0000000000ECDCBE0000000020DBDFBEA6CABACA1C2C3A2E68747470733"
|
|
"A2F2F746573742E676F6F676C652E636F6D2F6C6963656E73652F47657443656E634C"
|
|
"6963656E736540B42448A426520F0A054E616D6533120656616C7565335810621E080"
|
|
"11231121D1A1B0A190A0939383736353433323112084B9F26DAB8B06E680572AA0F0A"
|
|
"AE0B0AF103080212107CB49F987A635E1E0A52184694582D6E1887C6E1FE05228E023"
|
|
"082010A0282010100DB13F5089C061E8EB62562692B3A06A774A99129BD63445FEC24"
|
|
"448D07C30D7343553442A989AF000B7D962033C290D9A81DDCBCF3980512445EB7E6C"
|
|
"F544FC1FB3FC758FB9E06B6C28562A841E4AE2D3368795C41A2D6043CA9830E0F3658"
|
|
"3C8FDB839C2752C13E184034EE412BA8A90271295B094255A16319706F4D6C9CF1EBB"
|
|
"1B39BA2A7B9B2780344DD5834BF71F4D5185508D2FDFB10419BD4F48E79DDFC78471C"
|
|
"11B9E99DF98221D6FAB25AEE24574FB02D614974942A36527C62B73A6FB7CA9EF828E"
|
|
"B598DA59060D654851103F857A041E66B2FFB99713D31A64605932833E8CCDA6CF0F8"
|
|
"88AE6E78EDC9DA0D88A185B97FEB3EA74CF146BE7D9267020301000128E83D3A0C776"
|
|
"9646576696E652E636F6D480152AA01080110001A8101044F554B9400E10B17185036"
|
|
"B6A1628EFC61B22166DE2235717A44F953B7928F3415B9D113835B10106CB6C2187F3"
|
|
"4188723D82ECF95CF5ECAB58923F1731860815999F08BF4BE4A44DB7B991B5F915F2A"
|
|
"DCEE481E26096AAEC3AC761B624A92158AC91035041173392B1E495428F0D17406B10"
|
|
"889B6B701FAF08D2284F95DBBCA2220595267DCA89A2E57E7D4CA3C62ED6D12742408"
|
|
"A07C103DF860DC0520C3664EEB60E29D8399071280028CD44E12AA7C1A8EBF88C81A2"
|
|
"A54EFD29F8BC6C377B0C11C3404F84D8B9EAD52A0E18E929A4923A4172C2AC1CDADD1"
|
|
"6E41A7833AA0DE9D09F685DAC9ACC702CB9061632C1C82333A6FB6BC9C4B2540BE18C"
|
|
"ED4AB0AF1C3EFE521308F3D4CF513C20500064FE935FDDF7BBAC0BA99AA7FA6601789"
|
|
"8DEE6F6F5EF90C875D5D8DA39E769E8D1485253EEE93A97B35A8EAE8D3213D392B552"
|
|
"FB4B4A37955EBE7362287502EB649D982F06D308178642C1F69B12383B050CF60CD29"
|
|
"209329C148FB4F422ED5ED139A25A89E13D4AB2E8DB940299D1414AF30DDF0D06AF55"
|
|
"C1978F6E71E4548F20FFAE953A99D492F3D2847783338D74F66D2DFEBB50896ACBC47"
|
|
"95A81AB4050AAE020801121065802C9B625E5A319C33DC1CB7C3C6D418E3A5BDD0052"
|
|
"28E023082010A0282010100B80502043C2A8A0FD8D25C613E1E3E3B5E349F332F0451"
|
|
"6A7510D38021A5629B9AA027AEAD3C759B7AFE70BED65F3DF6860FF5EB60B983A3FFA"
|
|
"33FDE06F3B73014DFC845AB371C6600562E9D904F842B8BA4A5D9200FFA3ED45D7055"
|
|
"20A5C372A889F9E314386234C6897AE655851FCD9ADB4EF9126C78386EA93BCB25BA3"
|
|
"EC475C55C608E771C763AB02506F9B07252D6ABF7EA64B1EBDE7B95C6407690533BD6"
|
|
"890B9274C16066F74FC401EA355F0A02106814D49BF0C89E6E1F8DB2A47841CD0DAD7"
|
|
"93296A107C36223404F2BF1FCA16FD0A4B982634DB62407F8F14ACAE3B05A038BD3E4"
|
|
"BBBAE4391BBFA7A47FB9D01DE857EA88E5E36EE36E245859FC0F020301000128E83D1"
|
|
"280037E06581A019184AB572AFDCADDD03F161CE68200F8E6F8AD161947360BC8D49C"
|
|
"0D68009B1C4644F9B3F3FB6DDFD92EF92DE62D41D459D29D81BFAEF3970A3A39D25B2"
|
|
"662ECB03B2DA7B68302FAA6DD98D95A143CC8C1CB6ADDA76D2EE9C3723FAF95A29CDC"
|
|
"3E968B6821A91C051CA280A86669710A1AD7A44BF9218027460DF694E2E9270396DF2"
|
|
"21963F21EE6AA220A5EE4A4D0FEB3D53EB5732F8F91E9A96B3B8BE284C51339EA284D"
|
|
"4D0EDD55B6AD56F7416420E05E059F9734A96BE25AA44560DBA8C38755A42A82BD7F8"
|
|
"8EDD19DF346A667B33B8114C76A8838C423D824A50B23251A088136D6E8F475299D2A"
|
|
"FD46CEA51B5CBDF789A572125CD24FBB813B387A10CD2A30E3447634AB3408F96B9CF"
|
|
"3D98896D405F3F540D9C57962760FCD177CDD101EB8A4148B9C29CED5EAD645A95B69"
|
|
"8F1CDC6E1DB6678B85074186080D68D13CD37E07B16DE370CD9AFB9B25564A73A30E2"
|
|
"AF8085EA37D310C474F0E67AC00CA992A5296FAEDAD7AA06ECD790F1E3D426558FA98"
|
|
"383E3CD2ED483012F403B36550E6BEACCB34F6C3B2ABF86634EE5383829C844F9B0C1"
|
|
"4DCF9A22FE3543CCBA8FD61E21CEE503E7A40B93B07A4186A362D9E6F88DD48D45166"
|
|
"35C6D0C253C03F12EFA6095618D647F5212C518C4A6AA7172BC691530703FEDDFDB25"
|
|
"ECF885A53FF2B4B98773979D61AE659E340489811512A5C2FD445A4B0AE88A3A7F29A"
|
|
"CE5B01ECF580D0993227BC408B602B0BC099920C17044FE66242372C2B2E8CA5C1EEC"
|
|
"0844BC19198ADADE47FB449DC9B30784952B3A8131B912CE928070D665C0557EBE748"
|
|
"4FDABFBCA0F2C2BFD4FBDDB6681C4689FD276C231B72B15AC4E5C3C088449DE4785F1"
|
|
"D4835AC44E39B119991EFF6E72C7D3B8C75CE588DB0B3AD69EB79C19B22CB518EF964"
|
|
"C9D985AFD3677F0D13015AD7BEA84CD01E335E68AF153B989FE8BEEC60A94753C6385"
|
|
"35FA3F215F750F6954AC395F8702941409E7276910CE11819649641318B5BD1B78DEC"
|
|
"EADB2B562312CC286DB0BCC14A60C84CB21AB6E75E59DAFBE701D6405DD3F47D2F8A9"
|
|
"5422ED8EB5ECE330C9886406B3B69180B697521F3865B4A05DF2BB51D16CAFEF05866"
|
|
"E5D55C360C759F5B10E0D354D63D5A14E5BA19DBF9394E18E474E79063B4E877C2FE6"
|
|
"BCA732ED39B091B6D7A21DD9D6D6750C1CA2ABC5DEC2A81B5359771849E7B4560EB6D"
|
|
"329E59455A70F57F035DFB50EC4354D7E068ADFAFAD4081ACA67FD1800122056D505D"
|
|
"E2B3989161D0CF88CFFDA6D2E79DA49C87CF1917A3A20109D2F3676EE")},
|
|
}; // kLicenseTestData
|
|
|
|
constexpr size_t kNumberOfLicenses = ArraySize(kLicenseTestData);
|
|
|
|
// 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.
|
|
const LicenseInfo kLicenseUpdateTestData[] = {
|
|
// active license
|
|
{"key_set_id_: ksid2A048BC7FAEC885A", 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, "", CryptoWrappedKey::kUninitialized, "",
|
|
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
|
|
{"", kLicenseStateReleasing, "", "", "", "", "", "", 0, 0, 0, "", "", 15,
|
|
"", CryptoWrappedKey::kUninitialized, "",
|
|
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")}}; // kLicenseUpdateTestData
|
|
|
|
// 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.
|
|
const LicenseInfo kLicenseAppParametersBackwardsCompatibilityTestData = {
|
|
|
|
"ksid54C57C966E23CEF5",
|
|
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,
|
|
"",
|
|
CryptoWrappedKey::kUninitialized,
|
|
"",
|
|
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")}; // kLicenseAppParametersBackwardsCompatibilityTestData
|
|
|
|
struct DeviceFilesTestListUsageInfoData {
|
|
std::string file_name;
|
|
bool is_usage_info_file;
|
|
};
|
|
|
|
const DeviceFilesTestListUsageInfoData kTestListUsageInfoData[] = {
|
|
{"ksid056fe6e9c.lic", false}, {"usage.bin", true},
|
|
{"cert.bin", false}, {"usage345agdf==.bin", true},
|
|
{"usageyd6e.lic", false}, {"usgtable.bin", false},
|
|
{"usaget3ED.bin", true},
|
|
};
|
|
|
|
struct UsageInfoTestContext {
|
|
std::string app_id;
|
|
DeviceFiles::CdmUsageData usage_data;
|
|
std::string file_data;
|
|
};
|
|
|
|
const std::string kEmptyUsageInfoFileData = a2bs_hex(
|
|
"0A06080310012A001220468A9A97B23D0E17147416276CB133175F0A18534155C6FFEF024A"
|
|
"D80371D7C4");
|
|
|
|
const UsageInfoTestContext kUsageInfoTestData[] = {
|
|
// Test vector 0 - app id: "", usage entry count: 1
|
|
{"",
|
|
{
|
|
// PST:
|
|
a2bs_hex("b8e7f26b6b8b59babf05b5a1f8927b412a85bc8551a928f00856329814ae"
|
|
"5a82"),
|
|
// License request:
|
|
a2bs_hex("4463dc57079c27e34ae115c6f65b08f6311c4ea604a6512c42470b6f692a"
|
|
"76ea769d60d0b6bcf8d565ef31eb925f38e2095039c9f2f113ecee020f11"
|
|
"26eb30165372d538b551ebd7bae5cf0bbeebb3cdb6f180d42868051aab8f"
|
|
"f4947460dd96f0f8259fc6001059c998d2eb6902c064f9ae08e6cd3c7807"
|
|
"e50379507b41620d15dd76c0b1e7ed9417efd6825959b5077f464e6429a4"
|
|
"dee467a1ba2b05d38049912d5539f1ee9f5d8a569aa1c384384f847ed64f"
|
|
"6ffc101036da70e69c06e4916493e82e9fe3f65d85254c8c14f6ca0579bf"
|
|
"b3eaa86b2d7bb5ff572eccfd70f2ea4695f326beadf241ae4311e428c7c1"
|
|
"2a0d4d1915cd0537ff0f62cf13eb2fa2"),
|
|
// License:
|
|
a2bs_hex(
|
|
"bbe6b4b60da9d9bc34dcc8502fb81d8fd5fdbc8fa89605c86205f2b8c6530ff64"
|
|
"c8c31f579bd8eca603dfd5e397ac35e48931fd330351d01361bb31caaa7dbf816"
|
|
"a6144a12b6c22d1dceba20669ed635a40831066abd8071342119d7da11c43696b"
|
|
"2898d3df3b36beb8da013d9dc145343494b19d6da085f4a41e421d3def2ad8b72"
|
|
"dffffb6e79bbceaf8594045d16a62eed16904a3569860c531a32eaa5abb868b1d"
|
|
"d6a0b03d69c1a3f8336af80eb80badbbc7b80ca5943bd5b374302147052201fae"
|
|
"d30e9ffa99fc00b47f7eeb469512a413e873f91d959cccacccd3585b7f00ed8d4"
|
|
"685022101713c3adc439f27512a45926c1d2473477662c4bace72f380d105ddc9"
|
|
"f7be49ed71991b3d9e29a2038201373f98a845a57624a692f44ebd316d26c48fe"
|
|
"e82b655583317eca4aaa4dac841524a2dca111749629637ef29fa7e72645a8759"
|
|
"57fb3d98a5e6c8065b1349cfa23011cd6349d911c535475fed50be9eacb6a1ff3"
|
|
"ea7458823f0229f2fa90b7a7099e8ec349d3d0fe0277cba5157ca62c8fbaa893f"
|
|
"37b8c8cea2a0d2d2912caccf92d31aa17439479711b4a5b77445cc02c18bfe019"
|
|
"5ce8f1fe59e317214005cee5e25904c9fb0af7e2b6b4dccdf78e61e179a9f9399"
|
|
"6ec3c76f6da9b5a291bf08a73032b37edcbbbdd20cff94088a489167c56e5e75b"
|
|
"376874e9750212fe94d7656d9cd835db3b771ba5b58d2b255"),
|
|
// Key set ID:
|
|
"ksid854c8a60a5a547e122c24fca",
|
|
// Usage entry:
|
|
a2bs_hex("7d2b905e5eafd4b28aeeb7633283579e48add21a68eb26cc8c3b2e344579"
|
|
"003b12a38554336305525fa6ab70f024a18c73631bb1531eca3f0782c72d"
|
|
"ba017311b3f1e98c739632e305e4bc0b2561ae2b"),
|
|
// Usage entry index:
|
|
5,
|
|
// DRM certificate:
|
|
kEmptyString,
|
|
// Wrapped private key:
|
|
CryptoWrappedKey(),
|
|
},
|
|
// File contents for test vector 0
|
|
// sessions:
|
|
// -token:
|
|
// b8e7f26b6b8b59babf05b5a1f8927b412a85bc8551a928f00856329814ae
|
|
// 5a82
|
|
// license_request:
|
|
// 4463dc57079c27e34ae115c6f65b08f6311c4ea604a6512c42470b6f692a
|
|
// 76ea769d60d0b6bcf8d565ef31eb925f38e2095039c9f2f113ecee020f11
|
|
// 26eb30165372d538b551ebd7bae5cf0bbeebb3cdb6f180d42868051aab8f
|
|
// f4947460dd96f0f8259fc6001059c998d2eb6902c064f9ae08e6cd3c7807
|
|
// e50379507b41620d15dd76c0b1e7ed9417efd6825959b5077f464e6429a4
|
|
// dee467a1ba2b05d38049912d5539f1ee9f5d8a569aa1c384384f847ed64f
|
|
// 6ffc101036da70e69c06e4916493e82e9fe3f65d85254c8c14f6ca0579bf
|
|
// b3eaa86b2d7bb5ff572eccfd70f2ea4695f326beadf241ae4311e428c7c1
|
|
// 2a0d4d1915cd0537ff0f62cf13eb2fa2
|
|
// license:
|
|
// bbe6b4b60da9d9bc34dcc8502fb81d8fd5fdbc8fa89605c86205f2b8c653
|
|
// 0ff64c8c31f579bd8eca603dfd5e397ac35e48931fd330351d01361bb31c
|
|
// aaa7dbf816a6144a12b6c22d1dceba20669ed635a40831066abd80713421
|
|
// 19d7da11c43696b2898d3df3b36beb8da013d9dc145343494b19d6da085f
|
|
// 4a41e421d3def2ad8b72dffffb6e79bbceaf8594045d16a62eed16904a35
|
|
// 69860c531a32eaa5abb868b1dd6a0b03d69c1a3f8336af80eb80badbbc7b
|
|
// 80ca5943bd5b374302147052201faed30e9ffa99fc00b47f7eeb469512a4
|
|
// 13e873f91d959cccacccd3585b7f00ed8d4685022101713c3adc439f2751
|
|
// 2a45926c1d2473477662c4bace72f380d105ddc9f7be49ed71991b3d9e29
|
|
// a2038201373f98a845a57624a692f44ebd316d26c48fee82b655583317ec
|
|
// a4aaa4dac841524a2dca111749629637ef29fa7e72645a875957fb3d98a5
|
|
// e6c8065b1349cfa23011cd6349d911c535475fed50be9eacb6a1ff3ea745
|
|
// 8823f0229f2fa90b7a7099e8ec349d3d0fe0277cba5157ca62c8fbaa893f
|
|
// 37b8c8cea2a0d2d2912caccf92d31aa17439479711b4a5b77445cc02c18b
|
|
// fe0195ce8f1fe59e317214005cee5e25904c9fb0af7e2b6b4dccdf78e61e
|
|
// 179a9f93996ec3c76f6da9b5a291bf08a73032b37edcbbbdd20cff94088a
|
|
// 489167c56e5e75b376874e9750212fe94d7656d9cd835db3b771ba5b58d2
|
|
// b255
|
|
// key_set_id: "ksid854c8a60a5a547e122c24fca"
|
|
// usage_entry:
|
|
// 7d2b905e5eafd4b28aeeb7633283579e48add21a68eb26cc8c3b2e344579
|
|
// 003b12a38554336305525fa6ab70f024a18c73631bb1531eca3f0782c72d
|
|
// ba017311b3f1e98c739632e305e4bc0b2561ae2b
|
|
// usage_entry_index: 5
|
|
// drm_certificate_id: 0
|
|
// drm_certificate_cache: <none>
|
|
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 count: 2
|
|
{"",
|
|
{
|
|
// PST:
|
|
a2bs_hex("5d637be37a9722aa35c23d346470851aca7d2edcd1a27edf124ea6"),
|
|
// License request:
|
|
a2bs_hex("bc96d6878e3086c33624821f1f3ece23f27e58222c2bb8d1615476a11792"
|
|
"63b58f6427e92911d961fc7a3afd947aed8c9aead1f08457925d2ce4e0f6"
|
|
"18b21942baa60b231eae864048f94f74ffa700e5777f812adb6f0cb6ba6f"
|
|
"0d145e3951191eb217140c32f2c7565053222131ff823bc36d80b24b561c"
|
|
"cbea9d397fe00942e7ff73b8152cdc083b63a9f9c4a77056a0d79f44f267"
|
|
"da0ed629d9c902f7e838957ea41aa442221c3aa9410db58302b468c6d7f2"
|
|
"113663809f0dcf187c108ced"),
|
|
// License:
|
|
a2bs_hex("f6fb3693413cc1d7d5e3459b856e4156c78f8d85d548939fd00474c8cded"
|
|
"c46835cc981758500fe61cc79383b4d9f87c3e33d19c2d25d7d15dd0f3d2"
|
|
"b1af4583b71e90c59886d297e78e929c2f3840c82c626914a4eb537b3a51"
|
|
"61d963472b6592c0fa1e415556bc009c2da22bcf743ac434e22f8a33b432"
|
|
"10dfd8aa09fe86105610f366e6fb7da18996cf7c7db425a9bb50e4a13190"
|
|
"a680b9f82d37d09658585abe3bf9f009a5c1ce38a7cefe17f71fb402768b"
|
|
"2d66b4ca523ed06729349695d7864d7cf7a1cc11d0da2b8a43db834d10b4"
|
|
"7d9579ec9e46986a133277b92c636cb2a6a823afe73317266c9c0601ddba"
|
|
"db76e1d254d6183b93a1ea91a7e6c567331b3ee3a5ab1484af91fd0f8dac"
|
|
"5fd980a67d8f33cc1d6cf20ee4c24582d03967ed48b6f28e7514e4d18f38"
|
|
"c8cb1e54fba59af7d6a79c6c5a7ab06baac964c7958d201910adca018022"
|
|
"fbeb8535b64f5ce83d3c"),
|
|
// Key set ID:
|
|
"ksid2f2e85ce8a677f60047d7024e07b5ae6",
|
|
// Usge entry:
|
|
a2bs_hex("b74880fbddc5bb9db82f09bc7de3ffd95a0a671b979d4c1f0564eaf63eb6"
|
|
"b5a8c3f16d9f964afbd011e2326f9c27afbe74536f3f0601a71d9c1c422f"
|
|
"335611bf3bf1a1c89e2dea27c17a9d9a58a74121e840b002e8a6fb590072"
|
|
"45be786c1f64"),
|
|
// Usage entry index:
|
|
9,
|
|
// DRM certificate:
|
|
kEmptyString,
|
|
// Wrapped private key:
|
|
CryptoWrappedKey(),
|
|
},
|
|
// File contents for test vector 1
|
|
// sessions:
|
|
// -token:
|
|
// b8e7f26b6b8b59babf05b5a1f8927b412a85bc8551a928f00856329814ae
|
|
// 5a82
|
|
// license_request:
|
|
// 4463dc57079c27e34ae115c6f65b08f6311c4ea604a6512c42470b6f692a
|
|
// 76ea769d60d0b6bcf8d565ef31eb925f38e2095039c9f2f113ecee020f11
|
|
// 26eb30165372d538b551ebd7bae5cf0bbeebb3cdb6f180d42868051aab8f
|
|
// f4947460dd96f0f8259fc6001059c998d2eb6902c064f9ae08e6cd3c7807
|
|
// e50379507b41620d15dd76c0b1e7ed9417efd6825959b5077f464e6429a4
|
|
// dee467a1ba2b05d38049912d5539f1ee9f5d8a569aa1c384384f847ed64f
|
|
// 6ffc101036da70e69c06e4916493e82e9fe3f65d85254c8c14f6ca0579bf
|
|
// b3eaa86b2d7bb5ff572eccfd70f2ea4695f326beadf241ae4311e428c7c1
|
|
// 2a0d4d1915cd0537ff0f62cf13eb2fa2
|
|
// license:
|
|
// bbe6b4b60da9d9bc34dcc8502fb81d8fd5fdbc8fa89605c86205f2b8c653
|
|
// 0ff64c8c31f579bd8eca603dfd5e397ac35e48931fd330351d01361bb31c
|
|
// aaa7dbf816a6144a12b6c22d1dceba20669ed635a40831066abd80713421
|
|
// 19d7da11c43696b2898d3df3b36beb8da013d9dc145343494b19d6da085f
|
|
// 4a41e421d3def2ad8b72dffffb6e79bbceaf8594045d16a62eed16904a35
|
|
// 69860c531a32eaa5abb868b1dd6a0b03d69c1a3f8336af80eb80badbbc7b
|
|
// 80ca5943bd5b374302147052201faed30e9ffa99fc00b47f7eeb469512a4
|
|
// 13e873f91d959cccacccd3585b7f00ed8d4685022101713c3adc439f2751
|
|
// 2a45926c1d2473477662c4bace72f380d105ddc9f7be49ed71991b3d9e29
|
|
// a2038201373f98a845a57624a692f44ebd316d26c48fee82b655583317ec
|
|
// a4aaa4dac841524a2dca111749629637ef29fa7e72645a875957fb3d98a5
|
|
// e6c8065b1349cfa23011cd6349d911c535475fed50be9eacb6a1ff3ea745
|
|
// 8823f0229f2fa90b7a7099e8ec349d3d0fe0277cba5157ca62c8fbaa893f
|
|
// 37b8c8cea2a0d2d2912caccf92d31aa17439479711b4a5b77445cc02c18b
|
|
// fe0195ce8f1fe59e317214005cee5e25904c9fb0af7e2b6b4dccdf78e61e
|
|
// 179a9f93996ec3c76f6da9b5a291bf08a73032b37edcbbbdd20cff94088a
|
|
// 489167c56e5e75b376874e9750212fe94d7656d9cd835db3b771ba5b58d2
|
|
// b255
|
|
// key_set_id: "ksid854c8a60a5a547e122c24fca"
|
|
// usage_entry:
|
|
// 7d2b905e5eafd4b28aeeb7633283579e48add21a68eb26cc8c3b2e344579
|
|
// 003b12a38554336305525fa6ab70f024a18c73631bb1531eca3f0782c72d
|
|
// ba017311b3f1e98c739632e305e4bc0b2561ae2b
|
|
// usage_entry_index: 5
|
|
// drm_certificate_id: 0
|
|
// -token:
|
|
// 5d637be37a9722aa35c23d346470851aca7d2edcd1a27edf124ea6
|
|
// license_request:
|
|
// bc96d6878e3086c33624821f1f3ece23f27e58222c2bb8d1615476a11792
|
|
// 63b58f6427e92911d961fc7a3afd947aed8c9aead1f08457925d2ce4e0f6
|
|
// 18b21942baa60b231eae864048f94f74ffa700e5777f812adb6f0cb6ba6f
|
|
// 0d145e3951191eb217140c32f2c7565053222131ff823bc36d80b24b561c
|
|
// cbea9d397fe00942e7ff73b8152cdc083b63a9f9c4a77056a0d79f44f267
|
|
// da0ed629d9c902f7e838957ea41aa442221c3aa9410db58302b468c6d7f2
|
|
// 113663809f0dcf187c108ced
|
|
// license:
|
|
// f6fb3693413cc1d7d5e3459b856e4156c78f8d85d548939fd00474c8cded
|
|
// c46835cc981758500fe61cc79383b4d9f87c3e33d19c2d25d7d15dd0f3d2
|
|
// b1af4583b71e90c59886d297e78e929c2f3840c82c626914a4eb537b3a51
|
|
// 61d963472b6592c0fa1e415556bc009c2da22bcf743ac434e22f8a33b432
|
|
// 10dfd8aa09fe86105610f366e6fb7da18996cf7c7db425a9bb50e4a13190
|
|
// a680b9f82d37d09658585abe3bf9f009a5c1ce38a7cefe17f71fb402768b
|
|
// 2d66b4ca523ed06729349695d7864d7cf7a1cc11d0da2b8a43db834d10b4
|
|
// 7d9579ec9e46986a133277b92c636cb2a6a823afe73317266c9c0601ddba
|
|
// db76e1d254d6183b93a1ea91a7e6c567331b3ee3a5ab1484af91fd0f8dac
|
|
// 5fd980a67d8f33cc1d6cf20ee4c24582d03967ed48b6f28e7514e4d18f38
|
|
// c8cb1e54fba59af7d6a79c6c5a7ab06baac964c7958d201910adca018022
|
|
// fbeb8535b64f5ce83d3c
|
|
// key_set_id: "ksid2f2e85ce8a677f60047d7024e07b5ae6"
|
|
// usage_entry:
|
|
// b74880fbddc5bb9db82f09bc7de3ffd95a0a671b979d4c1f0564eaf63eb6
|
|
// b5a8c3f16d9f964afbd011e2326f9c27afbe74536f3f0601a71d9c1c422f
|
|
// 335611bf3bf1a1c89e2dea27c17a9d9a58a74121e840b002e8a6fb590072
|
|
// 45be786c1f64
|
|
// usage_entry_index: 9
|
|
// drm_certificate_id: 0
|
|
// drm_certificate_cache: <none>
|
|
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 count: 1
|
|
{"app_1",
|
|
{
|
|
// PST:
|
|
a2bs_hex("bb3370ccd3c3c49573d6b74386d1886d9888bd81fe3241bcd2bac9407d1a"
|
|
"834e"),
|
|
// License request:
|
|
a2bs_hex("dc0e51cfa5863f6c0b32a4ad7fa40625dadcc2dcde9e7fa3983b8804d996"
|
|
"6803181682fc8ae831472e0b2fc26276242fbce624d286eedecce5555804"
|
|
"913b4f8f86c5ae86160b8434b109169a63da04c5265102d772c1180543ef"
|
|
"226d2140357aca6cf87da3f7e370dfc08ca92a1f7c7d314eab36292a9170"
|
|
"8f6c6ad84b37ee1c7dfafb99289206cb752d063f330efd85885f4b72ba1c"
|
|
"a5823eed865a461345e3d6417872bf3b0608b3d9e1004c11e7326d3ed406"
|
|
"192e13455d0ec4e1f558a147"),
|
|
// License:
|
|
a2bs_hex("f42a68ca3a14fb68f5992e4519f57970c3dae73f8da1d5b0b1da3eff7a95"
|
|
"4012a0dc634357f3f5477a820e182182f24ae8e835ab10c18386cc8a0727"
|
|
"d3f38b628639bfbd69a94d4053eab1c31e075e014cc578b226cfe24d6b42"
|
|
"db242972def8f23a4aae88451307c2abaf54c1803ae54e3f1149aa6e6d42"
|
|
"88cc7d474e876be07954e8b2deff4ade4bf30229fb6c92df4d66cd463f68"
|
|
"6b4754b940210eb59f1581d658ddf8de8389e0e2d123e2cae3c2be6eb194"
|
|
"8ccc896dd4cdf45f9090c96dfb925795cfb4ccda83e3eb4f745577b17fc1"
|
|
"66bf5f4103c9085134cad7863a41b04f32ef20201e54b55f1817ce589619"
|
|
"b096c254fd2c2fa4a06f4de35ccfd23e"),
|
|
// Key set ID:
|
|
"kside11109bf20cde544083ef4ee",
|
|
// Usage entry:
|
|
a2bs_hex("ea106c124476b753d39368a5966972a2729bb8bbea734a2b3e812b705eac"
|
|
"e016c8a03c9a406094d80059ef4ca26f1928fa2daa5de9a6f22372e5c7a9"
|
|
"41e610d1efb56ed7ce2228a70e2e150afb66edc2da066d463aa90ba0caff"
|
|
"078fbfec05c8"),
|
|
0,
|
|
kEmptyString,
|
|
CryptoWrappedKey(),
|
|
},
|
|
// File contents for test vector 2
|
|
// sessions:
|
|
// -token:
|
|
// bb3370ccd3c3c49573d6b74386d1886d9888bd81fe3241bcd2bac9407d1a
|
|
// 834e
|
|
// license_request:
|
|
// dc0e51cfa5863f6c0b32a4ad7fa40625dadcc2dcde9e7fa3983b8804d996
|
|
// 6803181682fc8ae831472e0b2fc26276242fbce624d286eedecce5555804
|
|
// 913b4f8f86c5ae86160b8434b109169a63da04c5265102d772c1180543ef
|
|
// 226d2140357aca6cf87da3f7e370dfc08ca92a1f7c7d314eab36292a9170
|
|
// 8f6c6ad84b37ee1c7dfafb99289206cb752d063f330efd85885f4b72ba1c
|
|
// a5823eed865a461345e3d6417872bf3b0608b3d9e1004c11e7326d3ed406
|
|
// 192e13455d0ec4e1f558a147
|
|
// license:
|
|
// f42a68ca3a14fb68f5992e4519f57970c3dae73f8da1d5b0b1da3eff7a95
|
|
// 4012a0dc634357f3f5477a820e182182f24ae8e835ab10c18386cc8a0727
|
|
// d3f38b628639bfbd69a94d4053eab1c31e075e014cc578b226cfe24d6b42
|
|
// db242972def8f23a4aae88451307c2abaf54c1803ae54e3f1149aa6e6d42
|
|
// 88cc7d474e876be07954e8b2deff4ade4bf30229fb6c92df4d66cd463f68
|
|
// 6b4754b940210eb59f1581d658ddf8de8389e0e2d123e2cae3c2be6eb194
|
|
// 8ccc896dd4cdf45f9090c96dfb925795cfb4ccda83e3eb4f745577b17fc1
|
|
// 66bf5f4103c9085134cad7863a41b04f32ef20201e54b55f1817ce589619
|
|
// b096c254fd2c2fa4a06f4de35ccfd23e
|
|
// key_set_id: "kside11109bf20cde544083ef4ee"
|
|
// usage_entry:
|
|
// ea106c124476b753d39368a5966972a2729bb8bbea734a2b3e812b705eac
|
|
// e016c8a03c9a406094d80059ef4ca26f1928fa2daa5de9a6f22372e5c7a9
|
|
// 41e610d1efb56ed7ce2228a70e2e150afb66edc2da066d463aa90ba0caff
|
|
// 078fbfec05c8
|
|
// usage_entry_index: 0
|
|
// drm_certificate_id: 0
|
|
// drm_certificate_cache: <none>
|
|
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 count: 1
|
|
{"app_2",
|
|
{
|
|
// PST:
|
|
a2bs_hex(
|
|
"9212a6926f21c6727c1ee89d5607047a1636f206f70e21fda86e01b6a4b5"),
|
|
// License request:
|
|
a2bs_hex("ef947abed64078edf5b21fe6d3fb65384595d63a6d03e4d1d397c5019dee"
|
|
"b6890d3ef8773002b91e255af0820fb594069df55d8abf96498e493f5c70"
|
|
"f6b85f50e12a1ed3c039ad0cd838fe44d3fa9e2bbddeb2919041203111ed"
|
|
"7778701b04d6b15f41d0bde799e20a38b27bf96fdbe844f10364baeb5935"
|
|
"96220993c608ac793de76c237ca350931a7e216538074dbd83ddf262d9f1"
|
|
"8acd91e1ea5372f7e773c5b64333"),
|
|
// License:
|
|
a2bs_hex("7709721b3aa48597e88c99e82eaf7dff07e87e0318d9d7cec29096ec5918"
|
|
"26aa7a359316d6de1d1329b408543e237de84c986987ead1bb6a0c38817e"
|
|
"93013e5c989d366f49590b834453ec64b7433bf0b3335b9e222bad4caf55"
|
|
"4d69575c58595283166fea42e89645fc7e2d3ac9e0c1399b096cf3fed1e5"
|
|
"deb1bc4e0ee894f0ae3f929dd7dba4530e5655edbbf6041df430482eb2e8"
|
|
"91b6a93af84d3c16dbad92733ffd34e8f4ce24506bead578d20cd3e291c2"
|
|
"fc2f811db875f49abc21a24277d2ba474fe6af6c14021cfead5513e0999e"
|
|
"094020ce08209bbc08f13fe2b96d7ba8213c8e9c85b6a623788d34da794e"
|
|
"17e4cd3bd65680b97fb30bad64ddc42b1bcfb0b83e5dda3501a5902ca609"
|
|
"f41837a0d5cd096e0659b67c"),
|
|
// Key set ID:
|
|
"ksid62d88ed7b292217b0238be",
|
|
// Usage entry:
|
|
a2bs_hex("5422463fd2e4dd47626e97dd6b4ee0b89523aaebe8d11e7e7be703ef01e4"
|
|
"9b17eaf020cede0a9e0e7b5d91e4db7abdce445936cb2deecdefefdb14b7"
|
|
"8f67b7ca5c733c9e88446fd814584584b86becbf6eb2b0e3d5603e8b"),
|
|
// Usage entry index:
|
|
25,
|
|
// DRM certificate:
|
|
kEmptyString,
|
|
// Wrapped private key:
|
|
CryptoWrappedKey(),
|
|
},
|
|
// File contents for test vector 3
|
|
// sessions:
|
|
// -token:
|
|
// 9212a6926f21c6727c1ee89d5607047a1636f206f70e21fda86e01b6a4b5
|
|
// license_request:
|
|
// ef947abed64078edf5b21fe6d3fb65384595d63a6d03e4d1d397c5019dee
|
|
// b6890d3ef8773002b91e255af0820fb594069df55d8abf96498e493f5c70
|
|
// f6b85f50e12a1ed3c039ad0cd838fe44d3fa9e2bbddeb2919041203111ed
|
|
// 7778701b04d6b15f41d0bde799e20a38b27bf96fdbe844f10364baeb5935
|
|
// 96220993c608ac793de76c237ca350931a7e216538074dbd83ddf262d9f1
|
|
// 8acd91e1ea5372f7e773c5b64333
|
|
// license:
|
|
// 7709721b3aa48597e88c99e82eaf7dff07e87e0318d9d7cec29096ec5918
|
|
// 26aa7a359316d6de1d1329b408543e237de84c986987ead1bb6a0c38817e
|
|
// 93013e5c989d366f49590b834453ec64b7433bf0b3335b9e222bad4caf55
|
|
// 4d69575c58595283166fea42e89645fc7e2d3ac9e0c1399b096cf3fed1e5
|
|
// deb1bc4e0ee894f0ae3f929dd7dba4530e5655edbbf6041df430482eb2e8
|
|
// 91b6a93af84d3c16dbad92733ffd34e8f4ce24506bead578d20cd3e291c2
|
|
// fc2f811db875f49abc21a24277d2ba474fe6af6c14021cfead5513e0999e
|
|
// 094020ce08209bbc08f13fe2b96d7ba8213c8e9c85b6a623788d34da794e
|
|
// 17e4cd3bd65680b97fb30bad64ddc42b1bcfb0b83e5dda3501a5902ca609
|
|
// f41837a0d5cd096e0659b67c
|
|
// key_set_id: "ksid62d88ed7b292217b0238be"
|
|
// usage_entry:
|
|
// 5422463fd2e4dd47626e97dd6b4ee0b89523aaebe8d11e7e7be703ef01e4
|
|
// 9b17eaf020cede0a9e0e7b5d91e4db7abdce445936cb2deecdefefdb14b7
|
|
// 8f67b7ca5c733c9e88446fd814584584b86becbf6eb2b0e3d5603e8b
|
|
// usage_entry_index: 25
|
|
// drm_certificate_id: 0
|
|
// drm_certificate_cache: <none>
|
|
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 count: 2
|
|
{"app_2",
|
|
{
|
|
// PST:
|
|
a2bs_hex("831fad51e52a403524539eab6a1b201e46674ca3b9167b1c1b53f5e5e3"),
|
|
// License request:
|
|
a2bs_hex("36d83acbc5e4ed027ed583e3b2169d98f4abedda15b781408e68efa14fef"
|
|
"a9f3f0309bcb5a9fff6580636ebe3548e5acb43b76cfeb29a9c86324e62a"
|
|
"eb40556005c6686e718f9bf61b0681d43b5b1e88084b3aea27a6b0e844e5"
|
|
"500b6fcfacf2ee44d6af7f64154ab3fd4fbd0b8056cf63971076a1eb3642"
|
|
"b78d5e76b84f4ed9f6220089863f8a4911691e79feffc9f804c4c36c7f85"
|
|
"e45b1d276c85875875267eb65da70fd2d5e9176d6914"),
|
|
// License:
|
|
a2bs_hex("317bd7063bfb9fae1b2e46f4cf15b7bc8c92517ff5c32cbb52ae4b67afc5"
|
|
"d569cb66a462def7a18a7d0acebf9f6e8a604356ade2c81450c5466a4728"
|
|
"90b03eefcf65388f060e24551c67b7d46ae5d4d841d5cc63d137fd543fae"
|
|
"2c771756590b90e480ca0126f1fc0090ace62499e47569fc52196c788f80"
|
|
"139755bdf12a7acb29fd6e23a46a4c036f04ff1ed6cd714094253bf1c587"
|
|
"62c93f0ddf8a73c4be927ffec2723a16d8ffe5128851f58537461275f6aa"
|
|
"1976e3b399b7243919207e040ec16c5328e8ab082278fce0e5d3df5c5f92"
|
|
"dba51fa6613587d4ece31f2c001b49bfaed434f9512e895c2e09c88ddbf1"
|
|
"84bfafe4d82e5d05a26ac06cde29faf6ab05b96685649c923779ce5ef7f3"
|
|
"16531ada8e74e45ab1dc1d75648aa2de052674728867e87639ff9b782a3"
|
|
"3"),
|
|
// Key set ID.
|
|
"kside1d30b33b55f2deb4716",
|
|
// Usage entry:
|
|
a2bs_hex("d44a9d70a7c582559f089b1c0fdfcbdaf5e26b672fca5d58e889b407a0ba"
|
|
"8599079cde11fadfab23aa1b97622839f3b7e1a96f8332bec5fbcbc9eb64"
|
|
"fd5ed05887b8fa3bfd6ecc7bc91e621342732062d2f4411b763e20328af6"
|
|
"f8ef5030e2f8027aef9e"),
|
|
// Usage entry index:
|
|
6,
|
|
// DRM certirficate:
|
|
kEmptyString,
|
|
// Wrapped private key:
|
|
CryptoWrappedKey(),
|
|
},
|
|
// File contents for test vector 4
|
|
// sessions:
|
|
// -token:
|
|
// 9212a6926f21c6727c1ee89d5607047a1636f206f70e21fda86e01b6a4b5
|
|
// license_request:
|
|
// ef947abed64078edf5b21fe6d3fb65384595d63a6d03e4d1d397c5019dee
|
|
// b6890d3ef8773002b91e255af0820fb594069df55d8abf96498e493f5c70
|
|
// f6b85f50e12a1ed3c039ad0cd838fe44d3fa9e2bbddeb2919041203111ed
|
|
// 7778701b04d6b15f41d0bde799e20a38b27bf96fdbe844f10364baeb5935
|
|
// 96220993c608ac793de76c237ca350931a7e216538074dbd83ddf262d9f1
|
|
// 8acd91e1ea5372f7e773c5b64333
|
|
// license:
|
|
// 7709721b3aa48597e88c99e82eaf7dff07e87e0318d9d7cec29096ec5918
|
|
// 26aa7a359316d6de1d1329b408543e237de84c986987ead1bb6a0c38817e
|
|
// 93013e5c989d366f49590b834453ec64b7433bf0b3335b9e222bad4caf55
|
|
// 4d69575c58595283166fea42e89645fc7e2d3ac9e0c1399b096cf3fed1e5
|
|
// deb1bc4e0ee894f0ae3f929dd7dba4530e5655edbbf6041df430482eb2e8
|
|
// 91b6a93af84d3c16dbad92733ffd34e8f4ce24506bead578d20cd3e291c2
|
|
// fc2f811db875f49abc21a24277d2ba474fe6af6c14021cfead5513e0999e
|
|
// 094020ce08209bbc08f13fe2b96d7ba8213c8e9c85b6a623788d34da794e
|
|
// 17e4cd3bd65680b97fb30bad64ddc42b1bcfb0b83e5dda3501a5902ca609
|
|
// f41837a0d5cd096e0659b67c
|
|
// key_set_id: "ksid62d88ed7b292217b0238be"
|
|
// usage_entry:
|
|
// 5422463fd2e4dd47626e97dd6b4ee0b89523aaebe8d11e7e7be703ef01e4
|
|
// 9b17eaf020cede0a9e0e7b5d91e4db7abdce445936cb2deecdefefdb14b7
|
|
// 8f67b7ca5c733c9e88446fd814584584b86becbf6eb2b0e3d5603e8b
|
|
// usage_entry_index: 25
|
|
// drm_certificate_id: 0
|
|
// -token:
|
|
// 831fad51e52a403524539eab6a1b201e46674ca3b9167b1c1b53f5e5e3
|
|
// license_request:
|
|
// 36d83acbc5e4ed027ed583e3b2169d98f4abedda15b781408e68efa14fef
|
|
// a9f3f0309bcb5a9fff6580636ebe3548e5acb43b76cfeb29a9c86324e62a
|
|
// eb40556005c6686e718f9bf61b0681d43b5b1e88084b3aea27a6b0e844e5
|
|
// 500b6fcfacf2ee44d6af7f64154ab3fd4fbd0b8056cf63971076a1eb3642
|
|
// b78d5e76b84f4ed9f6220089863f8a4911691e79feffc9f804c4c36c7f85
|
|
// e45b1d276c85875875267eb65da70fd2d5e9176d6914
|
|
// license:
|
|
// 317bd7063bfb9fae1b2e46f4cf15b7bc8c92517ff5c32cbb52ae4b67afc5
|
|
// d569cb66a462def7a18a7d0acebf9f6e8a604356ade2c81450c5466a4728
|
|
// 90b03eefcf65388f060e24551c67b7d46ae5d4d841d5cc63d137fd543fae
|
|
// 2c771756590b90e480ca0126f1fc0090ace62499e47569fc52196c788f80
|
|
// 139755bdf12a7acb29fd6e23a46a4c036f04ff1ed6cd714094253bf1c587
|
|
// 62c93f0ddf8a73c4be927ffec2723a16d8ffe5128851f58537461275f6aa
|
|
// 1976e3b399b7243919207e040ec16c5328e8ab082278fce0e5d3df5c5f92
|
|
// dba51fa6613587d4ece31f2c001b49bfaed434f9512e895c2e09c88ddbf1
|
|
// 84bfafe4d82e5d05a26ac06cde29faf6ab05b96685649c923779ce5ef7f3
|
|
// 16531ada8e74e45ab1dc1d75648aa2de052674728867e87639ff9b782a33
|
|
// key_set_id: "kside1d30b33b55f2deb4716"
|
|
// usage_entry:
|
|
// d44a9d70a7c582559f089b1c0fdfcbdaf5e26b672fca5d58e889b407a0ba
|
|
// 8599079cde11fadfab23aa1b97622839f3b7e1a96f8332bec5fbcbc9eb64
|
|
// fd5ed05887b8fa3bfd6ecc7bc91e621342732062d2f4411b763e20328af6
|
|
// f8ef5030e2f8027aef9e
|
|
// usage_entry_index: 6
|
|
// drm_certificate_id: 0
|
|
// drm_certificate_cache: <none>
|
|
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 2
|
|
{"app_1",
|
|
{
|
|
// PST
|
|
a2bs_hex("eace80e30bfda213f1ce4dbcfd9d4d24b8e2ae00054d167d9d7ae9954706"
|
|
"2b9113"),
|
|
// License request:
|
|
a2bs_hex(
|
|
"68a7665a21348fc0590328608dc520be40f5b749328568fe383ef69c1a58"
|
|
"7ab2446cf9c41d821373d0856a883b316519a42218f80e7bd5764d16bac9"
|
|
"a9b427a7278f5940e563fcf6dee0ff3aadbb702ebf2c54ec354ae7acc84e"
|
|
"e6a54bca1f30e38ef71c44a81d0009b1484feaf4f1a56f58c35bb2372c80"
|
|
"c6dfb389e6de60bdd3d46c03975715260f6fdbe42facb64c22eda9635c04"
|
|
"da79434e1c41fbd2fdbbab6598283226c0278e8e0a96d780d3436523efd1"),
|
|
// License:
|
|
a2bs_hex("ff6fecf7157828812a2d6dcb15383a6d9af4519ef804c6053a10c436002d"
|
|
"e3a4efcc017755f4ad1101bdc813e2d211732418dee529cbb413c48aa588"
|
|
"4c76a5c6f556a715055560d4247f5bf310956949a3a171a4aa608a484468"
|
|
"84e7676d558ff64d392b84e617805693d90f1e9b7b540c383d384d7f7ce0"
|
|
"6c23618681bd838ceb1a514047f1c562c43159cc5e21588fbfce8a354111"
|
|
"160f1a1e2bd3d798a000579bdfdb977252809ee1502df8045972fe8aac84"
|
|
"0211c2f8d9e4d5be18509c327c647d654c4b6cc430b98f1ff37c96fab087"
|
|
"fb561b8cc18480f877c873594d3148ff74b0e3c6327c27ca876dae742239"
|
|
"8fc5e85269cba49ad099"),
|
|
// Key set ID:
|
|
"ksid8e80350cbef6463a0025e6cc",
|
|
// Usage entry:
|
|
a2bs_hex("7ccc7ce96055e16a52fa192ea2cf3c9df3e89b9133a52286f71e6c6d82d0"
|
|
"435f6b2155dfde590b347d8c86f62d7dfbaae640c237256f609e5da9cc6c"
|
|
"103465fe3441612bbdfdf4d1c24b2147feb8565cef4993e439c9d564a39a"
|
|
"4ac5bb1da69acb44da06e4522c9a93d310cdda5dac1e1e0b91abff41e4e2"
|
|
"edda4001"),
|
|
// Usage entry index:
|
|
7,
|
|
// DRM certificate:
|
|
kDrmCertificate,
|
|
// Wrapped private key:
|
|
kCryptoWrappedKey,
|
|
},
|
|
// File contents for test vector 5
|
|
// sessions:
|
|
// -token:
|
|
// bb3370ccd3c3c49573d6b74386d1886d9888bd81fe3241bcd2bac9407d1a
|
|
// 834e
|
|
// license_request:
|
|
// dc0e51cfa5863f6c0b32a4ad7fa40625dadcc2dcde9e7fa3983b8804d996
|
|
// 6803181682fc8ae831472e0b2fc26276242fbce624d286eedecce5555804
|
|
// 913b4f8f86c5ae86160b8434b109169a63da04c5265102d772c1180543ef
|
|
// 226d2140357aca6cf87da3f7e370dfc08ca92a1f7c7d314eab36292a9170
|
|
// 8f6c6ad84b37ee1c7dfafb99289206cb752d063f330efd85885f4b72ba1c
|
|
// a5823eed865a461345e3d6417872bf3b0608b3d9e1004c11e7326d3ed406
|
|
// 192e13455d0ec4e1f558a147
|
|
// license:
|
|
// f42a68ca3a14fb68f5992e4519f57970c3dae73f8da1d5b0b1da3eff7a95
|
|
// 4012a0dc634357f3f5477a820e182182f24ae8e835ab10c18386cc8a0727
|
|
// d3f38b628639bfbd69a94d4053eab1c31e075e014cc578b226cfe24d6b42
|
|
// db242972def8f23a4aae88451307c2abaf54c1803ae54e3f1149aa6e6d42
|
|
// 88cc7d474e876be07954e8b2deff4ade4bf30229fb6c92df4d66cd463f68
|
|
// 6b4754b940210eb59f1581d658ddf8de8389e0e2d123e2cae3c2be6eb194
|
|
// 8ccc896dd4cdf45f9090c96dfb925795cfb4ccda83e3eb4f745577b17fc1
|
|
// 66bf5f4103c9085134cad7863a41b04f32ef20201e54b55f1817ce589619
|
|
// b096c254fd2c2fa4a06f4de35ccfd23e
|
|
// key_set_id: "kside11109bf20cde544083ef4ee"
|
|
// usage_entry:
|
|
// ea106c124476b753d39368a5966972a2729bb8bbea734a2b3e812b705eac
|
|
// e016c8a03c9a406094d80059ef4ca26f1928fa2daa5de9a6f22372e5c7a9
|
|
// 41e610d1efb56ed7ce2228a70e2e150afb66edc2da066d463aa90ba0caff
|
|
// 078fbfec05c8
|
|
// usage_entry_index: 0
|
|
// drm_certificate_id: 0
|
|
// -token:
|
|
// eace80e30bfda213f1ce4dbcfd9d4d24b8e2ae00054d167d9d7ae9954706
|
|
// 2b9113
|
|
// license_request:
|
|
// 68a7665a21348fc0590328608dc520be40f5b749328568fe383ef69c1a58
|
|
// 7ab2446cf9c41d821373d0856a883b316519a42218f80e7bd5764d16bac9
|
|
// a9b427a7278f5940e563fcf6dee0ff3aadbb702ebf2c54ec354ae7acc84e
|
|
// e6a54bca1f30e38ef71c44a81d0009b1484feaf4f1a56f58c35bb2372c80
|
|
// c6dfb389e6de60bdd3d46c03975715260f6fdbe42facb64c22eda9635c04
|
|
// da79434e1c41fbd2fdbbab6598283226c0278e8e0a96d780d3436523efd1
|
|
// license:
|
|
// ff6fecf7157828812a2d6dcb15383a6d9af4519ef804c6053a10c436002d
|
|
// e3a4efcc017755f4ad1101bdc813e2d211732418dee529cbb413c48aa588
|
|
// 4c76a5c6f556a715055560d4247f5bf310956949a3a171a4aa608a484468
|
|
// 84e7676d558ff64d392b84e617805693d90f1e9b7b540c383d384d7f7ce0
|
|
// 6c23618681bd838ceb1a514047f1c562c43159cc5e21588fbfce8a354111
|
|
// 160f1a1e2bd3d798a000579bdfdb977252809ee1502df8045972fe8aac84
|
|
// 0211c2f8d9e4d5be18509c327c647d654c4b6cc430b98f1ff37c96fab087
|
|
// fb561b8cc18480f877c873594d3148ff74b0e3c6327c27ca876dae742239
|
|
// 8fc5e85269cba49ad099
|
|
// key_set_id: "ksid8e80350cbef6463a0025e6cc"
|
|
// usage_entry:
|
|
// 7ccc7ce96055e16a52fa192ea2cf3c9df3e89b9133a52286f71e6c6d82d0
|
|
// 435f6b2155dfde590b347d8c86f62d7dfbaae640c237256f609e5da9cc6c
|
|
// 103465fe3441612bbdfdf4d1c24b2147feb8565cef4993e439c9d564a39a
|
|
// 4ac5bb1da69acb44da06e4522c9a93d310cdda5dac1e1e0b91abff41e4e2
|
|
// edda4001
|
|
// usage_entry_index: 7
|
|
// drm_certificate_id: 0
|
|
// drm_certificate_cache:
|
|
// -drm_certificate_id: 0
|
|
// drm_certificate:
|
|
// certificate: "a drm certificate"
|
|
// wrapped_private_key: "a wrapped private key"
|
|
// key_type: RSA
|
|
// acquisition_time_seconds: 0
|
|
// expiration_time_seconds: 0
|
|
a2bs_hex(
|
|
"0AA00A080310012A990A0AEA040A20BB3370CCD3C3C49573D6B74386D1886D9888BD8"
|
|
"1FE3241BCD2BAC9407D1A834E12C001DC0E51CFA5863F6C0B32A4AD7FA40625DADCC2"
|
|
"DCDE9E7FA3983B8804D9966803181682FC8AE831472E0B2FC26276242FBCE624D286E"
|
|
"EDECCE5555804913B4F8F86C5AE86160B8434B109169A63DA04C5265102D772C11805"
|
|
"43EF226D2140357ACA6CF87DA3F7E370DFC08CA92A1F7C7D314EAB36292A91708F6C6"
|
|
"AD84B37EE1C7DFAFB99289206CB752D063F330EFD85885F4B72BA1CA5823EED865A46"
|
|
"1345E3D6417872BF3B0608B3D9E1004C11E7326D3ED406192E13455D0EC4E1F558A14"
|
|
"71A8002F42A68CA3A14FB68F5992E4519F57970C3DAE73F8DA1D5B0B1DA3EFF7A9540"
|
|
"12A0DC634357F3F5477A820E182182F24AE8E835AB10C18386CC8A0727D3F38B62863"
|
|
"9BFBD69A94D4053EAB1C31E075E014CC578B226CFE24D6B42DB242972DEF8F23A4AAE"
|
|
"88451307C2ABAF54C1803AE54E3F1149AA6E6D4288CC7D474E876BE07954E8B2DEFF4"
|
|
"ADE4BF30229FB6C92DF4D66CD463F686B4754B940210EB59F1581D658DDF8DE8389E0"
|
|
"E2D123E2CAE3C2BE6EB1948CCC896DD4CDF45F9090C96DFB925795CFB4CCDA83E3EB4"
|
|
"F745577B17FC166BF5F4103C9085134CAD7863A41B04F32EF20201E54B55F1817CE58"
|
|
"9619B096C254FD2C2FA4A06F4DE35CCFD23E221C6B736964653131313039626632306"
|
|
"3646535343430383365663465652A60EA106C124476B753D39368A5966972A2729BB8"
|
|
"BBEA734A2B3E812B705EACE016C8A03C9A406094D80059EF4CA26F1928FA2DAA5DE9A"
|
|
"6F22372E5C7A941E610D1EFB56ED7CE2228A70E2E150AFB66EDC2DA066D463AA90BA0"
|
|
"CAFF078FBFEC05C830000AF7040A21EACE80E30BFDA213F1CE4DBCFD9D4D24B8E2AE0"
|
|
"0054D167D9D7AE99547062B911312B40168A7665A21348FC0590328608DC520BE40F5"
|
|
"B749328568FE383EF69C1A587AB2446CF9C41D821373D0856A883B316519A42218F80"
|
|
"E7BD5764D16BAC9A9B427A7278F5940E563FCF6DEE0FF3AADBB702EBF2C54EC354AE7"
|
|
"ACC84EE6A54BCA1F30E38EF71C44A81D0009B1484FEAF4F1A56F58C35BB2372C80C6D"
|
|
"FB389E6DE60BDD3D46C03975715260F6FDBE42FACB64C22EDA9635C04DA79434E1C41"
|
|
"FBD2FDBBAB6598283226C0278E8E0A96D780D3436523EFD11AFA01FF6FECF71578288"
|
|
"12A2D6DCB15383A6D9AF4519EF804C6053A10C436002DE3A4EFCC017755F4AD1101BD"
|
|
"C813E2D211732418DEE529CBB413C48AA5884C76A5C6F556A715055560D4247F5BF31"
|
|
"0956949A3A171A4AA608A48446884E7676D558FF64D392B84E617805693D90F1E9B7B"
|
|
"540C383D384D7F7CE06C23618681BD838CEB1A514047F1C562C43159CC5E21588FBF"
|
|
"CE8A354111160F1A1E2BD3D798A000579BDFDB977252809EE1502DF8045972FE8AAC8"
|
|
"40211C2F8D9E4D5BE18509C327C647D654C4B6CC430B98F1FF37C96FAB087FB561B8C"
|
|
"C18480F877C873594D3148FF74B0E3C6327C27CA876DAE7422398FC5E85269CBA49AD"
|
|
"099221C6B7369643865383033353063626566363436336130303235653663632A7C7C"
|
|
"CC7CE96055E16A52FA192EA2CF3C9DF3E89B9133A52286F71E6C6D82D0435F6B2155D"
|
|
"FDE590B347D8C86F62D7DFBAAE640C237256F609E5DA9CC6C103465FE3441612BBDFD"
|
|
"F4D1C24B2147FEB8565CEF4993E439C9D564A39A4AC5BB1DA69ACB44DA06E4522C9A9"
|
|
"3D310CDDA5DAC1E1E0B91ABFF41E4E2EDDA40013007380012300800122C0A11612064"
|
|
"726D20636572746966696361746512156120777261707065642070726976617465206"
|
|
"B657918001220BD67878F6AA958EC6996061F69BF65E9806221BCA1CF26FFA4BF1D0B"
|
|
"4ECE8806")},
|
|
// Test vector 6 - app id: "", usage entry count: 3
|
|
{"",
|
|
{
|
|
// PST:
|
|
a2bs_hex("1fbf0a1d2432805a0f8292ff627a9a7c60b733a51b365892c832261d71"),
|
|
// License request:
|
|
a2bs_hex("1ad116a26f423c7019fa8dca226c2d2bdeec91beb1fd38d6890e32745a4d"
|
|
"bb9409b65fe834c2522d92621b265a9d526b4fcadcacf4c4deb364661118"
|
|
"494fd1561621392bf4450e6833be290d49e59e665a031375ee56ad1f3392"
|
|
"436ba213abc5ac10a199e73123f84f7644282137da24cbde30c10a6eb847"
|
|
"ca72b8b311ad329d2c9cb0909c2ecbe3fbaf88e81bb5aeaa6480fff67e87"
|
|
"77fa00c783aa160f1e211cb9bf3835fa8f82923c05895c359cf306f5cb90"
|
|
"a73b8ce2ce9ed210485e1c57"),
|
|
// License:
|
|
a2bs_hex("0bf120627d01690d14321fa967d81997b959b35ed7745dee9e885dd402df"
|
|
"83c3b8f52999b16c2d1d47bf4724a9ced984175eb8a032d613294c148020"
|
|
"74154c34fd40fe6ea74fa830fdcb9cc7e0799a75aadaf41ddda3d0038896"
|
|
"da966b1a67ff4e6c7403debfdbe7d1d48f1a3304124f04c974bfa0eff4d0"
|
|
"b1733a84aa6f89ec74c89dad2168da4706f6dfcfd980502b573d0f7b3791"
|
|
"252cc918394e8b3a3e1ef37ce48b7fd6a2040db5915f55809f284ce4ec24"
|
|
"4149f53038b432964705e26c3bb6535461b7fff27ac8eff679dce8e5bfe1"
|
|
"d000b69a22d9efc1f310ba2f0115c96b00bc15888fbb3edd230834458491"
|
|
"eede2440550dd59c613dc8433efe979c71e9"),
|
|
// Key set ID:
|
|
"ksida5d27d7b0ccd433203e157",
|
|
// Usage entry:
|
|
a2bs_hex("1be7cd47cefdef69576348ef9a143be2311041a5f80259938fa886139679"
|
|
"4eabcc985a695be2ef4a8361d86979859c490922d92d3ed0484e1666270a"
|
|
"a96388bf6be3c4f4f0b7e2f59efc6b8e965d8fadd5ab86b2bb816d2573ec"
|
|
"36eb42b571297681be152d40639d"),
|
|
// Usage entry index:
|
|
0,
|
|
// DRM certificate:
|
|
kEmptyString,
|
|
// Wrapped private key.
|
|
CryptoWrappedKey(),
|
|
},
|
|
// File contents for test vector 6
|
|
// sessions:
|
|
// -token:
|
|
// b8e7f26b6b8b59babf05b5a1f8927b412a85bc8551a928f00856329814ae
|
|
// 5a82
|
|
// license_request:
|
|
// 4463dc57079c27e34ae115c6f65b08f6311c4ea604a6512c42470b6f692a
|
|
// 76ea769d60d0b6bcf8d565ef31eb925f38e2095039c9f2f113ecee020f11
|
|
// 26eb30165372d538b551ebd7bae5cf0bbeebb3cdb6f180d42868051aab8f
|
|
// f4947460dd96f0f8259fc6001059c998d2eb6902c064f9ae08e6cd3c7807
|
|
// e50379507b41620d15dd76c0b1e7ed9417efd6825959b5077f464e6429a4
|
|
// dee467a1ba2b05d38049912d5539f1ee9f5d8a569aa1c384384f847ed64f
|
|
// 6ffc101036da70e69c06e4916493e82e9fe3f65d85254c8c14f6ca0579bf
|
|
// b3eaa86b2d7bb5ff572eccfd70f2ea4695f326beadf241ae4311e428c7c1
|
|
// 2a0d4d1915cd0537ff0f62cf13eb2fa2
|
|
// license:
|
|
// bbe6b4b60da9d9bc34dcc8502fb81d8fd5fdbc8fa89605c86205f2b8c653
|
|
// 0ff64c8c31f579bd8eca603dfd5e397ac35e48931fd330351d01361bb31c
|
|
// aaa7dbf816a6144a12b6c22d1dceba20669ed635a40831066abd80713421
|
|
// 19d7da11c43696b2898d3df3b36beb8da013d9dc145343494b19d6da085f
|
|
// 4a41e421d3def2ad8b72dffffb6e79bbceaf8594045d16a62eed16904a35
|
|
// 69860c531a32eaa5abb868b1dd6a0b03d69c1a3f8336af80eb80badbbc7b
|
|
// 80ca5943bd5b374302147052201faed30e9ffa99fc00b47f7eeb469512a4
|
|
// 13e873f91d959cccacccd3585b7f00ed8d4685022101713c3adc439f2751
|
|
// 2a45926c1d2473477662c4bace72f380d105ddc9f7be49ed71991b3d9e29
|
|
// a2038201373f98a845a57624a692f44ebd316d26c48fee82b655583317ec
|
|
// a4aaa4dac841524a2dca111749629637ef29fa7e72645a875957fb3d98a5
|
|
// e6c8065b1349cfa23011cd6349d911c535475fed50be9eacb6a1ff3ea745
|
|
// 8823f0229f2fa90b7a7099e8ec349d3d0fe0277cba5157ca62c8fbaa893f
|
|
// 37b8c8cea2a0d2d2912caccf92d31aa17439479711b4a5b77445cc02c18b
|
|
// fe0195ce8f1fe59e317214005cee5e25904c9fb0af7e2b6b4dccdf78e61e
|
|
// 179a9f93996ec3c76f6da9b5a291bf08a73032b37edcbbbdd20cff94088a
|
|
// 489167c56e5e75b376874e9750212fe94d7656d9cd835db3b771ba5b58d2
|
|
// b255
|
|
// key_set_id: "ksid854c8a60a5a547e122c24fca"
|
|
// usage_entry:
|
|
// 7d2b905e5eafd4b28aeeb7633283579e48add21a68eb26cc8c3b2e344579
|
|
// 003b12a38554336305525fa6ab70f024a18c73631bb1531eca3f0782c72d
|
|
// ba017311b3f1e98c739632e305e4bc0b2561ae2b
|
|
// usage_entry_index: 5
|
|
// drm_certificate_id: 0
|
|
// -token:
|
|
// 5d637be37a9722aa35c23d346470851aca7d2edcd1a27edf124ea6
|
|
// license_request:
|
|
// bc96d6878e3086c33624821f1f3ece23f27e58222c2bb8d1615476a11792
|
|
// 63b58f6427e92911d961fc7a3afd947aed8c9aead1f08457925d2ce4e0f6
|
|
// 18b21942baa60b231eae864048f94f74ffa700e5777f812adb6f0cb6ba6f
|
|
// 0d145e3951191eb217140c32f2c7565053222131ff823bc36d80b24b561c
|
|
// cbea9d397fe00942e7ff73b8152cdc083b63a9f9c4a77056a0d79f44f267
|
|
// da0ed629d9c902f7e838957ea41aa442221c3aa9410db58302b468c6d7f2
|
|
// 113663809f0dcf187c108ced
|
|
// license:
|
|
// f6fb3693413cc1d7d5e3459b856e4156c78f8d85d548939fd00474c8cded
|
|
// c46835cc981758500fe61cc79383b4d9f87c3e33d19c2d25d7d15dd0f3d2
|
|
// b1af4583b71e90c59886d297e78e929c2f3840c82c626914a4eb537b3a51
|
|
// 61d963472b6592c0fa1e415556bc009c2da22bcf743ac434e22f8a33b432
|
|
// 10dfd8aa09fe86105610f366e6fb7da18996cf7c7db425a9bb50e4a13190
|
|
// a680b9f82d37d09658585abe3bf9f009a5c1ce38a7cefe17f71fb402768b
|
|
// 2d66b4ca523ed06729349695d7864d7cf7a1cc11d0da2b8a43db834d10b4
|
|
// 7d9579ec9e46986a133277b92c636cb2a6a823afe73317266c9c0601ddba
|
|
// db76e1d254d6183b93a1ea91a7e6c567331b3ee3a5ab1484af91fd0f8dac
|
|
// 5fd980a67d8f33cc1d6cf20ee4c24582d03967ed48b6f28e7514e4d18f38
|
|
// c8cb1e54fba59af7d6a79c6c5a7ab06baac964c7958d201910adca018022
|
|
// fbeb8535b64f5ce83d3c
|
|
// key_set_id: "ksid2f2e85ce8a677f60047d7024e07b5ae6"
|
|
// usage_entry:
|
|
// b74880fbddc5bb9db82f09bc7de3ffd95a0a671b979d4c1f0564eaf63eb6
|
|
// b5a8c3f16d9f964afbd011e2326f9c27afbe74536f3f0601a71d9c1c422f
|
|
// 335611bf3bf1a1c89e2dea27c17a9d9a58a74121e840b002e8a6fb590072
|
|
// 45be786c1f64
|
|
// usage_entry_index: 9
|
|
// drm_certificate_id: 0
|
|
// -token:
|
|
// 1fbf0a1d2432805a0f8292ff627a9a7c60b733a51b365892c832261d71
|
|
// license_request:
|
|
// 1ad116a26f423c7019fa8dca226c2d2bdeec91beb1fd38d6890e32745a4d
|
|
// bb9409b65fe834c2522d92621b265a9d526b4fcadcacf4c4deb364661118
|
|
// 494fd1561621392bf4450e6833be290d49e59e665a031375ee56ad1f3392
|
|
// 436ba213abc5ac10a199e73123f84f7644282137da24cbde30c10a6eb847
|
|
// ca72b8b311ad329d2c9cb0909c2ecbe3fbaf88e81bb5aeaa6480fff67e87
|
|
// 77fa00c783aa160f1e211cb9bf3835fa8f82923c05895c359cf306f5cb90
|
|
// a73b8ce2ce9ed210485e1c57
|
|
// license:
|
|
// 0bf120627d01690d14321fa967d81997b959b35ed7745dee9e885dd402df
|
|
// 83c3b8f52999b16c2d1d47bf4724a9ced984175eb8a032d613294c148020
|
|
// 74154c34fd40fe6ea74fa830fdcb9cc7e0799a75aadaf41ddda3d0038896
|
|
// da966b1a67ff4e6c7403debfdbe7d1d48f1a3304124f04c974bfa0eff4d0
|
|
// b1733a84aa6f89ec74c89dad2168da4706f6dfcfd980502b573d0f7b3791
|
|
// 252cc918394e8b3a3e1ef37ce48b7fd6a2040db5915f55809f284ce4ec24
|
|
// 4149f53038b432964705e26c3bb6535461b7fff27ac8eff679dce8e5bfe1
|
|
// d000b69a22d9efc1f310ba2f0115c96b00bc15888fbb3edd230834458491
|
|
// eede2440550dd59c613dc8433efe979c71e9
|
|
// key_set_id: "ksida5d27d7b0ccd433203e157"
|
|
// usage_entry:
|
|
// 1be7cd47cefdef69576348ef9a143be2311041a5f80259938fa886139679
|
|
// 4eabcc985a695be2ef4a8361d86979859c490922d92d3ed0484e1666270a
|
|
// a96388bf6be3c4f4f0b7e2f59efc6b8e965d8fadd5ab86b2bb816d2573ec
|
|
// 36eb42b571297681be152d40639d
|
|
// usage_entry_index: 0
|
|
// drm_certificate_id: 0
|
|
// drm_certificate_cache: <none>
|
|
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 count: 3
|
|
{"app_2",
|
|
{
|
|
// PST:
|
|
a2bs_hex("8f922e955b269458ed1345bde9a24516520a536817e8e8612154a1"),
|
|
// License request:
|
|
a2bs_hex("d4acc596a52055cee710e1fec44796dbf3ae6b017ab156d9bff7bfdb8f1e"
|
|
"6352bfbe453034968f940c36ac18800e22bb2ff71268053702ef3fce3fb2"
|
|
"d607a078e0d1449fcc9d0675d41b1a65f78e3c02370d18112aae1e2577ff"
|
|
"9087825a45125db5dee8e27bd14ea8666b4e8e6aba6811c40b585aabb9c9"
|
|
"185209a48d11130ff690316916961f28286c71c3e985d7dc3352166e414b"
|
|
"89da2c17cc5b69fc9c00990697f5"),
|
|
// License:
|
|
a2bs_hex("169d3c432f9c2f8b99e11632bd7d6a63f3d57679c567bedcb2e596ace105"
|
|
"0453732040cb468e9c43f6009b430ca4a4046d017e67a4badd5b71c0c9fc"
|
|
"e2274817f0bcda311a4f8703e6dc32aedf30e6f9abd40e249fc8b0a5045c"
|
|
"c1e47e60a60b4893ef92602f5584e1162f4ff3ee6d906228f97b442ace1f"
|
|
"b175d113b671bdbe4ceffdd98f2bb094c0dfac03b79541a44d8affdc987f"
|
|
"4268706b5a554e998907eb7126e8c6bc07c837d8aeebea3249e37b4b7dd7"
|
|
"327300fe7e62c15981cf73a13e806d065bcadc2c747256907a5493592b07"
|
|
"a0c07f9cd805fcdc0d30f70e4c4b2959a0f52385c6bd3e6eeb4e3d81fdc1"
|
|
"a9dc3c76faf1bfed913d58567fa9b296d27dff5217c583e7c134a642601f"
|
|
"8237"),
|
|
// Key set ID:
|
|
"kside684918d6c39bfa652a40ad936",
|
|
// Usage entry:
|
|
a2bs_hex("703f69807c8f4d140168874b924a625132eb3b896a381d617b8fb83c7314"
|
|
"a6b634d840925f711ae330599f0e0863800902b05d201a8a87b88a4bc170"
|
|
"65a1a8a556c34bf86b53afcc9951be15bea9ab55"),
|
|
// Usage entry index:
|
|
27,
|
|
// DRM certificate:
|
|
kAnotherDrmCertificate,
|
|
// Wrapped private key:
|
|
kAnotherCryptoWrappedKey,
|
|
},
|
|
// File contents for test vector 7
|
|
// sessions:
|
|
// -token:
|
|
// 9212a6926f21c6727c1ee89d5607047a1636f206f70e21fda86e01b6a4b5
|
|
// license_request:
|
|
// ef947abed64078edf5b21fe6d3fb65384595d63a6d03e4d1d397c5019dee
|
|
// b6890d3ef8773002b91e255af0820fb594069df55d8abf96498e493f5c70
|
|
// f6b85f50e12a1ed3c039ad0cd838fe44d3fa9e2bbddeb2919041203111ed
|
|
// 7778701b04d6b15f41d0bde799e20a38b27bf96fdbe844f10364baeb5935
|
|
// 96220993c608ac793de76c237ca350931a7e216538074dbd83ddf262d9f1
|
|
// 8acd91e1ea5372f7e773c5b64333
|
|
// license:
|
|
// 7709721b3aa48597e88c99e82eaf7dff07e87e0318d9d7cec29096ec5918
|
|
// 26aa7a359316d6de1d1329b408543e237de84c986987ead1bb6a0c38817e
|
|
// 93013e5c989d366f49590b834453ec64b7433bf0b3335b9e222bad4caf55
|
|
// 4d69575c58595283166fea42e89645fc7e2d3ac9e0c1399b096cf3fed1e5
|
|
// deb1bc4e0ee894f0ae3f929dd7dba4530e5655edbbf6041df430482eb2e8
|
|
// 91b6a93af84d3c16dbad92733ffd34e8f4ce24506bead578d20cd3e291c2
|
|
// fc2f811db875f49abc21a24277d2ba474fe6af6c14021cfead5513e0999e
|
|
// 094020ce08209bbc08f13fe2b96d7ba8213c8e9c85b6a623788d34da794e
|
|
// 17e4cd3bd65680b97fb30bad64ddc42b1bcfb0b83e5dda3501a5902ca609
|
|
// f41837a0d5cd096e0659b67c
|
|
// key_set_id: "ksid62d88ed7b292217b0238be"
|
|
// usage_entry:
|
|
// 5422463fd2e4dd47626e97dd6b4ee0b89523aaebe8d11e7e7be703ef01e4
|
|
// 9b17eaf020cede0a9e0e7b5d91e4db7abdce445936cb2deecdefefdb14b7
|
|
// 8f67b7ca5c733c9e88446fd814584584b86becbf6eb2b0e3d5603e8b
|
|
// usage_entry_index: 25
|
|
// drm_certificate_id: 0
|
|
// -token:
|
|
// 831fad51e52a403524539eab6a1b201e46674ca3b9167b1c1b53f5e5e3
|
|
// license_request:
|
|
// 36d83acbc5e4ed027ed583e3b2169d98f4abedda15b781408e68efa14fef
|
|
// a9f3f0309bcb5a9fff6580636ebe3548e5acb43b76cfeb29a9c86324e62a
|
|
// eb40556005c6686e718f9bf61b0681d43b5b1e88084b3aea27a6b0e844e5
|
|
// 500b6fcfacf2ee44d6af7f64154ab3fd4fbd0b8056cf63971076a1eb3642
|
|
// b78d5e76b84f4ed9f6220089863f8a4911691e79feffc9f804c4c36c7f85
|
|
// e45b1d276c85875875267eb65da70fd2d5e9176d6914
|
|
// license:
|
|
// 317bd7063bfb9fae1b2e46f4cf15b7bc8c92517ff5c32cbb52ae4b67afc5
|
|
// d569cb66a462def7a18a7d0acebf9f6e8a604356ade2c81450c5466a4728
|
|
// 90b03eefcf65388f060e24551c67b7d46ae5d4d841d5cc63d137fd543fae
|
|
// 2c771756590b90e480ca0126f1fc0090ace62499e47569fc52196c788f80
|
|
// 139755bdf12a7acb29fd6e23a46a4c036f04ff1ed6cd714094253bf1c587
|
|
// 62c93f0ddf8a73c4be927ffec2723a16d8ffe5128851f58537461275f6aa
|
|
// 1976e3b399b7243919207e040ec16c5328e8ab082278fce0e5d3df5c5f92
|
|
// dba51fa6613587d4ece31f2c001b49bfaed434f9512e895c2e09c88ddbf1
|
|
// 84bfafe4d82e5d05a26ac06cde29faf6ab05b96685649c923779ce5ef7f3
|
|
// 16531ada8e74e45ab1dc1d75648aa2de052674728867e87639ff9b782a33
|
|
// key_set_id: "kside1d30b33b55f2deb4716"
|
|
// usage_entry:
|
|
// d44a9d70a7c582559f089b1c0fdfcbdaf5e26b672fca5d58e889b407a0ba
|
|
// 8599079cde11fadfab23aa1b97622839f3b7e1a96f8332bec5fbcbc9eb64
|
|
// fd5ed05887b8fa3bfd6ecc7bc91e621342732062d2f4411b763e20328af6
|
|
// f8ef5030e2f8027aef9e
|
|
// usage_entry_index: 6
|
|
// drm_certificate_id: 0
|
|
// -token: 8f922e955b269458ed1345bde9a24516520a536817e8e8612154a1
|
|
// license_request:
|
|
// d4acc596a52055cee710e1fec44796dbf3ae6b017ab156d9bff7bfdb8f1e
|
|
// 6352bfbe453034968f940c36ac18800e22bb2ff71268053702ef3fce3fb2
|
|
// d607a078e0d1449fcc9d0675d41b1a65f78e3c02370d18112aae1e2577ff
|
|
// 9087825a45125db5dee8e27bd14ea8666b4e8e6aba6811c40b585aabb9c9
|
|
// 185209a48d11130ff690316916961f28286c71c3e985d7dc3352166e414b
|
|
// 89da2c17cc5b69fc9c00990697f5
|
|
// license:
|
|
// 169d3c432f9c2f8b99e11632bd7d6a63f3d57679c567bedcb2e596ace105
|
|
// 0453732040cb468e9c43f6009b430ca4a4046d017e67a4badd5b71c0c9fc
|
|
// e2274817f0bcda311a4f8703e6dc32aedf30e6f9abd40e249fc8b0a5045c
|
|
// c1e47e60a60b4893ef92602f5584e1162f4ff3ee6d906228f97b442ace1f
|
|
// b175d113b671bdbe4ceffdd98f2bb094c0dfac03b79541a44d8affdc987f
|
|
// 4268706b5a554e998907eb7126e8c6bc07c837d8aeebea3249e37b4b7dd7
|
|
// 327300fe7e62c15981cf73a13e806d065bcadc2c747256907a5493592b07
|
|
// a0c07f9cd805fcdc0d30f70e4c4b2959a0f52385c6bd3e6eeb4e3d81fdc1
|
|
// a9dc3c76faf1bfed913d58567fa9b296d27dff5217c583e7c134a642601f
|
|
// 8237
|
|
// key_set_id: "kside684918d6c39bfa652a40ad936"
|
|
// usage_entry:
|
|
// 703f69807c8f4d140168874b924a625132eb3b896a381d617b8fb83c7314
|
|
// a6b634d840925f711ae330599f0e0863800902b05d201a8a87b88a4bc170
|
|
// 65a1a8a556c34bf86b53afcc9951be15bea9ab55
|
|
// usage_entry_index: 27
|
|
// drm_certificate_id: 0
|
|
// drm_certificate_cache:
|
|
// -drm_certificate_id: 0
|
|
// drm_certificate:
|
|
// certificate: "another drm certificate"
|
|
// wrapped_private_key: "another wrapped private key"
|
|
// key_type: ECC
|
|
// acquisition_time_seconds: 0
|
|
// expiration_time_seconds: 0
|
|
a2bs_hex(
|
|
"0AF60E080310012AEF0E0ADC040A1E9212A6926F21C6727C1EE89D5607047A1636F20"
|
|
"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"
|
|
"04FF1ED6CD714094253BF1C58762C93F0DDF8A73C4BE927FFEC2723A16D8FFE51288"
|
|
"51F58537461275F6AA1976E3B399B7243919207E040EC16C5328E8AB082278FCE0E5D"
|
|
"3DF5C5F92DBA51FA6613587D4ECE31F2C001B49BFAED434F9512E895C2E09C88DDBF1"
|
|
"84BFAFE4D82E5D05A26AC06CDE29FAF6AB05B96685649C923779CE5EF7F316531ADA8"
|
|
"E74E45AB1DC1D75648AA2DE052674728867E87639FF9B782A3322186B736964653164"
|
|
"33306233336235356632646562343731362A64D44A9D70A7C582559F089B1C0FDFCBD"
|
|
"AF5E26B672FCA5D58E889B407A0BA8599079CDE11FADFAB23AA1B97622839F3B7E1A9"
|
|
"6F8332BEC5FBCBC9EB64FD5ED05887B8FA3BFD6ECC7BC91E621342732062D2F4411B7"
|
|
"63E20328AF6F8EF5030E2F8027AEF9E30060ACD040A1B8F922E955B269458ED1345BD"
|
|
"E9A24516520A536817E8E8612154A112A401D4ACC596A52055CEE710E1FEC44796DBF"
|
|
"3AE6B017AB156D9BFF7BFDB8F1E6352BFBE453034968F940C36AC18800E22BB2FF712"
|
|
"68053702EF3FCE3FB2D607A078E0D1449FCC9D0675D41B1A65F78E3C02370D18112AA"
|
|
"E1E2577FF9087825A45125DB5DEE8E27BD14EA8666B4E8E6ABA6811C40B585AABB9C9"
|
|
"185209A48D11130FF690316916961F28286C71C3E985D7DC3352166E414B89DA2C17C"
|
|
"C5B69FC9C00990697F51A9002169D3C432F9C2F8B99E11632BD7D6A63F3D57679C567"
|
|
"BEDCB2E596ACE1050453732040CB468E9C43F6009B430CA4A4046D017E67A4BADD5B7"
|
|
"1C0C9FCE2274817F0BCDA311A4F8703E6DC32AEDF30E6F9ABD40E249FC8B0A5045CC1"
|
|
"E47E60A60B4893EF92602F5584E1162F4FF3EE6D906228F97B442ACE1FB175D113B67"
|
|
"1BDBE4CEFFDD98F2BB094C0DFAC03B79541A44D8AFFDC987F4268706B5A554E998907"
|
|
"EB7126E8C6BC07C837D8AEEBEA3249E37B4B7DD7327300FE7E62C15981CF73A13E806"
|
|
"D065BCADC2C747256907A5493592B07A0C07F9CD805FCDC0D30F70E4C4B2959A0F523"
|
|
"85C6BD3E6EEB4E3D81FDC1A9DC3C76FAF1BFED913D58567FA9B296D27DFF5217C583E"
|
|
"7C134A642601F8237221E6B7369646536383439313864366333396266613635326134"
|
|
"3061643933362A50703F69807C8F4D140168874B924A625132EB3B896A381D617B8FB"
|
|
"83C7314A6B634D840925F711AE330599F0E0863800902B05D201A8A87B88A4BC17065"
|
|
"A1A8A556C34BF86B53AFCC9951BE15BEA9AB55301B3800123C080012380A17616E6F7"
|
|
"46865722064726D206365727469666963617465121B616E6F74686572207772617070"
|
|
"65642070726976617465206B65791801122082BB366A1D04CD51FA6BE0E5E1F7B9393"
|
|
"0C2E887586E2E5FBC6838ADDD3A209B")},
|
|
// Test vector 8 - app id: "app_1", usage entry count: 2
|
|
{"app_1",
|
|
{
|
|
// PST:
|
|
a2bs_hex("d0b9a07ad7ffeec13784bd60da011be3589f3e450227fd36b1a3f6786cdb"
|
|
"fe8f"),
|
|
// License request:
|
|
a2bs_hex("a419c5687a592099dc67da8bc4f5ef238c80fe4ce3e2fcb025392efb1438"
|
|
"4b581b595a0e8fa95de637fb2184719eb36ad6539ee9df0f67697f91d018"
|
|
"6e04552e811196029cf4e256518ddf3215af8ec61442c17d6753b93f9d3a"
|
|
"9240bae39bacf5563659cf47d3a611ce20ed3ebbf86cddad60cc2847c459"
|
|
"5dcfd934d012ce205960052158461d7c5d480de2e597876e64e8f8de6928"
|
|
"29a3"),
|
|
// Licenes:
|
|
a2bs_hex("f7c19357e50fc474437c1a635c5bae8f6f51afa20750766db19457dff7ae"
|
|
"f2cae78848a225cc6a088bbcffead5be6aab6fc8af091bf459c3bd9bcfa1"
|
|
"8de53ef76db1b4826cf0b8ff7b2d7c44bbadb3cd7aedd8f639d1f38c52a5"
|
|
"8611a9782aeace72be69a73d2e091a1120dc63f7ba6f1cb6cddd69e9a236"
|
|
"232ed8c14cee665756ba51f1d2e2530ab3662ce1b6efba91c5f10c53abc8"
|
|
"86d6f25b5dc40417e54270843f3b454c8c047fc366249e30379b0fbe0174"
|
|
"fcab8b8405ae7f20f6f2b81f11082ff0e270b75f1e1aa7ed5806f4e65b46"
|
|
"b872dbcb703d7bf20b9ecaa481425a5218d85a49595f3ed268d61f1be8e3"
|
|
"8e6126eb075fa6b7ae80431c8521c4bc2ce701e45d33bfca9a5b0b66b550"
|
|
"aab21eae41f84cadfd2517dee9a2c139ad475c387d25"),
|
|
// Key set ID:
|
|
"ksid321bb636f8a3f5cd5d54a236",
|
|
// Usage entry:
|
|
a2bs_hex("c3cb027611397b5d70cc0b08e0f5249cd19996da674e33722902173d45d7"
|
|
"09914a3d7e898d93170317bfcff34861c0d687048cc93542a75a2c99b232"
|
|
"3fafea1ee0c3e3d24edf2633"),
|
|
// Usage entry index:
|
|
7,
|
|
// DRM certificate:
|
|
kDrmCertificate,
|
|
// Wrapped private key.
|
|
kCryptoWrappedKey,
|
|
},
|
|
// File contents for test vector 8
|
|
// sessions:
|
|
// -token:
|
|
// bb3370ccd3c3c49573d6b74386d1886d9888bd81fe3241bcd2bac9407d1a
|
|
// 834e
|
|
// license_request:
|
|
// dc0e51cfa5863f6c0b32a4ad7fa40625dadcc2dcde9e7fa3983b8804d996
|
|
// 6803181682fc8ae831472e0b2fc26276242fbce624d286eedecce5555804
|
|
// 913b4f8f86c5ae86160b8434b109169a63da04c5265102d772c1180543ef
|
|
// 226d2140357aca6cf87da3f7e370dfc08ca92a1f7c7d314eab36292a9170
|
|
// 8f6c6ad84b37ee1c7dfafb99289206cb752d063f330efd85885f4b72ba1c
|
|
// a5823eed865a461345e3d6417872bf3b0608b3d9e1004c11e7326d3ed406
|
|
// 192e13455d0ec4e1f558a147
|
|
// license:
|
|
// f42a68ca3a14fb68f5992e4519f57970c3dae73f8da1d5b0b1da3eff7a95
|
|
// 4012a0dc634357f3f5477a820e182182f24ae8e835ab10c18386cc8a0727
|
|
// d3f38b628639bfbd69a94d4053eab1c31e075e014cc578b226cfe24d6b42
|
|
// db242972def8f23a4aae88451307c2abaf54c1803ae54e3f1149aa6e6d42
|
|
// 88cc7d474e876be07954e8b2deff4ade4bf30229fb6c92df4d66cd463f68
|
|
// 6b4754b940210eb59f1581d658ddf8de8389e0e2d123e2cae3c2be6eb194
|
|
// 8ccc896dd4cdf45f9090c96dfb925795cfb4ccda83e3eb4f745577b17fc1
|
|
// 66bf5f4103c9085134cad7863a41b04f32ef20201e54b55f1817ce589619
|
|
// b096c254fd2c2fa4a06f4de35ccfd23e
|
|
// key_set_id: "kside11109bf20cde544083ef4ee"
|
|
// usage_entry:
|
|
// ea106c124476b753d39368a5966972a2729bb8bbea734a2b3e812b705eac
|
|
// e016c8a03c9a406094d80059ef4ca26f1928fa2daa5de9a6f22372e5c7a9
|
|
// 41e610d1efb56ed7ce2228a70e2e150afb66edc2da066d463aa90ba0caff
|
|
// 078fbfec05c8
|
|
// usage_entry_index: 0
|
|
// drm_certificate_id: 0
|
|
// -token:
|
|
// eace80e30bfda213f1ce4dbcfd9d4d24b8e2ae00054d167d9d7ae9954706
|
|
// 2b9113
|
|
// license_request:
|
|
// 68a7665a21348fc0590328608dc520be40f5b749328568fe383ef69c1a58
|
|
// 7ab2446cf9c41d821373d0856a883b316519a42218f80e7bd5764d16bac9
|
|
// a9b427a7278f5940e563fcf6dee0ff3aadbb702ebf2c54ec354ae7acc84e
|
|
// e6a54bca1f30e38ef71c44a81d0009b1484feaf4f1a56f58c35bb2372c80
|
|
// c6dfb389e6de60bdd3d46c03975715260f6fdbe42facb64c22eda9635c04
|
|
// da79434e1c41fbd2fdbbab6598283226c0278e8e0a96d780d3436523efd1
|
|
// license:
|
|
// ff6fecf7157828812a2d6dcb15383a6d9af4519ef804c6053a10c436002d
|
|
// e3a4efcc017755f4ad1101bdc813e2d211732418dee529cbb413c48aa588
|
|
// 4c76a5c6f556a715055560d4247f5bf310956949a3a171a4aa608a484468
|
|
// 84e7676d558ff64d392b84e617805693d90f1e9b7b540c383d384d7f7ce0
|
|
// 6c23618681bd838ceb1a514047f1c562c43159cc5e21588fbfce8a354111
|
|
// 160f1a1e2bd3d798a000579bdfdb977252809ee1502df8045972fe8aac84
|
|
// 0211c2f8d9e4d5be18509c327c647d654c4b6cc430b98f1ff37c96fab087
|
|
// fb561b8cc18480f877c873594d3148ff74b0e3c6327c27ca876dae742239
|
|
// 8fc5e85269cba49ad099
|
|
// key_set_id: "ksid8e80350cbef6463a0025e6cc"
|
|
// usage_entry:
|
|
// 7ccc7ce96055e16a52fa192ea2cf3c9df3e89b9133a52286f71e6c6d82d0
|
|
// 435f6b2155dfde590b347d8c86f62d7dfbaae640c237256f609e5da9cc6c
|
|
// 103465fe3441612bbdfdf4d1c24b2147feb8565cef4993e439c9d564a39a
|
|
// 4ac5bb1da69acb44da06e4522c9a93d310cdda5dac1e1e0b91abff41e4e2
|
|
// edda4001
|
|
// usage_entry_index: 7
|
|
// drm_certificate_id: 0
|
|
// -token:
|
|
// d0b9a07ad7ffeec13784bd60da011be3589f3e450227fd36b1a3f6786cdb
|
|
// fe8f
|
|
// license_request:
|
|
// a419c5687a592099dc67da8bc4f5ef238c80fe4ce3e2fcb025392efb1438
|
|
// 4b581b595a0e8fa95de637fb2184719eb36ad6539ee9df0f67697f91d018
|
|
// 6e04552e811196029cf4e256518ddf3215af8ec61442c17d6753b93f9d3a
|
|
// 9240bae39bacf5563659cf47d3a611ce20ed3ebbf86cddad60cc2847c459
|
|
// 5dcfd934d012ce205960052158461d7c5d480de2e597876e64e8f8de6928
|
|
// 29a3
|
|
// license:
|
|
// f7c19357e50fc474437c1a635c5bae8f6f51afa20750766db19457dff7ae
|
|
// f2cae78848a225cc6a088bbcffead5be6aab6fc8af091bf459c3bd9bcfa1
|
|
// 8de53ef76db1b4826cf0b8ff7b2d7c44bbadb3cd7aedd8f639d1f38c52a5
|
|
// 8611a9782aeace72be69a73d2e091a1120dc63f7ba6f1cb6cddd69e9a236
|
|
// 232ed8c14cee665756ba51f1d2e2530ab3662ce1b6efba91c5f10c53abc8
|
|
// 86d6f25b5dc40417e54270843f3b454c8c047fc366249e30379b0fbe0174
|
|
// fcab8b8405ae7f20f6f2b81f11082ff0e270b75f1e1aa7ed5806f4e65b46
|
|
// b872dbcb703d7bf20b9ecaa481425a5218d85a49595f3ed268d61f1be8e3
|
|
// 8e6126eb075fa6b7ae80431c8521c4bc2ce701e45d33bfca9a5b0b66b550
|
|
// aab21eae41f84cadfd2517dee9a2c139ad475c387d25
|
|
// key_set_id: "ksid321bb636f8a3f5cd5d54a236"
|
|
// usage_entry:
|
|
// c3cb027611397b5d70cc0b08e0f5249cd19996da674e33722902173d45d7
|
|
// 09914a3d7e898d93170317bfcff34861c0d687048cc93542a75a2c99b232
|
|
// 3fafea1ee0c3e3d24edf2633
|
|
// usage_entry_index: 7
|
|
// drm_certificate_id: 0
|
|
// drm_certificate_cache:
|
|
// -drm_certificate_id: 0
|
|
// drm_certificate:
|
|
// certificate: "a drm certificate"
|
|
// wrapped_private_key: "a wrapped private key"
|
|
// key_type: RSA
|
|
// acquisition_time_seconds: 0
|
|
// expiration_time_seconds: 0
|
|
a2bs_hex(
|
|
"0AF30E080310012AEC0E0AEA040A20BB3370CCD3C3C49573D6B74386D1886D9888BD8"
|
|
"1FE3241BCD2BAC9407D1A834E12C001DC0E51CFA5863F6C0B32A4AD7FA40625DADCC2"
|
|
"DCDE9E7FA3983B8804D9966803181682FC8AE831472E0B2FC26276242FBCE624D286E"
|
|
"EDECCE5555804913B4F8F86C5AE86160B8434B109169A63DA04C5265102D772C11805"
|
|
"43EF226D2140357ACA6CF87DA3F7E370DFC08CA92A1F7C7D314EAB36292A91708F6C6"
|
|
"AD84B37EE1C7DFAFB99289206CB752D063F330EFD85885F4B72BA1CA5823EED865A46"
|
|
"1345E3D6417872BF3B0608B3D9E1004C11E7326D3ED406192E13455D0EC4E1F558A14"
|
|
"71A8002F42A68CA3A14FB68F5992E4519F57970C3DAE73F8DA1D5B0B1DA3EFF7A9540"
|
|
"12A0DC634357F3F5477A820E182182F24AE8E835AB10C18386CC8A0727D3F38B62863"
|
|
"9BFBD69A94D4053EAB1C31E075E014CC578B226CFE24D6B42DB242972DEF8F23A4AAE"
|
|
"88451307C2ABAF54C1803AE54E3F1149AA6E6D4288CC7D474E876BE07954E8B2DEFF4"
|
|
"ADE4BF30229FB6C92DF4D66CD463F686B4754B940210EB59F1581D658DDF8DE8389E0"
|
|
"E2D123E2CAE3C2BE6EB1948CCC896DD4CDF45F9090C96DFB925795CFB4CCDA83E3EB4"
|
|
"F745577B17FC166BF5F4103C9085134CAD7863A41B04F32EF20201E54B55F1817CE58"
|
|
"9619B096C254FD2C2FA4A06F4DE35CCFD23E221C6B736964653131313039626632306"
|
|
"3646535343430383365663465652A60EA106C124476B753D39368A5966972A2729BB8"
|
|
"BBEA734A2B3E812B705EACE016C8A03C9A406094D80059EF4CA26F1928FA2DAA5DE9A"
|
|
"6F22372E5C7A941E610D1EFB56ED7CE2228A70E2E150AFB66EDC2DA066D463AA90BA0"
|
|
"CAFF078FBFEC05C830000AF7040A21EACE80E30BFDA213F1CE4DBCFD9D4D24B8E2AE0"
|
|
"0054D167D9D7AE99547062B911312B40168A7665A21348FC0590328608DC520BE40F5"
|
|
"B749328568FE383EF69C1A587AB2446CF9C41D821373D0856A883B316519A42218F80"
|
|
"E7BD5764D16BAC9A9B427A7278F5940E563FCF6DEE0FF3AADBB702EBF2C54EC354AE7"
|
|
"ACC84EE6A54BCA1F30E38EF71C44A81D0009B1484FEAF4F1A56F58C35BB2372C80C6D"
|
|
"FB389E6DE60BDD3D46C03975715260F6FDBE42FACB64C22EDA9635C04DA79434E1C41"
|
|
"FBD2FDBBAB6598283226C0278E8E0A96D780D3436523EFD11AFA01FF6FECF71578288"
|
|
"12A2D6DCB15383A6D9AF4519EF804C6053A10C436002DE3A4EFCC017755F4AD1101BD"
|
|
"C813E2D211732418DEE529CBB413C48AA5884C76A5C6F556A715055560D4247F5BF31"
|
|
"0956949A3A171A4AA608A48446884E7676D558FF64D392B84E617805693D90F1E9B7B"
|
|
"540C383D384D7F7CE06C23618681BD838CEB1A514047F1C562C43159CC5E21588FBFC"
|
|
"E8A354111160F1A1E2BD3D798A000579BDFDB977252809EE1502DF8045972FE8AAC84"
|
|
"0211C2F8D9E4D5BE18509C327C647D654C4B6CC430B98F1FF37C96FAB087FB561B8CC"
|
|
"18480F877C873594D3148FF74B0E3C6327C27CA876DAE7422398FC5E85269CBA49AD0"
|
|
"99221C6B7369643865383033353063626566363436336130303235653663632A7C7CC"
|
|
"C7CE96055E16A52FA192EA2CF3C9DF3E89B9133A52286F71E6C6D82D0435F6B2155DF"
|
|
"DE590B347D8C86F62D7DFBAAE640C237256F609E5DA9CC6C103465FE3441612BBDFDF"
|
|
"4D1C24B2147FEB8565CEF4993E439C9D564A39A4AC5BB1DA69ACB44DA06E4522C9A93"
|
|
"D310CDDA5DAC1E1E0B91ABFF41E4E2EDDA4001300738000AD0040A20D0B9A07AD7FFE"
|
|
"EC13784BD60DA011BE3589F3E450227FD36B1A3F6786CDBFE8F129801A419C5687A59"
|
|
"2099DC67DA8BC4F5EF238C80FE4CE3E2FCB025392EFB14384B581B595A0E8FA95DE63"
|
|
"7FB2184719EB36AD6539EE9DF0F67697F91D0186E04552E811196029CF4E256518DDF"
|
|
"3215AF8EC61442C17D6753B93F9D3A9240BAE39BACF5563659CF47D3A611CE20ED3EB"
|
|
"BF86CDDAD60CC2847C4595DCFD934D012CE205960052158461D7C5D480DE2E597876E"
|
|
"64E8F8DE692829A31AA402F7C19357E50FC474437C1A635C5BAE8F6F51AFA20750766"
|
|
"DB19457DFF7AEF2CAE78848A225CC6A088BBCFFEAD5BE6AAB6FC8AF091BF459C3BD9B"
|
|
"CFA18DE53EF76DB1B4826CF0B8FF7B2D7C44BBADB3CD7AEDD8F639D1F38C52A58611A"
|
|
"9782AEACE72BE69A73D2E091A1120DC63F7BA6F1CB6CDDD69E9A236232ED8C14CEE66"
|
|
"5756BA51F1D2E2530AB3662CE1B6EFBA91C5F10C53ABC886D6F25B5DC40417E542708"
|
|
"43F3B454C8C047FC366249E30379B0FBE0174FCAB8B8405AE7F20F6F2B81F11082FF0"
|
|
"E270B75F1E1AA7ED5806F4E65B46B872DBCB703D7BF20B9ECAA481425A5218D85A495"
|
|
"95F3ED268D61F1BE8E38E6126EB075FA6B7AE80431C8521C4BC2CE701E45D33BFCA9A"
|
|
"5B0B66B550AAB21EAE41F84CADFD2517DEE9A2C139AD475C387D25221C6B736964333"
|
|
"2316262363336663861336635636435643534613233362A48C3CB027611397B5D70CC"
|
|
"0B08E0F5249CD19996DA674E33722902173D45D709914A3D7E898D93170317BFCFF34"
|
|
"861C0D687048CC93542A75A2C99B2323FAFEA1EE0C3E3D24EDF263330073800123008"
|
|
"00122C0A11612064726D2063657274696669636174651215612077726170706564207"
|
|
"0726976617465206B657918001220C662693A9E231B85CEB7A3A50DEAA8279777B363"
|
|
"2C6D9ABC12FBB295018482E4")},
|
|
}; // kUsageInfoTestData
|
|
|
|
const 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,
|
|
kEmptyString,
|
|
CryptoWrappedKey(),
|
|
}; // kUsageInfoUpdateTestData
|
|
|
|
struct HlsAttributesInfo {
|
|
std::string key_set_id;
|
|
CdmHlsMethod method;
|
|
std::string media_segment_iv;
|
|
std::string file_data;
|
|
};
|
|
|
|
const 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"),
|
|
}};
|
|
|
|
constexpr size_t kNumberOfHlsAttributes = ArraySize(kHlsAttributesTestData);
|
|
|
|
// Usage Table and Entry Test Data
|
|
// Note: Make sure the number of entries in kUsageEntriesTestData and
|
|
// kUsageTableInfoTestData are equal.
|
|
const CdmUsageEntryInfo kUsageEntriesTestData[] = {
|
|
// usage entry 0
|
|
{kStorageLicense, "ksid0", "", 1318402800, 1321254000},
|
|
// usage entry 1
|
|
{kStorageLicense, "ksid1", "", 1050649200, 1053500400},
|
|
// usage entry 2
|
|
{kStorageUsageInfo, "", "app_id_2", 694252800, 0},
|
|
// usage entry 3
|
|
{kStorageUsageInfo, "", "app_id_3", 983001600, 0},
|
|
// usage entry 4
|
|
{kStorageLicense, "ksid4", "", 316166400, 319017600},
|
|
// usage entry 5
|
|
{kStorageUsageInfo, "", "app_id_5", 802162800, 0},
|
|
};
|
|
|
|
struct UsageTableTestInfo {
|
|
UsageTableHeader usage_table_header;
|
|
std::string file_data;
|
|
};
|
|
|
|
const UsageTableTestInfo kUsageTableInfoTestData[] = {
|
|
// usage table 0
|
|
|
|
{a2bs_hex("5574517CCC"),
|
|
a2bs_hex("0A26080510013A200A055574517CCC1215080112056B7369643020F0F5D4F404"
|
|
"28F0F882F6041801122055C2834976220A2819445B8D6EF5ADE9D7A050006941"
|
|
"3EDFB9948F928B317B89")},
|
|
// usage table 1
|
|
{a2bs_hex("CA870203010001288001"),
|
|
a2bs_hex("0A46080510013A400A0ACA8702030100012880011217080112056B736964301A"
|
|
"0020F0F5D4F40428F0F882F6041217080112056B736964311A0020F0C4FEF403"
|
|
"28F0C7ACF60318011220B000674E4E24E67384C4631DE05CB3C1E07CDE6B0412"
|
|
"CACE359DEAED6CF2D566")},
|
|
// usage table 2
|
|
{a2bs_hex("7A7D507618A5D3A68F05228E023082010A028201"),
|
|
a2bs_hex("0A66080510013A600A147A7D507618A5D3A68F05228E023082010A0282011217"
|
|
"080112056B736964301A0020F0F5D4F40428F0F882F6041217080112056B7369"
|
|
"64311A0020F0C4FEF40328F0C7ACF6031214080212001A086170705F69645F32"
|
|
"2080EA85CB02180112202701F8F75537EBA12217796401A81E9E0F59A5B10F51"
|
|
"F6C12E3BE3D8747CB745")},
|
|
// usage table 3
|
|
{a2bs_hex("E83A4902772DAFD2740B7748E9C3B1752D6F12859CED07E82969B4EC"),
|
|
a2bs_hex("0A8401080510013A7E0A1CE83A4902772DAFD2740B7748E9C3B1752D6F12859C"
|
|
"ED07E82969B4EC1217080112056B736964301A0020F0F5D4F40428F0F882F604"
|
|
"1217080112056B736964311A0020F0C4FEF40328F0C7ACF6031214080212001A"
|
|
"086170705F69645F322080EA85CB021214080212001A086170705F69645F3320"
|
|
"80D4DDD40318011220776BD3D0BBCC573AEC7466A8B0E4F1A013495A3BE492F3"
|
|
"FF4BA3D15FC9697902")},
|
|
// usage table 4
|
|
{a2bs_hex("CA870203010001288001300112800250D1F8B1ECF849B60FF93E37C4DEEF"
|
|
"52F1CCFC047EF42300131F9C4758F4"),
|
|
a2bs_hex("0AAF01080510013AA8010A2DCA870203010001288001300112800250D1F8B1EC"
|
|
"F849B60FF93E37C4DEEF52F1CCFC047EF42300131F9C4758F41217080112056B"
|
|
"736964301A0020F0F5D4F40428F0F882F6041217080112056B736964311A0020"
|
|
"F0C4FEF40328F0C7ACF6031214080212001A086170705F69645F322080EA85CB"
|
|
"021214080212001A086170705F69645F332080D4DDD4031217080112056B7369"
|
|
"64341A002080A2E196012880A58F980118011220E7F0F123E513FCF3BC6BC17B"
|
|
"1531A8317654C5EF005655348D82FA01FDAD85CB")},
|
|
// usage table 5
|
|
{a2bs_hex("EC83A4902772DAFD2740B7748E9C3B1752D6F12859CED07E8882969B433E"
|
|
"C29AC6FDBE79230B0FAED5D94CF6B829A420BBE3270323941776EE60DD6B"),
|
|
a2bs_hex("0AD401080510013ACD010A3CEC83A4902772DAFD2740B7748E9C3B1752D6F128"
|
|
"59CED07E8882969B433EC29AC6FDBE79230B0FAED5D94CF6B829A420BBE32703"
|
|
"23941776EE60DD6B1217080112056B736964301A0020F0F5D4F40428F0F882F6"
|
|
"041217080112056B736964311A0020F0C4FEF40328F0C7ACF603121408021200"
|
|
"1A086170705F69645F322080EA85CB021214080212001A086170705F69645F33"
|
|
"2080D4DDD4031217080112056B736964341A002080A2E196012880A58F980112"
|
|
"14080212001A086170705F69645F3520F090C0FE0218011220A35C771A67AECF"
|
|
"06A72468DC2C380E5CFDCD377A8ADF848F26B7F22D24D23872")},
|
|
};
|
|
|
|
const CdmUsageEntryInfo kUsageEntriesWithoutLruData[] = {
|
|
{kStorageLicense, "ksid0", "", 0, 0},
|
|
{kStorageUsageInfo, "", "app_id_1", 0, 0}};
|
|
|
|
const std::string kUsageTableWithoutLruData = a2bs_hex(
|
|
"0A1F080510013A191209080112056B73696430120C08021A086170705F69645F"
|
|
"31122044C964271799F0631AE388BD150A873C5DD16B35F61BFF0300857AEEB8"
|
|
"454FA2");
|
|
|
|
// DeleteMultipleUsageInfoByKeySetIds test data.
|
|
|
|
const std::string kHashedUsageInfoFileWithThreeKeySetIds = a2bs_hex(
|
|
"0A36080310012A300A0E220C6B65795F7365745F69645F310A0E220C6B65795F"
|
|
"7365745F69645F320A0E220C6B65795F7365745F69645F331220781BE848CE8A"
|
|
"0CE84FF563D54D30150A115EAB27F7023C19191EC41BDC4EDAA9");
|
|
// Only contains key set ID 1 & 2.
|
|
const std::string kHashedUsageInfoFileWithTwoKeySetIds = a2bs_hex(
|
|
"0A26080310012A200A0E220C6B65795F7365745F69645F310A0E220C6B65795F"
|
|
"7365745F69645F321220B693E7142BF263FF51B6F8AF4DD7F20E2701059A841C"
|
|
"F947995A7B39354E1CA9");
|
|
const std::string kHashedUsageInfoFileWithKeySet1 = a2bs_hex(
|
|
"0A16080310012A100A0E220C6B65795F7365745F69645F3112200FBBB47C89DE"
|
|
"484D02BFB4CB20B19BA43CBCAD6F4A78EFB295ACC66BA0B83B85");
|
|
const std::string kHashedUsageInfoFileWithKeySet2 = a2bs_hex(
|
|
"0A16080310012A100A0E220C6B65795F7365745F69645F321220B5F53E5A1D8E"
|
|
"860196D2B3E027FFB32F11C1B2269784A904A3EA6E59C2A6A96D");
|
|
const std::string kHashedUsageInfoFileWithKeySet3 = a2bs_hex(
|
|
"0A16080310012A100A0E220C6B65795F7365745F69645F331220F28C1B20A302"
|
|
"543F44659D995A58899A03B9D51C65FD6C05AD1E6D2BACACADA7");
|
|
|
|
const std::vector<std::string> kHashedUsageInfoFileWithSingleKeySetList = {
|
|
kHashedUsageInfoFileWithKeySet1, kHashedUsageInfoFileWithKeySet2,
|
|
kHashedUsageInfoFileWithKeySet3};
|
|
|
|
const std::vector<std::string> kHashedUsageInfoFileKeySetList = {
|
|
"key_set_id_1", "key_set_id_2", "key_set_id_3"};
|
|
|
|
// Contains kOemCertificate and kCryptoWrappedKey
|
|
const std::string kFakeOemCertificateFile = a2bs_hex(
|
|
"0A33080710014A2D0A12616E206F656D206365727469666963617465121561207772617070"
|
|
"65642070726976617465206B6579180012201C910430EBCEDD66BF0FBFE52917A71C6B66D5"
|
|
"DF1E01EA43D3A375B0703E1E1B");
|
|
|
|
class MockFile : public File {
|
|
public:
|
|
MockFile() {}
|
|
~MockFile() override {}
|
|
|
|
MOCK_METHOD(ssize_t, Read, (char*, size_t), (override));
|
|
MOCK_METHOD(ssize_t, Write, (const char*, size_t), (override));
|
|
};
|
|
|
|
class MockFileSystem : public wvutil::FileSystem {
|
|
public:
|
|
MockFileSystem() {}
|
|
~MockFileSystem() override {}
|
|
|
|
MOCK_METHOD(std::unique_ptr<File>, Open, (const std::string&, int flags),
|
|
(override));
|
|
MOCK_METHOD(bool, Exists, (const std::string&), (override));
|
|
MOCK_METHOD(bool, Exists, (const std::string&, int*), (override));
|
|
MOCK_METHOD(bool, Remove, (const std::string&), (override));
|
|
MOCK_METHOD(ssize_t, FileSize, (const std::string&), (override));
|
|
MOCK_METHOD(bool, List, (const std::string&, std::vector<std::string>*),
|
|
(override));
|
|
};
|
|
|
|
} // namespace
|
|
|
|
// gmock methods
|
|
using ::testing::_;
|
|
using ::testing::AllArgs;
|
|
using ::testing::AtLeast;
|
|
using ::testing::ByMove;
|
|
using ::testing::DoAll;
|
|
using ::testing::Eq;
|
|
using ::testing::Expectation;
|
|
using ::testing::Invoke;
|
|
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_));
|
|
}
|
|
|
|
size_t GetLicenseDataSize(const LicenseInfo& data) {
|
|
CdmAppParameterMap app_parameters = GetAppParameters(data.app_parameters);
|
|
size_t app_parameters_len = 0;
|
|
for (auto itr = app_parameters.cbegin(); itr != app_parameters.cend();
|
|
++itr) {
|
|
app_parameters_len += itr->first.length();
|
|
app_parameters_len += itr->second.length();
|
|
}
|
|
return sizeof(CdmOfflineLicenseState) + 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 - start_pos)] =
|
|
str.substr(name_end_pos + 1, value_end_pos - name_end_pos - 1);
|
|
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 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<size_t> {};
|
|
|
|
class DeviceFilesUsageTableTest : public DeviceFilesTest,
|
|
public ::testing::WithParamInterface<int> {};
|
|
|
|
class DeviceFilesDeleteMultipleUsageInfoTest
|
|
: public DeviceFilesTest,
|
|
public ::testing::WithParamInterface<int> {};
|
|
|
|
MATCHER(IsCreateFileFlagSet, "") { return wvutil::FileSystem::kCreate & arg; }
|
|
MATCHER_P(StrAndLenEq, str, "") {
|
|
const std::string data(std::get<0>(arg), std::get<1>(arg));
|
|
return data == str;
|
|
}
|
|
MATCHER_P(StrAndLenContains, str_vector, "") {
|
|
const std::string data(std::get<0>(arg), std::get<1>(arg));
|
|
for (const std::string& str : str_vector) {
|
|
if (data.find(str) == std::string::npos) {
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
TEST_F(DeviceFilesTest, StoreCertificateInvalidParams) {
|
|
const std::string certificate(CdmRandom::RandomData(kCertificateLen));
|
|
const CryptoWrappedKey private_key(CryptoWrappedKey::kRsa,
|
|
CdmRandom::RandomData(kWrappedKeyLen));
|
|
const CryptoWrappedKey empty_private_key;
|
|
|
|
MockFileSystem file_system;
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
|
|
// Empty parameters
|
|
EXPECT_FALSE(device_files.StoreCertificate(kEmptyString, private_key));
|
|
EXPECT_FALSE(device_files.StoreCertificate(certificate, empty_private_key));
|
|
|
|
// Certificate is not a valid Signed DRM certificate
|
|
EXPECT_FALSE(device_files.StoreCertificate(certificate, private_key));
|
|
|
|
// Certificate has an invalid creation time (negative or unlimited)
|
|
EXPECT_FALSE(device_files.StoreCertificate(
|
|
kTestCertificateWithInvalidCreationTime, private_key));
|
|
EXPECT_FALSE(device_files.StoreCertificate(
|
|
kTestCertificateNoExpirationWithUnlimitedCreationTime, private_key));
|
|
}
|
|
|
|
class StoreCertificateTest
|
|
: public DeviceFilesTest,
|
|
public ::testing::WithParamInterface<bool /* legacy(false),
|
|
default(true) */> {};
|
|
|
|
TEST_P(StoreCertificateTest, DefaultAndLegacy) {
|
|
MockFileSystem file_system;
|
|
const bool certificate_type_default = GetParam(); /* otherwise legacy */
|
|
|
|
const std::string& certificate = certificate_type_default
|
|
? kTestCertificateWithFutureExpiration
|
|
: kTestCertificateWithoutExpiration;
|
|
|
|
const CryptoWrappedKey private_key(CryptoWrappedKey::kRsa,
|
|
CdmRandom::RandomData(kWrappedKeyLen));
|
|
std::string certificate_file_name;
|
|
if (certificate_type_default) {
|
|
EXPECT_TRUE(DeviceFiles::GetCertificateFileName(
|
|
DeviceFiles::kCertificateDefault, &certificate_file_name));
|
|
} else {
|
|
EXPECT_TRUE(DeviceFiles::GetCertificateFileName(
|
|
DeviceFiles::kCertificateLegacy, &certificate_file_name));
|
|
}
|
|
const std::string device_certificate_path =
|
|
device_base_path_ + certificate_file_name;
|
|
|
|
// Call to Open will return a unique_ptr, freeing this object.
|
|
MockFile* file = new MockFile();
|
|
EXPECT_CALL(file_system,
|
|
Open(StrEq(device_certificate_path), IsCreateFileFlagSet()))
|
|
.WillOnce(Return(ByMove(std::unique_ptr<File>(file))));
|
|
EXPECT_CALL(*file, Write(_, _))
|
|
.With(AllArgs(StrAndLenContains(
|
|
std::vector<std::string>{certificate, private_key.key()})))
|
|
.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, private_key));
|
|
}
|
|
|
|
INSTANTIATE_TEST_SUITE_P(CertificateTest, StoreCertificateTest,
|
|
::testing::Values(false, true));
|
|
|
|
TEST_F(DeviceFilesTest, RetrieveCertificateInvalidParams) {
|
|
std::string certificate, serial_number;
|
|
CryptoWrappedKey wrapped_private_key;
|
|
uint32_t system_id;
|
|
|
|
MockFileSystem file_system;
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_EQ(DeviceFiles::kCannotHandle,
|
|
device_files.RetrieveCertificate(false, &certificate, nullptr,
|
|
&serial_number, &system_id));
|
|
EXPECT_EQ(
|
|
DeviceFiles::kCannotHandle,
|
|
device_files.RetrieveCertificate(false, nullptr, &wrapped_private_key,
|
|
&serial_number, &system_id));
|
|
}
|
|
|
|
TEST_F(DeviceFilesTest, RetrieveAtscCertificate) {
|
|
MockFileSystem file_system;
|
|
std::string certificate_file_name;
|
|
EXPECT_TRUE(DeviceFiles::GetCertificateFileName(DeviceFiles::kCertificateAtsc,
|
|
&certificate_file_name));
|
|
const std::string device_certificate_path =
|
|
device_base_path_ + certificate_file_name;
|
|
const std::string& data = kTestCertificateFileDataWithoutExpiration;
|
|
|
|
// Call to Open will return a unique_ptr, freeing this object.
|
|
MockFile* file = new MockFile();
|
|
EXPECT_CALL(file_system, Exists(StrEq(device_certificate_path), NotNull()))
|
|
.Times(AtLeast(1))
|
|
.WillRepeatedly(Return(true));
|
|
EXPECT_CALL(file_system, Exists(StrEq(device_certificate_path)))
|
|
.Times(AtLeast(1))
|
|
.WillRepeatedly(Return(true));
|
|
EXPECT_CALL(file_system, FileSize(StrEq(device_certificate_path)))
|
|
.WillOnce(Return(data.size()));
|
|
EXPECT_CALL(file_system, Open(StrEq(device_certificate_path), _))
|
|
.WillOnce(Return(ByMove(std::unique_ptr<File>(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;
|
|
CryptoWrappedKey private_key;
|
|
std::string serial_number;
|
|
uint32_t system_id = 0;
|
|
ASSERT_EQ(DeviceFiles::kCertificateValid,
|
|
device_files.RetrieveCertificate(true, &certificate, &private_key,
|
|
&serial_number, &system_id));
|
|
EXPECT_EQ(kTestCertificateWithoutExpiration, certificate);
|
|
EXPECT_EQ(kTestWrappedKey, private_key);
|
|
EXPECT_EQ("7CB49F987A635E1E0A52184694582D6E", b2a_hex(serial_number));
|
|
}
|
|
|
|
TEST_F(DeviceFilesTest, RetrieveAtscCertificateNotFound) {
|
|
MockFileSystem file_system;
|
|
std::string certificate_file_name;
|
|
EXPECT_TRUE(DeviceFiles::GetCertificateFileName(DeviceFiles::kCertificateAtsc,
|
|
&certificate_file_name));
|
|
const std::string device_certificate_path =
|
|
device_base_path_ + certificate_file_name;
|
|
|
|
EXPECT_CALL(file_system, Exists(StrEq(device_certificate_path)))
|
|
.WillOnce(Return(false));
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
|
|
std::string certificate;
|
|
CryptoWrappedKey private_key;
|
|
std::string serial_number;
|
|
uint32_t system_id = 0;
|
|
ASSERT_EQ(DeviceFiles::kCertificateNotFound,
|
|
device_files.RetrieveCertificate(true, &certificate, &private_key,
|
|
&serial_number, &system_id));
|
|
}
|
|
|
|
/* TODO(b/192430982): Renable expiration of legacy DRM certificates
|
|
TEST_F(DeviceFilesTest, RetrieveLegacyCertificateWithoutExpirationTime) {
|
|
MockFileSystem file_system;
|
|
std::string certificate_file_name;
|
|
EXPECT_TRUE(DeviceFiles::GetCertificateFileName(
|
|
DeviceFiles::kCertificateLegacy, &certificate_file_name));
|
|
const std::string device_legacy_certificate_path =
|
|
device_base_path_ + certificate_file_name;
|
|
EXPECT_TRUE(DeviceFiles::GetCertificateFileName(
|
|
DeviceFiles::kCertificateDefault, &certificate_file_name));
|
|
const std::string device_default_certificate_path =
|
|
device_base_path_ + certificate_file_name;
|
|
const std::string& data = kTestCertificateFileDataWithoutExpiration;
|
|
|
|
// Call to Open will return a unique_ptr, freeing this object.
|
|
MockFile* read_file = new MockFile();
|
|
MockFile* write_file = new MockFile();
|
|
EXPECT_CALL(file_system, Exists(StrEq(device_legacy_certificate_path)))
|
|
.Times(AtLeast(1))
|
|
.WillRepeatedly(Return(true));
|
|
EXPECT_CALL(file_system, Exists(StrEq(device_default_certificate_path)))
|
|
.Times(AtLeast(1))
|
|
.WillRepeatedly(Return(false));
|
|
EXPECT_CALL(file_system, FileSize(StrEq(device_legacy_certificate_path)))
|
|
.WillOnce(Return(data.size()));
|
|
// Retrieving the legacy license will cause a read as well as a write
|
|
// to fill in a random expiry date ~6 months later if one has not been set
|
|
EXPECT_CALL(file_system, Open(StrEq(device_legacy_certificate_path), _))
|
|
.WillOnce(Return(ByMove(std::unique_ptr<File>(read_file))))
|
|
.WillOnce(Return(ByMove(std::unique_ptr<File>(write_file))));
|
|
EXPECT_CALL(*read_file, Read(NotNull(), Eq(data.size())))
|
|
.WillOnce(DoAll(SetArrayArgument<0>(data.begin(), data.end()),
|
|
Return(data.size())));
|
|
EXPECT_CALL(*read_file, Write(_, _)).Times(0);
|
|
EXPECT_CALL(*write_file, Read(_, _)).Times(0);
|
|
EXPECT_CALL(*write_file, Write(_, _))
|
|
.With(AllArgs(StrAndLenContains(std::vector<std::string>{
|
|
kTestCertificateWithoutExpiration, kTestWrappedKey.key()})))
|
|
.WillOnce(ReturnArg<1>());
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
|
|
std::string certificate;
|
|
CryptoWrappedKey private_key;
|
|
std::string serial_number;
|
|
uint32_t system_id = 0;
|
|
|
|
ASSERT_EQ(DeviceFiles::kCertificateValid,
|
|
device_files.RetrieveCertificate(false, &certificate, &private_key,
|
|
&serial_number, &system_id));
|
|
EXPECT_EQ(kTestCertificateWithoutExpiration, certificate);
|
|
EXPECT_EQ(kTestWrappedKey, private_key);
|
|
EXPECT_EQ("7CB49F987A635E1E0A52184694582D6E", b2a_hex(serial_number));
|
|
}
|
|
|
|
TEST_F(DeviceFilesTest, RetrieveLegacyCertificateWithClientExpirationTime) {
|
|
MockFileSystem file_system;
|
|
std::string certificate_file_name;
|
|
EXPECT_TRUE(DeviceFiles::GetCertificateFileName(
|
|
DeviceFiles::kCertificateLegacy, &certificate_file_name));
|
|
const std::string device_legacy_certificate_path =
|
|
device_base_path_ + certificate_file_name;
|
|
EXPECT_TRUE(DeviceFiles::GetCertificateFileName(
|
|
DeviceFiles::kCertificateDefault, &certificate_file_name));
|
|
const std::string device_default_certificate_path =
|
|
device_base_path_ + certificate_file_name;
|
|
const std::string& data = kTestLegacyCertificateFileDataWithClientExpiration;
|
|
|
|
// Call to Open will return a unique_ptr, freeing this object.
|
|
MockFile* read_file = new MockFile();
|
|
EXPECT_CALL(file_system, Exists(StrEq(device_legacy_certificate_path)))
|
|
.Times(AtLeast(1))
|
|
.WillRepeatedly(Return(true));
|
|
EXPECT_CALL(file_system, Exists(StrEq(device_default_certificate_path)))
|
|
.Times(AtLeast(1))
|
|
.WillRepeatedly(Return(false));
|
|
EXPECT_CALL(file_system, FileSize(StrEq(device_legacy_certificate_path)))
|
|
.WillOnce(Return(data.size()));
|
|
EXPECT_CALL(file_system, Open(StrEq(device_legacy_certificate_path), _))
|
|
.WillOnce(Return(ByMove(std::unique_ptr<File>(read_file))));
|
|
EXPECT_CALL(*read_file, Read(NotNull(), Eq(data.size())))
|
|
.WillOnce(DoAll(SetArrayArgument<0>(data.begin(), data.end()),
|
|
Return(data.size())));
|
|
EXPECT_CALL(*read_file, Write(_, _)).Times(0);
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
|
|
std::string certificate;
|
|
CryptoWrappedKey private_key;
|
|
std::string serial_number;
|
|
uint32_t system_id = 0;
|
|
|
|
// Retrieve the legacy certificate. The expiration data is in the future.
|
|
ASSERT_EQ(DeviceFiles::kCertificateValid,
|
|
device_files.RetrieveCertificate(false, &certificate, &private_key,
|
|
&serial_number, &system_id));
|
|
EXPECT_EQ(kTestCertificateWithoutExpiration, certificate);
|
|
EXPECT_EQ(kTestWrappedKey, private_key);
|
|
EXPECT_EQ("7CB49F987A635E1E0A52184694582D6E", b2a_hex(serial_number));
|
|
}
|
|
|
|
class RetrieveLegacyCertificateTest
|
|
: public DeviceFilesTest,
|
|
public ::testing::WithParamInterface<size_t> {};
|
|
|
|
TEST_P(RetrieveLegacyCertificateTest, ErrorScenarios) {
|
|
const size_t index = GetParam();
|
|
MockFileSystem file_system;
|
|
std::string certificate_file_name;
|
|
EXPECT_TRUE(DeviceFiles::GetCertificateFileName(
|
|
DeviceFiles::kCertificateLegacy, &certificate_file_name));
|
|
const std::string device_legacy_certificate_path =
|
|
device_base_path_ + certificate_file_name;
|
|
EXPECT_TRUE(DeviceFiles::GetCertificateFileName(
|
|
DeviceFiles::kCertificateDefault, &certificate_file_name));
|
|
const std::string device_default_certificate_path =
|
|
device_base_path_ + certificate_file_name;
|
|
const CertificateErrorData& param =
|
|
kRetrieveLegacyCertificateErrorData[index];
|
|
const std::string& data = param.file_data;
|
|
|
|
// Call to Open will return a unique_ptr, freeing this object.
|
|
MockFile* read_file = new MockFile();
|
|
EXPECT_CALL(file_system, Exists(StrEq(device_legacy_certificate_path)))
|
|
.Times(AtLeast(1))
|
|
.WillRepeatedly(Return(true));
|
|
EXPECT_CALL(file_system, Exists(StrEq(device_default_certificate_path)))
|
|
.Times(AtLeast(1))
|
|
.WillRepeatedly(Return(false));
|
|
EXPECT_CALL(file_system, FileSize(StrEq(device_legacy_certificate_path)))
|
|
.WillOnce(Return(data.size()));
|
|
EXPECT_CALL(file_system, Open(StrEq(device_legacy_certificate_path), _))
|
|
.WillOnce(Return(ByMove(std::unique_ptr<File>(read_file))));
|
|
EXPECT_CALL(*read_file, Read(NotNull(), Eq(data.size())))
|
|
.WillOnce(DoAll(SetArrayArgument<0>(data.begin(), data.end()),
|
|
Return(data.size())));
|
|
EXPECT_CALL(*read_file, Write(_, _)).Times(0);
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
|
|
std::string certificate;
|
|
CryptoWrappedKey private_key;
|
|
std::string serial_number;
|
|
uint32_t system_id = 0;
|
|
|
|
// Retrieve the legacy certificate. The license has expired.
|
|
ASSERT_EQ(param.certificate_state,
|
|
device_files.RetrieveCertificate(false, &certificate, &private_key,
|
|
&serial_number, &system_id));
|
|
|
|
if (param.certificate_state == DeviceFiles::kCertificateExpired) {
|
|
EXPECT_EQ(kTestCertificateWithoutExpiration, certificate);
|
|
EXPECT_EQ(kTestWrappedKey, private_key);
|
|
EXPECT_EQ("7CB49F987A635E1E0A52184694582D6E", b2a_hex(serial_number));
|
|
}
|
|
}
|
|
|
|
INSTANTIATE_TEST_SUITE_P(CertificateTest, RetrieveLegacyCertificateTest,
|
|
::testing::Range(kZero, kNumberOfLegacyCertificates));
|
|
|
|
TEST_F(DeviceFilesTest, RetrieveDefaultCertificate) {
|
|
MockFileSystem file_system;
|
|
std::string certificate_file_name;
|
|
EXPECT_TRUE(DeviceFiles::GetCertificateFileName(
|
|
DeviceFiles::kCertificateDefault, &certificate_file_name));
|
|
const std::string device_certificate_path =
|
|
device_base_path_ + certificate_file_name;
|
|
const std::string& data = kTestDefaultCertificateFileDataFutureExpiration;
|
|
|
|
// Call to Open will return a unique_ptr, freeing this object.
|
|
MockFile* read_file = new MockFile();
|
|
EXPECT_CALL(file_system, Exists(StrEq(device_certificate_path)))
|
|
.Times(AtLeast(1))
|
|
.WillRepeatedly(Return(true));
|
|
EXPECT_CALL(file_system, FileSize(StrEq(device_certificate_path)))
|
|
.WillOnce(Return(data.size()));
|
|
EXPECT_CALL(file_system, Open(StrEq(device_certificate_path), _))
|
|
.WillOnce(Return(ByMove(std::unique_ptr<File>(read_file))));
|
|
EXPECT_CALL(*read_file, Read(NotNull(), Eq(data.size())))
|
|
.WillOnce(DoAll(SetArrayArgument<0>(data.begin(), data.end()),
|
|
Return(data.size())));
|
|
EXPECT_CALL(*read_file, Write(_, _)).Times(0);
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
|
|
std::string certificate;
|
|
CryptoWrappedKey private_key;
|
|
std::string serial_number;
|
|
uint32_t system_id = 0;
|
|
|
|
// Retrieve the default certificate. It should be available.
|
|
ASSERT_EQ(DeviceFiles::kCertificateValid,
|
|
device_files.RetrieveCertificate(false, &certificate, &private_key,
|
|
&serial_number, &system_id));
|
|
EXPECT_EQ(kTestCertificateWithFutureExpiration, certificate);
|
|
EXPECT_EQ(kTestWrappedKey, private_key);
|
|
EXPECT_EQ("7CB49F987A635E1E0A52184694582D6E", b2a_hex(serial_number));
|
|
}
|
|
*/
|
|
|
|
TEST_F(DeviceFilesTest, RetrieveDefaultCertificateNeverExpires) {
|
|
MockFileSystem file_system;
|
|
std::string certificate_file_name;
|
|
EXPECT_TRUE(DeviceFiles::GetCertificateFileName(
|
|
DeviceFiles::kCertificateDefault, &certificate_file_name));
|
|
const std::string device_certificate_path =
|
|
device_base_path_ + certificate_file_name;
|
|
const std::string& data = kTestDefaultCertificateFileDataNeverExpires;
|
|
|
|
// Call to Open will return a unique_ptr, freeing this object.
|
|
MockFile* read_file = new MockFile();
|
|
EXPECT_CALL(file_system, Exists(StrEq(device_certificate_path)))
|
|
.Times(AtLeast(1))
|
|
.WillRepeatedly(Return(true));
|
|
EXPECT_CALL(file_system, Exists(StrEq(device_certificate_path), NotNull()))
|
|
.Times(AtLeast(1))
|
|
.WillRepeatedly(Return(true));
|
|
EXPECT_CALL(file_system, FileSize(StrEq(device_certificate_path)))
|
|
.WillOnce(Return(data.size()));
|
|
EXPECT_CALL(file_system, Open(StrEq(device_certificate_path), _))
|
|
.WillOnce(Return(ByMove(std::unique_ptr<File>(read_file))));
|
|
EXPECT_CALL(*read_file, Read(NotNull(), Eq(data.size())))
|
|
.WillOnce(DoAll(SetArrayArgument<0>(data.begin(), data.end()),
|
|
Return(data.size())));
|
|
EXPECT_CALL(*read_file, Write(_, _)).Times(0);
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
|
|
std::string certificate;
|
|
CryptoWrappedKey private_key;
|
|
std::string serial_number;
|
|
uint32_t system_id = 0;
|
|
|
|
// Retrieve the default certificate. It should be available.
|
|
ASSERT_EQ(DeviceFiles::kCertificateValid,
|
|
device_files.RetrieveCertificate(false, &certificate, &private_key,
|
|
&serial_number, &system_id));
|
|
EXPECT_EQ(kTestCertificateNeverExpires, certificate);
|
|
EXPECT_EQ(kTestWrappedKey, private_key);
|
|
EXPECT_EQ("7CB49F987A635E1E0A52184694582D6E", b2a_hex(serial_number));
|
|
}
|
|
|
|
class RetrieveDefaultCertificateTest
|
|
: public DeviceFilesTest,
|
|
public ::testing::WithParamInterface<size_t> {};
|
|
|
|
TEST_P(RetrieveDefaultCertificateTest, ErrorScenarios) {
|
|
const size_t index = GetParam();
|
|
MockFileSystem file_system;
|
|
std::string certificate_file_name;
|
|
EXPECT_TRUE(DeviceFiles::GetCertificateFileName(
|
|
DeviceFiles::kCertificateDefault, &certificate_file_name));
|
|
const std::string device_certificate_path =
|
|
device_base_path_ + certificate_file_name;
|
|
const CertificateErrorData& param =
|
|
kRetrieveDefaultCertificateErrorData[index];
|
|
const std::string& data = param.file_data;
|
|
|
|
// Call to Open will return a unique_ptr, freeing this object.
|
|
MockFile* read_file = new MockFile();
|
|
EXPECT_CALL(file_system, Exists(StrEq(device_certificate_path)))
|
|
.Times(AtLeast(1))
|
|
.WillRepeatedly(Return(true));
|
|
EXPECT_CALL(file_system, Exists(StrEq(device_certificate_path), NotNull()))
|
|
.Times(AtLeast(1))
|
|
.WillRepeatedly(Return(true));
|
|
EXPECT_CALL(file_system, FileSize(StrEq(device_certificate_path)))
|
|
.WillOnce(Return(data.size()));
|
|
EXPECT_CALL(file_system, Open(StrEq(device_certificate_path), _))
|
|
.WillOnce(Return(ByMove(std::unique_ptr<File>(read_file))));
|
|
EXPECT_CALL(*read_file, Read(NotNull(), Eq(data.size())))
|
|
.WillOnce(DoAll(SetArrayArgument<0>(data.begin(), data.end()),
|
|
Return(data.size())));
|
|
EXPECT_CALL(*read_file, Write(_, _)).Times(0);
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
|
|
std::string certificate;
|
|
CryptoWrappedKey private_key;
|
|
std::string serial_number;
|
|
uint32_t system_id = 0;
|
|
|
|
// Retrieve the default certificate. It should be available.
|
|
ASSERT_EQ(param.certificate_state,
|
|
device_files.RetrieveCertificate(false, &certificate, &private_key,
|
|
&serial_number, &system_id));
|
|
if (param.certificate_state == DeviceFiles::kCertificateExpired) {
|
|
EXPECT_EQ(kTestCertificateExpired, certificate);
|
|
EXPECT_EQ(kTestWrappedKey, private_key);
|
|
EXPECT_EQ("7CB49F987A635E1E0A52184694582D6E", b2a_hex(serial_number));
|
|
}
|
|
}
|
|
|
|
INSTANTIATE_TEST_SUITE_P(CertificateTest, RetrieveDefaultCertificateTest,
|
|
::testing::Range(kZero, kNumberOfDefaultCertificates));
|
|
|
|
TEST_F(DeviceFilesTest, RetrieveCertificateWithoutKeyType) {
|
|
// Stored files without an explicit key type should default to RSA.
|
|
MockFileSystem file_system;
|
|
std::string certificate_file_name;
|
|
EXPECT_TRUE(DeviceFiles::GetCertificateFileName(
|
|
DeviceFiles::kCertificateLegacy, &certificate_file_name));
|
|
const std::string device_legacy_certificate_path =
|
|
device_base_path_ + certificate_file_name;
|
|
EXPECT_TRUE(DeviceFiles::GetCertificateFileName(
|
|
DeviceFiles::kCertificateDefault, &certificate_file_name));
|
|
const std::string device_default_certificate_path =
|
|
device_base_path_ + certificate_file_name;
|
|
const std::string& data = kTestCertificateFileWithoutKeyTypeData;
|
|
|
|
// Call to Open will return a unique_ptr, freeing this object.
|
|
// The file will be re-written with a new client expiration time
|
|
MockFile* read_file = new MockFile();
|
|
/* TODO(b/192430982): Renable expiration of legacy DRM certificates
|
|
MockFile* write_file = new MockFile();
|
|
*/
|
|
EXPECT_CALL(file_system, Exists(StrEq(device_legacy_certificate_path)))
|
|
.Times(AtLeast(1))
|
|
.WillRepeatedly(Return(true));
|
|
EXPECT_CALL(file_system,
|
|
Exists(StrEq(device_legacy_certificate_path), NotNull()))
|
|
.Times(AtLeast(1))
|
|
.WillRepeatedly(Return(true));
|
|
EXPECT_CALL(file_system, Exists(StrEq(device_default_certificate_path)))
|
|
.Times(AtLeast(1))
|
|
.WillRepeatedly(Return(false));
|
|
EXPECT_CALL(file_system, FileSize(StrEq(device_legacy_certificate_path)))
|
|
.WillOnce(Return(data.size()));
|
|
EXPECT_CALL(file_system, Open(StrEq(device_legacy_certificate_path), _))
|
|
.WillOnce(Return(ByMove(std::unique_ptr<File>(read_file))));
|
|
/* TODO(b/192430982): Renable expiration of legacy DRM certificates
|
|
.WillOnce(Return(ByMove(std::unique_ptr<File>(write_file))));
|
|
*/
|
|
EXPECT_CALL(*read_file, Read(NotNull(), Eq(data.size())))
|
|
.WillOnce(DoAll(SetArrayArgument<0>(data.begin(), data.end()),
|
|
Return(data.size())));
|
|
EXPECT_CALL(*read_file, Write(_, _)).Times(0);
|
|
/* TODO(b/192430982): Renable expiration of legacy DRM certificates
|
|
EXPECT_CALL(*write_file, Read(_, _)).Times(0);
|
|
EXPECT_CALL(*write_file, Write(_, _))
|
|
.With(AllArgs(StrAndLenContains(std::vector<std::string>{
|
|
kTestCertificateWithoutExpiration, kTestWrappedKey.key()})))
|
|
.WillOnce(ReturnArg<1>());
|
|
*/
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
|
|
std::string certificate;
|
|
CryptoWrappedKey private_key;
|
|
std::string serial_number;
|
|
uint32_t system_id = 0;
|
|
ASSERT_EQ(DeviceFiles::kCertificateValid,
|
|
device_files.RetrieveCertificate(false, &certificate, &private_key,
|
|
&serial_number, &system_id));
|
|
EXPECT_EQ(kTestCertificateWithoutExpiration, certificate);
|
|
EXPECT_EQ(kTestWrappedKey, private_key);
|
|
EXPECT_EQ("7CB49F987A635E1E0A52184694582D6E", b2a_hex(serial_number));
|
|
}
|
|
|
|
TEST_F(DeviceFilesTest, HasCertificateAtsc) {
|
|
MockFileSystem file_system;
|
|
std::string certificate_file_name;
|
|
EXPECT_TRUE(DeviceFiles::GetCertificateFileName(DeviceFiles::kCertificateAtsc,
|
|
&certificate_file_name));
|
|
const std::string device_certificate_path =
|
|
device_base_path_ + certificate_file_name;
|
|
|
|
EXPECT_CALL(file_system, Exists(StrEq(device_certificate_path)))
|
|
.WillOnce(Return(false))
|
|
.WillOnce(Return(true));
|
|
EXPECT_CALL(file_system, Open(_, _)).Times(0);
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
ASSERT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
|
|
// MockFile returns false.
|
|
EXPECT_FALSE(device_files.HasCertificate(true));
|
|
// MockFile returns true.
|
|
EXPECT_TRUE(device_files.HasCertificate(true));
|
|
}
|
|
|
|
TEST_F(DeviceFilesTest, HasCertificateDefault) {
|
|
MockFileSystem file_system;
|
|
std::string certificate_file_name;
|
|
EXPECT_TRUE(DeviceFiles::GetCertificateFileName(
|
|
DeviceFiles::kCertificateDefault, &certificate_file_name));
|
|
const std::string device_certificate_path =
|
|
device_base_path_ + certificate_file_name;
|
|
|
|
EXPECT_CALL(file_system, Exists(StrEq(device_certificate_path)))
|
|
.WillOnce(Return(true));
|
|
EXPECT_CALL(file_system, Open(_, _)).Times(0);
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
ASSERT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
|
|
EXPECT_TRUE(device_files.HasCertificate(false));
|
|
}
|
|
|
|
TEST_F(DeviceFilesTest, HasCertificateLegacy) {
|
|
MockFileSystem file_system;
|
|
std::string certificate_file_name;
|
|
EXPECT_TRUE(DeviceFiles::GetCertificateFileName(
|
|
DeviceFiles::kCertificateDefault, &certificate_file_name));
|
|
const std::string device_default_certificate_path =
|
|
device_base_path_ + certificate_file_name;
|
|
EXPECT_TRUE(DeviceFiles::GetCertificateFileName(
|
|
DeviceFiles::kCertificateLegacy, &certificate_file_name));
|
|
const std::string device_legacy_certificate_path =
|
|
device_base_path_ + certificate_file_name;
|
|
|
|
EXPECT_CALL(file_system, Exists(StrEq(device_default_certificate_path)))
|
|
.WillOnce(Return(false));
|
|
EXPECT_CALL(file_system, Exists(StrEq(device_legacy_certificate_path)))
|
|
.WillOnce(Return(true));
|
|
EXPECT_CALL(file_system, Open(_, _)).Times(0);
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
ASSERT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
|
|
EXPECT_TRUE(device_files.HasCertificate(false));
|
|
}
|
|
|
|
TEST_F(DeviceFilesTest, HasCertificateNone) {
|
|
MockFileSystem file_system;
|
|
std::string certificate_file_name;
|
|
EXPECT_TRUE(DeviceFiles::GetCertificateFileName(
|
|
DeviceFiles::kCertificateDefault, &certificate_file_name));
|
|
const std::string device_default_certificate_path =
|
|
device_base_path_ + certificate_file_name;
|
|
EXPECT_TRUE(DeviceFiles::GetCertificateFileName(
|
|
DeviceFiles::kCertificateLegacy, &certificate_file_name));
|
|
const std::string device_legacy_certificate_path =
|
|
device_base_path_ + certificate_file_name;
|
|
|
|
EXPECT_CALL(file_system, Exists(StrEq(device_default_certificate_path)))
|
|
.WillOnce(Return(false));
|
|
EXPECT_CALL(file_system, Exists(StrEq(device_legacy_certificate_path)))
|
|
.WillOnce(Return(false));
|
|
EXPECT_CALL(file_system, Open(_, _)).Times(0);
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
ASSERT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
|
|
EXPECT_FALSE(device_files.HasCertificate(false));
|
|
}
|
|
|
|
TEST_P(DeviceFilesSecurityLevelTest, RequestedSecurityLevel) {
|
|
CdmSecurityLevel security_level = GetParam();
|
|
MockFileSystem file_system;
|
|
std::string certificate(kTestCertificateWithFutureExpiration);
|
|
const CryptoWrappedKey private_key(CryptoWrappedKey::kRsa,
|
|
CdmRandom::RandomData(kWrappedKeyLen));
|
|
|
|
std::string device_base_path;
|
|
ASSERT_TRUE(
|
|
Properties::GetDeviceFilesBasePath(security_level, &device_base_path));
|
|
std::string certificate_file_name;
|
|
EXPECT_TRUE(DeviceFiles::GetCertificateFileName(
|
|
DeviceFiles::kCertificateDefault, &certificate_file_name));
|
|
const std::string device_certificate_path =
|
|
device_base_path + certificate_file_name;
|
|
|
|
// Call to Open will return a unique_ptr, freeing this object.
|
|
MockFile* file = new MockFile();
|
|
EXPECT_CALL(file_system,
|
|
Open(StrEq(device_certificate_path), IsCreateFileFlagSet()))
|
|
.WillOnce(Return(ByMove(std::unique_ptr<File>(file))));
|
|
EXPECT_CALL(*file, Write(_, _))
|
|
.With(AllArgs(StrAndLenContains(
|
|
std::vector<std::string>{certificate, private_key.key()})))
|
|
.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, private_key));
|
|
}
|
|
|
|
INSTANTIATE_TEST_SUITE_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_ +
|
|
kLicenseTestData[license_num].key_set_id +
|
|
DeviceFiles::GetLicenseFileNameExtension();
|
|
|
|
CdmAppParameterMap app_parameters =
|
|
GetAppParameters(kLicenseTestData[license_num].app_parameters);
|
|
|
|
std::vector<std::string> expected_substrings{
|
|
kLicenseTestData[license_num].pssh_data,
|
|
kLicenseTestData[license_num].key_request,
|
|
kLicenseTestData[license_num].key_response,
|
|
kLicenseTestData[license_num].key_renewal_request,
|
|
kLicenseTestData[license_num].key_renewal_response,
|
|
kLicenseTestData[license_num].key_release_url,
|
|
kLicenseTestData[license_num].usage_entry,
|
|
};
|
|
for (const auto& iter : app_parameters) {
|
|
expected_substrings.push_back(iter.first);
|
|
expected_substrings.push_back(iter.second);
|
|
}
|
|
|
|
// Call to Open will return a unique_ptr, freeing this object.
|
|
MockFile* file = new MockFile();
|
|
EXPECT_CALL(file_system, Open(StrEq(license_path), IsCreateFileFlagSet()))
|
|
.WillOnce(Return(ByMove(std::unique_ptr<File>(file))));
|
|
EXPECT_CALL(*file, Write(_, _))
|
|
.With(AllArgs(StrAndLenContains(expected_substrings)))
|
|
.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));
|
|
CryptoWrappedKey wrapped_private_key;
|
|
DeviceFiles::CdmLicenseData license_data{
|
|
kLicenseTestData[license_num].key_set_id,
|
|
kLicenseTestData[license_num].license_state,
|
|
kLicenseTestData[license_num].pssh_data,
|
|
kLicenseTestData[license_num].key_request,
|
|
kLicenseTestData[license_num].key_response,
|
|
kLicenseTestData[license_num].key_renewal_request,
|
|
kLicenseTestData[license_num].key_renewal_response,
|
|
kLicenseTestData[license_num].key_release_url,
|
|
kLicenseTestData[license_num].playback_start_time,
|
|
kLicenseTestData[license_num].last_playback_time,
|
|
kLicenseTestData[license_num].grace_period_end_time,
|
|
app_parameters,
|
|
kLicenseTestData[license_num].usage_entry,
|
|
kLicenseTestData[license_num].usage_entry_index,
|
|
kLicenseTestData[license_num].drm_certificate,
|
|
CryptoWrappedKey(kLicenseTestData[license_num].key_type,
|
|
kLicenseTestData[license_num].private_key)};
|
|
EXPECT_TRUE(device_files.StoreLicense(license_data, &sub_error_code));
|
|
EXPECT_EQ(DeviceFiles::kNoError, sub_error_code);
|
|
}
|
|
|
|
INSTANTIATE_TEST_SUITE_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_ +
|
|
kLicenseTestData[i].key_set_id +
|
|
DeviceFiles::GetLicenseFileNameExtension();
|
|
|
|
CdmAppParameterMap app_parameters =
|
|
GetAppParameters(kLicenseTestData[i].app_parameters);
|
|
|
|
std::vector<std::string> expected_substrings{
|
|
kLicenseTestData[i].pssh_data,
|
|
kLicenseTestData[i].key_request,
|
|
kLicenseTestData[i].key_response,
|
|
kLicenseTestData[i].key_renewal_request,
|
|
kLicenseTestData[i].key_renewal_response,
|
|
kLicenseTestData[i].key_release_url,
|
|
kLicenseTestData[i].usage_entry,
|
|
kLicenseTestData[i].drm_certificate,
|
|
kLicenseTestData[i].private_key,
|
|
};
|
|
for (const auto& iter : app_parameters) {
|
|
expected_substrings.push_back(iter.first);
|
|
expected_substrings.push_back(iter.second);
|
|
}
|
|
|
|
// Call to Open will return a unique_ptr, freeing this object.
|
|
MockFile* file = new MockFile();
|
|
EXPECT_CALL(file_system, Open(StrEq(license_path), IsCreateFileFlagSet()))
|
|
.WillOnce(Return(ByMove(std::unique_ptr<File>(file))));
|
|
|
|
EXPECT_CALL(*file, Write(_, _))
|
|
.With(AllArgs(StrAndLenContains(expected_substrings)))
|
|
.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(kLicenseTestData[i].app_parameters);
|
|
|
|
DeviceFiles::CdmLicenseData license_data{
|
|
kLicenseTestData[i].key_set_id,
|
|
kLicenseTestData[i].license_state,
|
|
kLicenseTestData[i].pssh_data,
|
|
kLicenseTestData[i].key_request,
|
|
kLicenseTestData[i].key_response,
|
|
kLicenseTestData[i].key_renewal_request,
|
|
kLicenseTestData[i].key_renewal_response,
|
|
kLicenseTestData[i].key_release_url,
|
|
kLicenseTestData[i].playback_start_time,
|
|
kLicenseTestData[i].last_playback_time,
|
|
kLicenseTestData[i].grace_period_end_time,
|
|
app_parameters,
|
|
kLicenseTestData[i].usage_entry,
|
|
kLicenseTestData[i].usage_entry_index,
|
|
kLicenseTestData[i].drm_certificate,
|
|
CryptoWrappedKey(kLicenseTestData[i].key_type,
|
|
kLicenseTestData[i].private_key)};
|
|
EXPECT_TRUE(device_files.StoreLicense(license_data, &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_ +
|
|
kLicenseTestData[i].key_set_id +
|
|
DeviceFiles::GetLicenseFileNameExtension();
|
|
|
|
size_t size = kLicenseTestData[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), NotNull()))
|
|
.WillOnce(Return(true));
|
|
EXPECT_CALL(file_system, FileSize(StrEq(license_path)))
|
|
.WillOnce(Return(size));
|
|
EXPECT_CALL(file_system, Open(StrEq(license_path), _))
|
|
.WillOnce(Return(ByMove(std::unique_ptr<File>(file))));
|
|
EXPECT_CALL(*file, Read(NotNull(), Eq(size)))
|
|
.WillOnce(
|
|
DoAll(SetArrayArgument<0>(kLicenseTestData[i].file_data.begin(),
|
|
kLicenseTestData[i].file_data.end()),
|
|
Return(size)));
|
|
EXPECT_CALL(*file, Write(_, _)).Times(0);
|
|
}
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
DeviceFiles::CdmLicenseData license_data;
|
|
DeviceFiles::ResponseType sub_error_code;
|
|
|
|
for (size_t i = 0; i < kNumberOfLicenses; i++) {
|
|
EXPECT_TRUE(device_files.RetrieveLicense(kLicenseTestData[i].key_set_id,
|
|
&license_data, &sub_error_code));
|
|
EXPECT_EQ(kLicenseTestData[i].key_set_id, license_data.key_set_id);
|
|
EXPECT_EQ(kLicenseTestData[i].license_state, license_data.state);
|
|
EXPECT_EQ(kLicenseTestData[i].pssh_data, license_data.pssh_data);
|
|
EXPECT_EQ(kLicenseTestData[i].key_request, license_data.license_request);
|
|
EXPECT_EQ(kLicenseTestData[i].key_response, license_data.license);
|
|
EXPECT_EQ(kLicenseTestData[i].key_renewal_request,
|
|
license_data.license_renewal_request);
|
|
EXPECT_EQ(kLicenseTestData[i].key_renewal_response,
|
|
license_data.license_renewal);
|
|
EXPECT_EQ(kLicenseTestData[i].playback_start_time,
|
|
license_data.playback_start_time);
|
|
EXPECT_EQ(kLicenseTestData[i].last_playback_time,
|
|
license_data.last_playback_time);
|
|
EXPECT_EQ(kLicenseTestData[i].grace_period_end_time,
|
|
license_data.grace_period_end_time);
|
|
EXPECT_EQ(kLicenseTestData[i].usage_entry, license_data.usage_entry);
|
|
EXPECT_EQ(kLicenseTestData[i].usage_entry_index,
|
|
license_data.usage_entry_index);
|
|
EXPECT_EQ(kLicenseTestData[i].drm_certificate,
|
|
license_data.drm_certificate);
|
|
EXPECT_EQ(kLicenseTestData[i].key_type,
|
|
license_data.wrapped_private_key.type());
|
|
EXPECT_EQ(kLicenseTestData[i].private_key,
|
|
license_data.wrapped_private_key.key());
|
|
EXPECT_EQ(DeviceFiles::kNoError, sub_error_code);
|
|
|
|
std::map<std::string, std::string>::iterator itr;
|
|
for (itr = license_data.app_parameters.begin();
|
|
itr != license_data.app_parameters.end(); ++itr) {
|
|
EXPECT_NE(std::string::npos,
|
|
kLicenseTestData[i].app_parameters.find(itr->first));
|
|
EXPECT_NE(std::string::npos,
|
|
kLicenseTestData[i].app_parameters.find(itr->second));
|
|
}
|
|
license_data.app_parameters.clear();
|
|
}
|
|
}
|
|
|
|
TEST_F(DeviceFilesTest, AppParametersBackwardCompatibility) {
|
|
MockFileSystem file_system;
|
|
const LicenseInfo* test_data =
|
|
&kLicenseAppParametersBackwardsCompatibilityTestData;
|
|
|
|
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), NotNull()))
|
|
.WillOnce(Return(true));
|
|
EXPECT_CALL(file_system, FileSize(StrEq(license_path)))
|
|
.WillOnce(Return(size));
|
|
EXPECT_CALL(file_system, Open(StrEq(license_path), _))
|
|
.WillOnce(Return(ByMove(std::unique_ptr<File>(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::CdmLicenseData license_data;
|
|
DeviceFiles::ResponseType sub_error_code;
|
|
|
|
EXPECT_TRUE(device_files.RetrieveLicense(test_data->key_set_id, &license_data,
|
|
&sub_error_code));
|
|
EXPECT_EQ(test_data->license_state, license_data.state);
|
|
EXPECT_EQ(test_data->pssh_data, license_data.pssh_data);
|
|
EXPECT_EQ(test_data->key_request, license_data.license_request);
|
|
EXPECT_EQ(test_data->key_response, license_data.license);
|
|
EXPECT_EQ(test_data->key_renewal_request,
|
|
license_data.license_renewal_request);
|
|
EXPECT_EQ(test_data->key_renewal_response, license_data.license_renewal);
|
|
EXPECT_EQ(test_data->playback_start_time, license_data.playback_start_time);
|
|
EXPECT_EQ(test_data->last_playback_time, license_data.last_playback_time);
|
|
EXPECT_EQ(test_data->grace_period_end_time,
|
|
license_data.grace_period_end_time);
|
|
EXPECT_EQ(0u, license_data.app_parameters.size());
|
|
EXPECT_EQ(test_data->usage_entry, license_data.usage_entry);
|
|
EXPECT_EQ(test_data->usage_entry_index, license_data.usage_entry_index);
|
|
EXPECT_EQ(test_data->drm_certificate, license_data.drm_certificate);
|
|
EXPECT_EQ(test_data->key_type, license_data.wrapped_private_key.type());
|
|
EXPECT_EQ(test_data->private_key, license_data.wrapped_private_key.key());
|
|
EXPECT_EQ(DeviceFiles::kNoError, sub_error_code);
|
|
}
|
|
|
|
TEST_F(DeviceFilesTest, UpdateLicenseState) {
|
|
MockFileSystem file_system;
|
|
std::string license_path = device_base_path_ +
|
|
kLicenseUpdateTestData[0].key_set_id +
|
|
DeviceFiles::GetLicenseFileNameExtension();
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
|
|
for (size_t i = 0; i < ArraySize(kLicenseUpdateTestData); i++) {
|
|
// Call to Open will return a unique_ptr, freeing this object.
|
|
MockFile* file = new MockFile();
|
|
EXPECT_CALL(file_system, Open(StrEq(license_path), IsCreateFileFlagSet()))
|
|
.WillOnce(Return(ByMove(std::unique_ptr<File>(file))));
|
|
EXPECT_CALL(*file, Write(_, _))
|
|
.With(AllArgs(StrAndLenEq(kLicenseUpdateTestData[i].file_data)))
|
|
.WillOnce(ReturnArg<1>());
|
|
EXPECT_CALL(*file, Read(_, _)).Times(0);
|
|
DeviceFiles::CdmLicenseData license_data{
|
|
kLicenseUpdateTestData[0].key_set_id,
|
|
kLicenseUpdateTestData[i].license_state,
|
|
kLicenseUpdateTestData[0].pssh_data,
|
|
kLicenseUpdateTestData[0].key_request,
|
|
kLicenseUpdateTestData[0].key_response,
|
|
kLicenseUpdateTestData[0].key_renewal_request,
|
|
kLicenseUpdateTestData[0].key_renewal_response,
|
|
kLicenseUpdateTestData[0].key_release_url,
|
|
kLicenseUpdateTestData[0].playback_start_time,
|
|
kLicenseUpdateTestData[0].last_playback_time,
|
|
kLicenseUpdateTestData[0].grace_period_end_time,
|
|
GetAppParameters(kLicenseTestData[0].app_parameters),
|
|
kLicenseUpdateTestData[0].usage_entry,
|
|
kLicenseUpdateTestData[0].usage_entry_index,
|
|
kLicenseUpdateTestData[0].drm_certificate,
|
|
CryptoWrappedKey(kLicenseTestData[0].key_type,
|
|
kLicenseTestData[0].private_key)};
|
|
DeviceFiles::ResponseType sub_error_code;
|
|
EXPECT_TRUE(device_files.StoreLicense(license_data, &sub_error_code));
|
|
EXPECT_EQ(DeviceFiles::kNoError, sub_error_code);
|
|
}
|
|
}
|
|
|
|
TEST_F(DeviceFilesTest, DeleteLicense) {
|
|
MockFileSystem file_system;
|
|
std::string license_path = device_base_path_ +
|
|
kLicenseTestData[0].key_set_id +
|
|
DeviceFiles::GetLicenseFileNameExtension();
|
|
|
|
size_t size = kLicenseTestData[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))).WillOnce(Return(false));
|
|
EXPECT_CALL(file_system, Exists(StrEq(license_path), NotNull()))
|
|
.WillOnce(Return(true));
|
|
EXPECT_CALL(file_system, FileSize(StrEq(license_path)))
|
|
.WillOnce(Return(size));
|
|
EXPECT_CALL(file_system, Open(StrEq(license_path), _))
|
|
.WillOnce(Return(ByMove(std::unique_ptr<File>(file))));
|
|
EXPECT_CALL(*file, Read(NotNull(), Eq(size)))
|
|
.WillOnce(DoAll(SetArrayArgument<0>(kLicenseTestData[0].file_data.begin(),
|
|
kLicenseTestData[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::CdmLicenseData license_data;
|
|
DeviceFiles::ResponseType sub_error_code;
|
|
|
|
EXPECT_TRUE(device_files.RetrieveLicense(kLicenseTestData[0].key_set_id,
|
|
&license_data, &sub_error_code));
|
|
EXPECT_EQ(kLicenseTestData[0].key_set_id, license_data.key_set_id);
|
|
EXPECT_EQ(kLicenseTestData[0].license_state, license_data.state);
|
|
EXPECT_EQ(kLicenseTestData[0].pssh_data, license_data.pssh_data);
|
|
EXPECT_EQ(kLicenseTestData[0].key_request, license_data.license_request);
|
|
EXPECT_EQ(kLicenseTestData[0].key_response, license_data.license);
|
|
EXPECT_EQ(kLicenseTestData[0].key_renewal_request,
|
|
license_data.license_renewal_request);
|
|
EXPECT_EQ(kLicenseTestData[0].key_renewal_response,
|
|
license_data.license_renewal);
|
|
EXPECT_EQ(kLicenseTestData[0].playback_start_time,
|
|
license_data.playback_start_time);
|
|
EXPECT_EQ(kLicenseTestData[0].last_playback_time,
|
|
license_data.last_playback_time);
|
|
EXPECT_EQ(kLicenseTestData[0].grace_period_end_time,
|
|
license_data.grace_period_end_time);
|
|
std::map<std::string, std::string>::iterator itr;
|
|
for (itr = license_data.app_parameters.begin();
|
|
itr != license_data.app_parameters.end(); ++itr) {
|
|
EXPECT_NE(kLicenseTestData[0].app_parameters.find(itr->first),
|
|
std::string::npos);
|
|
EXPECT_NE(kLicenseTestData[0].app_parameters.find(itr->second),
|
|
std::string::npos);
|
|
}
|
|
EXPECT_EQ(kLicenseTestData[0].usage_entry, license_data.usage_entry);
|
|
EXPECT_EQ(kLicenseTestData[0].usage_entry_index,
|
|
license_data.usage_entry_index);
|
|
EXPECT_EQ(kLicenseTestData[0].drm_certificate, license_data.drm_certificate);
|
|
EXPECT_EQ(kLicenseTestData[0].key_type,
|
|
license_data.wrapped_private_key.type());
|
|
EXPECT_EQ(kLicenseTestData[0].private_key,
|
|
license_data.wrapped_private_key.key());
|
|
EXPECT_EQ(DeviceFiles::kNoError, sub_error_code);
|
|
|
|
EXPECT_TRUE(device_files.DeleteLicense(kLicenseTestData[0].key_set_id));
|
|
EXPECT_FALSE(device_files.LicenseExists(kLicenseTestData[0].key_set_id));
|
|
}
|
|
|
|
TEST_F(DeviceFilesTest, ReserveLicenseIdsDoesNotUseFileSystem) {
|
|
// Validate that ReserveLicenseIds does not touch the file system.
|
|
MockFileSystem file_system;
|
|
EXPECT_CALL(file_system, Open(_, _)).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(kLicenseTestData[i].key_set_id));
|
|
// Validate that the license IDs are actually reserved.
|
|
EXPECT_TRUE(device_files.LicenseExists(kLicenseTestData[i].key_set_id));
|
|
// Unreserve these IDs to avoid polluting other tests.
|
|
EXPECT_TRUE(
|
|
device_files.UnreserveLicenseId(kLicenseTestData[i].key_set_id));
|
|
}
|
|
}
|
|
|
|
// OKP info can only be stored on L1 device files.
|
|
TEST_F(DeviceFilesTest, OkpInfo_L1Only) {
|
|
MockFileSystem file_system;
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL3));
|
|
|
|
okp::SystemFallbackInfo info;
|
|
info.SetState(okp::SystemState::kNeedsProvisioning);
|
|
info.SetFirstCheckedTime(1234);
|
|
|
|
const std::string kErrorMessage = "OKP should not be available on L3";
|
|
EXPECT_FALSE(device_files.StoreOkpInfo(info)) << kErrorMessage;
|
|
EXPECT_FALSE(device_files.RetrieveOkpInfo(&info)) << kErrorMessage;
|
|
EXPECT_FALSE(device_files.DeleteOkpInfo()) << kErrorMessage;
|
|
}
|
|
|
|
// Uninitialized info cannot be stored.
|
|
TEST_F(DeviceFilesTest, OkpInfo_UninitializedInfo) {
|
|
MockFileSystem file_system;
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
okp::SystemFallbackInfo info; // Uninitialized.
|
|
EXPECT_FALSE(device_files.StoreOkpInfo(info));
|
|
}
|
|
|
|
TEST_F(DeviceFilesTest, OkpInfo_FileDoesNotExist) {
|
|
MockFileSystem file_system;
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
int errno_value = ENOENT;
|
|
|
|
const std::string kOkpInfoPath =
|
|
device_base_path_ + DeviceFiles::GetOkpInfoFileName();
|
|
EXPECT_CALL(file_system, Exists(StrEq(kOkpInfoPath), NotNull()))
|
|
.WillRepeatedly(DoAll(SetArgPointee<1>(errno_value), (Return(false))));
|
|
|
|
okp::SystemFallbackInfo info;
|
|
EXPECT_FALSE(device_files.RetrieveOkpInfo(&info));
|
|
}
|
|
|
|
TEST_F(DeviceFilesTest, OkpInfo_RetrieveWithNull) {
|
|
MockFileSystem file_system;
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
EXPECT_FALSE(device_files.RetrieveOkpInfo(nullptr));
|
|
}
|
|
|
|
TEST_F(DeviceFilesTest, OkpInfo_DeleteFile) {
|
|
MockFileSystem file_system;
|
|
DeviceFiles device_files(&file_system);
|
|
|
|
// L1 - Should succeed.
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
const std::string kOkpInfoPath =
|
|
device_base_path_ + DeviceFiles::GetOkpInfoFileName();
|
|
EXPECT_CALL(file_system, Remove(kOkpInfoPath)).WillOnce(Return(true));
|
|
EXPECT_TRUE(device_files.DeleteOkpInfo());
|
|
|
|
// L3 - Should fail.
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL3));
|
|
EXPECT_FALSE(device_files.DeleteOkpInfo());
|
|
}
|
|
|
|
TEST_F(DeviceFilesTest, OkpInfo_StoreAndRetrieve) {
|
|
MockFileSystem file_system;
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
|
|
// Prepare data.
|
|
okp::SystemFallbackInfo info;
|
|
info.SetState(okp::SystemState::kFallbackMode);
|
|
info.SetFirstCheckedTime(1234);
|
|
info.SetBackoffStartTime(2345);
|
|
info.SetBackoffDuration(1111);
|
|
|
|
// Set store expectations.
|
|
const std::string kOkpInfoPath =
|
|
device_base_path_ + DeviceFiles::GetOkpInfoFileName();
|
|
MockFile* file = new MockFile();
|
|
EXPECT_CALL(file_system, Open(kOkpInfoPath, _))
|
|
.WillOnce(Return(ByMove(std::unique_ptr<File>(file))));
|
|
std::string serialized;
|
|
EXPECT_CALL(*file, Write(NotNull(), _))
|
|
.WillOnce(DoAll(Invoke([&](const char* buf, size_t len) {
|
|
serialized.assign(buf, len);
|
|
}),
|
|
ReturnArg<1>()));
|
|
|
|
EXPECT_TRUE(device_files.StoreOkpInfo(info));
|
|
ASSERT_FALSE(serialized.empty()) << "OKP info was not serialized";
|
|
|
|
// Set retrieve expectations.
|
|
file = new MockFile();
|
|
EXPECT_CALL(file_system, Exists(StrEq(kOkpInfoPath), NotNull()))
|
|
.WillOnce(Return(true));
|
|
EXPECT_CALL(file_system, FileSize(kOkpInfoPath))
|
|
.WillOnce(Return(serialized.size()));
|
|
EXPECT_CALL(file_system, Open(kOkpInfoPath, _))
|
|
.WillOnce(Return(ByMove(std::unique_ptr<File>(file))));
|
|
EXPECT_CALL(*file, Read(NotNull(), _))
|
|
.WillOnce(DoAll(SetArrayArgument<0>(serialized.begin(), serialized.end()),
|
|
Return(serialized.size())));
|
|
|
|
okp::SystemFallbackInfo retrieved_info;
|
|
EXPECT_TRUE(device_files.RetrieveOkpInfo(&retrieved_info));
|
|
|
|
EXPECT_EQ(retrieved_info, info);
|
|
}
|
|
|
|
// From a usage info file containing 3 provider sessions, 2 will be
|
|
// deleted using the |key_set_id| associated with them.
|
|
// It is expected that once the provider sessions are deleted, the
|
|
// usage info file will be overwritten with only the remaining provider
|
|
// session token present.
|
|
TEST_P(DeviceFilesDeleteMultipleUsageInfoTest, DeleteAllButOne) {
|
|
static const std::string kUsageInfoFileName = "usage_info_file.bin";
|
|
const int key_set_id_index = GetParam();
|
|
|
|
const std::string& result_hashed_usage_info_file =
|
|
kHashedUsageInfoFileWithSingleKeySetList[key_set_id_index];
|
|
|
|
MockFileSystem file_system;
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
std::string file_path;
|
|
ASSERT_TRUE(Properties::GetDeviceFilesBasePath(kSecurityLevelL1, &file_path));
|
|
file_path += kUsageInfoFileName;
|
|
|
|
EXPECT_CALL(file_system, Exists(_)).WillRepeatedly(Return(true));
|
|
EXPECT_CALL(file_system, Exists(_, NotNull())).WillOnce(Return(true));
|
|
EXPECT_CALL(file_system, FileSize(file_path))
|
|
.WillOnce(Return(kHashedUsageInfoFileWithThreeKeySetIds.size()));
|
|
|
|
// File read expectations.
|
|
MockFile* file_in = new MockFile();
|
|
EXPECT_CALL(file_system, Open(file_path, wvutil::FileSystem::kReadOnly))
|
|
.WillOnce(Return(ByMove(std::unique_ptr<File>(file_in))));
|
|
Expectation read_original =
|
|
EXPECT_CALL(*file_in, Read(NotNull(), _))
|
|
.WillOnce(
|
|
DoAll(SetArrayArgument<0>(
|
|
kHashedUsageInfoFileWithThreeKeySetIds.cbegin(),
|
|
kHashedUsageInfoFileWithThreeKeySetIds.cend()),
|
|
Return(kHashedUsageInfoFileWithThreeKeySetIds.size())));
|
|
|
|
// File write expectations.
|
|
MockFile* file_out = new MockFile();
|
|
EXPECT_CALL(file_system, Open(file_path, wvutil::FileSystem::kCreate |
|
|
wvutil::FileSystem::kTruncate))
|
|
.WillOnce(Return(ByMove(std::unique_ptr<File>(file_out))));
|
|
EXPECT_CALL(*file_out, Write(StrEq(result_hashed_usage_info_file), _))
|
|
.After(read_original)
|
|
.WillOnce(Return(result_hashed_usage_info_file.size()));
|
|
|
|
const auto not_current_key_set =
|
|
[key_set_id_index](const std::string& key_set_id) {
|
|
return key_set_id != kHashedUsageInfoFileKeySetList[key_set_id_index];
|
|
};
|
|
std::vector<std::string> to_remove;
|
|
std::copy_if(kHashedUsageInfoFileKeySetList.cbegin(),
|
|
kHashedUsageInfoFileKeySetList.cend(),
|
|
std::back_inserter(to_remove), not_current_key_set);
|
|
EXPECT_TRUE(device_files.DeleteMultipleUsageInfoByKeySetIds(
|
|
kUsageInfoFileName, to_remove));
|
|
}
|
|
|
|
INSTANTIATE_TEST_SUITE_P(DeviceFilesTest,
|
|
DeviceFilesDeleteMultipleUsageInfoTest,
|
|
::testing::Range(0, 3));
|
|
|
|
// Delete all provider sessions from a usage info file. It is expected
|
|
// that the usage info file will be deleted (not written back to with
|
|
// an empty provider session list).
|
|
TEST_F(DeviceFilesDeleteMultipleUsageInfoTest, DeleteAllKeySetIds) {
|
|
static const std::string kUsageInfoFileName = "usage_info_file.bin";
|
|
|
|
// Setup
|
|
MockFileSystem file_system;
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
std::string file_path;
|
|
ASSERT_TRUE(Properties::GetDeviceFilesBasePath(kSecurityLevelL1, &file_path));
|
|
file_path += kUsageInfoFileName;
|
|
|
|
// File read expectations.
|
|
MockFile* file_in = new MockFile();
|
|
EXPECT_CALL(file_system, Exists(_)).WillRepeatedly(Return(true));
|
|
EXPECT_CALL(file_system, Exists(_, NotNull())).WillRepeatedly(Return(true));
|
|
EXPECT_CALL(file_system, FileSize(file_path))
|
|
.WillOnce(Return(kHashedUsageInfoFileWithThreeKeySetIds.size()));
|
|
EXPECT_CALL(file_system, Open(file_path, wvutil::FileSystem::kReadOnly))
|
|
.WillOnce(Return(ByMove(std::unique_ptr<File>(file_in))));
|
|
EXPECT_CALL(*file_in, Read(NotNull(), _))
|
|
.WillOnce(DoAll(
|
|
SetArrayArgument<0>(kHashedUsageInfoFileWithThreeKeySetIds.cbegin(),
|
|
kHashedUsageInfoFileWithThreeKeySetIds.cend()),
|
|
Return(kHashedUsageInfoFileWithThreeKeySetIds.size())));
|
|
EXPECT_CALL(file_system, Remove(file_path)).WillOnce(Return(true));
|
|
|
|
// Remove all sessions, and the file should be deleted.
|
|
EXPECT_TRUE(device_files.DeleteMultipleUsageInfoByKeySetIds(
|
|
kUsageInfoFileName, kHashedUsageInfoFileKeySetList));
|
|
}
|
|
|
|
// If the key set IDs provided cannot be found in the usage info file,
|
|
// then no action should be taken, and the function returns true.
|
|
TEST_F(DeviceFilesDeleteMultipleUsageInfoTest, DeleteNone) {
|
|
static const std::string kUsageInfoFileName = "usage_info_file.bin";
|
|
|
|
// Setup
|
|
MockFileSystem file_system;
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
std::string file_path;
|
|
ASSERT_TRUE(Properties::GetDeviceFilesBasePath(kSecurityLevelL1, &file_path));
|
|
file_path += kUsageInfoFileName;
|
|
|
|
EXPECT_CALL(file_system, Exists(_)).WillRepeatedly(Return(true));
|
|
EXPECT_CALL(file_system, Exists(_, NotNull())).WillRepeatedly(Return(true));
|
|
|
|
// Call, not providing any key set IDs. Should return true without any
|
|
// action, assuming the file exists.
|
|
EXPECT_TRUE(device_files.DeleteMultipleUsageInfoByKeySetIds(
|
|
kUsageInfoFileName, std::vector<std::string>()));
|
|
|
|
MockFile* file_in = new MockFile();
|
|
EXPECT_CALL(file_system, FileSize(file_path))
|
|
.WillOnce(Return(kHashedUsageInfoFileWithThreeKeySetIds.size()));
|
|
EXPECT_CALL(file_system, Open(file_path, wvutil::FileSystem::kReadOnly))
|
|
.WillOnce(Return(ByMove(std::unique_ptr<File>(file_in))));
|
|
EXPECT_CALL(*file_in, Read(NotNull(), _))
|
|
.WillOnce(DoAll(
|
|
SetArrayArgument<0>(kHashedUsageInfoFileWithThreeKeySetIds.cbegin(),
|
|
kHashedUsageInfoFileWithThreeKeySetIds.cend()),
|
|
Return(kHashedUsageInfoFileWithThreeKeySetIds.size())));
|
|
|
|
// Call, providing key set IDs which do not exist in the usage info
|
|
// file.
|
|
const std::vector<std::string> key_set_ids = {"fictional_key_set_id_1",
|
|
"fictional_key_set_id_2",
|
|
"fictional_key_set_id_3"};
|
|
EXPECT_TRUE(device_files.DeleteMultipleUsageInfoByKeySetIds(
|
|
kUsageInfoFileName, key_set_ids));
|
|
}
|
|
|
|
// Delete a single key from the file.
|
|
// Test will delete "key_set_id_2" from the usage info file containing
|
|
// "key_set_id_1" & "key_set_id_2".
|
|
TEST_F(DeviceFilesDeleteMultipleUsageInfoTest, DeleteOne) {
|
|
static const std::string kUsageInfoFileName = "usage_info_file.bin";
|
|
|
|
MockFileSystem file_system;
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
std::string file_path;
|
|
ASSERT_TRUE(Properties::GetDeviceFilesBasePath(kSecurityLevelL1, &file_path));
|
|
file_path += kUsageInfoFileName;
|
|
|
|
EXPECT_CALL(file_system, Exists(_)).WillRepeatedly(Return(true));
|
|
EXPECT_CALL(file_system, Exists(_, NotNull())).WillRepeatedly(Return(true));
|
|
EXPECT_CALL(file_system, FileSize(file_path))
|
|
.WillOnce(Return(kHashedUsageInfoFileWithTwoKeySetIds.size()));
|
|
|
|
// File read expectations.
|
|
MockFile* file_in = new MockFile();
|
|
EXPECT_CALL(file_system, Open(file_path, wvutil::FileSystem::kReadOnly))
|
|
.WillOnce(Return(ByMove(std::unique_ptr<File>(file_in))));
|
|
Expectation read_original =
|
|
EXPECT_CALL(*file_in, Read(NotNull(), _))
|
|
.WillOnce(DoAll(
|
|
SetArrayArgument<0>(kHashedUsageInfoFileWithTwoKeySetIds.cbegin(),
|
|
kHashedUsageInfoFileWithTwoKeySetIds.cend()),
|
|
Return(kHashedUsageInfoFileWithTwoKeySetIds.size())));
|
|
|
|
// File write expectations.
|
|
MockFile* file_out = new MockFile();
|
|
EXPECT_CALL(file_system, Open(file_path, wvutil::FileSystem::kCreate |
|
|
wvutil::FileSystem::kTruncate))
|
|
.WillOnce(Return(ByMove(std::unique_ptr<File>(file_out))));
|
|
EXPECT_CALL(*file_out, Write(StrEq(kHashedUsageInfoFileWithKeySet1), _))
|
|
.After(read_original)
|
|
.WillOnce(Return(kHashedUsageInfoFileWithKeySet1.size()));
|
|
|
|
const std::vector<std::string> to_remove = {"key_set_id_2"};
|
|
EXPECT_TRUE(device_files.DeleteMultipleUsageInfoByKeySetIds(
|
|
kUsageInfoFileName, to_remove));
|
|
}
|
|
|
|
// There are a few error cases where DeleteMultipleUsageInfoByKeySetIds()
|
|
// will fail. Such as if the specified file does not exist, or if it
|
|
// the file is found to have a hash mismatch. In both these cases,
|
|
// false should be returned.
|
|
TEST_F(DeviceFilesDeleteMultipleUsageInfoTest, BadFile) {
|
|
static const std::string kUsageInfoFileName = "usage_info_file.bin";
|
|
static const std::string kHashlessUsageInfoFile = a2bs_hex(
|
|
"0A36080310012A300A0E220C6B65795F7365745F69645F310A0E220C6B65795F"
|
|
"7365745F69645F320A0E220C6B65795F7365745F69645F331220000000000000"
|
|
"0000000000000000000000000000000000000000000000000000");
|
|
// Setup
|
|
MockFileSystem file_system;
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
std::string file_path;
|
|
ASSERT_TRUE(Properties::GetDeviceFilesBasePath(kSecurityLevelL1, &file_path));
|
|
file_path += kUsageInfoFileName;
|
|
|
|
// File does not exist.
|
|
EXPECT_CALL(file_system, Exists(_)).WillRepeatedly(Return(false));
|
|
EXPECT_FALSE(device_files.DeleteMultipleUsageInfoByKeySetIds(
|
|
kUsageInfoFileName, kHashedUsageInfoFileKeySetList));
|
|
|
|
// File is missing hash.
|
|
MockFile* file_in = new MockFile();
|
|
EXPECT_CALL(file_system, Exists(_)).WillRepeatedly(Return(true));
|
|
EXPECT_CALL(file_system, Exists(_, NotNull())).WillRepeatedly(Return(true));
|
|
EXPECT_CALL(file_system, FileSize(file_path))
|
|
.WillOnce(Return(kHashlessUsageInfoFile.size()));
|
|
EXPECT_CALL(file_system, Open(file_path, wvutil::FileSystem::kReadOnly))
|
|
.WillOnce(Return(ByMove(std::unique_ptr<File>(file_in))));
|
|
EXPECT_CALL(*file_in, Read(NotNull(), _))
|
|
.WillOnce(DoAll(SetArrayArgument<0>(kHashlessUsageInfoFile.cbegin(),
|
|
kHashlessUsageInfoFile.cend()),
|
|
Return(kHashlessUsageInfoFile.size())));
|
|
|
|
EXPECT_CALL(file_system, Remove(file_path)).WillOnce(Return(true));
|
|
// Remove all sessions, and the file should be deleted.
|
|
EXPECT_FALSE(device_files.DeleteMultipleUsageInfoByKeySetIds(
|
|
kUsageInfoFileName, kHashedUsageInfoFileKeySetList));
|
|
}
|
|
|
|
TEST_F(DeviceFilesUsageInfoTest, ListNullParam) {
|
|
MockFileSystem file_system;
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
EXPECT_FALSE(device_files.ListUsageInfoFiles(nullptr));
|
|
}
|
|
|
|
TEST_F(DeviceFilesUsageInfoTest, ListIdsNull) {
|
|
MockFileSystem file_system;
|
|
|
|
const 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, nullptr, nullptr));
|
|
}
|
|
|
|
TEST_F(DeviceFilesUsageInfoTest, ListUsageIds) {
|
|
MockFileSystem file_system;
|
|
|
|
const int index = 8;
|
|
const std::string& app_id = kUsageInfoTestData[index].app_id;
|
|
|
|
const std::string file_name = DeviceFiles::GetUsageInfoFileName(app_id);
|
|
const std::string path = device_base_path_ + file_name;
|
|
const 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))).WillOnce(Return(true));
|
|
EXPECT_CALL(file_system, Exists(StrEq(path), NotNull()))
|
|
.WillOnce(Return(true));
|
|
EXPECT_CALL(file_system, FileSize(StrEq(path)))
|
|
.Times(2)
|
|
.WillRepeatedly(Return(file_data.size()));
|
|
EXPECT_CALL(file_system, Open(StrEq(path), _))
|
|
.WillOnce(Return(ByMove(std::unique_ptr<File>(file))));
|
|
EXPECT_CALL(*file, Read(NotNull(), Eq(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));
|
|
|
|
ASSERT_EQ(key_set_ids.size(), provider_session_tokens.size());
|
|
if (index < 0) return;
|
|
// Ensure that all the listed key set IDs and PSTs are found within
|
|
// the list of usage entries.
|
|
// Note: Any entry found in |.file_data| would have been defined in
|
|
// in |.usage_data| at or before the current |index|.
|
|
for (size_t i = 0; i < provider_session_tokens.size(); ++i) {
|
|
const std::string& pst = provider_session_tokens[i];
|
|
const CdmKeySetId& ksid = key_set_ids[i];
|
|
bool found = false;
|
|
for (int j = 0; !found && j <= index; ++j) {
|
|
if (kUsageInfoTestData[j].app_id != app_id) continue;
|
|
const DeviceFiles::CdmUsageData& usage_data =
|
|
kUsageInfoTestData[j].usage_data;
|
|
if (pst == usage_data.provider_session_token &&
|
|
ksid == usage_data.key_set_id) {
|
|
found = true;
|
|
}
|
|
}
|
|
EXPECT_TRUE(found);
|
|
}
|
|
}
|
|
|
|
TEST_P(DeviceFilesUsageInfoListTest, UsageInfoList) {
|
|
MockFileSystem file_system;
|
|
|
|
const int index = GetParam();
|
|
// List of all file names.
|
|
std::vector<std::string> file_list;
|
|
// List of only usage info files.
|
|
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_SUITE_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();
|
|
|
|
const int index = GetParam();
|
|
|
|
const std::string app_id =
|
|
(index >= 0) ? kUsageInfoTestData[index].app_id : "";
|
|
const std::string file_name = DeviceFiles::GetUsageInfoFileName(app_id);
|
|
const std::string path = device_base_path_ + file_name;
|
|
|
|
// Raw data fields for each usage info record matching belonging
|
|
// to the same |app_id|.
|
|
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) continue;
|
|
const DeviceFiles::CdmUsageData& usage_data =
|
|
kUsageInfoTestData[i].usage_data;
|
|
usage_data_list.push_back(kUsageInfoTestData[i].usage_data);
|
|
|
|
usage_data_fields.push_back(usage_data.provider_session_token);
|
|
usage_data_fields.push_back(usage_data.license_request);
|
|
usage_data_fields.push_back(usage_data.license);
|
|
usage_data_fields.push_back(usage_data.key_set_id);
|
|
usage_data_fields.push_back(usage_data.usage_entry);
|
|
usage_data_fields.push_back(usage_data.drm_certificate);
|
|
usage_data_fields.push_back(usage_data.wrapped_private_key.key());
|
|
}
|
|
|
|
EXPECT_CALL(file_system, Open(StrEq(path), _))
|
|
.WillOnce(Return(ByMove(std::unique_ptr<File>(file))));
|
|
EXPECT_CALL(*file, Write(_, _))
|
|
.With(AllArgs(StrAndLenContains(usage_data_fields)))
|
|
.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;
|
|
|
|
const int index = GetParam();
|
|
|
|
const std::string app_id =
|
|
(index >= 0) ? kUsageInfoTestData[index].app_id : "";
|
|
const std::string file_name = DeviceFiles::GetUsageInfoFileName(app_id);
|
|
const std::string path = device_base_path_ + file_name;
|
|
const 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))).WillOnce(Return(true));
|
|
EXPECT_CALL(file_system, Exists(StrEq(path), NotNull()))
|
|
.WillOnce(Return(true));
|
|
EXPECT_CALL(file_system, FileSize(StrEq(path)))
|
|
.Times(2)
|
|
.WillRepeatedly(Return(file_data.size()));
|
|
EXPECT_CALL(file_system, Open(StrEq(path), _))
|
|
.WillOnce(Return(ByMove(std::unique_ptr<File>(file))));
|
|
EXPECT_CALL(*file, Read(NotNull(), Eq(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 (const auto& retrieved_usage_data : usage_data_list) {
|
|
bool found = false;
|
|
for (int i = 0; !found && i <= index; i++) {
|
|
if (kUsageInfoTestData[i].app_id != app_id) continue;
|
|
const auto& known_usage_data = kUsageInfoTestData[i].usage_data;
|
|
if (known_usage_data.key_set_id != retrieved_usage_data.key_set_id)
|
|
continue;
|
|
// Rest of the entry data must match.
|
|
EXPECT_EQ(retrieved_usage_data.provider_session_token,
|
|
known_usage_data.provider_session_token);
|
|
EXPECT_EQ(retrieved_usage_data.license_request,
|
|
known_usage_data.license_request);
|
|
EXPECT_EQ(retrieved_usage_data.license, known_usage_data.license);
|
|
EXPECT_EQ(retrieved_usage_data.key_set_id, known_usage_data.key_set_id);
|
|
EXPECT_EQ(retrieved_usage_data.usage_entry, known_usage_data.usage_entry);
|
|
EXPECT_EQ(retrieved_usage_data.usage_entry_index,
|
|
known_usage_data.usage_entry_index);
|
|
EXPECT_EQ(retrieved_usage_data.drm_certificate,
|
|
known_usage_data.drm_certificate);
|
|
EXPECT_EQ(retrieved_usage_data.wrapped_private_key,
|
|
known_usage_data.wrapped_private_key);
|
|
found = true;
|
|
}
|
|
EXPECT_TRUE(found) << "key_set_id = " << retrieved_usage_data.key_set_id;
|
|
}
|
|
}
|
|
|
|
TEST_P(DeviceFilesUsageInfoTest, ListKeySetIds) {
|
|
MockFileSystem file_system;
|
|
|
|
const int index = GetParam();
|
|
const std::string app_id =
|
|
(index >= 0) ? kUsageInfoTestData[index].app_id : "";
|
|
const std::string file_name = DeviceFiles::GetUsageInfoFileName(app_id);
|
|
const std::string path = device_base_path_ + file_name;
|
|
const 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))).WillOnce(Return(true));
|
|
EXPECT_CALL(file_system, Exists(StrEq(path), NotNull()))
|
|
.WillOnce(Return(true));
|
|
EXPECT_CALL(file_system, FileSize(StrEq(path)))
|
|
.Times(2)
|
|
.WillRepeatedly(Return(file_data.size()));
|
|
EXPECT_CALL(file_system, Open(StrEq(path), _))
|
|
.WillOnce(Return(ByMove(std::unique_ptr<File>(file))));
|
|
EXPECT_CALL(*file, Read(NotNull(), Eq(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<CdmKeySetId> key_set_ids;
|
|
EXPECT_TRUE(device_files.ListUsageIds(app_id, &key_set_ids, nullptr));
|
|
|
|
if (index < 0) {
|
|
EXPECT_TRUE(key_set_ids.empty());
|
|
return;
|
|
}
|
|
for (const CdmKeySetId& key_set_id : key_set_ids) {
|
|
bool found = false;
|
|
for (int i = 0; !found && i <= index; i++) {
|
|
if (app_id == kUsageInfoTestData[i].app_id &&
|
|
kUsageInfoTestData[i].usage_data.key_set_id == key_set_id) {
|
|
found = true;
|
|
}
|
|
}
|
|
EXPECT_TRUE(found);
|
|
}
|
|
}
|
|
|
|
TEST_P(DeviceFilesUsageInfoTest, ListProviderSessionTokenIds) {
|
|
MockFileSystem file_system;
|
|
|
|
const int index = GetParam();
|
|
const std::string app_id =
|
|
(index >= 0) ? kUsageInfoTestData[index].app_id : "";
|
|
const std::string file_name = DeviceFiles::GetUsageInfoFileName(app_id);
|
|
const std::string path = device_base_path_ + file_name;
|
|
const 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))).WillOnce(Return(true));
|
|
EXPECT_CALL(file_system, Exists(StrEq(path), NotNull()))
|
|
.WillOnce(Return(true));
|
|
EXPECT_CALL(file_system, FileSize(StrEq(path)))
|
|
.Times(2)
|
|
.WillRepeatedly(Return(file_data.size()));
|
|
EXPECT_CALL(file_system, Open(StrEq(path), _))
|
|
.WillOnce(Return(ByMove(std::unique_ptr<File>(file))));
|
|
EXPECT_CALL(*file, Read(NotNull(), Eq(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, nullptr, &provider_session_tokens));
|
|
|
|
if (index < 0) {
|
|
EXPECT_TRUE(provider_session_tokens.empty());
|
|
return;
|
|
}
|
|
for (const std::string& pst : provider_session_tokens) {
|
|
bool found = false;
|
|
for (int i = 0; !found && i <= index; i++) {
|
|
if (app_id == kUsageInfoTestData[i].app_id &&
|
|
kUsageInfoTestData[i].usage_data.provider_session_token == pst) {
|
|
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();
|
|
|
|
const int index = GetParam();
|
|
const std::string app_id =
|
|
(index >= 0) ? kUsageInfoTestData[index].app_id : "";
|
|
const std::string file_name = DeviceFiles::GetUsageInfoFileName(app_id);
|
|
const std::string path = device_base_path_ + file_name;
|
|
|
|
// Use the file info which contains all usage info sessions for the
|
|
// current |app_id|.
|
|
size_t max_index_by_app_id = 0;
|
|
for (size_t i = 0; i < ArraySize(kUsageInfoTestData); ++i) {
|
|
if (app_id == kUsageInfoTestData[i].app_id) max_index_by_app_id = i;
|
|
}
|
|
const std::string& file_data =
|
|
(index < 0) ? kEmptyUsageInfoFileData
|
|
: kUsageInfoTestData[max_index_by_app_id].file_data;
|
|
const std::string& provider_session_token =
|
|
kUsageInfoTestData[index < 0 ? 0 : index]
|
|
.usage_data.provider_session_token;
|
|
|
|
EXPECT_CALL(file_system, Exists(StrEq(path), NotNull()))
|
|
.WillOnce(Return(true));
|
|
EXPECT_CALL(file_system, FileSize(StrEq(path)))
|
|
.WillOnce(Return(file_data.size()));
|
|
EXPECT_CALL(file_system, Open(StrEq(path), _))
|
|
.WillOnce(Return(ByMove(std::unique_ptr<File>(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));
|
|
const DeviceFiles::CdmUsageData& expected_usage_data =
|
|
kUsageInfoTestData[index].usage_data;
|
|
|
|
EXPECT_EQ(expected_usage_data.provider_session_token,
|
|
usage_data.provider_session_token);
|
|
EXPECT_EQ(expected_usage_data.license_request, usage_data.license_request);
|
|
EXPECT_EQ(expected_usage_data.license, usage_data.license);
|
|
EXPECT_EQ(expected_usage_data.key_set_id, usage_data.key_set_id);
|
|
EXPECT_EQ(expected_usage_data.usage_entry, usage_data.usage_entry);
|
|
EXPECT_EQ(expected_usage_data.usage_entry_index,
|
|
usage_data.usage_entry_index);
|
|
}
|
|
}
|
|
|
|
TEST_P(DeviceFilesUsageInfoTest, UpdateUsageInfo) {
|
|
MockFileSystem file_system;
|
|
// Call to Open will return a unique_ptr, freeing this object.
|
|
MockFile* file = new MockFile();
|
|
|
|
const int index = GetParam();
|
|
const std::string app_id =
|
|
(index >= 0) ? kUsageInfoTestData[index].app_id : "";
|
|
const std::string file_name = DeviceFiles::GetUsageInfoFileName(app_id);
|
|
const std::string path = device_base_path_ + file_name;
|
|
|
|
// Fields expected to be written back when usage info is updated.
|
|
std::vector<std::string> usage_data_fields;
|
|
|
|
size_t max_index_by_app_id = 0;
|
|
for (size_t i = 0; i < ArraySize(kUsageInfoTestData); ++i) {
|
|
if (app_id != kUsageInfoTestData[i].app_id) continue;
|
|
max_index_by_app_id = i;
|
|
// Skip the entry that will be overwritten.
|
|
if ((int)i == index) continue;
|
|
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);
|
|
}
|
|
|
|
DeviceFiles::CdmUsageData updated_entry = kUsageInfoUpdateTestData;
|
|
|
|
if (index >= 0) {
|
|
// Updated entry must keep the same PST and key set ID.
|
|
updated_entry.provider_session_token =
|
|
kUsageInfoTestData[index].usage_data.provider_session_token;
|
|
updated_entry.key_set_id = kUsageInfoTestData[index].usage_data.key_set_id;
|
|
|
|
usage_data_fields.push_back(updated_entry.provider_session_token);
|
|
usage_data_fields.push_back(updated_entry.license_request);
|
|
usage_data_fields.push_back(updated_entry.license);
|
|
usage_data_fields.push_back(updated_entry.key_set_id);
|
|
usage_data_fields.push_back(updated_entry.usage_entry);
|
|
usage_data_fields.push_back(updated_entry.drm_certificate);
|
|
usage_data_fields.push_back(updated_entry.wrapped_private_key.key());
|
|
}
|
|
|
|
const std::string& file_data =
|
|
(index < 0) ? kEmptyUsageInfoFileData
|
|
: kUsageInfoTestData[max_index_by_app_id].file_data;
|
|
|
|
EXPECT_CALL(file_system, Exists(StrEq(path))).WillOnce(Return(true));
|
|
EXPECT_CALL(file_system, Exists(StrEq(path), NotNull()))
|
|
.WillOnce(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())));
|
|
|
|
if (index < 0) {
|
|
EXPECT_CALL(file_system, Open(StrEq(path), _))
|
|
.WillOnce(Return(ByMove(std::unique_ptr<File>(file))));
|
|
} else {
|
|
MockFile* next_file = new MockFile();
|
|
EXPECT_CALL(file_system, Open(StrEq(path), _))
|
|
.Times(2)
|
|
.WillOnce(Return(ByMove(std::unique_ptr<File>(file))))
|
|
.WillOnce(Return(ByMove(std::unique_ptr<File>(next_file))));
|
|
|
|
EXPECT_CALL(*next_file, Write(_, _))
|
|
.With(AllArgs(StrAndLenContains(usage_data_fields)))
|
|
.WillOnce(ReturnArg<1>());
|
|
}
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
if (index < 0) {
|
|
EXPECT_FALSE(device_files.UpdateUsageInfo(file_name, updated_entry));
|
|
} else {
|
|
EXPECT_TRUE(device_files.UpdateUsageInfo(file_name, updated_entry));
|
|
}
|
|
}
|
|
|
|
INSTANTIATE_TEST_SUITE_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();
|
|
const size_t hls_attribute_index = GetParam();
|
|
const HlsAttributesInfo* param = &kHlsAttributesTestData[hls_attribute_index];
|
|
std::string path = device_base_path_ + param->key_set_id +
|
|
DeviceFiles::GetHlsAttributesFileNameExtension();
|
|
|
|
EXPECT_CALL(file_system, Exists(StrEq(path), NotNull()))
|
|
.WillOnce(Return(true));
|
|
EXPECT_CALL(file_system, FileSize(StrEq(path)))
|
|
.WillRepeatedly(Return(param->file_data.size()));
|
|
EXPECT_CALL(file_system, Open(StrEq(path), _))
|
|
.WillOnce(Return(ByMove(std::unique_ptr<File>(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),
|
|
wvutil::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();
|
|
const size_t hls_attribute_index = GetParam();
|
|
const HlsAttributesInfo* param = &kHlsAttributesTestData[hls_attribute_index];
|
|
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, Open(StrEq(path), _))
|
|
.WillOnce(Return(ByMove(std::unique_ptr<File>(file))));
|
|
EXPECT_CALL(*file, Write(_, _))
|
|
.With(AllArgs(
|
|
StrAndLenContains(std::vector<std::string>{param->media_segment_iv})))
|
|
.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;
|
|
const size_t hls_attribute_index = GetParam();
|
|
const HlsAttributesInfo* param = &kHlsAttributesTestData[hls_attribute_index];
|
|
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_SUITE_P(HlsAttributes, DeviceFilesHlsAttributesTest,
|
|
::testing::Range<size_t>(0, kNumberOfHlsAttributes));
|
|
|
|
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();
|
|
|
|
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.push_back(kUsageTableInfoTestData[index].usage_table_header);
|
|
|
|
std::string path = device_base_path_ + DeviceFiles::GetUsageTableFileName();
|
|
|
|
EXPECT_CALL(file_system, Exists(StrEq(path))).WillRepeatedly(Return(true));
|
|
EXPECT_CALL(file_system, Open(StrEq(path), _))
|
|
.WillOnce(Return(ByMove(std::unique_ptr<File>(file))));
|
|
EXPECT_CALL(*file, Write(_, _))
|
|
.With(AllArgs(StrAndLenContains(entry_data)))
|
|
.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), NotNull()))
|
|
.WillOnce(Return(true));
|
|
EXPECT_CALL(file_system, FileSize(StrEq(path)))
|
|
.WillRepeatedly(Return(file_data.size()));
|
|
EXPECT_CALL(file_system, Open(StrEq(path), _))
|
|
.WillOnce(Return(ByMove(std::unique_ptr<File>(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;
|
|
UsageTableHeader usage_table_header;
|
|
bool lru_upgrade;
|
|
ASSERT_TRUE(device_files.RetrieveUsageTableInfo(
|
|
&usage_table_header, &usage_entry_info, &lru_upgrade));
|
|
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);
|
|
EXPECT_EQ(kUsageEntriesTestData[i].last_use_time,
|
|
usage_entry_info[i].last_use_time);
|
|
EXPECT_EQ(kUsageEntriesTestData[i].offline_license_expiry_time,
|
|
usage_entry_info[i].offline_license_expiry_time);
|
|
}
|
|
|
|
EXPECT_FALSE(lru_upgrade);
|
|
}
|
|
|
|
INSTANTIATE_TEST_SUITE_P(UsageInfo, DeviceFilesUsageTableTest,
|
|
::testing::Range(0, 6));
|
|
|
|
TEST_F(DeviceFilesUsageTableTest, ReadWithoutLruData) {
|
|
// Setup file.
|
|
MockFile* file = new MockFile();
|
|
EXPECT_CALL(*file, Read(NotNull(), Eq(kUsageTableWithoutLruData.size())))
|
|
.WillOnce(DoAll(SetArrayArgument<0>(kUsageTableWithoutLruData.cbegin(),
|
|
kUsageTableWithoutLruData.cend()),
|
|
Return(kUsageTableWithoutLruData.size())));
|
|
// Setup filesystem.
|
|
const std::string path =
|
|
device_base_path_ + DeviceFiles::GetUsageTableFileName();
|
|
MockFileSystem file_system;
|
|
EXPECT_CALL(file_system, Exists(StrEq(path), NotNull()))
|
|
.WillRepeatedly(Return(true));
|
|
EXPECT_CALL(file_system, FileSize(StrEq(path)))
|
|
.WillRepeatedly(Return(kUsageTableWithoutLruData.size()));
|
|
EXPECT_CALL(file_system, Open(StrEq(path), _))
|
|
.WillOnce(Return(ByMove(std::unique_ptr<File>(file))));
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
|
|
std::vector<CdmUsageEntryInfo> usage_entry_info;
|
|
UsageTableHeader usage_table_header;
|
|
bool lru_upgrade;
|
|
ASSERT_TRUE(device_files.RetrieveUsageTableInfo(
|
|
&usage_table_header, &usage_entry_info, &lru_upgrade));
|
|
|
|
EXPECT_EQ(ArraySize(kUsageEntriesWithoutLruData), usage_entry_info.size());
|
|
|
|
for (size_t i = 0; i < ArraySize(kUsageEntriesWithoutLruData); ++i) {
|
|
const CdmUsageEntryInfo& expected_entry = kUsageEntriesWithoutLruData[i];
|
|
const CdmUsageEntryInfo& retrieved_entry = usage_entry_info[i];
|
|
EXPECT_EQ(expected_entry, retrieved_entry);
|
|
}
|
|
|
|
EXPECT_TRUE(lru_upgrade);
|
|
}
|
|
|
|
TEST_F(DeviceFilesTest, StoreOemCertificateSuccess) {
|
|
MockFileSystem file_system;
|
|
const std::string oem_certificate_path =
|
|
device_base_path_ + wvutil::kOemCertificateFileName;
|
|
// Call to Open will return a unique_ptr, freeing this object.
|
|
MockFile* file = new MockFile();
|
|
EXPECT_CALL(file_system,
|
|
Open(StrEq(oem_certificate_path), IsCreateFileFlagSet()))
|
|
.WillOnce(Return(ByMove(std::unique_ptr<File>(file))));
|
|
EXPECT_CALL(*file, Write(_, _))
|
|
.With(AllArgs(StrAndLenContains(
|
|
std::vector<std::string>{kOemCertificate, kCryptoWrappedKey.key()})))
|
|
.WillOnce(ReturnArg<1>());
|
|
EXPECT_CALL(*file, Read(_, _)).Times(0);
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
ASSERT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
EXPECT_TRUE(
|
|
device_files.StoreOemCertificate(kOemCertificate, kCryptoWrappedKey));
|
|
}
|
|
|
|
TEST_F(DeviceFilesTest, StoreOemCertificateEmptyCertFail) {
|
|
MockFileSystem file_system;
|
|
const CryptoWrappedKey private_key(CryptoWrappedKey::kRsa,
|
|
CdmRandom::RandomData(kWrappedKeyLen));
|
|
EXPECT_CALL(file_system, Open(_, _)).Times(0);
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
ASSERT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
EXPECT_FALSE(
|
|
device_files.StoreOemCertificate(/*certificate=*/"", private_key));
|
|
}
|
|
|
|
TEST_F(DeviceFilesTest, StoreOemCertificateUninitializedKeyTypeFail) {
|
|
MockFileSystem file_system;
|
|
const std::string& certificate = "fake_oem_cert";
|
|
const CryptoWrappedKey private_key(CryptoWrappedKey::kUninitialized,
|
|
CdmRandom::RandomData(kWrappedKeyLen));
|
|
EXPECT_CALL(file_system, Open(_, _)).Times(0);
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
ASSERT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
EXPECT_FALSE(device_files.StoreOemCertificate(certificate, private_key));
|
|
}
|
|
|
|
TEST_F(DeviceFilesTest, StoreOemCertificateEmptyKeyFail) {
|
|
MockFileSystem file_system;
|
|
const std::string& certificate = "fake_oem_cert";
|
|
const CryptoWrappedKey private_key(CryptoWrappedKey::kRsa, "");
|
|
EXPECT_CALL(file_system, Open(_, _)).Times(0);
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
ASSERT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
EXPECT_FALSE(device_files.StoreOemCertificate(certificate, private_key));
|
|
}
|
|
|
|
TEST_F(DeviceFilesTest, HasOemCertificate) {
|
|
MockFileSystem file_system;
|
|
const std::string device_certificate_path =
|
|
device_base_path_ + wvutil::kOemCertificateFileName;
|
|
EXPECT_CALL(file_system, Exists(StrEq(device_certificate_path)))
|
|
.Times(AtLeast(1))
|
|
.WillRepeatedly(Return(true));
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
ASSERT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
EXPECT_TRUE(device_files.HasOemCertificate());
|
|
}
|
|
|
|
TEST_F(DeviceFilesTest, HasNoOemCertificate) {
|
|
MockFileSystem file_system;
|
|
const std::string device_certificate_path =
|
|
device_base_path_ + wvutil::kOemCertificateFileName;
|
|
EXPECT_CALL(file_system, Exists(StrEq(device_certificate_path)))
|
|
.Times(AtLeast(1))
|
|
.WillRepeatedly(Return(false));
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
ASSERT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
EXPECT_FALSE(device_files.HasOemCertificate());
|
|
}
|
|
|
|
TEST_F(DeviceFilesTest, RetrieveOemCertificateSuccess) {
|
|
MockFileSystem file_system;
|
|
const std::string device_certificate_path =
|
|
device_base_path_ + wvutil::kOemCertificateFileName;
|
|
// Call to Open will return a unique_ptr, freeing this object.
|
|
MockFile* read_file = new MockFile();
|
|
EXPECT_CALL(file_system, Exists(StrEq(device_certificate_path), NotNull()))
|
|
.Times(AtLeast(1))
|
|
.WillRepeatedly(Return(true));
|
|
EXPECT_CALL(file_system, FileSize(StrEq(device_certificate_path)))
|
|
.WillOnce(Return(kFakeOemCertificateFile.size()));
|
|
EXPECT_CALL(file_system, Open(StrEq(device_certificate_path), _))
|
|
.WillOnce(Return(ByMove(std::unique_ptr<File>(read_file))));
|
|
EXPECT_CALL(*read_file, Read(NotNull(), Eq(kFakeOemCertificateFile.size())))
|
|
.WillOnce(DoAll(SetArrayArgument<0>(kFakeOemCertificateFile.begin(),
|
|
kFakeOemCertificateFile.end()),
|
|
Return(kFakeOemCertificateFile.size())));
|
|
EXPECT_CALL(*read_file, Write(_, _)).Times(0);
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
|
|
std::string certificate;
|
|
CryptoWrappedKey private_key;
|
|
ASSERT_EQ(device_files.RetrieveOemCertificate(&certificate, &private_key),
|
|
DeviceFiles::kCertificateValid);
|
|
EXPECT_EQ(certificate, kOemCertificate);
|
|
EXPECT_EQ(private_key, kCryptoWrappedKey);
|
|
}
|
|
|
|
TEST_F(DeviceFilesTest, RetrieveOemCertificateRandomCertFail) {
|
|
MockFileSystem file_system;
|
|
const std::string device_certificate_path =
|
|
device_base_path_ + wvutil::kOemCertificateFileName;
|
|
std::string ramdom_cert = "random_cert";
|
|
// Call to Open will return a unique_ptr, freeing this object.
|
|
MockFile* read_file = new MockFile();
|
|
EXPECT_CALL(file_system, Exists(StrEq(device_certificate_path), NotNull()))
|
|
.Times(AtLeast(1))
|
|
.WillRepeatedly(Return(true));
|
|
EXPECT_CALL(file_system, FileSize(StrEq(device_certificate_path)))
|
|
.WillOnce(Return(ramdom_cert.size()));
|
|
EXPECT_CALL(file_system, Open(StrEq(device_certificate_path), _))
|
|
.WillOnce(Return(ByMove(std::unique_ptr<File>(read_file))));
|
|
EXPECT_CALL(*read_file, Read(NotNull(), Eq(ramdom_cert.size())))
|
|
.WillOnce(
|
|
DoAll(SetArrayArgument<0>(ramdom_cert.begin(), ramdom_cert.end()),
|
|
Return(ramdom_cert.size())));
|
|
EXPECT_CALL(*read_file, Write(_, _)).Times(0);
|
|
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
|
|
std::string certificate;
|
|
CryptoWrappedKey private_key;
|
|
EXPECT_EQ(device_files.RetrieveOemCertificate(&certificate, &private_key),
|
|
DeviceFiles::kCertificateNotFound);
|
|
}
|
|
|
|
TEST_F(DeviceFilesTest, RetrieveOemCertificateNotFoundFail) {
|
|
MockFileSystem file_system;
|
|
const std::string device_certificate_path =
|
|
device_base_path_ + wvutil::kOemCertificateFileName;
|
|
int errno_value = ENOENT;
|
|
EXPECT_CALL(file_system, Exists(StrEq(device_certificate_path), NotNull()))
|
|
.Times(AtLeast(1))
|
|
.WillRepeatedly(DoAll(SetArgPointee<1>(errno_value), (Return(false))));
|
|
DeviceFiles device_files(&file_system);
|
|
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
|
|
|
|
std::string certificate;
|
|
CryptoWrappedKey private_key;
|
|
EXPECT_EQ(device_files.RetrieveOemCertificate(&certificate, &private_key),
|
|
DeviceFiles::kCertificateNotFound);
|
|
}
|
|
} // namespace wvcdm
|