Commit Graph

7883 Commits

Author SHA1 Message Date
Googler
89666aeb89 Fix issues identified by clang-tidy
- Replace assert with odk_static_assert for checks that can be handled
  at compile time.
- Use explicit bool conversion with memcmp.

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

PiperOrigin-RevId: 524277743
Change-Id: I8b32e886e780e80406afceea562be2033d75d340
2024-01-29 11:51:41 -08:00
Matt Feddersen
a2a27c44ef Correctly parse v18.0 provisioning requests
The previous code fixed a backwards compatibility error for v18 provisioning requests being parsed by a v17 or older server. This bumped the minor version number to v18.1. v17 servers are still expected to fail when trying to parse v18.0 provisioning requests, and v18.1 requests will pass.

However, it did not correctly account for existing v18.0 requests on v18.1+ servers. v18.0 messages were naively detected by a failure to parse, and the parse function was not run again. This left the resulting nonce and session_id values uninitialized.

This CL fixes that by explicitly handling the v18.0 and v18.1+ cases, ensuring that the parse function succeeds and all relevant information is copied over. Furthermore, the unit test that was meant to catch this edge case has been improved to validate the resulting parsed message.

All code changes affect the server. This does not affect the client code eg OEMCrypto

PiperOrigin-RevId: 523714529
Merged from https://widevine-internal-review.googlesource.com/170110

Change-Id: I21911c4bb4304de2d93f092f356402bbd4240874
2024-01-29 11:20:20 -08:00
Vicky Min
c6e7c70a6b Remove reference to OEMCrypto_LoadKeys() in ODK code
PiperOrigin-RevId: 522089097
Merged from https://widevine-internal-review.googlesource.com/168481

Change-Id: I59927c7f5aba52523aeba78c130f4b148d1c363f
2024-01-29 11:20:11 -08:00
Fred Gylys-Colwell
231ff3735c Backport http://go/ag/21276850
Changes to the Android build files.

PiperOrigin-RevId: 512200169
Merged from https://widevine-internal-review.googlesource.com/166925

Change-Id: If6247499693013099d705dd22a123c36a76e0404
2024-01-29 11:06:45 -08:00
Ian Benz
85357db81b Fix policy engine unittest issues from clang-tidy
Merged from https://widevine-internal-review.googlesource.com/177661

Bug: 290112507
Change-Id: Iddf6889640a335d2f6bb7af78790f4a36baaab03
2024-01-29 10:36:34 -08:00
Fred Gylys-Colwell
e9b0196a23 Generate golden data tests for ODK
Generate core message request and responses for
golden data tests.

This CL does not have any golden data. The golden data
will be added to a google3 CL.

To turn on dumping of golden data, set the environment
variable DUMP_GOLDEN_DATA to "yes".

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

Change-Id: I7ae2d76ec7330d9131aae98dfd07b7909d10f726
2024-01-29 10:36:15 -08:00
Ian Benz
cebd90e300 Add clang-tidy support for the CDM
Bug: 256230932
Change-Id: Id3fcf024cd7dcf95218876b81359d6418f5aa067
2024-01-29 10:26:54 -08:00
Fred Gylys-Colwell
b7b423aca3 Reduce clock skew in flaky duration tests
There are three changes here that should help reduce the
amount of duration test failures caused by clock skew.

First, we reported some skew when the test expected playback
to start immediately after loading the license. However,
with round-off, this could easily be more than 1 second. So
this does not warrent even a warning.

Second, the fake and real clocks were only synced after
computing how long to sleep. This is fixed by moving
SleepUntil to the TestSleep class and having it sync before
computing the delta and after doing the sleep.

Third, I am guessing that some failures due to unexpected
lenience were caused by the rental or playback clock being
started at the end of signing the license or the end of the
first decrypt instead of the beginning. We work around this
by recording how long these operations take, and then adding
this extra time at the end of the check for FailDecrypt.

Bug: 275003529
Bug: 279249646
Bug: 207500749
Merged from https://widevine-internal-review.googlesource.com/176070

