Commit Graph

2809 Commits

Author SHA1 Message Date
Edwin Wong
09bf7fd932 Fixed race condition in closeSession am: 4222daa047 am: 0d063388de am: b0f8ed6518
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/20918774

Change-Id: Ie32cb2c358216cbdf4f47e732c06e77e8e268a49
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-03-07 01:01:15 +00:00
Edwin Wong
b0f8ed6518 Fixed race condition in closeSession am: 4222daa047 am: 0d063388de
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/20918774

Change-Id: Ieb1a7a2c8bd6d8d5d9488124cfb4998041232104
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-03-07 00:25:12 +00:00
Edwin Wong
0d063388de Fixed race condition in closeSession am: 4222daa047
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/20918774

Change-Id: I89dd8d6e85e00e22b06ac6d454411024874f3730
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-03-06 23:49:11 +00:00
Edwin Wong
4222daa047 Fixed race condition in closeSession
Merged from http://go/wvgerrit/165061
poc: http://go/ag/20978750

Fix race that corrupts mCryptoSessions std::map,
and race that occurs when CryptoSessions are used after free.

Test: poc
Test: atest MediaDrmParameterizedTests
Test: atest GtsMediaTestCases

Bug: 258189255
Change-Id: I298d3e0770ace9cd590dfaacaa4c52a0732c2fe3
Merged-In: I298d3e0770ace9cd590dfaacaa4c52a0732c2fe3
2023-03-06 08:00:46 +00:00
Cong Lin
95d87f3936 [DO NOT MERGE] Update L3 Android T with new system id after key free fix am: a4b942e176
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/21218719

Change-Id: I79df83fc2250399f71d1e20e17444781e09d53cb
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-02-09 20:55:46 +00:00
Bob Badour
cbb6177df2 Merge "Cleanup vendor projects are proprietary." into tm-qpr-dev-plus-aosp 2023-02-05 03:06:24 +00:00
Bob Badour
6f047790e0 Cleanup vendor projects are proprietary.
Test: m droid dist
Change-Id: I0bdec38c4d12710fa97b91665d211ba6c0d4b24d
2023-02-03 14:37:11 -08:00
Cong Lin
a4b942e176 [DO NOT MERGE] Update L3 Android T with new system id after key free fix
Merge of https://widevine-internal-review.googlesource.com/c/cdm/+/165219

Original commit message:

Update Android L3 v17 with new system ID after key free fix

Android Arm L3 v17 Provisioning 3.0 2023       28923
Android Aarch64 L3 v17 Provisioning 3.0 2023   28924
Android X86 L3 v17 Provisioning 3.0 2023       28925
Android X86 64 L3 v17 Provisioning 3.0 2023    28926

Fix key double free issue in L3

Cherry-pick the fix from:
https://widevine-internal-review.googlesource.com/c/cdm/+/164885/
https://widevine-internal-review.googlesource.com/c/cdm/+/164958/

Then generated L3 on top of tm-widevine-release code base.
Re-used in tm-qpr-dev.

Original commit message:

During license loading if an error occurs, all the loaded keys will be
freed. Later at session termination, the previously freed keys get freed
again, which screwed up the key table.

This CL prevents the double free by checking if the key index is already
freed, and updates the freed index to be kKeyDataArrayCount.

Test: ran L3 unit tests
Test: verified GTS tests on arm32 device
Test: ran GTS media tests on Pixel4
Bug: 252434586
Bug: 267486513

Change-Id: I8ebc19260b37615efd77a533bd005f2b9485182a
2023-02-03 18:48:47 +00:00
Robert Shih
d7936acd30 Merge "Add "version" to device info in prov4 upload tool" into tm-qpr-dev am: 5f3f0cf2af
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/21097263

Change-Id: Ie5438b300ef4cc738debb89c72bc3c2d9059007f
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-02-01 22:21:48 +00:00
Robert Shih
5f3f0cf2af Merge "Add "version" to device info in prov4 upload tool" into tm-qpr-dev 2023-02-01 22:09:02 +00:00
Robert Shih
34cc01c8a4 Surface wv_factory_extraction_tool on ab am: fdb47a37da
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/19392134

