Commit Graph

8013 Commits

Author SHA1 Message Date
Fred Gylys-Colwell
8c4978e5a3 Explain error OEMCrypto_ERROR_TOO_MANY_SESSIONS
Bug: 310668207
Bug: 297917375
Change-Id: I6b1333b890e7cca63516389561146e79d7198d92
2024-02-22 15:16:24 -08:00
Fred Gylys-Colwell
34ac11b187 Document OEMCrypto_LoadProvisioningCast
Bug: 314222872
Change-Id: I05031d1eacefceb73931b979ef69e69fdba871a7
2024-02-22 15:16:09 -08:00
Cong Lin
ce2af4e96a Use SignedCsrPayload validator in omecypto provisioning tests
To ensure the ref impl of OEMCrypto_GetDeviceSignedCsrPayload() in OPK
and testbed returns the correct sample format.

Test: opk_ta_p40, run_fake_l1_tests
Bug: 300304834
Change-Id: I6d399774fbaac2e12096cf878d582cd3c1320318
2024-02-22 15:16:00 -08:00
Cong Lin
778d4f7026 Add Signed CSR payload validator to oemcrypto util and unit tests
Validator that can parse and validate SignedCsrPayload Cbor object.
The SignedCsrPayload is generated by
OEMCrypto_GetDeviceSignedCsrPayload() and will be put into prov4 CSR
request during factory uploading.

Test: opk_ta_p40
Bug: 300304834

Change-Id: Ib569dc22fe76dbaa98657e96aa4c93a272bbcd1b
2024-02-22 15:15:05 -08:00
Matt Feddersen
d89faef0f3 Add CHANGELOG for OPK v19.0 release
Change-Id: I1fd79428c357b8e0f9fd2a4ec857d7b3489eea64
2024-02-22 15:14:17 -08:00
Vicky Min
4c9a8e32a5 OPK implementation for license release
Bug: 295956275
Change-Id: I68dda02997f8897043c13ae261dde45276e66cc9
2024-02-22 15:14:07 -08:00
Vicky Min
a6de51a3b4 Update headers for deprecated functions
Bug: 295956275
Change-Id: Ic2711e4671a1e8ffcf9220fcd1de4471fa6b2ec3
2024-02-22 15:13:54 -08:00
Cong Lin
6c5b9aa271 Device info ref impl to return all required properties
Let the sample device info built by ref implementation include all
required fields to pass device info validation tests.

Test: opk_ta_p40, run_fake_l1_tests
Bug: 307968622
Change-Id: Ib6b7645a1d26347f6992dd3c3bc2f39d4a92b283
2024-02-22 15:13:52 -08:00
Fred Gylys-Colwell
94c547eef9 Fix markdown link
Change-Id: Ib0e44a5bca0d3e430051086dd8b42f09c605a254
2024-02-22 15:12:40 -08:00
Vicky Min
3f48387e1c Fix dynamic adapter for license release
Bug: 315186308
Change-Id: If80760d8db4929f1c23917b0e3a86ed38309b487
2024-02-22 15:12:39 -08:00
Cong Lin
d8ce542ff9 Add Device info validator to oemcrypto util and unit tests
Validator that can parse and validate device info Cbor object.
This is to support better prov40 unit tests regarding
OEMCrypto_GetDeviceInformation() later.

Test: opk_ta_p40
Bug: 300304834
Change-Id: Ic260a6626dffcbef5d6b386263839499f83a69db
2024-02-22 15:12:37 -08:00
Vicky Min
d5157c536d OEMCrypto unit tests for license release
Bug: 295956275
Change-Id: I3c8fc5fcadeae051cc734a64378e473492437c34
2024-02-22 15:10:08 -08:00
Cong Lin
f94a8dfac9 Update documentation for BCC signature generation
Including the option of signing by keybox and some disclaimers..

Bug: 297918188
Change-Id: Ic6294ea9f04f6fa6dd721242c8539341157c1292
2024-02-22 15:09:57 -08:00
Vicky Min
746bab1712 Remove unecessary fields from ODK_ParseRelease
PiperOrigin-RevId: 588908051
Change-Id: Ia71536902cb19be29de1f984a74355d348de397e
2024-02-22 15:09:47 -08:00
Vicky Min
d2963a8cc5 Update dynamic adapter for license release
Bug: 295956275
Change-Id: Ia166becdd519c8bb21f1f8d132dee2c6bb97e06b
2024-02-22 15:09:47 -08:00
Cong Lin
8fe7612f2b Update OEMCrypto_GetDeviceInformation() doc
Add canonicalization requirements and a few more required fields.
Fixed a few typos.