Change-Id: I6a973565edfbebca53ee7f239b4b93f8f73d1e0a
2024-01-26 17:46:49 -08:00
Rahul Frias
0cd3d185c7 Cleanup vendor projects are proprietary.
[ Merge of http://go/ag/21276850 ]

Test: m droid dist
Merged from https://widevine-internal-review.googlesource.com/166674

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

Change-Id: I0bdec38c4d12710fa97b91665d211ba6c0d4b24d
2024-01-26 17:39:30 -08:00
Kyle Zhang
8fcaa04eab Revise cdm signing api and test
Bug: 279671867
Bug: 279672538
Change-Id: If2e2c6d250c0379c217b3f9b21efb197c9ae4fd6
2024-01-26 17:06:09 -08:00
Kyle Zhang
5070a7b949 Exposing the Cast Signing Algorithm
1. Exposing the Cast Signing Algorithm in cdm core.
2. Update core Cast tests to use new core CDM Cast signing API.

Bug: 279671867
Bug: 279672538
Change-Id: Ia73c4b5e6dd61edf790bca97a321881d310e7a99
2024-01-26 17:05:58 -08:00
Ian Benz
14c5d6ee5f Move internal fuzz target naming scheme to g3doc
Change-Id: I400b0a34c670673aba9dd347ec41060b4b23897a
2024-01-26 16:26:25 -08:00
Ian Benz
e19927f4bf Update OEMCrypto fuzzing documentation
- Add details for triaging crashes and writing fuzz tests.
- Move internal documentation not needed by partners to g3doc.
- Remove infrastructure details covered in the design document.

Change-Id: Ib60b2bea954f4371595b0f891434e2274366fdd2
2024-01-26 16:26:23 -08:00
Ian Benz
9a24732f5b Replace entitled key session fuzzer
Enable multiple OEMCrypto calls in arbitrary order, multiple OEMCrypto
sessions, and OEMCrypto_ReassociateEntitledKeySession fuzzing.

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

Change-Id: Ic1ac754c74bf0299c8c9f04ffdbfe82cf9f7569d
2024-01-26 16:25:06 -08:00
Ian Benz
79c809840e Add OEMCrypto_QueryKeyControl fuzzer
Merged from https://widevine-internal-review.googlesource.com/177111
Merged from https://widevine-internal-review.googlesource.com/177117

Change-Id: Iea28155a369f71557a32cc34da7bd328f78e2413
2024-01-26 16:21:38 -08:00
Ian Benz
078682a897 Simplify fuzz tests using LicenseWithUsageEntryFuzz
Merged from https://widevine-internal-review.googlesource.com/175060

Change-Id: I2f245ac998883e2a31cde361e30b36f00681262c
2024-01-26 16:21:25 -08:00
Ian Benz
5c5433a8d8 Update OEMCrypto_LoadLicense corpus for ODK_Packing_ParsedLicense
- Regenerate corpus files.
- Change nonce endianness.

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

Change-Id: I5f288a054325097d6ea696cd755fc0557d0eadd1
2024-01-26 16:20:39 -08:00
Vicky Min
28e68a866b Fix crash in wvoec::LicenseRoundTrip::InjectFuzzedResponseData
After the ODK_MAX_NUM_KEYS change, the core response is a pointer to an
array instead of an array. This check should ensure the index of the key
array can always be accessed.

Bug: 286531859
Change-Id: I44604eb977be722ef692de2b61e1f626266a42a7
2024-01-26 16:18:40 -08:00
Ian Benz
ed55c511a3 Add OEMCrypto_GenerateCertificateKeyPair second stage fuzzer
Merged from https://widevine-internal-review.googlesource.com/176771

Change-Id: I8afee6636a44f46a573be5a94f6c12161b57eace
2024-01-26 15:27:29 -08:00
Ian Benz
4aa2bcde49 Fix OEMCrypto_LoadEntitledContentKeys fuzzer
- Pass entitled key session to OEMCrypto_LoadEntitledContentKeys.
- Refresh corpus files.

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

Change-Id: I7edb081933d37897e3b9d83dd00a627b5de64bc9
2024-01-26 15:26:46 -08:00
Ian Benz
3a05989920 Add OEMCrypto_GetDeviceSignedCsrPayload fuzzer
Merged from https://widevine-internal-review.googlesource.com/175050

Change-Id: I28e4b1bc1f82deaf5644d0b2e31d916bf65365d3
2024-01-26 15:23:50 -08:00
Ian Benz
ea43147a08 Add OEMCrypto_GetDeviceInformation fuzzer
Merged from https://widevine-internal-review.googlesource.com/174936

Change-Id: I79bbb8506a13d3142a8b323a7c67d0155973a3f4
2024-01-26 15:22:49 -08:00
Ian Benz
4f29280b3e Remove unused OEMCrypto_GenerateSignature fuzzer
Merged from https://widevine-internal-review.googlesource.com/174772
Merged from https://widevine-internal-review.googlesource.com/176633
Merged from https://widevine-internal-review.googlesource.com/176634
Merged from https://widevine-internal-review.googlesource.com/176670

Change-Id: I36438c102bfe68ff16eab3db301377e858f533c1
2024-01-26 15:21:21 -08:00
Ian Benz
09e6f1c60f Add OEMCrypto_GetKeyHandle fuzzer
Merged from https://widevine-internal-review.googlesource.com/174934

Change-Id: If44423ed51cc2ff10c1b471d39db962a653d8c14
2024-01-26 15:18:06 -08:00
Ian Benz
31a2f09792 Enable OEMCrypto_MoveEntry/ReuseUsageEntry fuzzers
Merged from https://widevine-internal-review.googlesource.com/174893

Change-Id: Ia46e74450bc20302edaf1c5e2bbde957a1d31c95
2024-01-26 15:17:45 -08:00
Ian Benz
8a4160bf8a Add OEMCrypto_GetRandom fuzzer
Merged from https://widevine-internal-review.googlesource.com/174771
Merged from https://widevine-internal-review.googlesource.com/174854

Change-Id: Ia654123bcbe8fa2e7daadaab79c1149ff3cde6b0
2024-01-26 15:17:36 -08:00
Ian Benz
76cf1cd985 Simplify and enable create and remove entitled key session fuzzer
Merged from https://widevine-internal-review.googlesource.com/174851

Change-Id: Iebddae2412c66dbaf5bac042518aea58f9b0c315
2024-01-26 15:17:12 -08:00
Ian Benz
708670c98b Simplify OEMCrypto_InstallOemPrivateKey fuzzer
Merged from https://widevine-internal-review.googlesource.com/174890
Merged from https://widevine-internal-review.googlesource.com/174856

Change-Id: If863e4a8f739ca5645311d7f7b08e6aec4cc7aca
2024-01-26 15:16:55 -08:00
Ian Benz
75d4778531 Fix spelling mistake
Merged from https://widevine-internal-review.googlesource.com/172590
Merged from https://widevine-internal-review.googlesource.com/172610
Merged from https://widevine-internal-review.googlesource.com/172650
Merged from https://widevine-internal-review.googlesource.com/174011

Change-Id: I88cb66704509010fa2e0bee5d0f580173db6fdcd
2024-01-26 15:16:55 -08:00
Ian Benz
a66143bec4 Fix OEMCrypto_GenerateRSASignature fuzzer
Ensure OEMCrypto is in the correct state before invoking
OEMCrypto_GenerateRSASignature.

Merged from https://widevine-internal-review.googlesource.com/168857
Merged from https://widevine-internal-review.googlesource.com/172171
Merged from https://widevine-internal-review.googlesource.com/172410
Merged from https://widevine-internal-review.googlesource.com/173130

Change-Id: I774f59af8044939c5a9618de348f2120a834e043
2024-01-26 15:16:55 -08:00
Ian Benz
57b391c8b9 Fix bugs impacting fuzzing coverage
- Update ConvertDataToValidEnum to not use FuzzedDataProvider since it
  causes unexpected parsing results.
- Add OEMCryptoLicenseAPIFuzz::LoadLicenseWithGenericCryptoKeys so that
  generic crypto fuzz tests can load appropriate keys.
- Remove custom mutator from oemcrypto_generic_verify_fuzz because it
  provides minimal additional coverage.
- Refresh affected corpus files.

Merged from https://widevine-internal-review.googlesource.com/168557
Merged from https://widevine-internal-review.googlesource.com/171191
Merged from https://widevine-internal-review.googlesource.com/172170
Merged from https://widevine-internal-review.googlesource.com/172250

Change-Id: Ie676a36cbf4c12bdda9566fad3590a7b69168d9c
2024-01-26 15:15:36 -08:00
Ian Benz
55ef762c08 Improve fuzzers with FuzzedDataProvider inputs
- Remove redundant input size checks handled by FuzzedDataProvider.
- Allow passing null when buffer size is used as an in/out parameter.

Merged from https://widevine-internal-review.googlesource.com/168637
Merged from https://widevine-internal-review.googlesource.com/171190
Merged from https://widevine-internal-review.googlesource.com/172090
Merged from https://widevine-internal-review.googlesource.com/172251

Change-Id: Ib5779ab969f646f306088b3d75d513e1f07a3886
2024-01-26 13:40:22 -08:00
Ian Benz
53fe55cb72 Clean up fuzz helper classes
- Remove OEMCrypto state changes hidden in constructors and destructors.
- Use composition instead of inheritance to structure classes.
- Avoid calling non-trivial destructors for objects with static
  lifetime.

Merged from https://widevine-internal-review.googlesource.com/168497
Merged from https://widevine-internal-review.googlesource.com/171170
Merged from https://widevine-internal-review.googlesource.com/171171
Merged from https://widevine-internal-review.googlesource.com/171870

Change-Id: I20476a7b1132d11f011b8650ec01e3c2dc3fc0e8
2024-01-26 13:40:22 -08:00
Ian Benz
af070601b0 Add OEMCrypto_SetDecryptHash/GetHashErrorCode fuzzer
Merged from https://widevine-internal-review.googlesource.com/169021
Merged from https://widevine-internal-review.googlesource.com/170030

Change-Id: I209d280b0478620197fc514966af3c93fc2272aa
2024-01-26 13:40:20 -08:00
Ian Benz
7b592f1990 Add OEMCrypto_GenerateCertificateKeyPair fuzzer
Merged from https://widevine-internal-review.googlesource.com/168817
Merged from https://widevine-internal-review.googlesource.com/169915

Change-Id: If4d3f4cd2b028765072a14c74781e9750dc3e38b
2024-01-26 13:39:28 -08:00
Ian Benz
c0c349cd28 Fix OEMCrypto_LoadUsageEntry fuzzer
- Ensure OEMCrypto is in the correct state before invoking
  OEMCrypto_LoadUsageEntry.
- Do not use FuzzedDataProvider to parse usage_entry_number since it
  causes unexpected parsing results.

Merged from https://widevine-internal-review.googlesource.com/168859
Merged from https://widevine-internal-review.googlesource.com/169293
Merged from https://widevine-internal-review.googlesource.com/169970
Merged from https://widevine-internal-review.googlesource.com/170011

Change-Id: I6c3ddfe457facef9c9d0fc524fc3cf76aba90f64
2024-01-26 13:36:26 -08:00
Ian Benz
fb1f3af60f Add OEMCrypto_GetBootCertificateChain fuzzer
Merged from https://widevine-internal-review.googlesource.com/168818
Merged from https://widevine-internal-review.googlesource.com/169890

Change-Id: I2530555a1cf94726c82511504e480b843b244c7b
2024-01-26 13:36:21 -08:00
Ian Benz
8a9b3c5c75 Fix OEMCrypto_LoadEntitledContentKeys fuzzer
- Create an entitled key session for OEMCrypto v17 and later.
- Refresh corpus files.

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

Change-Id: Ied9fce445a837e417077381de71d2834f385f120
2024-01-26 12:19:08 -08:00
Ling-Yu Lee
0919fb7ea6 Merge "Add GMScore into allow list to invoke signRSA API." into main 2024-01-26 00:18:19 +00:00
Ling-Yu Lee
3a87988181 Add GMScore into allow list to invoke signRSA API.
Purpose: Moving cast auth into GMScore.
Deisign doc: go/gtv-cast-auth

Bug: b/318467776
Test: Manual
Change-Id: Ic18188dfa61df0d64c1b19fddc99abe851f8b724
2024-01-26 00:17:03 +00:00
Treehugger Robot
665781cba3 Merge "widevine fuzzer: remove relative paths" into main 2024-01-25 00:28:07 +00:00
Treehugger Robot
47f5d9906c Merge "Updated crypto_session_fuzzer" into main 2024-01-22 16:30:03 +00:00
Treehugger Robot
27b5316c39 Merge "Updated cdm_engine_fuzzer" into main 2024-01-22 16:21:23 +00:00
Treehugger Robot
da299dfd47 Merge "Updated system_id_extractor_fuzzer" into main 2024-01-22 05:24:56 +00:00
Treehugger Robot
f6dcfb08e1 Merge "Updated cdm_license_fuzzer" into main 2024-01-16 04:53:09 +00:00
Steven Moreland
ec6cb73143 widevine fuzzer: remove relative paths
breaks fuzzing packaging

Bug: 300993391
Test: run fuzzer, check lsof
Change-Id: Ibfbfcff377ffb3a15197de4c80cdd3d4e27c8b0a
2023-12-28 01:07:58 +00:00
Kyle Alexander
163db3777f Remove unnecessary test dependency on libmedia_omx
Test: ./build_and_run_all_unit_tests.sh

Bug: 312063280
Change-Id: Id8c8c4d3d778599c4c418b667497ff7f50f8152e
2023-12-21 20:55:58 +00:00
Treehugger Robot
b83113f891 Merge "Updated content_decryption_fuzzer" into main 2023-12-13 22:53:00 +00:00
Onkar Shinde
2415894e2f Updated cdm_license_fuzzer
Implemented google c++ code style changes for cdm_license_fuzzer

exec/s: 91
Test: ./cdm_license_fuzzer
Bug: 312374669

Change-Id: Iac18772277cddad8ca182e60fc426721717d38d4
2023-12-12 12:19:19 +00:00
Onkar Shinde
c39f453c59 Updated cdm_engine_fuzzer
Implemented google c++ code style changes for cdm_engine_fuzzer

exec/s: 323
Test: ./cdm_engine_fuzzer
Bug: 312374669

Change-Id: Iddaeab285d591d77f16c10e62a88b1af3f8af7c5
2023-12-12 08:46:03 +00:00