Regular update

Widevine CAS plugin updates include:
- Make Android session id little endian
- Rename ca_descriptor.proto to media_cas.proto
This commit is contained in:
Lu Chen
2020-11-30 12:45:07 -08:00
parent 2feec02df2
commit 66d8498d2c
4 changed files with 17 additions and 10 deletions

View File

@@ -2,11 +2,11 @@
#include <openssl/sha.h> #include <openssl/sha.h>
#include "ca_descriptor.pb.h"
#include "cas_events.h" #include "cas_events.h"
#include "cas_util.h" #include "cas_util.h"
#include "license_protocol.pb.h" #include "license_protocol.pb.h"
#include "log.h" #include "log.h"
#include "media_cas.pb.h"
#include "string_conversions.h" #include "string_conversions.h"
#include "widevine_cas_session_map.h" #include "widevine_cas_session_map.h"

View File

@@ -36,16 +36,20 @@ static const char kLicenseFileExtension[] = ".lic";
// int32_t and the underlying type can be changed. // int32_t and the underlying type can be changed.
WvCasSessionId androidSessionIdToWidevine( WvCasSessionId androidSessionIdToWidevine(
const CasSessionId& android_session_id) { const CasSessionId& android_session_id) {
std::string session_id_str(android_session_id.begin(), WvCasSessionId wv_session_id = 0;
android_session_id.end()); // CasSessionId is expected to be in little endian order.
WvCasSessionId wv_session_id = std::atoi(session_id_str.c_str()); for (int i = android_session_id.size() - 1; i >= 0; --i) {
wv_session_id = (wv_session_id << 8) | android_session_id[i];
}
return wv_session_id; return wv_session_id;
} }
CasSessionId widevineSessionIdToAndroid(const WvCasSessionId& wv_session_id) { CasSessionId widevineSessionIdToAndroid(const WvCasSessionId& wv_session_id) {
auto wv_session_id_begin = reinterpret_cast<const uint8_t*>(&wv_session_id); CasSessionId android_session_id;
CasSessionId android_session_id(wv_session_id_begin, // CasSessionId is expected to be in little endian order.
wv_session_id_begin + sizeof(wv_session_id)); for (int i = 0; i < static_cast<int>(sizeof(WvCasSessionId)); ++i) {
android_session_id.push_back((wv_session_id >> (8 * i)) & 0xff);
}
return android_session_id; return android_session_id;
} }
@@ -101,8 +105,11 @@ status_t WidevineCasPlugin::openSession(CasSessionId* sessionId) {
if (!status.ok()) { if (!status.ok()) {
return android::ERROR_CAS_SESSION_NOT_OPENED; return android::ERROR_CAS_SESSION_NOT_OPENED;
} }
std::string session_id_str = std::to_string(new_session_id);
*sessionId = CasSessionId(session_id_str.begin(), session_id_str.end()); const CasSessionId& android_session_id =
widevineSessionIdToAndroid(new_session_id);
sessionId->assign(android_session_id.begin(), android_session_id.end());
// Not a session event, so CasSessionId in callback is null. // Not a session event, so CasSessionId in callback is null.
CallBack(app_data_, CAS_SESSION_ID, new_session_id, nullptr, 0, nullptr); CallBack(app_data_, CAS_SESSION_ID, new_session_id, nullptr, 0, nullptr);
return OK; return OK;

View File

@@ -10,7 +10,7 @@ cc_library_static {
proprietary: true, proprietary: true,
srcs: [ srcs: [
"ca_descriptor.proto", "media_cas.proto",
"device_files.proto", "device_files.proto",
"license_protocol.proto", "license_protocol.proto",
], ],