Commit Graph

44 Commits

Author SHA1 Message Date
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
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
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
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
Ian Benz
c579a79462 Fix null passed to memcpy in generic verify fuzz
Merge from Widevine repo of http://go/wvgerrit/169048

Do not generate a new signature during mutation if a key handle cannot
be retrieved by OEMCrypto_GetKeyHandle().

Bug: 275264353
Test: luci tests
Change-Id: I9a804328c4b6d3e50d14c3f9c71043e71a88e3da
2023-03-28 20:28:57 +00:00
Fred Gylys-Colwell
e51bb19296 Refresh corpus for oemcrypto fuzz tests with modified format
Merge from Widevine repo of http://go/wvgerrit/165958
and  http://go/wvgerrit/165862

Bug: 275264353
Test: test only code

Change-Id: I30829ad72d58e2233f4cc9963d17cb07314b7720
2023-03-28 20:28:57 +00:00
Cong Lin
e8add8eed8 Sync oemcrypto files from cdm udc-dev to Android
Changes included in this CL:

166806: Update OEMCrypto_GetDeviceInformation() | https://widevine-internal-review.googlesource.com/c/cdm/+/166806
166808: Update Android L3 after OEMCrypto_GetDeviceInformation() signature changes | https://widevine-internal-review.googlesource.com/c/cdm/+/166808
166809: Decode device info and write it to CSR payload | https://widevine-internal-review.googlesource.com/c/cdm/+/166809
167158: Fix Android include path and copy_files | https://widevine-internal-review.googlesource.com/c/cdm/+/167158
167159: Fix common typos and use inclusive language suggested by Android linter | https://widevine-internal-review.googlesource.com/c/cdm/+/167159

165618: Explicitly state python3 where needed. | https://widevine-internal-review.googlesource.com/c/cdm/+/165618

166757: Update Android.bp for Android | https://widevine-internal-review.googlesource.com/c/cdm/+/166757
164993: Refactor basic oemcrypto unit tests | https://widevine-internal-review.googlesource.com/c/cdm/+/164993
164978: Update OEMCrypto Unit Test Docs | https://widevine-internal-review.googlesource.com/c/cdm/+/164978
166941: Update make files for OEMCrypto | https://widevine-internal-review.googlesource.com/c/cdm/+/166941

165279: Refactor license unit tests | https://widevine-internal-review.googlesource.com/c/cdm/+/165279
165318: Refactor provisioning unit tests | https://widevine-internal-review.googlesource.com/c/cdm/+/165318
164800: Add extra check for renew on license load unit test | https://widevine-internal-review.googlesource.com/c/cdm/+/164800
165860: Remove duplicate definition of MaybeHex() | https://widevine-internal-review.googlesource.com/c/cdm/+/165860

164889: Updated CoreCommonRequestFromMessage and fix test | https://widevine-internal-review.googlesource.com/c/cdm/+/164889
164967: Add OPK pre-hook and post-hook error codes | https://widevine-internal-review.googlesource.com/c/cdm/+/164967
165140: Add hidden device_id_length to v18 provisioning message | https://widevine-internal-review.googlesource.com/c/cdm/+/165140
165204: Fix memory leak in oemcrypto test | https://widevine-internal-review.googlesource.com/c/cdm/+/165204

165958: Fix oemcrypto_generic_verify_fuzz mutator signature offset | https://widevine-internal-review.googlesource.com/c/cdm/+/165958

166037: Support SHA-256 in OEMCrypto Session Util | https://widevine-internal-review.googlesource.com/c/cdm/+/166037

Test: Run GtsMediaTests on Pixel 7
Bug: 270612144