Bug: 314882572
Change-Id: I3fe74c5b78292378fe146afa7236ece2c30942ae
2024-02-22 15:09:47 -08:00
Vicky Min
9e26c42882 OEMCrypto implementation of OEMCrypto_PrepAndSignReleaseRequest
Bug: 295956275
Change-Id: I1f3e7f83c644c16419cc99862c9147d321cfdb5f
2024-02-22 15:09:05 -08:00
Vicky Min
49debffe63 Use absl::string_view in ODK
Since enabling C++17 for Widevine, we should be able to use absl::string_view since copybara can automatically translate between absl::string_view and std::string_view.

PiperOrigin-RevId: 586780379
Change-Id: I94d04bd3ab75085c482682539cf4bb2f046db864
2024-02-22 14:56:30 -08:00
Fred Gylys-Colwell
9e08fd15cf Fix title of Prov 4 doxygen group
Bug: 572398489
Change-Id: I729ba7bbe6e0c813296d54df9ea34ee300ea88c6
2024-02-22 14:56:30 -08:00
Fred Gylys-Colwell
d867518bea Update docs about subsamples
We should talk about protected and unprotected regions in a
subsample instead of talking about encrypted and clear subsamples.

Bug: 148230379
Change-Id: Id19e693948cdbd332fa965c9d8775148d10e8368
2024-02-22 14:56:30 -08:00
Fred Gylys-Colwell
adfaf69d1a Clarify that FDPT hash covers the last sample
Bug: 193266271
Change-Id: Ic769c05c6481d0d3f9eb08bce5fea2f39ac7ebe2
2024-02-22 14:56:30 -08:00
Fred Gylys-Colwell
1dc4377cde Move CAS unit tests to the doxygen group cas
This groups the tests together on the devsite.

staged at
https://developers.devsite.corp.google.com/widevine/drm/client/oemcrypto/v19/oemcrypto-test/group/cas

Bug: 298719677
Change-Id: I9d4303ee6397917c0f8ce53c3d591860ac29ad3d
2024-02-22 14:56:29 -08:00
Fred Gylys-Colwell
d4dae79a0e Clean up some test docs
Some tests were not in a doxygen group, so they were not
showing up on the dev site.

Bug: 298719677
Change-Id: Ic86b7999ac7ab324eb40a30023b74897f87d97e5
2024-02-22 14:56:27 -08:00
Googler
05926646f0 Fully-qualify using-declaration (in the SDK) that refers to a top-level name, per go/c-readability-advice#fully-qualify-using
Steps
- `google3/video/widevine/export$ find . -type f -name "*.cc" -exec sed -i -E 's/^using ([a-zA-Z]+)/using ::\1/g' {} +`
- `google3/video/widevine/export$ find . -type f -name "*.h" -exec sed -i -E 's/^using ([a-zA-Z]+)/using ::\1/g' {} +`
- Review and revert changes to some files

PiperOrigin-RevId: 584441667
Change-Id: I90b23801b804d3975ac99eb62e6307918175f503
2024-02-22 14:46:43 -08:00
Vicky Min
726f2d51e9 ODK unit tests for release request
PiperOrigin-RevId: 584427947
Change-Id: I7a131739c5ea0d27c2f9e9c5ecb7b138176ce049
2024-02-22 14:46:43 -08:00
Cong Lin
91e573f574 Add signature verification to BCC validator
Each entry in BCC is signed by its parent. BCC validator should be able to
validate the signature along the chain.

In OPK reference, EdDSA is used. Also adding functions to support ECDSA
in oemcrypto_ecc_key module.

Test: opk_ta_p40
Bug: 300310163
Bug: 307968622
Change-Id: Ibed895933eeb71b18c467604588cca449cac1af9
2024-02-22 14:46:43 -08:00
Cong Lin
64124a7832 Add BCC validation to oemcrypto unit tests
The returned BCC from OEMCrypto_GetBootCertificateChain() can be
validated by unit tests with BccValidator.