Change-Id: I7cf05dc2d732b0e71c2950947df6621d92531e7c
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-02-01 22:01:26 +00:00
Robert Shih
fdb47a37da Surface wv_factory_extraction_tool on ab
[ Merge of go/wvgerrit/165108 ]

Bug: 234078142
Bug: 238831085
Test: adb shell wv_factory_extraction_tool csr
Change-Id: I3c689b5719a0a72410d6d8cb95c7c416e67931e5
2023-01-25 15:58:04 +00:00
Rahul Frias
263d675e0e Add "version" to device info in prov4 upload tool
[ Merge of http://go/wvgerrit/160457 ]

Bug: 255921326
Bug: 262198471
Test: WV android unit tests
Merged from https://widevine-internal-review.googlesource.com/160427

Change-Id: I3e2b7158c72fb4321b67053995f62483da934a18
Merged-In: I3e2b7158c72fb4321b67053995f62483da934a18
2023-01-25 07:51:44 -08:00
Vicky Min
6ededbee26 [DO NOT MERGE] Fix out of bounds buffer error in CreateCoreLicenseResponse() am: 0890df5b16
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/18687130

Change-Id: I1e8539f39b2b60562f0bb688ae91380ac2bc1e69
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-11-30 19:26:23 +00:00
TreeHugger Robot
29aa1f3732 Merge "[DO NOT MERGE] Fix out of bounds buffer error in CreateCoreLicenseResponse()" into tm-dev 2022-11-30 18:44:57 +00:00
Vicky Min
0890df5b16 [DO NOT MERGE] Fix out of bounds buffer error in CreateCoreLicenseResponse()
In CreateCoreLicenseResponse(), there seems to be an out of bounds
potential error due to a missing check that the index used for
license_response.parsed_license->key_array is valid. Adding a check
for this here.

Bug: 217677571
Test: fuzz tests
Change-Id: I37f7228f87992ba5284c553d7b07ef97d6a66ab3
(cherry picked from commit eb711ea0ec)
2022-11-30 17:27:23 +00:00
Vicky Min
e46efc580c [DO NOT MERGE] Fix out of bounds buffer error in CreateCoreLicenseResponse() am: 8c71d5acd0
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/20524788

Change-Id: Id69c9d8bfcec50978e067679cc5738261570acc1
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-11-29 22:32:56 +00:00
Vicky Min
8c71d5acd0 [DO NOT MERGE] Fix out of bounds buffer error in CreateCoreLicenseResponse()
In CreateCoreLicenseResponse(), there seems to be an out of bounds
potential error due to a missing check that the index used for
license_response.parsed_license->key_array is valid. Adding a check
for this here.

Bug: 217677571
Test: fuzz tests
Change-Id: I37f7228f87992ba5284c553d7b07ef97d6a66ab3
(cherry picked from commit eb711ea0ec)
2022-11-21 22:58:29 +00:00
Robert Shih
c09bb48955 libwvhidl@1.3.so: use static libprotobuf
libwvhidl picked from the following builds
(built from change 20109884):

+--------+--------------+
| arch   | build        |
+--------+--------------+
| arm    | ab/P41744857 |
| arm64  | ab/P41675377 |
| x86    | ab/P41675376 |
| x86_64 | ab/P41675378 |
+--------+--------------+

Ran patchelf to set DT_SONAME to libwvhidl@1.3.so

Bug: 249811494
Change-Id: I1ec8304bab4d81b958b6be056a0b32da386bc997
(cherry picked from commit 6bad0134d3c9ca8d479f121c71d66ac2d3e017b9)
2022-10-13 00:58:58 +00:00
Alex Dale
381f879ff7 Added mutex protection for session_property_set_.
[ Merge of http://go/wvgerrit/154575 ]
[ Cherry-pick of http://ag/19498242 ]

There is a rare race condition experienced by some Android devices
where the a new client property set is being added while another is
being removed.  The C++ stl library does not provided thread
protection by default.

This CL adds a new mutex for the client property set map which prevents
multiple threads accessing the property sets concurrently.

Bug: 235238226
Test: GtsMediaTestCases on redfin
Change-Id: I32cf11bfb1332295ba1245071102ff0adc35259d
(cherry picked from commit aaa97a5d60)
(cherry picked from commit 6109ec6d66)
2022-08-10 21:34:32 +00:00
Cong Lin
b363f54f9e Add unit test for clear KCB in LS SDK 16.4 response am: 8c4c238324
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/18973819

Change-Id: Ibcdf7c29ad2392a2ee49873aacd5a8f831dbc251
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-06-18 08:10:52 +00:00
Cong Lin
8c4c238324 Add unit test for clear KCB in LS SDK 16.4 response
This is a merge from:
https://widevine-internal-review.googlesource.com/c/cdm/+/152897
and http://go/wvgerrit/153709

Adding a new OEMCrypto unit test will allow partners to correct a
problem earlier in their integration.

Verifies current oemcrypto implementation handles clear KCB in a
mocked 16.4 license response.

Unit test release date updated to 2022-06-17.

Test: run_x86_64_tests; opk_ta
Bug: 235870170
Bug: 234645065
Change-Id: I59fef2c25f5c007624447d4f46147d96adeddad9
2022-06-17 15:02:09 -07:00
Rahul Frias
f66cc64bea Allow provisioning model to be queried am: cd593979e9
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/18624153

Change-Id: I68d1a67f4b98b74ea7f543101e9a321486ebb22d
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-05-27 04:07:58 +00:00
Rahul Frias
cd593979e9 Allow provisioning model to be queried
[ Merge of http://go/wvgerrit/152674 ]

This allows an app to query the provisioning model. Possible
values are { "DrmCertificate", "Keybox", "OEMCertificate",
"BootCertificateChain" }

An app can use these to disntinguish between provisioning models.
Provisioning 4.0 (boot certificate chain) requires a double provisioning
step.

Bug: 234057551
Test: WV unit/integration tests, libwvdrmdrmplugin_hal_test
Change-Id: I1611488ec632a0e5a9e1d106b7475e8f5a2a5a13
2022-05-26 16:22:16 -07:00
Cong Lin
9feaf68ea5 Loosen KCB encryption checks in L3 am: 9935fae50d
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/18528965

Change-Id: If52667414b27b20b16c0e84f0b92a906b75b4834
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-05-22 07:09:58 +00:00
Cong Lin
9935fae50d Loosen KCB encryption checks in L3
This is a merge from:
https://widevine-internal-review.googlesource.com/c/cdm/+/152372

The L3 source change which produced these libraries is:
https://widevine-internal-review.googlesource.com/c/cdm/+/152371/

Original commit message:
To address the bug with certain 16.4.x SDK versions returning a
clear key control block (KCB) for clients newer than 16.5, the
exact version check to determine whether key control blocks are
clear or not has been loosened.

Original behavior:
- ODK version >= 16.5.x --> Assume clear
- ODK version <= 16.4.x --> Assume encrypted
New behavior:
- No KCB IV --> Assume clear
- Otherwise --> Assume encrypted

This CL also includes a change to oemcrypto/include/OEMCryptoCENC.h
The changes to OEMCryptoCENC.h in the CL are comments or variable name
change. So it should be safe.
This change was merged to wv tm-dev here:
https://widevine-internal-review.googlesource.com/c/cdm/+/148411
So, adding it to Android tm-dev.

Test: run_level3_static_tests, CdmDecryptTest/CdmTestWithDecryptParam.* against LS SDK 16.4.2 & 17.0
Bug: 232557453
Change-Id: I2bbb5ab3ea33a16bd6c198077e5aefe960737ea0
2022-05-22 06:35:22 +00:00
Robert Shih
22c314b3c5 Merge "dumpsys widevine: print hex IDs to avoid garbled text" into tm-dev am: 186e489562
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/17992673

Change-Id: I8bc719c40571d8ecac10a23e982d5a83dd537213
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-05-16 07:40:55 +00:00
Robert Shih
186e489562 Merge "dumpsys widevine: print hex IDs to avoid garbled text" into tm-dev 2022-05-16 06:17:33 +00:00
Alex Dale
e28711c3ca Move system ID extraction outside of CryptoSession. am: 9d169a00bb
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/18244016

Change-Id: Ifa0f6c87c52a3090edc3977d86522163bb68738b
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-05-13 18:20:40 +00:00
Alex Dale
9d169a00bb Move system ID extraction outside of CryptoSession.
[ Merge of http://go/wvgerrit/151391 ]

This CL moves the logic for extracting the system ID from keybox or
OEM certificate (from OEMCrypto or device files) to a dedicated
SystemIdExtractor.

Before Provisioning 4.0, the system ID could only be found from data
returned by OEMCrypto.  However, with provisioning 4.0, the system ID
can now be found in the OEM certificate that is stored on the device
files.

Bug: 232020319
Test: system_id_extractor_unittest
Test: Forest L37800000954493485
Change-Id: Ie1b7987906e2e4fef015cd659a947b6dbb7594b1
2022-05-12 19:22:03 -07:00
Alex Dale
53e513dc05 Merge "Added metrics for production readiness." into tm-dev am: 8ac7ca3f46
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/18304422

Change-Id: Ifac854ca29c96aff77a35f59e726ede451828929
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-05-12 23:04:01 +00:00
Alex Dale
8ac7ca3f46 Merge "Added metrics for production readiness." into tm-dev 2022-05-12 22:10:24 +00:00
Edwin Wong
67522b7b65 Add hal_metrics_adapter_unittest for AIDL service. am: cf3771e54a
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/18308868

Change-Id: I2f20175c6204807803a0745de0d47e06e8042fcd
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-05-12 03:10:44 +00:00
Edwin Wong
cf3771e54a Add hal_metrics_adapter_unittest for AIDL service.
[ Merged from http://go/wvgerrit/151750 ]

Test: m hal_metrics_adapter_unittest -j128
Test: m hal_metrics_adapter_unittest  WV_UNITTESTS_BUILD_TARGET=hidl -j128
Test: adb push $(OUT)/data/nativetest/hal_metrics_adapter_unittest  /data/nativetest/.
Test: adb shell  LD_LIBRARY_PATH=/vendor/lib64 /data/nativetest/hal_metrics_adapter_unittest

Bug: 217247987
Change-Id: I0c890d2fab754bf993632659293a0272c863b11f
2022-05-11 22:01:35 +00:00
Edwin
9586d34201 Add libwvdrmdrmplugin_hal_test for AIDL service am: 5202862e9a
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/17831572

Change-Id: Idc534a847bf4d3a592fc0217178b8e1740e9ab21
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-05-11 20:55:27 +00:00
Edwin
5202862e9a Add libwvdrmdrmplugin_hal_test for AIDL service
[ Merged from http://go/wvgerrit/150769 ]

- remove OpenSessions_1_1, only applies to hidl
- move plugin and mCdm creation in SetUp() test fixture
- reset plugin and mCdm smart pointers in TearDown
- reduce code duplication
- remove MockDrmPluginListener, send*Event has gone private

Test: m libwvdrmdrmplugin_hal_test -j128
Test: m libwvdrmdrmplugin_hal_test WV_UNITTESTS_BUILD_TARGET=hidl -j128
Test: adb push $(OUT)/data/nativetest/libwvdrmdrmplugin_hal_test /data/nativetest/.
Test: adb shell LD_LIBRARY_PATH=/vendor/lib64 /data/nativetest/libwvdrmdrmplugin_hal_test

Bug: 217247987
Change-Id: I8bc0a390a88facbc890cf26872fd089afe87850a
2022-05-11 05:36:40 +00:00
Alex Dale
88a7ff7685 Added metrics for production readiness.
[ Merge of http://go/wvgerrit/151749 ]

Extended CryptoSession for recording the result of
OEMCrypto_ProductionReady().

Only OEMCrypto_SUCCESS is considered "production ready".  With the
exception of OEMCrypto_ERROR_NOT_IMPLEMENTED, any other result is
vendor-specific and indicates not being production ready.

Bug: 231655151
Test: metrics_collections_unittest
Change-Id: Ia0e5603d7ee1290238cce63d0194ae1aced424c1
2022-05-10 18:04:11 -07:00
Robert Shih
ca2440f556 dumpsys widevine: print hex IDs to avoid garbled text
Includes minor format change for easier ingestion by other tools.

Bug: 231677822
Test: adb shell dumpsys android.hardware.drm.IDrmFactory/widevine
Change-Id: Ibd13c84bd8f93ea0fc6cbd38b56ef39541ecc867
2022-05-11 00:50:11 +00:00
Robert Shih
63ad411c0e Merge "wv_factory_extraction_tool: extract provision 4.0 csr" into tm-d1-dev 2022-05-11 00:10:36 +00:00
Edwin Wong
f8146ee716 Merge "Add libwvdrmmediacrypto_hal_test for AIDL service." into tm-dev 2022-05-10 23:12:05 +00:00
Alex Dale
cd5afa88a6 Added CDM support for production readiness reporting.
[ Merge of http://go/wvgerrit/151518 ]

Extended the CDM layer to report OEMCrypto's production readiness
via string property query.

If OEMCrypto implementents OEMCrypto_ProductionReady(), then the
reported readiness by the CDM will report "True" or "False".

If OEMCrypto does not implement OEMCrypto_ProductionReady() then no
level of readiness is assumed, and the CDM will report "Unknown".

Bug: 231655151
Test: run_prov30_tests and request_license_test
Change-Id: I6afe481ef00ac129d02b004eca89a65810bfbff8
2022-05-10 13:35:43 -07:00
TreeHugger Robot
c4a2a08ee6 Merge "Update TestMaxDRMKeys to use 2048 bit keys only" into tm-dev 2022-05-09 09:34:58 +00:00
TreeHugger Robot
6e4cf1f1a9 Merge "Restrict CAS unit tests to devices that support CAS" into tm-dev 2022-05-09 09:34:55 +00:00
Rahul Frias
f4e2e9833d Merge "Check L3 for secure stops" into tm-dev 2022-05-06 22:08:52 +00:00
Rahul Frias
e26370f0b6 Merge "Update version change canary test" into tm-dev 2022-05-06 22:06:05 +00:00
Edwin Wong
19407fdc10 Add libwvdrmmediacrypto_hal_test for AIDL service.
[ Merge from http://go/wvgerrit/151349 ]

- move plugin and mCdm creation in SetUp() test fixture
- replace StrictMock<MockCD<> with NiceMock; otherwise,
  "uninteresting mock for isOpenSession" will return fail by default
- replace .WillOnce() for isOpenSession() with .WillRepeatedly

Test: m libwvdrmmediacrypto_hal_test -j128
Test: m libwvdrmmediacrypto_hal_test  WV_UNITTESTS_BUILD_TARGET=hidl -j128
Test: adb push $(OUT)/data/nativetest/libwvdrmmediacrypto_hal_test  /data/nativetest/.
Test: adb shell  LD_LIBRARY_PATH=/vendor/lib64
/data/nativetest/libwvdrmmediacrypto_hal_test

Bug: 217247987
Change-Id: I8d7189473d52738645c73c6665f4f3f6a13042f0
2022-05-06 18:21:57 +00:00
Robert Shih
05878ffbe1 wv_factory_extraction_tool: extract provision 4.0 csr
Bug: 231677822
Test: adb shell wv_factory_extraction_tool csr
Change-Id: I9f21514b027261f1d69c24a4d2f54051ccaac9a5
2022-05-06 01:40:11 -07:00
Rahul Frias
13daf6d3ed Check L3 for secure stops
[ Merge of http://go/wvgerrit/151512 ]

Parameterizing GtsMediaDrm tests exposed a few issues. If secure stops
were stored at L3 security level, retrieval would fail. This CL
checks L3 if the secure stop was not found at the default security
level.

Bug: 221249079
Test: GtsMediaTestCases
Change-Id: Ie88197f8e29457981d782199a76d38774f6faa67
2022-05-06 01:39:24 +00:00
Rahul Frias
81e5fc3dc4 Update version change canary test
[ Merge of http://go/wvgerrit/151571 ]

The android OS version has been updated to 13. Updating WV tests as well.
CDM version has been updated previously, so no additional changes are needed.

Bug: 231646284
Test: WV unit/integration tests
Change-Id: Ifaf2fe1f04627654725b1b221d8c3dc30029ac6c
2022-05-05 18:29:25 -07:00
Alex Dale
f980049ef0 Merge "Resize OEMCrypto buffer-based results on success." into tm-dev 2022-05-05 20:38:05 +00:00