Source release 19.2.0

This commit is contained in:
Alex Dale
2024-06-25 14:03:53 -07:00
parent b8bdfccebe
commit cd8256726f
89 changed files with 2747 additions and 35949 deletions

100
README.md
View File

@@ -1,6 +1,6 @@
# Widevine CE CDM 19.1.0
# Widevine CE CDM 19.2.0
Released 2024-03-28
Released 2024-06-24
## Getting Started
@@ -10,99 +10,23 @@ 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.
## New in v19.1.0
## New in v19.2.0
Note: Release v19.0 was skipped so that this release's version number matches
the OEMCrypto version.
This is a minor release with minimal changes.
## Features
- Supports up to OEMCrypto v19.1, including new OEMCrypto tests introduced
since OEMCrypto v18.
- Added support for License Protocol v2.2, which uses SHA256-signed license
requests.
- Raised the minimum required version of C++ to C++17.
- Added a new error code, `kDeviceRevoked`, which requires special handling.
- `kDeviceRevoked` may be returned from any method that processes a service
response. It indicates that the device's root of trust has been revoked
and is no longer trusted.
- All service interactions will fail after this, even after a device reboot
or factory reset. Apps may want to handle this error by using a different
DRM system, if supported.
- Devices that support renewal can escape this condition by renewing their
root of trust. Root of trust renewal is outside the scope of CE CDM.
You'll need to work directly with your Widevine contact.
- 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.
- Improved code performance slightly by reducing copy operations.
- Added additional tests to check for problems when moving usage entries.
- Supports up to OEMCrypto v19
- Added new test data for entitled licenses
- Added new tests for clear lead sample decryption
### 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
- Fixed a potential out-of-bounds read in the logging code for certain
invalid severity level values.
- Fixed many minor issues identified via static analysis.
- Fixed backwards compatibility issues found in License Protocol v2.2
- Improved error logging for tests
- Small fixes to reduce compiler warning
- Fixed URL error found for tests using different license server SDK
- Skip CAS tests on non-CAS devices
[CHANGELOG.md](./CHANGELOG.md) lists the major changes for each past release.