// Copyright 2017 Google Inc. All Rights Reserved. // TEST ONLY: Widevine Keybox #include "test_keybox.h" namespace test_data { namespace { // These are test keyboxes. They will not be accepted by production systems. // By using known keyboxes for these tests, the results for a given set of // inputs to a test are predictable and can be compared to the actual results. const wvcdm_test_auth::WidevineKeybox kTestKeybox = { // Sample keybox used for test vectors { // deviceID = WidevineTestOnlyKeybox000 0x57, 0x69, 0x64, 0x65, 0x76, 0x69, 0x6e, 0x65, 0x54, 0x65, 0x73, 0x74, 0x4f, 0x6e, 0x6c, 0x79, 0x4b, 0x65, 0x79, 0x62, 0x6f, 0x78, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }, { // key 0xe4, 0xff, 0x57, 0x4c, 0x32, 0x2e, 0xf5, 0x34, 0x26, 0x21, 0x2c, 0xb3, 0xed, 0x37, 0xf3, 0x5e, }, { // data (system ID 7912). 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x1e, 0xe8, 0xca, 0x1e, 0x71, 0x7c, 0xfb, 0xe8, 0xa3, 0x94, 0x52, 0x0a, 0x6b, 0x71, 0x37, 0xd2, 0x69, 0xfa, 0x5a, 0xc6, 0xb5, 0x4c, 0x6b, 0x46, 0x63, 0x9b, 0xbe, 0x80, 0x3d, 0xbb, 0x4f, 0xf7, 0x4c, 0x5f, 0x6f, 0x55, 0x0e, 0x3d, 0x3d, 0x9a, 0xcf, 0x81, 0x12, 0x5d, 0x52, 0xe0, 0x47, 0x8c, 0xda, 0x0b, 0xf4, 0x31, 0x41, 0x13, 0xd0, 0xd5, 0x2d, 0xa0, 0x5b, 0x20, 0x9a, 0xed, 0x51, 0x5d, 0x13, 0xd6, }, { // magic 0x6b, 0x62, 0x6f, 0x78, }, { // Crc 0x39, 0xf2, 0x94, 0xa7, } }; const uint32_t kTestKeyboxSystemId = 7912; // These are old test keyboxes. The first keybox can be used to update an // older OEMCrypto because it is the same keybox that was previously used in // unit tests. const wvcdm_test_auth::WidevineKeybox kValidKeybox01 = { // Sample keybox used for test vectors { // deviceID 0x54, 0x65, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x30, // TestKey01 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........ }, { // key 0xfb, 0xda, 0x04, 0x89, 0xa1, 0x58, 0x16, 0x0e, 0xa4, 0x02, 0xe9, 0x29, 0xe3, 0xb6, 0x8f, 0x04, }, { // data 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x10, 0x19, 0x07, 0xd9, 0xff, 0xde, 0x13, 0xaa, 0x95, 0xc1, 0x22, 0x67, 0x80, 0x53, 0x36, 0x21, 0x36, 0xbd, 0xf8, 0x40, 0x8f, 0x82, 0x76, 0xe4, 0xc2, 0xd8, 0x7e, 0xc5, 0x2b, 0x61, 0xaa, 0x1b, 0x9f, 0x64, 0x6e, 0x58, 0x73, 0x49, 0x30, 0xac, 0xeb, 0xe8, 0x99, 0xb3, 0xe4, 0x64, 0x18, 0x9a, 0x14, 0xa8, 0x72, 0x02, 0xfb, 0x02, 0x57, 0x4e, 0x70, 0x64, 0x0b, 0xd2, 0x2e, 0xf4, 0x4b, 0x2d, 0x7e, 0x39, }, { // magic 0x6b, 0x62, 0x6f, 0x78, }, { // Crc 0x0a, 0x7a, 0x2c, 0x35, } }; const wvcdm_test_auth::WidevineKeybox kValidKeybox02 = { // Sample keybox used for test vectors { // deviceID 0x54, 0x65, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x30, // TestKey02 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........ }, { // key 0x76, 0x5d, 0xce, 0x01, 0x04, 0x89, 0xb3, 0xd0, 0xdf, 0xce, 0x54, 0x8a, 0x49, 0xda, 0xdc, 0xb6, }, { // data 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x10, 0x19, 0x92, 0x27, 0x0b, 0x1f, 0x1a, 0xd5, 0xc6, 0x93, 0x19, 0x3f, 0xaa, 0x74, 0x1f, 0xdd, 0x5f, 0xb4, 0xe9, 0x40, 0x2f, 0x34, 0xa4, 0x92, 0xf4, 0xae, 0x9a, 0x52, 0x39, 0xbc, 0xb7, 0x24, 0x38, 0x13, 0xab, 0xf4, 0x92, 0x96, 0xc4, 0x81, 0x60, 0x33, 0xd8, 0xb8, 0x09, 0xc7, 0x55, 0x0e, 0x12, 0xfa, 0xa8, 0x98, 0x62, 0x8a, 0xec, 0xea, 0x74, 0x8a, 0x4b, 0xfa, 0x5a, 0x9e, 0xb6, 0x49, 0x0d, 0x80, }, { // magic 0x6b, 0x62, 0x6f, 0x78, }, { // Crc 0x2a, 0x3b, 0x3e, 0xe4, } }; const wvcdm_test_auth::WidevineKeybox kValidKeybox03 = { // Sample keybox used for test vectors { // deviceID 0x54, 0x65, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x30, // TestKey03 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........ }, { // key 0x25, 0xe5, 0x2a, 0x02, 0x29, 0x68, 0x04, 0xa2, 0x92, 0xfd, 0x7c, 0x67, 0x0b, 0x67, 0x1f, 0x31, }, { // data 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x10, 0x19, 0xf4, 0x0a, 0x0e, 0xa2, 0x0a, 0x71, 0xd5, 0x92, 0xfa, 0xa3, 0x25, 0xc6, 0x4b, 0x76, 0xf1, 0x64, 0xf4, 0x60, 0xa0, 0x30, 0x72, 0x23, 0xbe, 0x03, 0xcd, 0xde, 0x7a, 0x06, 0xd4, 0x01, 0xeb, 0xdc, 0xe0, 0x50, 0xc0, 0x53, 0x0a, 0x50, 0xb0, 0x37, 0xe5, 0x05, 0x25, 0x0e, 0xa4, 0xc8, 0x5a, 0xff, 0x46, 0x6e, 0xa5, 0x31, 0xf3, 0xdd, 0x94, 0xb7, 0xe0, 0xd3, 0xf9, 0x04, 0xb2, 0x54, 0xb1, 0x64, }, { // magic 0x6b, 0x62, 0x6f, 0x78, }, { // Crc 0xa1, 0x99, 0x5f, 0x46, } }; } // namespace } // namespace test_data // Refer to the following in main modules. // This level of indirection is present so new keyboxes can be // added and then selected for use at compile time or run time. namespace wvcdm_test_auth { const uint32_t kTestKeyboxSystemId = test_data::kTestKeyboxSystemId; const WidevineKeybox kTestKeybox = test_data::kTestKeybox; const WidevineKeybox kValidKeybox01 = test_data::kValidKeybox01; const WidevineKeybox kValidKeybox02 = test_data::kValidKeybox02; const WidevineKeybox kValidKeybox03 = test_data::kValidKeybox03; } // namespace wvcdm_test_auth