From d89faef0f385e3009755906ea8ab3dfaaeba4f7f Mon Sep 17 00:00:00 2001 From: Matt Feddersen Date: Tue, 12 Dec 2023 15:52:38 -0800 Subject: [PATCH] Add CHANGELOG for OPK v19.0 release Change-Id: I1fd79428c357b8e0f9fd2a4ec857d7b3489eea64 --- libwvdrmengine/oemcrypto/CHANGELOG.md | 61 +++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/libwvdrmengine/oemcrypto/CHANGELOG.md b/libwvdrmengine/oemcrypto/CHANGELOG.md index 28a7098c..f00c75b6 100644 --- a/libwvdrmengine/oemcrypto/CHANGELOG.md +++ b/libwvdrmengine/oemcrypto/CHANGELOG.md @@ -2,6 +2,66 @@ [TOC] +## [Version 19.0][v19.0] + +This is the initial release of OPK v19.0, which implements OEMCrypto v19.0. + +### OEMCrypto v19 + +All features outlined in the v19 Delta Document are supported in this release: + +- License Release +- Multiple Entitled Sessions per License Session +- Provisioning 4 Manufacturing Updates +- Support License Protocol v2.2 +- Derived Key Context Computed Inside OEMCrypto +- Refactor OEMCrypto_SetDecryptHash + +### Other changes + +- OEMCrypto_BuildInformation() previously produced JSON that had a trailing +comma after the last entry. This passes some JSON parsing libraries such as +`jsmn`, but is ultimately incorrect. This has been fixed. +- Changed key sanity checks in the wtpi_reference code to be constant time. +- Memory containing keys is now erased after the keys are used. +- `FACTORY_BUILD_ONLY` macro added to separate OEMCrypto functions that are only +intended to be used in the factory, eg OEMCrypto_InstallKeyboxOrOEMCert(). +- Added support for Provisioning 4 alternative signing models. Keybox-based +signatures are fully supported, and externally generated X509 signatures are +planned for a future update. +- Restrict OEMCrypto_GenerateRSASignature() to only allow Cast certificates. + +### OP-TEE port changes + +- Added an option to generate an ECC keypair instead of RSA. Use the +`OEMCRYPTO_GEN_KEYPAIR_TYPE` make variable at compilation time to specify which +method to use. +- Modified the key derivation step (device unique key -> asymmetric key pair) +in Provisioning 4 CoseSign1 operations to use a NIST standard KDF process. +Implementers can opt out of this by using the `DEVICEKEY_NON_NIST_KDF` make +variable during compilation, which may be useful for existing devices in the +field that are upgrading from older OPK versions tha used a non-standard key +derivation. +- Renamed `der_parse` files to `crypto_util_*` to better reflect their purpose. +- Renamed `wtpi_persistent_storage_layer2.c` to +`wtpi_persistent_storage_layer1.c` to better reflect its purpose. +- Removed `TEE_DATA_FLAG_OVERWRITE` flag from persistent storage read +operations, to avoid accidentally creating empty files and overwriting existing +files when encountering an error. +- Fixed bug in `WTPI_GetBootCertificateChain()` where ECC keys that are smaller +than 32 bytes cause an error during parsing. +- Update OEMCrypto_GetDeviceInformation() implementation to include all +required fields to pass device info validation tests. Field contents still need +to be filled in by implementers for platform specific parameters such as device +brand, bootloader unlock state, etc. + +### Known issues + +- The OP-TEE port does not yet support Provisioning 4 stage 2, or Provisioning +4 alternate signing models. Implementers may choose to write their own +functionality for these features using the BoringSSL-based wtpi_reference as +a guide. + ## [Version 18.4][v18.4] Version 18.4 includes the reference implementation in OPK to support MediaCAS, @@ -479,3 +539,4 @@ Public release for OEMCrypto API and ODK library version 16.4. [v18.1]: https://widevine-partner.googlesource.com/oemcrypto/+/refs/tags/v18.1 [v18.3]: https://widevine-partner.googlesource.com/oemcrypto/+/refs/tags/v18.3 [v18.4]: https://widevine-partner.googlesource.com/oemcrypto/+/refs/tags/v18.4 +[v19.0]: https://widevine-partner.googlesource.com/oemcrypto/+/refs/tags/v19.0