Test: run_fake_l1_tests, opk_ta_p40
Bug: 300304834
Bug: 307968622
Change-Id: I6312cb45548f5d8a711c13ea0356d6ec8db51082
2024-02-22 14:46:30 -08:00
Fred Gylys-Colwell
8d77db54d0 Update version number in OEMCrypto header
Bug: 298719677
Change-Id: Icae24704cdb8bdd801635d879c34f917fb3d4468
2024-02-22 14:46:07 -08:00
Cong Lin
dbb0bea701 Add Bcc validator to oemcrypto util and unit tests
A Bcc validator that can parse and validate BCC. This is to support better
prov40 unit tests regarding OEMCrypto_GetBootCertificateChain() later.

Test: opk_ta_p40
Bug: 300304834
Bug: 307968622
Change-Id: I3cfdad9f1891c6abc83051af1d80a20e0adeb58b
2024-02-22 14:43:11 -08:00
Matt Feddersen
c36826607e Add CDM integration test for MoveUsageEntry bug
Test: GTEST_FILTER="*PIG*Defrag*" ./jenkins/opk_ta
Bug: 307750348

Change-Id: I5cc1ffb32311d6e46a956e11fc400b6f9510e6d6
2024-02-22 14:34:00 -08:00
Vicky Min
c8ac9c5cd7 Fix empty struct error
I added an empty ODK_ParsedRelease struct in ODK in case we want to add fields for release requests in the future but this is causing an error in C. Removing it for now. Will add it if needed for future unit tests.

PiperOrigin-RevId: 581059171
Change-Id: Ic547cf3cef3cf89f503f39cff27888d77056eddc
2024-02-22 14:34:00 -08:00
Vicky Min
4d7025e517 ODK implementation for license release
PiperOrigin-RevId: 580643396
Change-Id: I588ef20587acc347b510dfb7fd9e372d221100a0
2024-02-22 14:34:00 -08:00
Jacob Trimble
692cb259f3 Fix dynamic adapter with provisioning
Bug: 302721191
Change-Id: Icdc003ed903142129eb1f89d109f447ea6dc2079
2024-02-22 14:34:00 -08:00
Googler
de3cac4f90 Remove the words All rights reserved. from Widevine's existing copyright headers, under google3/video/widevine/export/common/oemcrypto_core_message/
For context, see cl/578224540

This CL is produced via
- Do the removal
    - `$ /google/src/head/depot/google3/devtools/scripts/csearch_apply --includefile 'video/widevine/export/common/oemcrypto_core_message/' --search='Copyright \d{4} Google LLC. All rights reserved.' --apply='s,\ All rights reserved\.,,g'`
- Manually deleted a few periods. I.e., for cases where the comment is ONLY "Copyright <year> Google LLC.", I removed the period at the end.

PiperOrigin-RevId: 580020267
Change-Id: I4b2f647d6e3bbb34868e1822591bc953a94cca42
2024-02-22 14:33:58 -08:00
Vicky Min
9e76fdfb5f Add run_dynamic_oemcrypto_v19 test script
Also removed L3 function pointers to the function headers added in
go/wvgerrit/186010 because they weren't stubbed out and was causing the
new script to fail.

Bug: 293359147
Change-Id: I15606bb636a8bd2637bcf48c421a85d82044762b
2024-02-22 14:33:47 -08:00
Cong Lin
dbab54191b Fix OEMCrypto_GetBCCType() in dynamic adapter
Correct a typo that breaks the build.

Test: run_dynamic_oemcrypto_v18
Bug: 307812015
Change-Id: I0c5defcd933258ccf927657baa28d8546ae5303c
2024-02-22 14:33:26 -08:00
Alex Dale
1daf69dc6f Update widevine apex min_sdk_version to 34
Change is based on http://go/wvgerrit/186390

PiperOrigin-RevId: 576682220
Change-Id: Ic0fa38982ba1bb83577e01d3d579367c8bda2019
2024-02-22 14:33:25 -08:00
Vicky Min
159aeeecf4 Add integration test for license release
Bug: 258816489
Change-Id: I315eefeb479146de2563aefa75303633341d86f0
2024-02-22 14:33:25 -08:00
Cong Lin
df6d73f021 Add header functions for GetBCCType
Add new OEMCrypto_GetBCCType() function in v19.
Re-generate serialization and test files.

