From 8c28103c0b36b592c372108af136521e34b513f2 Mon Sep 17 00:00:00 2001 From: CastagnaIT Date: Tue, 15 Oct 2024 12:54:14 +0200 Subject: [PATCH 1/2] test --- .../widevineandroid/WVCencSingleSampleDecrypter.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/decrypters/widevineandroid/WVCencSingleSampleDecrypter.cpp b/src/decrypters/widevineandroid/WVCencSingleSampleDecrypter.cpp index 9a28be1de..2a943e7a3 100644 --- a/src/decrypters/widevineandroid/WVCencSingleSampleDecrypter.cpp +++ b/src/decrypters/widevineandroid/WVCencSingleSampleDecrypter.cpp @@ -54,8 +54,7 @@ CWVCencSingleSampleDecrypterA::CWVCencSingleSampleDecrypterA( std::string fileName = STRING::ToUpper(DRM::KeySystemToUUIDstr(m_cdmAdapter->GetKeySystem())) + ".init"; std::string debugFilePath = FILESYS::PathCombine(m_cdmAdapter->GetLibraryPath(), fileName); - std::string data{reinterpret_cast(m_pssh.data()), m_pssh.size()}; - FILESYS::SaveFile(debugFilePath, data, true); + FILESYS::SaveFile(debugFilePath, {m_pssh.cbegin(), m_pssh.cend()}, true); } m_initialPssh = m_pssh; @@ -342,7 +341,7 @@ bool CWVCencSingleSampleDecrypterA::SendSessionMessage(const std::vectorGetKeySystem())) + ".challenge"; std::string debugFilePath = FILESYS::PathCombine(m_cdmAdapter->GetLibraryPath(), fileName); - UTILS::FILESYS::SaveFile(debugFilePath, reinterpret_cast(challenge.data()), true); + UTILS::FILESYS::SaveFile(debugFilePath, {challenge.cbegin(), challenge.cend()}, true); } const DRM::Config drmCfg = m_cdmAdapter->GetConfig(); @@ -417,6 +416,7 @@ bool CWVCencSingleSampleDecrypterA::SendSessionMessage(const std::vectorGetKeySystem())) + ".response.cert"; + std::string debugFilePath = FILESYS::PathCombine(m_cdmAdapter->GetLibraryPath(), fileName); + FILESYS::SaveFile(debugFilePath, respData, true); + } if (!isCertRequest && CSrvBroker::GetSettings().IsDebugLicense()) { std::string fileName = From ceeae5930a2933f6e545658d973c142d68b3c1b3 Mon Sep 17 00:00:00 2001 From: CastagnaIT Date: Tue, 15 Oct 2024 17:32:26 +0200 Subject: [PATCH 2/2] test2 --- .../WVCencSingleSampleDecrypter.cpp | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/src/decrypters/widevineandroid/WVCencSingleSampleDecrypter.cpp b/src/decrypters/widevineandroid/WVCencSingleSampleDecrypter.cpp index 2a943e7a3..251579383 100644 --- a/src/decrypters/widevineandroid/WVCencSingleSampleDecrypter.cpp +++ b/src/decrypters/widevineandroid/WVCencSingleSampleDecrypter.cpp @@ -420,23 +420,22 @@ bool CWVCencSingleSampleDecrypterA::SendSessionMessage(const std::vectorGetKeySystem() == DRM::KS_WIDEVINE) { // Unwrap license response - if (m_cdmAdapter->GetKeySystem() == DRM::KS_WIDEVINE) + std::string unwrappedData; + // Some services have a customized license server that require data to be wrapped with their formats (e.g. JSON). + // Here we provide a built-in way to unwrap the license data received, this avoid force add-ons to integrate + // a HTTP server proxy to manage the license data request/response, and so use Kodi properties to set wrappers. + if (!DRM::WvUnwrapLicense(licConfig.unwrapper, licConfig.unwrapperParams, respContentType, + respData, unwrappedData, hdcpLimit)) { - std::string unwrappedData; - // Some services have a customized license server that require data to be wrapped with their formats (e.g. JSON). - // Here we provide a built-in way to unwrap the license data received, this avoid force add-ons to integrate - // a HTTP server proxy to manage the license data request/response, and so use Kodi properties to set wrappers. - if (!DRM::WvUnwrapLicense(licConfig.unwrapper, licConfig.unwrapperParams, respContentType, - respData, unwrappedData, hdcpLimit)) - { - return false; - } - respData = unwrappedData; + return false; } - + respData = unwrappedData; + } + if (!isCertRequest) + { if (m_cdmAdapter->GetKeySystem() == DRM::KS_PLAYREADY && respData.find("") == std::string::npos) {