Commit Graph

832 Commits

Author SHA1 Message Date
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
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
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
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
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
Vicky Min
51c537e265 Fix potential signed integer overflow in ODK
PiperOrigin-RevId: 573265338
Change-Id: I33dbced572941c9646f7496e20b8d9a49bca5811
2024-02-22 14:32:51 -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
Vicky Min
065d4d151e Update C function/field documentation to match behavior in ODK
PiperOrigin-RevId: 560780563
Change-Id: Ibd88398b06cca7a51d152fb6da95afd40cdd5a8b
2024-02-22 13:52:28 -08:00
Vicky Min
3933be3650 Update OEMCrypto_PrepAndSignLicenseRequest() documentation
OEMCrypto_PrepAndSignLicenseRequest() documentation needs to be updated
to match the current behavior.

Bug: 296608852
Change-Id: Ib76dc2f1afa705b5f71e654afa2889b2dcca36ce
2024-02-22 13:52:28 -08:00
Jacob Trimble
660a20ed5c Always use static_assert on MSVC
MSVC supports static_assert but won't always set __STDC_VERSION__ correctly.  So we just assume it is supported.

PiperOrigin-RevId: 559166904
Change-Id: I9a62094686405c58fe9be202bce0f4fefb764d48
2024-02-22 13:52:28 -08:00
Vicky Min
18369730b9 Refactor OEMCrypto_SetDecryptHash
The current implementation of OEMCrypto_SetDecryptHash gives developers
flexibility to use different types of hashes. However, all the
implementations we have seen thus far use crc32. Because of this, crc32
should be sufficient and we can refactor OEMCrypto_SetDecryptHash to
only use the crc32 hash.

Bug: 287706586
Change-Id: I4aaa253b2656dfd9c984f77dfb08fe160b23b47c
2024-02-22 13:52:26 -08:00
Vicky Min
c26d6d3c97 Update core_message_util_test LicenseResponse18 unit test for variable max num keys change
PiperOrigin-RevId: 557685272
Change-Id: Ib9e1b6c38d1f135c757e734c1c9f36d3913a21ca
2024-02-22 13:52:11 -08:00
Vicky Min
5c718ecb0d Update OEMCrypto to match ODK version updates
Bug: 293154424
Change-Id: Ie22bc48e043f2a88090a2601d5d5c96953e73015
2024-02-22 13:49:25 -08:00
Vicky Min
41942e1014 Roll ODK version number to 19.0
PiperOrigin-RevId: 551966786
Change-Id: Ib3eb3423112a340abb25cddfdc2d6d43ad2ce6f1
2024-02-22 13:44:51 -08:00
Matt Feddersen
6c7988f8c9 Don't force decrypt count to increase for bypass
Bug: 324261677

Merged from https://widevine-internal-review.googlesource.com/191631

Change-Id: I371fc22ad330402aed0e10cb3cba8641abe00bea
2024-02-19 14:58:49 -08:00
Junfeng Yang
65abd1deb7 Remove the extra call to OEMCrypto_GenerateNonce
The extra call to OEMCrypto_GenerateNonce is not needed. And it would
also lead to failure when the fuzzers are linked with the OPK
serialization layer.

Bug: 324666282
Change-Id: I43941fd5ee1f15f7106e6f0be2b65dce206225cf
2024-02-19 01:15:57 -08:00
Ian Benz
858d66a12c Fix code health issues in OEMCrypto testbed identified by Coverity
Change-Id: I518f753d9d716415d2fe62d3bf54fc9f816f044c
2024-02-19 01:01:48 -08:00
Junfeng Yang
93c19cd8de Fix the parameter direction
The output_descriptor parameter of OEMCrypto_FreeSecureBuffer should be
marked as [in,out].

Bug: 321346771
Change-Id: I4ba1a7f0b0f12a068d655a0d0b8b43a0818980dc
2024-02-19 01:01:26 -08:00
Matt Feddersen
8ac74f2d68 Skip some cast tests if not supported
Merged from https://widevine-internal-review.googlesource.com/190072

