Source release 18.5.0

This commit is contained in:
Matt Feddersen
2024-03-28 19:15:22 -07:00
parent b2c35151ad
commit 28ec8548c6
109 changed files with 3623 additions and 1012 deletions

View File

@@ -1,6 +1,6 @@
# Widevine CE CDM 18.1.0
# Widevine CE CDM 18.5.0
Released 2023-06-23
Released 2024-03-28
## Getting Started
@@ -10,10 +10,87 @@ following to learn more about the contents of this project and how to use them:
The [Widevine Developer Site][wv-devsite] documents the CDM API and describes
how to integrate the CDM into a system.
[CHANGELOG.md][changelog] lists the major changes for each release.
## New in v18.5.0
[wv-devsite]: https://developers.google.com/widevine/drm/client/ce-cdm
[changelog]: ./CHANGELOG.md
Note: Releases v18.2-18.4 were skipped so that this release's version number
matches the OEMCrypto version.
**It is strongly recommended** for partners to update from v18.1 to v18.5 to
address two major bugs in the CE CDM code which could result in lost offline
licenses or app crashes. See _Bug Fixes_ for details.
## Features
- Supports up to OEMCrypto v18.5, including new OEMCrypto tests introduced
since OEMCrypto v18.1.
- Added additional logging when license request fails, to help diagnose what
went wrong.
- Improved support for HDCP v1.0-1.4 version.
- `Cdm::getStatusForHdcpVersion()` can now accept a specific HDCP 1.x minor
version (specifically 1.0, 1.1, 1.2, 1.3, or 1.4) when checking if
content can be decrypted.
- The legacy behavior is still available via `Cdm::HdcpVersion::kHdcp1_x`.
- See _Bug Fixes_ note about related bug in previous versions.
- Added support for Cast provisioning 4.0
- Cast uses a slightly different provisioning 4.0 protocol compared
to non-Cast cases. The additions to the protocol are internal
to the library, and do not require API changes for CE CDM users
- Additional tests are included, these tests will automatically
skip for device which do not use provisioning 4.0.
- Improved performance for unencrypted data provided via `Cdm::decrypt()`.
- Some apps are known to always use decrypt calls, even if parts of the
data are completely unencrypted. The CDM will now check if samples/
sub-samples of decryption batch data can skip the decryption stage
and instead directly copied to the secure output.
- Various minor performance improvements
- Reduced internal data copying.
- Test runtime improvements:
- Skipped set up for unsupported features.
- Improved test data storage management.
- Removed unused internal testing fixtures.
- Compile time improvements by better dependency checks for third-party
libraries.
- CE CDM now compiles clean with `-Wunused-parameter`.
- Added support for new provisioning flow for baked-in certificates
on devices using Widevine's embedded device certificate.
- Affected partners should check the L3 OEMCrypto documentation for
details.
- Added new tests for CE CDM and OEMCrypto v18.5 features.
### Bug Fixes
- Fixed major issue with loss of offline licenses when stored license count
exceeds OEMCrypto's usage table size limit.
- Issue only affects users with 300 or more downloaded offline licenses
across all apps.
- Fixed major issue with memory corruption when apps misuse the API by making
certain key operations before license is loaded.
- Specifically, if an app generates a license request via
`Cdm::generateRequest()`, then calls `Cdm::remove()` before
`Cdm::update()` with the license response it can cause the CDM to crash.
- Fixed mistaken test failures when the CE CDM and OEMCrypto versions were not
identical.
- Fixed an issue with DRM certificate serial number stability for
provisioning 4.0 devices.
- This only affected very specific devices when going through their
specific factory reset process.
- Added additional tests to catch future, similar errors.
- Fixed an issue with `Cdm::getKeyStatuses()` reporting error for certain
licenses which use specific HDCP v1.x minor versions.
- Fixed an issue with URL parsing in test code for renewal requests
- Certain tests used special URL parameters which were not properly
accounted for in the CE CDM's test utility code; this caused tests
to fail on otherwise working devices.
- Fixed the CAS tests sometimes not being skipped on non-CAS-supporting
devices.
- Removed tests that explicitly tested against Widevine's staging
provisioning servers.
- Fixed minor issue with tests which were generating many warnings from
expected behavior.
- These warning did not cause the tests to fail, but created a lot of noise
when trying to diagnose other failures
[CHANGELOG.md](./CHANGELOG.md) lists the major changes for each past release.
## Contains No OEMCrypto
@@ -26,4 +103,5 @@ OEMCrypto implementation, the OEMCrypto Porting Kit. (OPK) If you are not an
OEMCrypto implementer, then you will need to get an OEMCrypto implementation
from your SoC manufacturer before you can use the CE CDM.
[wv-devsite]: https://developers.google.com/widevine/drm/client/ce-cdm
[oec-repo]: https://widevine-partner.googlesource.com/oemcrypto/