Misc Windows fixes.

(This is a merge of http://go/wvgerrit/70324)

- Add build settings for Windows.
- Conditionally add pthread.
- Add dummy DLLMain method.
- Fix #if checks for Windows.
- Remove designated initializers which aren't supported in MSVC.
- Remove variable length array.

Test: Android Unit Tests
Bug: 122953649
Change-Id: I14f16e7ce4b3ff17ee0139ea6c2f7243ae999aa1
This commit is contained in:
Jacob Trimble
2019-01-25 15:05:00 -08:00
committed by John W. Bruce
parent 85e2c6a026
commit b3dd9c3711
6 changed files with 90 additions and 64 deletions

View File

@@ -38,57 +38,63 @@ const CdmUsageEntry kYetAnotherUsageEntry = "yet another usage entry";
const CdmUsageEntry kAndAnotherUsageEntry = "and another usage entry"; const CdmUsageEntry kAndAnotherUsageEntry = "and another usage entry";
const CdmUsageEntry kOneMoreUsageEntry = "one more usage entry"; const CdmUsageEntry kOneMoreUsageEntry = "one more usage entry";
const CdmUsageEntryInfo kUsageEntryInfoOfflineLicense1 = { const CdmUsageEntryInfo kUsageEntryInfoOfflineLicense1 = {
.storage_type = kStorageLicense, /* storage_type = */ kStorageLicense,
.key_set_id = "offline_key_set_1", /* key_set_id = */ "offline_key_set_1",
.usage_info_file_name = ""}; /* usage_info_file_name = */ "",
};
const CdmUsageEntryInfo kUsageEntryInfoOfflineLicense2 = { const CdmUsageEntryInfo kUsageEntryInfoOfflineLicense2 = {
.storage_type = kStorageLicense, /* storage_type = */ kStorageLicense,
.key_set_id = "offline_key_set_2", /* key_set_id = */ "offline_key_set_2",
.usage_info_file_name = ""}; /* usage_info_file_name = */ "",
};
const CdmUsageEntryInfo kUsageEntryInfoOfflineLicense3 = { const CdmUsageEntryInfo kUsageEntryInfoOfflineLicense3 = {
.storage_type = kStorageLicense, /* storage_type = */ kStorageLicense,
.key_set_id = "offline_key_set_3", /* key_set_id = */ "offline_key_set_3",
.usage_info_file_name = ""}; /* usage_info_file_name = */ ""};
const CdmUsageEntryInfo kUsageEntryInfoOfflineLicense4 = { const CdmUsageEntryInfo kUsageEntryInfoOfflineLicense4 = {
.storage_type = kStorageLicense, /* storage_type = */ kStorageLicense,
.key_set_id = "offline_key_set_4", /* key_set_id = */ "offline_key_set_4",
.usage_info_file_name = ""}; /* usage_info_file_name = */ ""};
const CdmUsageEntryInfo kUsageEntryInfoOfflineLicense5 = { const CdmUsageEntryInfo kUsageEntryInfoOfflineLicense5 = {
.storage_type = kStorageLicense, /* storage_type = */ kStorageLicense,
.key_set_id = "offline_key_set_5", /* key_set_id = */ "offline_key_set_5",
.usage_info_file_name = ""}; /* usage_info_file_name = */ ""};
const CdmUsageEntryInfo kUsageEntryInfoOfflineLicense6 = { const CdmUsageEntryInfo kUsageEntryInfoOfflineLicense6 = {
.storage_type = kStorageLicense, /* storage_type = */ kStorageLicense,
.key_set_id = "offline_key_set_6", /* key_set_id = */ "offline_key_set_6",
.usage_info_file_name = ""}; /* usage_info_file_name = */ ""};
const CdmUsageEntryInfo kUsageEntryInfoSecureStop1 = { const CdmUsageEntryInfo kUsageEntryInfoSecureStop1 = {
.storage_type = kStorageUsageInfo, /* storage_type = */ kStorageUsageInfo,
.key_set_id = "secure_stop_key_set_1", /* key_set_id = */ "secure_stop_key_set_1",
.usage_info_file_name = "usage_info_file_1"}; /* usage_info_file_name = */ "usage_info_file_1",
};
const CdmUsageEntryInfo kUsageEntryInfoSecureStop2 = { const CdmUsageEntryInfo kUsageEntryInfoSecureStop2 = {
.storage_type = kStorageUsageInfo, /* storage_type = */ kStorageUsageInfo,
.key_set_id = "secure_stop_key_set_2", /* key_set_id = */ "secure_stop_key_set_2",
.usage_info_file_name = "usage_info_file_2"}; /* usage_info_file_name = */ "usage_info_file_2",
};
const CdmUsageEntryInfo kUsageEntryInfoSecureStop3 = { const CdmUsageEntryInfo kUsageEntryInfoSecureStop3 = {
.storage_type = kStorageUsageInfo, /* storage_type = */ kStorageUsageInfo,
.key_set_id = "secure_stop_key_set_3", /* key_set_id = */ "secure_stop_key_set_3",
.usage_info_file_name = "usage_info_file_3"}; /* usage_info_file_name = */ "usage_info_file_3"};
const CdmUsageEntryInfo kUsageEntryInfoSecureStop4 = { const CdmUsageEntryInfo kUsageEntryInfoSecureStop4 = {
.storage_type = kStorageUsageInfo, /* storage_type = */ kStorageUsageInfo,
.key_set_id = "secure_stop_key_set_4", /* key_set_id = */ "secure_stop_key_set_4",
.usage_info_file_name = "usage_info_file_4"}; /* usage_info_file_name = */ "usage_info_file_4"};
const CdmUsageEntryInfo kUsageEntryInfoSecureStop5 = { const CdmUsageEntryInfo kUsageEntryInfoSecureStop5 = {
.storage_type = kStorageUsageInfo, /* storage_type = */ kStorageUsageInfo,
.key_set_id = "secure_stop_key_set_5", /* key_set_id = */ "secure_stop_key_set_5",
.usage_info_file_name = "usage_info_file_5"}; /* usage_info_file_name = */ "usage_info_file_5"};
const CdmUsageEntryInfo kUsageEntryInfoStorageTypeUnknown = { const CdmUsageEntryInfo kUsageEntryInfoStorageTypeUnknown = {
.storage_type = kStorageTypeUnknown, /* storage_type = */ kStorageTypeUnknown,
.key_set_id = "", /* key_set_id = */ "",
.usage_info_file_name = ""}; /* usage_info_file_name = */ "",
};
const CdmUsageEntryInfo kDummyUsageEntryInfo = { const CdmUsageEntryInfo kDummyUsageEntryInfo = {
.storage_type = kStorageLicense, /* storage_type = */ kStorageLicense,
.key_set_id = "DummyKsid", /* key_set_id = */ "DummyKsid",
.usage_info_file_name = ""}; /* usage_info_file_name = */ "",
};
const std::vector<std::string> kEmptyLicenseList; const std::vector<std::string> kEmptyLicenseList;
@@ -113,28 +119,28 @@ const size_t kUsageInfoFileArraySize = sizeof(kUsageInfoFileArray)/
std::vector<std::string> kUsageInfoFileList; std::vector<std::string> kUsageInfoFileList;
const DeviceFiles::CdmUsageData kCdmUsageData1 = { const DeviceFiles::CdmUsageData kCdmUsageData1 = {
.provider_session_token = "provider_session_token_1", /* provider_session_token = */ "provider_session_token_1",
.license_request = "license_request_1", /* license_request = */ "license_request_1",
.license = "license_1", /* license = */ "license_1",
.key_set_id = "key_set_id_1", /* key_set_id = */ "key_set_id_1",
.usage_entry = "usage_entry_1", /* usage_entry = */ "usage_entry_1",
.usage_entry_number = 0, /* usage_entry_number = */ 0,
}; };
const DeviceFiles::CdmUsageData kCdmUsageData2 = { const DeviceFiles::CdmUsageData kCdmUsageData2 = {
.provider_session_token = "provider_session_token_2", /* provider_session_token = */ "provider_session_token_2",
.license_request = "license_request_2", /* license_request = */ "license_request_2",
.license = "license_2", /* license = */ "license_2",
.key_set_id = "key_set_id_2", /* key_set_id = */ "key_set_id_2",
.usage_entry = "usage_entry_2", /* usage_entry = */ "usage_entry_2",
.usage_entry_number = 0, /* usage_entry_number = */ 0,
}; };
const DeviceFiles::CdmUsageData kCdmUsageData3 = { const DeviceFiles::CdmUsageData kCdmUsageData3 = {
.provider_session_token = "provider_session_token_3", /* provider_session_token = */ "provider_session_token_3",
.license_request = "license_request_3", /* license_request = */ "license_request_3",
.license = "license_3", /* license = */ "license_3",
.key_set_id = "key_set_id_3", /* key_set_id = */ "key_set_id_3",
.usage_entry = "usage_entry_3", /* usage_entry = */ "usage_entry_3",
.usage_entry_number = 0, /* usage_entry_number = */ 0,
}; };
const std::vector<DeviceFiles::CdmUsageData> kEmptyUsageInfoUsageDataList; const std::vector<DeviceFiles::CdmUsageData> kEmptyUsageInfoUsageDataList;

View File

@@ -53,6 +53,12 @@ void SetValue<unsigned long>(drm_metrics::ValueMetric *value_proto,
value_proto->set_int_value((int64_t)value); value_proto->set_int_value((int64_t)value);
} }
template <>
void SetValue<unsigned long long>(drm_metrics::ValueMetric *value_proto,
const unsigned long long &value) {
value_proto->set_int_value((int64_t)value);
}
template <> template <>
void SetValue<bool>(drm_metrics::ValueMetric *value_proto, void SetValue<bool>(drm_metrics::ValueMetric *value_proto,
const bool &value) { const bool &value) {

View File

@@ -0,0 +1,12 @@
// Copyright 2018 Google LLC. All Rights Reserved. This file and proprietary
// source code may only be used and distributed under the Widevine Master
// License Agreement.
//
// dllmain - A dummy DllMain method for Windows DLLs.
//
#include <windows.h>
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason,
LPVOID lpReserved) {
return TRUE;
}

View File

@@ -15,8 +15,8 @@ namespace wvoec_ref {
class CertOnlyCryptoEngine : public CryptoEngine { class CertOnlyCryptoEngine : public CryptoEngine {
public: public:
explicit CertOnlyCryptoEngine(std::unique_ptr<wvcdm::FileSystem> file_system) explicit CertOnlyCryptoEngine(std::unique_ptr<wvcdm::FileSystem>&& file_system)
: CryptoEngine(file_system) {} : CryptoEngine(std::move(file_system)) {}
bool config_local_display_only() { return true; } bool config_local_display_only() { return true; }
@@ -30,8 +30,8 @@ class CertOnlyCryptoEngine : public CryptoEngine {
}; };
CryptoEngine* CryptoEngine::MakeCryptoEngine( CryptoEngine* CryptoEngine::MakeCryptoEngine(
std::unique_ptr<wvcdm::FileSystem> file_system) { std::unique_ptr<wvcdm::FileSystem>&& file_system) {
return new CertOnlyCryptoEngine(file_system); return new CertOnlyCryptoEngine(std::move(file_system));
} }
} // namespace wvoec_ref } // namespace wvoec_ref

View File

@@ -8,6 +8,7 @@
// OEMCrypto unit tests // OEMCrypto unit tests
// //
#include <openssl/rsa.h> #include <openssl/rsa.h>
#include <time.h>
#include <string> #include <string>
#include <vector> #include <vector>

View File

@@ -1688,12 +1688,13 @@ TEST_P(SessionTestRefreshKeyTest, RefreshWithNoSelectKey) {
num_keys_, wvoec::kControlNonceEnabled, s.get_nonce())); num_keys_, wvoec::kControlNonceEnabled, s.get_nonce()));
s.ServerSignBuffer(reinterpret_cast<const uint8_t*>(&s.encrypted_license()), s.ServerSignBuffer(reinterpret_cast<const uint8_t*>(&s.encrypted_license()),
s.message_size(), &s.signature()); s.message_size(), &s.signature());
OEMCrypto_KeyRefreshObject key_array[num_keys_]; std::vector<OEMCrypto_KeyRefreshObject> key_array(num_keys_);
s.FillRefreshArray(key_array, num_keys_); s.FillRefreshArray(key_array.data(), num_keys_);
ASSERT_EQ(OEMCrypto_SUCCESS, ASSERT_EQ(OEMCrypto_SUCCESS,
OEMCrypto_RefreshKeys(s.session_id(), s.message_ptr(), OEMCrypto_RefreshKeys(s.session_id(), s.message_ptr(),
s.message_size(), s.signature().data(), s.message_size(), s.signature().data(),
s.signature().size(), num_keys_, key_array)); s.signature().size(), num_keys_,
key_array.data()));
ASSERT_NO_FATAL_FAILURE(s.TestDecryptCTR(false)); ASSERT_NO_FATAL_FAILURE(s.TestDecryptCTR(false));
// This should still be valid key, even if the refresh failed, because this // This should still be valid key, even if the refresh failed, because this
// is before the original license duration. // is before the original license duration.