Change-Id: Iff0820a2de7d043a820470a130af65b0dcadb759
2023-02-28 11:21:05 -08:00
Kyle Zhang
11255b7426 Pick widevine oemcrypto-v18 change
No-Typo-Check: From a third party header file
Bug: 260918793
Test: unit tests
Test: atp v2/widevine-eng/drm_compliance
Change-Id: I36effd6a10a99bdb2399ab1f4a0fad026d607c70
2022-12-21 00:03:50 +00:00
Kyle Zhang
af0168dbed Merge cdm changes to android repo
Bug: 251924225
Test: GtsMediaTestCases
Change-Id: I1b4e64c0abf701fe1f5017f14dc72b72c3ea6770
2022-10-11 00:40:42 +00:00
Alex Dale
e3697c6595 Fix oemcrypto_decrypt_cenc_fuzz null reference
[ Merge of http://go/wvgerrit/153669 ]

The oemcrypto_decrypt_cenc_fuzz fuzz test found a null reference error.
This adds a check to ensure that the input_buffer vector used for the
sample descriptions is not empty before attempting to access it.

Bug: 192310854
Bug: 236317198
Change-Id: If3909b01d3bc19434bbd5b6b77e7cd76182b2bdf
2022-08-19 14:38:33 -07:00
Alex Dale
cc29f745f9 Re-enabled OEMCrypto fuzz tests
[ Merge of http://go/wvgerrit/153121 ]

`run_oemcrypto_fuzz_tests` script was disabled while OPK was
transitioning between v16 and v17.  Now that OPK is v17, the
fuzz tests can be re-enabled.

Some targets could not be built due to a missing header file.
`oemcrypto/ref/src/cppbor.cpp` was updated to include the missing
header.

Bug: 235414753
Bug: 229160033
Bug: 236317198
Test: run_oemcrypto_fuzz_tests
Change-Id: Ieeebae1f6d84c5735a669d44ea45875675fdb5a3
2022-08-01 15:20:05 -07:00
Rahul Frias
d6362f6e6b Update fuzz tests to match output desriptor struct
[ Merge of http://go/wvgerrit/147110 ]

The OEMCrypto_DestBufferDesc had fields address/address_length renamed
to clear_buffer/clear_buffer_length in v17. However this was not updated
for the fuzz tests thus causing some code coverage errors. This should
fix those errors.

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

Bug: 220946359, 220946990
Test: GtsMediaTestCases on sunfish
Change-Id: I2837de2f79c0e731d072e3712d6b769df17a1c7e
2022-03-16 01:38:19 -07:00
Rahul Frias
83a4100d11 Update cipher mode elsewhere
[ Merge of http://go/wvgerrit/144696 ]

In v17,
OEMCrypto_CipherMode_CTR renamed to OEMCrypto_CipherMode_CENC
OEMCrypto_CipherMode_CBC renamed to OEMCrypto_CipherMode_CBCS

Bug: 224375138
Test: GtsMediaTestCases on sunfish
Change-Id: I2d96e9c6d22a9d9e2fbbd15a8aea3f2d5dac6dcb
2022-03-16 01:33:02 -07:00
Kyle Zhang
642965c678 Merge latest oemcrypto-v17 change
No-Typo-Check: Not related to this change.

Bug: 161477208
Change-Id: I99e4780f6855b7045aa0cd5a49c13d2d0d51ed64
2022-01-27 20:07:15 -08:00
Fred Gylys-Colwell
c7e237eb00 Update fuzz tests
Several updates to fuzz tests, including
http://go/wvgerrit/124043
Add documentation for partners to run fuzzing

http://go/wvgerrit/128224
Fix generic verify fuzz script

http://go/wvgerrit/120507
Fuzzing: Add fuzzer for reportusage API

http://go/wvgerrit/120503
Fuzzing: Add fuzzer for deactivate usageentry API

http://go/wvgerrit/120463
Fuzzing: Add logic to exit fuzzer script

http://go/wvgerrit/120444
Fuzzing: Add fuzzer for loadusageentry API

Bug: 183154879
Bug: 202994773
Bug: 186785830
Test: test only code
Change-Id: I877681461824c51bc82f0766a9973378aafadba7
2021-10-15 04:15:57 +00:00
Fred Gylys-Colwell
d3942b242c LUCI: Add build fuzz tests script to presubmits
Merge from Widevine repo of http://go/wvgerrit/123803

Update fuzz build script to use gyp from third_party folder.

Test: ran fuzz tests on luci
bug: 186271314
bug: 184866351
Change-Id: If530872aa1e60d2108932610415aa5315979390c
2021-05-10 17:44:50 +00:00
Fred Gylys-Colwell
e51c9fbbb8 Update license comment
Merge from Widevine repo of http://go/wvgerrit/121950

Remove term "Master" from "Widevine Master License Agreement".

Bug: 168562298
Change-Id: I655babf1bc447f4872f6a0f849107262be42df7a
2021-04-12 14:10:08 -07:00
Fred Gylys-Colwell
6628c7f693 Update OEMCrypto test comments and logs
Merge from Widevine repo of http://go/wvgerrit/121886

This CL merges some changes from branch rvc-dev to sc-dev
that prepared it for merge.

One change is that the unit tests now say they are part of
Android S instead of R.

Bug: 180546871
Change-Id: I2ebbd8f7b8586389ebb75f3743a2dc2ad8caa214
2021-04-12 14:00:53 -07:00
Bharath Chandra Elluru
6b548748b2 Merge oemcrypto buffer overflow tests from cdm
Widevine CLs:
http://go/wvgerrit/112243
http://go/wvgerrit/110563
http://go/wvgerrit/95483
http://go/wvgerrit/107047
http://go/wvgerrit/111123
http://go/wvgerrit/106224
http://go/wvgerrit/106263
http://go/wvgerrit/106223
http://go/wvgerrit/104223
http://go/wvgerrit/108583
http://go/wvgerrit/111403
http://go/wvgerrit/111623
http://go/wvgerrit/106264
http://go/wvgerrit/110483
http://go/wvgerrit/111944
http://go/wvgerrit/108684
http://go/wvgerrit/104183
http://go/wvgerrit/111443
http://go/wvgerrit/111869
http://go/wvgerrit/108843
http://go/wvgerrit/104363
http://go/wvgerrit/104423
http://go/wvgerrit/104263
http://go/wvgerrit/106584
http://go/wvgerrit/105924
http://go/wvgerrit/104524
http://go/wvgerrit/113023

Bug:175401639

Test: We would like to run these tests on pixel devices from master
branch using go/wv-and-dash

Change-Id: Ic4188504af64de9ce79941f75ac6feaf29189a4d
2021-01-11 22:13:16 +00:00
Fred Gylys-Colwell
20bb84ffee Merge recent doc changes for OEMCrypto
This is a cherry pick of recent changes to OEMCrypto and ODK. Most of
these are part of the document migration to doxygen.

See http://go/wvgerrit/106005 and its parents for code reviews.

Bug: 144715340
Bug: 148232693
Bug: 167580674
Change-Id: I658f99c8117b974faed97322d61fac0f382283af
2020-09-15 19:10:53 -07:00