Commit Graph

5398 Commits

Author SHA1 Message Date
Alex Dale
4d9d13db34 Better error code checking for missing device ID. am: b77a30bf3d
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/16624955

Change-Id: Ic02ad8f4ddef3b49731ffe8c138a4d946c43a965
2022-01-14 22:58:57 +00:00
Alex Dale
b77a30bf3d Better error code checking for missing device ID.
[ Merge of http://go/wvgerrit/143370 ]
[ Cherry-pick off http://ag/16624952 ]

Devices without a keybox may not have access to a device ID if the OEM
uses the device ID from the keybox as its source of truth.  For
devices which have lost their keybox, OEMCrypto_GetDeviceID() was
assumed to return ERROR_KEYBOX_INVALID if that was the case; however,
Qualcomm's implementation was returning ERROR_NO_DEVICEID.  Given that
both error codes are appropriate, the CDM has been updated to accept
both as an indication that the device ID cannot be retrieved, and that
the null device ID should be returned.

Bug: 190504842
Bug: 214113125
Test: Manual test
Change-Id: I8fb8a1bddfe895062b707b51fcadffd983adb40e
2022-01-13 16:03:45 -08:00
Fred Gylys-Colwell
f3b26aaf2c Fallback to L3 if provisioning lost am: df0cfa2daa
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/16523000

Change-Id: Ifaaabed1490c01954fba70290b893b1cceb40748
2022-01-07 05:57:14 +00:00
Fred Gylys-Colwell
cbb5bd0f7a Fall back to L3 if L1 has test keybox am: 31faf51933
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/16507243

Change-Id: I68c4410d36a984062a041846c131ea90c0c8c646
2022-01-07 05:57:13 +00:00
Fred Gylys-Colwell
9dbc32089f Add MediaDrm property to allow test keybox am: df04f3f0f8
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/16507299

Change-Id: I734f26fa06a19ac6e8526bfdaa074fb5a8bbdab3
2022-01-07 05:57:13 +00:00
Fred Gylys-Colwell
78d0b73964 Test session should continue with no keybox am: 75b87c7f59
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/16507242

Change-Id: I41ad0bd10056a3f1615d390a0b33b42cfcd6e4b3
2022-01-07 05:57:12 +00:00
Fred Gylys-Colwell
76bbdba1e5 Skip OTA test if not supported am: 2f57079f6a
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/16507241

Change-Id: If8bf505db0424e596f946f51daafc7b66233e0e5
2022-01-07 05:57:11 +00:00
Fred Gylys-Colwell
5e5913818d Handle nonce flood in OTA test am: 3c7528de62
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/16507240

Change-Id: I3fabca84341ff313f569780c3b7e253a44af4d05
2022-01-07 05:57:11 +00:00
Alex Dale
25098c88e8 Open session when checking for OTA keybox support. am: 2d1372fbec
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/16496630

Change-Id: Ia16f9c4cf293520047faeae2d69b5c8f05f47439
2022-01-07 05:57:10 +00:00
Alex Dale
d2c1aec4a7 Return failure if ignore keybox debug count is non-zero. am: 1b35b915b5
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/16496629

Change-Id: Ibf4fcd015569173fb3779f1a0b09d9e137f84a83
2022-01-07 05:57:09 +00:00
Fred Gylys-Colwell
bf776ef27d Fix System ID problem for devices with no keybox am: f6d682b182
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/16408945

Change-Id: I26c5d75affe116c56665de4a038e008ba34bd0d7
2022-01-07 03:48:24 +00:00
Alex Dale
c645c398c5 Correctly record license service version in metrics. am: 8aabf20134
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/16416872

Change-Id: Ic3fe7f7bc7f425f6e1a3071b098f0c602e6ac927
2022-01-07 03:48:18 +00:00
Fred Gylys-Colwell
df0cfa2daa Fallback to L3 if provisioning lost
Merge from Widevine repo of http://go/wvgerrit/142349

If a provisioning request is sent, but no response is loaded, we
should fall back to L3. This covers the case where the OTA request is
malformed and the provisioning server ignores it.

This might happen if the device has a bad KM key.

Test: manual testing
Bug: 210823889
Bug: 210807585
Change-Id: I951241539ace97b668868d5abf8a9811d874fb28
2021-12-23 20:19:27 +00:00
Fred Gylys-Colwell
31faf51933 Fall back to L3 if L1 has test keybox
Merge from Widevine repo of http://go/wvgerrit/142150 (part 2)

For an EVT device, without a keybox or with a test keybox, we want it
to fall back to L3. However, when running the unit or integration
tests it should continue running tests with test keybox. This will
allow us to test L1 oemcrypto on an EVT device, while still using an
EVT device for dogfooding video content at the L3 level.

Bug: 210807585
Bug: 210823889
Change-Id: I30c35134239db35bb39f11f75220063181987763
2021-12-23 20:19:26 +00:00
Fred Gylys-Colwell
df04f3f0f8 Add MediaDrm property to allow test keybox
Merge from Widevine repo of http://go/wvgerrit/142150 (part 1)

For an EVT device, without a keybox or with a test keybox, we want it
to fall back to L3. However, when running the unit or integration
tests it should continue running tests with test keybox. This will
allow us to test L1 oemcrypto on an EVT device, while still using an
EVT device for dogfooding video content at the L3 level.

This CL modifes the HIDL and non-HIDL plugin, so it was hand merged to
downstream branches.

Bug: 210807585
Merged-In: I85b96f127abe30f8f061b242f7580fa8f6c01776
Change-Id: I85b96f127abe30f8f061b242f7580fa8f6c01776
2021-12-23 20:18:44 +00:00
Fred Gylys-Colwell
75b87c7f59 Test session should continue with no keybox
Merge from Widevine repo of http://go/wvgerrit/142149

This CL updates the TestCryptoSession so that it will recover from
initializing without a keybox. This allows unit and integration tests
to be run using a test keybox on a device that does not have any
keybox.

Bug: 210807585
Bug: 161925952
Change-Id: I8639bd733a50ae5af3a7c786347b5a06a9d783ce
2021-12-19 17:58:58 +00:00
Fred Gylys-Colwell
2f57079f6a Skip OTA test if not supported
Merge from Widevine repo of http://go/wvgerrit/142050

This is test only code.

Bug: 210690170
Change-Id: Ic982cc1ed801325146918bd6153e7f34faf31196
2021-12-19 17:58:26 +00:00
Fred Gylys-Colwell
3c7528de62 Handle nonce flood in OTA test
Merge from Widevine repo of http://go/wvgerrit/142049

This CL is test only code. A nonce flood was causing the OTA test to
be a little flaky when run on the automatic testing platform Luci.

Bug: 205889158
Change-Id: I4f3e5d8469b899e565c430bd46994e098c5d94e6
2021-12-19 17:56:57 +00:00
Alex Dale
2d1372fbec Open session when checking for OTA keybox support.
[ Merge of http://go/wvgerrit/142089 ]
[ Cherry-pick of http://ag/16496425 ]

Qualcomm's implementation of GenerateOTARequest requires an open
session before attempting to generate an OTA keybox request.  When
checking for OTA keybox support, the dynamic layer was not opening
a session, getting a different error than expected.  Coincidentally,
this would trick the dynamic layer to thinking it was supported, but
hides useful error information.

Bug: 210823889
Test: Android manual testing
Change-Id: I60662d2d9d411c0f999b619d6088aabdba55e2c3
2021-12-17 04:31:31 +00:00
Alex Dale
1b35b915b5 Return failure if ignore keybox debug count is non-zero.
[ Merge of http://go/wvgerrit/141949 ]
[ Cherry-pick of http://ag/16496424 ]

If the debug count for ignoring an L1 keybox is still non-zero after
successfully processing an OTA keybox request, the dynamic layer MUST
return a failure to the CDM to keep the CDM and dynamic layer in
agreement that the L1 keybox should continue be treated as invalid.

This will trigger a fallback; but the fallback can be canceled via
the debugging app.

Bug: 210823889
Test: Android manual testing
Change-Id: I75f50ba605d17872c0e8abffc1eee13ff539f01c
2021-12-17 04:30:43 +00:00
Fred Gylys-Colwell
f6d682b182 Fix System ID problem for devices with no keybox
Merge from Widevine repo of http://go/wvgerrit/139372
Revert workaround for falling back to L3
(Partially merged previously)

Merge from Widevine repo of http://go/wvgerrit/139498
Guard against double initialize
(Partially merged previously)

Merge from Widevine repo of http://go/wvgerrit/139343
Use a placeholder ID for devices missing a system ID

Merge from Widevine repo of http://go/wvgerrit/140934
Check security-level during OpenSession.

Merge from Widevine repo of https://go/wvgerrit/141469
Make OTAKeyboxSupported handle the short buffer return
code

Bug: 187646550
Bug: 206670307
Bug: 206570220
Bug: 205896558
Bug: 205041153
Test: Manual test on flame
Change-Id: I71f5faf6b611337b82d8b6179251f6b0224780e6
2021-12-14 19:36:41 -08:00
Alex Dale
8aabf20134 Correctly record license service version in metrics.
[ Cherry-pick of http://ag/15245767 ]
[ Merge of http://go/wvgerrit/128624 ]

The CDM session was incorrectly recording the "license SDK version" as
the "license service version" in the session metrics.  This
discrepancy reduces the quality of devices' metrics and limits
debugging capabilities for the Widevine metric monitoring services.

Bug: 193177333
Test: Linux unit tests
Change-Id: Ic58cf7bc4fde777bb590c05777b76f5ff5c2f1ea
(cherry picked from commit 78278c3eb4)
2021-12-08 02:23:43 +00:00
Jeff Tinker
6a005a95b9 Merge "OEMCrypto Testing: Don't return key data if no keybox" into sc-v2-dev am: ecb4d64e41
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/16300800

Change-Id: I1284acd93a68a49185c9fbffe91b0b7bd7cf35c1
2021-12-03 09:25:03 +00:00
Jeff Tinker
ecb4d64e41 Merge "OEMCrypto Testing: Don't return key data if no keybox" into sc-v2-dev 2021-12-03 07:12:19 +00:00
Fred Gylys-Colwell
6864a04975 Guard against double initialize am: 03f8d1b6f7
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/16306734

Change-Id: Ie2628bdebded7e58474b54abebb58b3b4e7ff54e
2021-11-20 06:55:38 +00:00
Fred Gylys-Colwell
03f8d1b6f7 Guard against double initialize
Merge from Widevine repo of http://go/wvgerrit/139498

If L1 OEMCrypto fails to initialize, we won't try again.

Bug: 206670307
Change-Id: I89084476ae01d9c98291392c2ce703ebc6326322
2021-11-20 05:37:34 +00:00
Fred Gylys-Colwell
057c925d3c Fall back to Level 3 if Keybox not found am: 0e55743d3a
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/16300799

Change-Id: I22d4bb59754bc4c7b61b704a1c2181e1685b818a
2021-11-19 01:38:12 +00:00
Fred Gylys-Colwell
7c3e06f46d OEMCrypto Testing: Don't return key data if no keybox
Merge from Widevine repo of http://go/wvgerrit/139336

When pretending we have no keybox, we should also have no system id or
device id. This should reproduce our problem with the test app.

Bug: 206570220
Test: reproduced problem using TestOPK app
Change-Id: I893336ce8e1fd2272f5b511676e1da28654639a7
2021-11-18 23:08:30 +00:00
Fred Gylys-Colwell
0e55743d3a Fall back to Level 3 if Keybox not found
Merge from Widevine repo of http://go/wvgerrit/139333

This is a workaround for devices that don't have a
keybox installed.

Bug: 206570220
Bug: 205896558
Bug: 205041153
Test: verified device falls back to L3 using TestOKP app
Change-Id: Id929b48ddaa7114a81765095aac536705f69e68c
2021-11-18 22:53:51 +00:00
Rahul Frias
d44e6b2ff3 Update Version number am: 0aa9b47b03
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/16221418

Change-Id: Ia23642271cbe27a4fd86ec4bb64d313e8acb270a
2021-11-12 04:47:17 +00:00
Rahul Frias
0aa9b47b03 Update Version number
[ Merge of http://go/wvgerrit/138289 and http://go/ag/16210935 ]

Update the android version number test to accept "12" or "12L"

Bug: 205491167
Test: wv unit/integration tests
Change-Id: If11e7c6f3a89263ab78d274aa8d776991d3942e9
2021-11-09 16:41:40 -08:00
Alex Dale
544299db8b Clear OTA keybox flag. am: f5e4c94e26
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/16094844

Change-Id: Id8a110c13e2aed574ec1fd7641d4f0fc24ad382d
2021-10-28 17:02:17 +00:00
Alex Dale
90f7296a4e Added debugOtaKeyboxFallbackDuration property. am: 8b12e5acc9
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/16096276

Change-Id: Id74a39aabd42272673de9bbd3efa672c0c609015
2021-10-28 17:02:16 +00:00
Alex Dale
596363ef9e Update fallback policy for fast fallback. am: 28b45c4f1b
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/16096533

Change-Id: Ibf2e7e04c28251bf0918db98093d0a6a5191628e
2021-10-28 17:02:16 +00:00
Fred Gylys-Colwell
cc67284f44 Update OTA Keybox tests am: eb846100d4
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/16058124

Change-Id: I9000ab12e582e2b1ec8992b70ab6a9c883f1a836
2021-10-28 17:02:15 +00:00
Fred Gylys-Colwell
017e6dabce Correct build error in non-hidl WVDrmPlugin am: 80463a0eea
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/16058123

Change-Id: Ibfba7d0ec38fb2ddc9b46b4821f34b9c28f9c9f3
2021-10-28 17:02:15 +00:00
Fred Gylys-Colwell
220f1e750e Use MediaDrm property to ignore installed keybox am: c21b756451
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/16058122

Change-Id: Icc1025c0e78ffbc677f17621ad028f27cd565bf0
2021-10-28 17:02:15 +00:00
Alex Dale
deb174cef5 Formatted OTA keybox function comments. am: 5975b4e70a
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/16058121

Change-Id: I4ac7640a58bbb4f3add632759a7b5c59a2c7f3fc
2021-10-28 17:02:14 +00:00
Rahul Frias
2243801d83 Assume Keybox provisioning type if OTA Keybox is supported. am: 581aa1702b
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/16058120

Change-Id: I03925f8ffec8ebb690d49db04d637e2f8f2fb15f
2021-10-28 17:02:13 +00:00
Fred Gylys-Colwell
f114219345 Updates to OTA Keybox Reprovisioning am: a3166eb2ba
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/16058119

Change-Id: I1eccae55a858fc634b0ee53f79bfda0cbdda134b
2021-10-28 17:02:12 +00:00
Rahul Frias
f19130a23c Wrapped OKP info into several classes. am: 39558526f6
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/16058118

Change-Id: I77e2e5023bca6f9b1ff1279d517534e58693b2a2
2021-10-28 17:02:11 +00:00
Rahul Frias
54fc6edf0d Added an OTA keybox provisioner. am: 52bd1d206e
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/16058117

Change-Id: I2f177ef33d62cadd271262df56c76eed386bb22d
2021-10-28 17:02:11 +00:00
Fred Gylys-Colwell
556940237f Use local provisioning server am: 44ba42f5cc
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/16058116

Change-Id: Ib10701963fc4ba89d37f49b95186640244576305
2021-10-28 17:02:10 +00:00
Alex Dale
f5e4c94e26 Clear OTA keybox flag.
[ Cherry-pick of http://ag/16087795 ]
[ Merge of http://go/wvgerrit/136432 ]

Once OTA keybox succeeds, the |needs_keybox_provisioning_| flag is
cleared.  Access to the system fallback policy is allowed after
provisioning to check status.

Bug: 203177668
Test: ExoPlayer test
Change-Id: I2d28c896c554cfbc9b008340bb415d4c7fac62f2
(cherry picked from commit cac2dcaa6c)
2021-10-20 18:22:06 -07:00
Alex Dale
8b12e5acc9 Added debugOtaKeyboxFallbackDuration property.
[ Cherry-pick of http://ag/16064434 ]
[ Merge of http://go/wvgerrit/136330 ]

This changes adds a custom debug property for changing the fallback
policy used for the system.  Depending on the value set, the device
will either use a "fast" fallback (30 seconds) or "default" fallback
(~1 day with exponential backoff).  Setting this property to either
"fast" or "default" will end the current fallback if it has been
triggered.

Bug: 187646550
Test: Android unit tests
Change-Id: I5271f96139c1e468242f7fa742668cc791ffcf91
2021-10-20 17:54:03 -07:00
Alex Dale
28b45c4f1b Update fallback policy for fast fallback.
[ Cherry-pick of http://ag/16064433 ]
[ Merge of http://go/wvgerrit/136329 ]

CDM core has been updated to support very short fallback durations in
the case of failures during OTA keybox provisioning.  This is intended
to be used during testing via specialized developer apps or GTS tests.

Bug: 187646550
Test: Android unit tests
Change-Id: I8a75d2e1c404d6caed535b087e8dd29da5c21b83
2021-10-20 17:53:03 -07:00
Fred Gylys-Colwell
eb846100d4 Update OTA Keybox tests
Merge from Widevine repo of http://go/wvgerrit/135982

The basic test was failing when using the testbed oemcrypto
because the testbed deletes its keybox on each
initialization. The test would terminate and re-initialize
oemcrypto whenever all the crypto sessions are deleted. This
has been fixed by holding a crypto session alive until the
end of the test.

bug: 187646550
Test: test only code
Merged-In: I48a3771bf5fd4aae8d262b8c7bf42f004d9b9f4c
Change-Id: I48a3771bf5fd4aae8d262b8c7bf42f004d9b9f4c
2021-10-20 17:52:12 -07:00
Fred Gylys-Colwell
80463a0eea Correct build error in non-hidl WVDrmPlugin
This fix was missing in the last merge of http://go/wvgerrit/135063

Bug: 187646550
Merged-In: I2b2252f8335c36325fd76d92ac26b9fbfcff5362
Change-Id: I2b2252f8335c36325fd76d92ac26b9fbfcff5362
2021-10-20 17:51:50 -07:00
Fred Gylys-Colwell
c21b756451 Use MediaDrm property to ignore installed keybox
Merge from Widevine repo of http://go/wvgerrit/135984

If the MediaDrm property string debugIgnoreKeyboxCount is set to 1,
then the keybox will be ignored on the next initialization. This will
force an OTA keybox reprovisioning.

Equivalently, a 1 may be written to the file
L1/debug_ignore_keybox_count.txt.

In order to test a failed reprovisioning step, a value of 2 may be
used.

Bug: 187646550
Merged-In: Ie7d34a8b355398855f4ec43dd95dd73c5907bdeb
Change-Id: Ie7d34a8b355398855f4ec43dd95dd73c5907bdeb
2021-10-20 17:50:57 -07:00
Alex Dale
5975b4e70a Formatted OTA keybox function comments.
The API comments for the two new OTA keybox OEMCrypto functions
required formatting to be compatible with the doxygen comment
strings.

Bug: 190505461
Test: Android unit tests and GTS
Merged-In: Ia45dc9d727a2a904170912193709cd9416b8fe27
Change-Id: Ia45dc9d727a2a904170912193709cd9416b8fe27
(cherry picked from commit 9f2364cefd)
2021-10-20 17:50:47 -07:00