From 539843da00ab527a1a54493817d1d72c247f52ad Mon Sep 17 00:00:00 2001 From: Rahul Frias Date: Wed, 21 Dec 2022 00:48:14 -0800 Subject: [PATCH] Remove references to policy_timers_v15 [ Merge of http://go/wvgerrit/164257 ] Support for OEMCrypto v15 is being removed from the CDM. The policy_timers_v15 will no longer be invoked and can be removed. Bug: 256038127 Test: WV unit/integration tests Change-Id: Ic3a503ef2a17223dd0bc13696960dcd6822cc343 --- libwvdrmengine/cdm/Android.bp | 1 - .../cdm/core/include/policy_timers_v15.h | 97 ----------- .../cdm/core/src/policy_timers_v15.cpp | 154 ------------------ 3 files changed, 252 deletions(-) delete mode 100644 libwvdrmengine/cdm/core/include/policy_timers_v15.h delete mode 100644 libwvdrmengine/cdm/core/src/policy_timers_v15.cpp diff --git a/libwvdrmengine/cdm/Android.bp b/libwvdrmengine/cdm/Android.bp index dae4e43e..ea10f2d7 100644 --- a/libwvdrmengine/cdm/Android.bp +++ b/libwvdrmengine/cdm/Android.bp @@ -59,7 +59,6 @@ cc_library_static { CORE_SRC_DIR + "/ota_keybox_provisioner.cpp", CORE_SRC_DIR + "/policy_engine.cpp", CORE_SRC_DIR + "/policy_timers.cpp", - CORE_SRC_DIR + "/policy_timers_v15.cpp", CORE_SRC_DIR + "/policy_timers_v16.cpp", CORE_SRC_DIR + "/privacy_crypto_boringssl.cpp", CORE_SRC_DIR + "/service_certificate.cpp", diff --git a/libwvdrmengine/cdm/core/include/policy_timers_v15.h b/libwvdrmengine/cdm/core/include/policy_timers_v15.h deleted file mode 100644 index a9f42c2d..00000000 --- a/libwvdrmengine/cdm/core/include/policy_timers_v15.h +++ /dev/null @@ -1,97 +0,0 @@ -// Copyright 2020 Google LLC. All Rights Reserved. This file and proprietary -// source code may only be used and distributed under the Widevine License -// Agreement. - -#ifndef WVCDM_CORE_POLICY_TIMERS_V15_H_ -#define WVCDM_CORE_POLICY_TIMERS_V15_H_ - -#include -#include - -#include "disallow_copy_and_assign.h" -#include "license_protocol.pb.h" -#include "policy_timers.h" -#include "wv_cdm_types.h" - -namespace wvcdm { - -// OEMCrypto v16 and core messages introduced changes to how duration values -// and clocks should be evaluated. This class provides backward compatibility -// for licenses that do not include a core message. Durations are handled -// in the same way as in earlier releases. -// -// Backward compatibility may be needed if -// * OEMCrypto has not been upgraded to v16 -// * Licenses were persisted before the device was upgraded to v16 -// * License service does not yet support core messages - -class PolicyTimersV15 : public PolicyTimers { - public: - PolicyTimersV15() : grace_period_end_time_(0) {} - - ~PolicyTimersV15() override {} - - // UpdateLicense is used in handling a license response, a renewal response, - // or when restoring or releasing a persistent license. - // In a renewal the response may only contain policy fields that have - // changed. In this case an exact copy is not what we want to happen. - // |license_start_time_| is updated to the time mentioned in the renewal - // response. - // UpdateLicense will return false if |license_start_time| is not - // present or playback is not allowed due to policy or timer duration - // expiration. - bool UpdateLicense(int64_t current_time, - const video_widevine::License& license) override; - - // Call this on first decrypt to set the start of playback. - void BeginDecryption(int64_t current_time) override; - - // for offline save and restore - int64_t GetGracePeriodEndTime() override { return grace_period_end_time_; } - - // for offline save and restore - void RestorePlaybackTimes(int64_t current_time, int64_t playback_start_time, - int64_t last_playback_time, - int64_t grace_period_end_time) override; - - bool HasPlaybackStarted(int64_t current_time) override; - bool HasLicenseOrRentalOrPlaybackDurationExpired( - int64_t current_time) override; - bool HasPassedGracePeriod(int64_t current_time) override; - - // This returns - // * for streaming licenses: the time remaining on |license_duration_seconds| - // * for persistent licenses: the time remaining on |rental_duration_seconds| - // before playback begins or the time remaining on - // |playback_duration_seconds| after. - int64_t GetLicenseOrRentalOrPlaybackDurationRemaining( - int64_t current_time) override; - // This is only used in Query. This should return the time remaining on - // |license_duration_seconds| for streaming licenses and - // |rental_duration_seconds| for persistent licenses. - int64_t GetLicenseOrRentalDurationRemaining(int64_t current_time) override; - - protected: - // Gets the clock time that the license expires based on whether we have - // started playing. This takes into account GetHardLicenseExpiryTime. - int64_t GetExpiryTime(int64_t current_time, - bool ignore_soft_enforce_playback_duration) override; - - int64_t GetRenewalStartTime() override { return license_start_time_; } - - private: - // Gets the clock time that the license expires. This is the hard limit that - // all license types must obey at all times. - int64_t GetHardLicenseExpiryTime(); - // Gets the clock time that the rental duration will expire, using the license - // duration if one is not present. - int64_t GetRentalExpiryTime(); - - int64_t grace_period_end_time_; - - CORE_DISALLOW_COPY_AND_ASSIGN(PolicyTimersV15); -}; - -} // namespace wvcdm - -#endif // WVCDM_CORE_POLICY_TIMERS_V15_H_ diff --git a/libwvdrmengine/cdm/core/src/policy_timers_v15.cpp b/libwvdrmengine/cdm/core/src/policy_timers_v15.cpp deleted file mode 100644 index f917c061..00000000 --- a/libwvdrmengine/cdm/core/src/policy_timers_v15.cpp +++ /dev/null @@ -1,154 +0,0 @@ -// Copyright 2020 Google LLC. All Rights Reserved. This file and proprietary -// source code may only be used and distributed under the Widevine License -// Agreement. - -#include "policy_timers_v15.h" - -#include -#include - -#include "log.h" -#include "wv_cdm_constants.h" - -using video_widevine::License; - -namespace { - -const int64_t kTimeZero = 0; - -} // namespace - -namespace wvcdm { - -bool PolicyTimersV15::UpdateLicense(int64_t current_time, - const License& license) { - if (!license.has_policy()) return false; - - policy_.MergeFrom(license.policy()); - - // some basic license validation - // license start time needs to be specified in the initial response - if (!license.has_license_start_time()) return false; - - // Update time information - license_start_time_ = license.license_start_time(); - next_renewal_time_ = license_start_time_ + policy_.renewal_delay_seconds(); - - if (!policy_.can_play() || - HasLicenseOrRentalOrPlaybackDurationExpired(current_time)) - return false; - - return true; -} - -void PolicyTimersV15::BeginDecryption(int64_t current_time) { - if (playback_start_time_ == 0) { - playback_start_time_ = current_time; - last_playback_time_ = current_time; - if (policy_.play_start_grace_period_seconds() == 0) - grace_period_end_time_ = current_time; - } -} - -void PolicyTimersV15::RestorePlaybackTimes(int64_t current_time, - int64_t playback_start_time, - int64_t last_playback_time, - int64_t grace_period_end_time) { - playback_start_time_ = std::max(playback_start_time, kTimeZero); - last_playback_time_ = std::max(last_playback_time, kTimeZero); - grace_period_end_time_ = grace_period_end_time; - - if (policy_.play_start_grace_period_seconds() != 0) { - // If we are using grace period, we may need to override some of the values - // given to us by OEMCrypto. |grace_period_end_time| will be 0 if the grace - // period has not expired (effectively playback has not begun). Otherwise, - // |grace_period_end_time| contains the playback start time we should use. - playback_start_time_ = grace_period_end_time; - } - - const int64_t expiry_time = GetExpiryTime( - current_time, /* ignore_soft_enforce_playback_duration */ true); - was_expired_on_load_ = - expiry_time != NEVER_EXPIRES && expiry_time < current_time; -} - -bool PolicyTimersV15::HasPlaybackStarted(int64_t current_time) { - if (playback_start_time_ == 0) return false; - - const int64_t playback_time = current_time - playback_start_time_; - return playback_time >= policy_.play_start_grace_period_seconds(); -} - -bool PolicyTimersV15::HasLicenseOrRentalOrPlaybackDurationExpired( - int64_t current_time) { - const int64_t expiry_time = GetExpiryTime( - current_time, /* ignore_soft_enforce_playback_duration */ false); - return expiry_time != NEVER_EXPIRES && expiry_time <= current_time; -} - -bool PolicyTimersV15::HasPassedGracePeriod(int64_t current_time) { - if (grace_period_end_time_ == 0 && HasPlaybackStarted(current_time)) { - grace_period_end_time_ = playback_start_time_; - return true; - } - return false; -} - -int64_t PolicyTimersV15::GetLicenseOrRentalOrPlaybackDurationRemaining( - int64_t current_time) { - const int64_t expiry_time = GetExpiryTime( - current_time, /* ignore_soft_enforce_playback_duration */ false); - if (expiry_time == NEVER_EXPIRES) return LLONG_MAX; - if (expiry_time < current_time) return 0; - return expiry_time - current_time; -} - -int64_t PolicyTimersV15::GetLicenseOrRentalDurationRemaining( - int64_t current_time) { - if (HasLicenseOrRentalOrPlaybackDurationExpired(current_time)) return 0; - const int64_t license_expiry_time = GetRentalExpiryTime(); - if (license_expiry_time == NEVER_EXPIRES) return LLONG_MAX; - if (license_expiry_time < current_time) return 0; - const int64_t policy_license_duration = policy_.license_duration_seconds(); - if (policy_license_duration == UNLIMITED_DURATION) - return license_expiry_time - current_time; - return std::min(license_expiry_time - current_time, policy_license_duration); -} - -// For the policy time fields checked in the following methods, a value of 0 -// (UNLIMITED_DURATION) indicates that there is no limit to the duration. -// If the fields are UNLIMITED_DURATION (including the hard limit) then these -// methods will return NEVER_EXPIRES. -int64_t PolicyTimersV15::GetHardLicenseExpiryTime() { - return policy_.license_duration_seconds() > 0 - ? license_start_time_ + policy_.license_duration_seconds() - : NEVER_EXPIRES; -} - -int64_t PolicyTimersV15::GetRentalExpiryTime() { - const int64_t hard_limit = GetHardLicenseExpiryTime(); - if (policy_.rental_duration_seconds() == 0) return hard_limit; - const int64_t expiry_time = - license_start_time_ + policy_.rental_duration_seconds(); - if (hard_limit == NEVER_EXPIRES) return expiry_time; - return std::min(hard_limit, expiry_time); -} - -int64_t PolicyTimersV15::GetExpiryTime( - int64_t current_time, bool ignore_soft_enforce_playback_duration) { - if (!HasPlaybackStarted(current_time)) return GetRentalExpiryTime(); - - const int64_t hard_limit = GetHardLicenseExpiryTime(); - if (policy_.playback_duration_seconds() == 0) return hard_limit; - if (!ignore_soft_enforce_playback_duration && !was_expired_on_load_ && - policy_.soft_enforce_playback_duration()) { - return hard_limit; - } - const int64_t expiry_time = - playback_start_time_ + policy_.playback_duration_seconds(); - - if (hard_limit == NEVER_EXPIRES) return expiry_time; - return std::min(hard_limit, expiry_time); -} - -} // namespace wvcdm