Test: opk_ta, opk_linux_ipc_ta, run_fake_l1_tests
Bug: 297918188
Change-Id: Id5f422776cd50c71ab483c06bbe3ac399461fb31
2024-02-22 14:33:12 -08:00
Vicky Min
417a9c7b77 Add header functions for license release
Bug: 295956275
Change-Id: I223937ea25544cfb562bc063e75b359e4d908984
2024-02-22 14:33:03 -08:00
Ian Benz
82c4165553 Fix clang-tidy errors from switching to C++17
Disable clang-tidy checks that enforce coding patterns specific to C++17
until the codebase can be updated.

Change-Id: Ic720dec6720b325b1f19d3c2e4c31f4a8e081a01
2024-02-22 14:32:51 -08:00
Vicky Min
51c537e265 Fix potential signed integer overflow in ODK
PiperOrigin-RevId: 573265338
Change-Id: I33dbced572941c9646f7496e20b8d9a49bca5811
2024-02-22 14:32:51 -08:00
Cong Lin
e0e625b3f2 Update build files to use C++17 standard
Updated compiler flags from c++14 to c++17 everywhere.
L3 haystack still uses c++14 and needs more testing.

Bug: 254108623
Test: Build and run CE CDM unit tests
Change-Id: I3883c466705aeb239d22c178605029fec7d46bff
2024-02-22 14:32:49 -08:00
Jacob Trimble
078e1f6555 Add utility for generating KDF contexts
Starting in v19, OEMCrypto implementers will need to implement KDF generation in OEMCrypto.  To make it easier, this adds a utility to generate them based on the request context.

PiperOrigin-RevId: 572693987
Change-Id: Ife382bf35ceede508499e3677de115ef12999dcc
2024-02-22 14:32:00 -08:00
Fred Gylys-Colwell
e85a6b9616 Allow entitlement and entitled session to be the same
For DRM, but not for CAS, we allow the entitlement session
and the entitled session to be the same.

Bug: 301462149
Change-Id: Ib830484be8437b1c4ce34500ae912e6c119dcfc3
(cherry picked from commit c1ec1c248d3ca1d3bc414c71cc9222c77d56f043)
2024-02-22 14:31:56 -08:00
Vicky Min
54da9e91cd Create function header for ODK_PrepareCoreLicenseRelease
PiperOrigin-RevId: 571975120
Change-Id: Ie9eac57389298b03348137078b5c63432a3d50d8
2024-02-22 14:31:56 -08:00
Jacob Trimble
4b32cb4b10 Implement license protocol 2.2 for OEMCrypto v19
This updates the code and tests to allow for using license protocol 2.2
when using OEMCrypto v19.

Issue: 80428549
Issue: 121031064
Issue: 232464183
Change-Id: Ib6bb61f86dd310b566227462658530bca5940b88
2024-02-22 14:31:54 -08:00
Vicky Min
5f3bc77c52 Remove RestrictFilter() function and RSAPerformance test
Since we want to migrate to using GTEST_SKIP to skip unit tests instead
of GTEST_FILTER, we can remove the RestrictFilter() function which
filters the tests out using GTEST_FILTER. To do this, the RSAPerformance
test needs to be removed, which is acceptable since no one uses this
test anymore. However, b/299135804 is being used to track a new way to
either execute/track permance.

Bug: 251240681, 299135804
Change-Id: Ife59c468ee127f4c39d3be91707ca38a061b7895
2024-02-22 14:31:29 -08:00
Jacob Trimble
488a4647db Merge OEMCrypto KDF and usage functions
Since KDF functions are only used right before specific functions, this
merges them to simplify internal state within OEMCrypto.

Fixes: 299527712
Change-Id: I426cfcdc102bd73cf65cd809b213da2474f44b34
2024-02-22 14:24:35 -08:00
Vicky Min
b04fda2908 Skip API and time rollback tests with GTEST_SKIP
Bug: 251240681
Change-Id: Ie1cee828f239ddca03ad18aac4139e2e42038df3
2024-02-22 13:54:52 -08:00