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

@@ -2,6 +2,109 @@
[TOC]
## 18.5.0 (2024-03-28)
Note: Releases v18.2-18.4 were skipped so that this release's version number
matches the OEMCrypto version.
CE CDM v18.5.0 includes all changes from CE CDM v17.3.0 and v18.1.0.
**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 18.5.0 and 17.3.0 for details.
## Features
- Supports up to OEMCrypto v18.5, including new OEMCrypto tests introduced
since OEMCrypto v18.1.
- 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 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
## 17.3.0 (2024-03-28)
Note: Release v17.2 was skipped so that this release's version number matches
the OEMCrypto version.
CE CDM v17.3.0 includes all changes from CE CDM v17.1.2.
**It is strongly recommended** for partners to update from v17.1 to v17.3 to
address a major bug in the CE CDM code which could result in app crashes. See
_Bug Fixes_ for details.
### Features
- Supports OEMCrypto v17.3.0, including new OEMCrypto tests introduced in
v17.3.0.
- 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.
### Bug Fixes
- 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 where the OEMCrypto tests were enforcing v18 device ID
requirements on v17 integrations by mistake.
- 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.
## 18.1.0 (2023-06-23)
### Features:
@@ -225,7 +328,7 @@ Features:
are unacceptable to you. The sample `x86-64` platform does not enable ASan
or UBSan for release builds.
- To maximize the benefit of UBSan, the sample `x86-64` platform now turns
on RTTI for debug builds. The Widvine CE CDM does not use RTTI and will
on RTTI for debug builds. The Widevine CE CDM does not use RTTI and will
still build correctly without it. Feel free to turn it off if your
platform does not support RTTI. The sample `x86-64` platform turns off
RTTI for release builds.