Change-Id: I4134b3f090e3f47c80601ae30262d0587808e88a
2024-02-19 01:00:47 -08:00
Ronish Kalia
d0f454d91c [DON'T BLOCK] Test ownership migration rules
This CL is created as a best effort to migrate test targets
to the new android ownership model. If you find incorrect or unnecessary
attribution in this CL, please create a separate CL to fix that.

For more details please refer to the link below,
<add g3 doc link>

Bug: 304529413
Test: N/A
Change-Id: I204c137da43a021bcebe316759d1aadaec99fe2a
2024-02-14 14:19:08 +00:00
Matt Feddersen
c02de3f0e6 Update CHANGELOG link for v17.2
Merged from https://widevine-internal-review.googlesource.com/183778

In addition to the merge from oemcrypto-v17, this CL fixes a few header
indents and v18 tag links.

Merged from https://widevine-internal-review.googlesource.com/183782

Change-Id: I781aa69314acdeb48bff1af3c291c847f6a664ea
2024-02-01 13:40:53 -08:00
Cong Lin
5d72262eda Update OEMCrypto CHANGELOG for v18.4
Bug: 294440012
Merged from https://widevine-internal-review.googlesource.com/181191

Change-Id: I4d0726058b938a7d9767bbecd8553c92e81841da
2024-02-01 13:40:52 -08:00
Cong Lin
2db837bce4 Update OEMCrypto CHANGELOG.md for v17.2
Bug: 241146324
Merged from https://widevine-internal-review.googlesource.com/178978

Merged from https://widevine-internal-review.googlesource.com/179710

Change-Id: I385cab041e795d9ef2a5cb01e7ee71fe3290c84d
2024-02-01 13:40:52 -08:00
Matt Feddersen
5715fb527a Update changelog for 18.3
Merged from https://widevine-internal-review.googlesource.com/178050

Change-Id: Id4417754bdb9acabbbdbebbf913e4de87c933054
2024-02-01 13:40:52 -08:00
Matt Feddersen
6243410069 Remove WTPI_MaxBufferSizeForDecrypt and WTPI_ApplyCGMS
Bug: 277115746

Merged from https://widevine-internal-review.googlesource.com/170050

Change-Id: I744f4fe1837b776b50693a40535484e8fae092c4
2024-02-01 13:40:52 -08:00
Robert Shih
7abdd4d0ae Misc formatting fix
Bug: 323289757
Test: TreeHugger
Change-Id: I26ec60855bf19a3ef87ca7bc86f3cb024e393c2b
2024-02-01 13:40:52 -08:00
Fred Gylys-Colwell
c53047bd1b Document huge buffer tests in separate group
Explain how the huge buffer tests work. In particular, state
that we expect that OEMCrypto returns an error on huge
buffers.

Staged here:
https://developers.devsite.corp.google.com/widevine/drm/client/oemcrypto/v18/oemcrypto-test/group/security

Bug: 300645748
Merged from https://widevine-internal-review.googlesource.com/188034

Change-Id: Iba9d652dfe57df6786b0ab60931f02f8ce9b8180
2024-02-01 13:40:52 -08:00
Ian Benz
8e48e36554 Fix uninitialized variable in Provisioning40CastRoundTrip
- Initialize allowed_schemes_ since it is used by CreateDefaultResponse.
- Issue was detected by Coverity.

Change-Id: I368c4773f6316b65196aaa39e23e70717299c570
2024-02-01 13:40:51 -08:00
Ian Benz
35cf9c2f99 Fix OEMCrypto test issues identified by Coverity
Change-Id: Ic9f4982bf022292d10a0a88f10648a46077ec0cf
2024-02-01 13:40:51 -08:00
Cong Lin
28c2345413 Fix error check in ForbidPrepAndSign test
OEMCrypto_ERROR_INVALID_RSA_KEY is deprecated in v17. But
v16 oemcrypto can still return it. Unit test should allow
this error for now.

Test: run_dynamic_oemcrypto_v16.4, run_dynamic_oemcrypto_v16.3
Bug: 307668988

Change-Id: I950b62c8b3e02ea09d4795839a3d69573ab718aa
2024-02-01 13:40:51 -08:00
Fred Gylys-Colwell
8f3ee84c1b Unit tests for forbidden RSA key usage
This CL adds unit tests to verify that the following
forbidden uses of an RSA private key do not work:

- ForbidPrepAndSign -- A cast cert key cannot sign a license
  request.
- ForbidUseAsDRMCert -- A cast cert cannot be used with the
  DRM cert's padding scheme and it cannot be used to derive
  keys from a session key.
- *ForbidRSASignatureForDRMKey* -- A DRM cert key cannot be
  used with GenerateRSASignature.
- *OEMCertForbidGenerateRSASignature* -- An OEM cert key
  cannot be used with GenerateRSASignature.

Bug: 251875110
Change-Id: Ic2b23e3fd279e878c190a8294078a8d092126a29
2024-02-01 13:40:51 -08:00
Ian Benz
343324e97c Add missing #include to fix the OPK Linux build
Merged from https://widevine-internal-review.googlesource.com/185856
Merged from https://widevine-internal-review.googlesource.com/185910

Change-Id: I51d7a0fed2475333f459030005e796c2055fecc7
2024-02-01 13:40:51 -08:00
Fred Gylys-Colwell
36d4c4c4b7 Pretty print BuildInformation in unit tests
Change-Id: I1f702edc731454c84667c79e05c94b4360a40111
2024-02-01 13:40:51 -08:00
Alex Dale
ac5f0135d5 Cleanup install_keybox_tool
This tool will soon be used in LUCI tests.  It seemed necessary to
clean it up to make the build cop's job easier if there is a problem.

The following was completed:
* Removed stub for install XML based keyboxes
  * This is handled externally
* Improved error checking
* Replace C-style prints with C++ styled prints
  * Keybox information is still printed to stdout
  * Major erros are printed to stderr
* Updated to follow Google style guide
* Fixed header includes
  * Removed unused headers
  * Added headers that are used, but were included indirectly
* Ensures OEMCrypto_Terminate() is called
  * Particularly if there is an error encountered.

Bug: 299108238
Test: Tested in later CL
Change-Id: Ie6dafc44d050d0c6ae288f88cd5d6f3737d4a88c
2024-02-01 13:40:51 -08:00