Commit Graph

2744 Commits

Author SHA1 Message Date
Rahul Frias
c171d024d9 Enable encryption of client ID for provisioning
[ Merge of http://go/wvgerrit/46760 ]

This enables encryption of client ID for provisioning requests for
devices with keyboxes as root of trust. Client ID will not be
provided for those devices with OEM device certificates as root of
trust. That will be addressed in b/78303730.

Bug: 77607585
Test: WV unit/integration tests. Tests with L3 using OEM certs
Change-Id: Id9bd697aa049bd5659ab80714e141dbc50408f6a
2018-04-22 10:52:51 -07:00
Rahul Frias
07bb4de042 Prevent race conditions between decrypt and close session
[ Merge of http://go/wvgerrit/47520 ]

Bug: 73781703
Test: WV unit/integration tests, GTS GtsMediaTestCases tests and AUPT tests.
Change-Id: I618ed8ca38855aecdb31e829a7f4041cbd505a02
2018-04-19 23:41:27 -07:00
John W. Bruce
a6aab24d91 Update OS Version in Version Canary
(This is a merge of http://go/wvgerrit/47990)

This is a test-only change.

Bug: 78117686
Test: VersionNumberTest.*
Change-Id: I4f53358fd6eacd498ddd1df7324084d0d4ae67fe
2018-04-17 18:29:57 -07:00
Adam Stone
27e3938ad3 Create unique cdm engines per WVDrmPlugin instance am: 5c71603e8c
am: 4329170a35

Change-Id: Ib156dce5163b2e438c0378729ff64bd56b612268
2018-04-17 14:54:43 -07:00
Adam Stone
4329170a35 Create unique cdm engines per WVDrmPlugin instance
am: 5c71603e8c

Change-Id: Id3d55a81f81c72470d8fa521f5685a6ae5c3d750
2018-04-17 14:41:03 -07:00
Fred Gylys-Colwell
0f962f50e2 Update Copyright am: 1a25cbdad6
am: 2495ce5512

Change-Id: I956ff0d29d26fc104df032c3477b1b08d238dba4
2018-04-17 14:30:55 -07:00
Fred Gylys-Colwell
2495ce5512 Update Copyright
am: 1a25cbdad6

Change-Id: I9570da5bf8aaf14326c0a44b151acece97494f20
2018-04-17 13:47:34 -07:00
Adam Stone
5c71603e8c Create unique cdm engines per WVDrmPlugin instance
This change creates a unique id in the cdm identifier in order to force
a one-to-one mapping between WVDrmPlugin instances and CDM Engines. This
change simplifies some assumptions. This includes ensuring that the
metrics for a given MediaDrm instance map to a given CdmEngine instance.

This change contains the original change go/ag/3819203 and a fix to the
deadlock that was seen on Marlin and Taimen.

Bug: 73724453
Test: Updated unit tests. GTS test pass. Shaka Player, Netflix and Google Play test.
Change-Id: Ib208204a1b794df9f306fa11d13a8bb6cd6889f7
2018-04-17 20:11:02 +00:00
Fred Gylys-Colwell
1a25cbdad6 Update Copyright
Merge from Widevine repo of http://go/wvgerrit/47860

This CL updates the copyright notice to indicate that files
shared with partners are shared under the Widevine Master
License Agreement.

bug: 77926774
test: comment change only
Change-Id: I0423668111578b80fb39a932d763df2827e2dfc3
2018-04-16 16:38:05 -07:00
Adam Stone
c432720637 Remove a spammy log message from metrics collections.
Removes an unneccessary and noisy log message.

Bug: 77975999

Test: Re-ran unit tests. Tested with Google Play.
Change-Id: Ibec69a4e72231a87b2bb3c9c341e5ea0af352715
2018-04-16 16:24:58 -07:00
Rahul Frias
52e91a2ffb Correct exception returned after RemoveKeys is called. am: d102f8a4d2
am: 50568ca0d2

Change-Id: Iafefa9a2da7fb962f99c9be5f49f361a1acf5e86
2018-04-12 18:04:35 -07:00
Rahul Frias
50568ca0d2 Correct exception returned after RemoveKeys is called.
am: d102f8a4d2

Change-Id: Ib6c3dd31bdce16af3ef7bc2aeebdc07bd7e26f09
2018-04-12 17:00:01 -07:00
Rahul Frias
d102f8a4d2 Correct exception returned after RemoveKeys is called.
[ Merge of http://go/wvgerrit/47065 ]

RemoveKeys now resets associated crypto and policy resources,
rather than just closing the crypto session. This results in a
MediaCodec.CryptoException with error code ERROR_NO_KEY
rather than ERROR_SESSION_NOT_OPENED, if decrypt is called
afterwards.

Error SESSION_NOT_FOUND_FOR_DECRYPT is made unique. Error codes
were also synchonized between various branches in the widevine repo.

Bug: 77304819
Test: WV unit/integration tests, VtsHalDrmV1_0Target tests
Change-Id: I6cba2a3e1ce466d58c7727cde2d8f81d9503d655
2018-04-11 00:11:11 -07:00
Rahul Frias
b37e219f46 Address failures when provisioning methods differ am: f0cd22d4f4
am: 89f6b215e9

Change-Id: Ic9e300c25404127746cb1995449fe33efd076399
2018-04-09 16:53:22 -07:00
John W. Bruce
834c15e4e7 Add widevine.com Default Provisioning Service Certificate am: 9d384305b7
am: 312ac7da54

Change-Id: I14406150134667549b48dc9d2f37ad13895c1b64
2018-04-09 16:53:16 -07:00
Rahul Frias
89f6b215e9 Address failures when provisioning methods differ
am: f0cd22d4f4

Change-Id: Ibd1a8b34e24dbcdc17d68747341cc634109a5f57
2018-04-09 16:21:08 -07:00
John W. Bruce
312ac7da54 Add widevine.com Default Provisioning Service Certificate
am: 9d384305b7

Change-Id: I2e45890cacd816abc9bfbf39dc16a5c75342624d
2018-04-09 16:20:52 -07:00
Rahul Frias
f0cd22d4f4 Address failures when provisioning methods differ
[ Merge of http://go/wvgerrit/46907 ]

The WV client supports root of trusts as keyboxes or OEM certificates.
Devices with keyboxes use provisioning 2.0 protocol to provision
while those with OEM certificates use 3.0. L3 provisioning failures
occur if the L1 and L3 root of trusts differ.

The provisioning method is now retrieved and cached when the
security level is known, when the session is opened.
Earlier it was retrieved and cached at initialization time and
always set to the value of L1 OEMCrypto (if present). This led
to provisioning failures.

A case of acquiring a lock while one was held in GetProvisioningId()
has also fixed.

Bug: 77606913
Test: WV unit/integration tests
Change-Id: I2d66ee2cf64f846cec4a37fbccb554447c8a0e1d
2018-04-09 13:47:29 -07:00
John W. Bruce
9d384305b7 Add widevine.com Default Provisioning Service Certificate
(This is a merge from http://go/wvgerrit/46447)

The Production Provisioning Service is moving to the "widevine.com"
certificate from the "license.widevine.com" certificate it was using.
This replaces the two places this certificate appears in the source
code. This is expected to be the last such update.

Also, the Staging Provisioning Service was already using this
certificate, but our code had it listed as using the old certificate. It
has also been updated.

Bug: 77244492
Test: CE CDM Unit Tests
Test: Android Unit Tests
Change-Id: I2ce14ea8e672c453ce0f74fbd3345f7e40f2f297
2018-04-09 13:47:15 -07:00
Jeff Tinker
0b09804158 Merge "Revert "Create unique cdm engines per WVDrmPlugin instance"" into pi-dev am: c3bce4d845
am: b911a8f8f7

Change-Id: I53710d0f23826be3580ac17de0f5b35b0f0a4bb7
2018-04-05 13:23:20 -07:00
Jeff Tinker
b911a8f8f7 Merge "Revert "Create unique cdm engines per WVDrmPlugin instance"" into pi-dev
am: c3bce4d845

Change-Id: I1c7ef15eee82bbde0c44e9e2b6c4e380f93c4690
2018-04-05 13:15:49 -07:00
TreeHugger Robot
c3bce4d845 Merge "Revert "Create unique cdm engines per WVDrmPlugin instance"" into pi-dev 2018-04-05 20:03:26 +00:00
Jeff Tinker
90441e24df Revert "Create unique cdm engines per WVDrmPlugin instance"
This change introduced b/77618383, need to revert.

This reverts commit 58234a69f2.

Change-Id: Ie7d515bcd94f2dcee6fa9b885cd0441845c82c22

Bug: 77618383
2018-04-05 20:03:15 +00:00
Adam Stone
1f63e00ca3 Merge "Create unique cdm engines per WVDrmPlugin instance" into pi-dev am: 6cd7ed1688
am: ffd21f49bd

Change-Id: Ib80cb08b303a454d46ac21b7f4f420c0f6ae4322
2018-04-04 16:53:21 -07:00
Adam Stone
ffd21f49bd Merge "Create unique cdm engines per WVDrmPlugin instance" into pi-dev
am: 6cd7ed1688

Change-Id: Ice4bb3e1e5839b6d1e3513e95f9888b0732b2103
2018-04-04 16:28:25 -07:00
Adam Stone
6cd7ed1688 Merge "Create unique cdm engines per WVDrmPlugin instance" into pi-dev 2018-04-04 23:09:43 +00:00
Adam Stone
58234a69f2 Create unique cdm engines per WVDrmPlugin instance
This change creates a unique id in the cdm identifier in order to force
a one-to-one mapping between WVDrmPlugin instances and CDM Engines. This
change simplifies some assumptions. This includes ensuring that the
metrics for a given MediaDrm instance map to a given CdmEngine instance.

Bug: 73724453
Test: Updated unit tests. GTS test pass. Shaka Player, Netflix and Google Play test.
Change-Id: I7e041b6cdf3e272d067da49d25a297b4a4663f1f
2018-04-04 12:28:57 -07:00
Rahul Frias
52f3a439b2 Merge changes Ie4a63ac2,I8523ef28 into pi-dev am: 92e6a1bb66
am: 6f0e0d0257

Change-Id: I84420e6a690184534530337836c9d161b9c8cd42
2018-04-03 14:58:52 -07:00
Rahul Frias
6f0e0d0257 Merge changes Ie4a63ac2,I8523ef28 into pi-dev
am: 92e6a1bb66

Change-Id: I9baed687ac21b9a72b0a625f0112935fb1b6d53f
2018-04-03 14:43:24 -07:00
Rahul Frias
9dc19a36af Correct unit test compile error am: 142e80f750
am: 70a5cd2a17

Change-Id: I94e609b656025147e459823fe6c2714bab1f7a0d
2018-04-03 14:07:42 -07:00
Rahul Frias
70a5cd2a17 Correct unit test compile error
am: 142e80f750

Change-Id: I208dba1a91485cf6bf5826d8c5a76f592de84c89
2018-04-03 13:50:27 -07:00
Rahul Frias
92e6a1bb66 Merge changes Ie4a63ac2,I8523ef28 into pi-dev
* changes:
  Recovery from usage info corruption
  Correct segfault in WvCdmRequestLicenseTest.UsageRemoveSecureStopTest
2018-04-03 18:12:34 +00:00
Rahul Frias
d7d8940174 Recovery from usage info corruption
[ Merge of http://go/wvgerrit/46623 ]

If corruption of the usage information file is detected while saving a
streaming license with a PST, usage information file is deleted, so that
a subsequent load keys may succeed.

Also when calling the MediaDrm API releaseAllSecureStops(), an error would
be returned if usage info file was corrupted. Since this file is
deleted successfully, errors have been replaced with warnings.

Bug: 73447733
Test: wv unit/integration tests
Change-Id: Ie4a63ac202fd6009609105f38ffa8a3b23ed334e
2018-04-02 19:04:09 -07:00
Rahul Frias
4e201c2700 Correct segfault in WvCdmRequestLicenseTest.UsageRemoveSecureStopTest
[ Merge of http://go/wvgerrit/46622 ]

Secure stop API related changes introduced in b/69674645 caused
segfaults on taimen/walleye but not other devices due to a difference
in OEMCrypto version.

Bug: 77294890
Test: WV unit/integration tests on sailfish and walleye
Change-Id: I8523ef283334d7d32d180e902072fe1dd6e665c1
2018-04-02 19:03:26 -07:00
Rahul Frias
142e80f750 Correct unit test compile error
[ Merge of http://go/wvgerrit/46640 ]

Bug: 72994956
Test: WV unit/integration tests on walleye, sailfish and linux.
Change-Id: I7319a4b79ab9a02e0ca9a50fb48c6107f8c3a762
2018-04-02 11:02:31 -07:00
Adam Stone
ec60fdfd82 Merge changes If99c1873,I3a3aa4fb into pi-dev am: 084c370db6
am: 1103c83a6c

Change-Id: Ic39ca1a0bb4c8572b5391085b4078fdbe3c1ee3d
2018-03-31 07:48:16 +00:00
Edwin Wong
3169e7318c Merge "Upgrade widevine HIDL service to v1.1." into pi-dev am: 07bf196fc0
am: 348ecdb8f2

Change-Id: If8f67fd7badf18bf511693f777b5cf84c7330b16
2018-03-31 05:03:25 +00:00
Srujan Gaddam
898c894944 Fixed loading mac keys in mock and Level3 am: f217742582
am: bc18460165

Change-Id: I442cb641ee576ed7f5a4e1b237c14c7cebfeb0d8
2018-03-31 05:02:41 +00:00
Srujan Gaddam
35b6266f19 Remove call to DeriveKeys for release am: 5064731d02
am: 6f074ca35c

Change-Id: Ic76a26a11642aa41ef78ef2bd1ad053e714ae6fc
2018-03-31 05:02:29 +00:00
Adam Stone
1103c83a6c Merge changes If99c1873,I3a3aa4fb into pi-dev
am: 084c370db6

Change-Id: Ia9685e25dc8a43f39f2f0c3f18cc1c190b4a6877
2018-03-31 02:27:49 +00:00
Edwin Wong
348ecdb8f2 Merge "Upgrade widevine HIDL service to v1.1." into pi-dev
am: 07bf196fc0

Change-Id: I72c04731a45bf50e45b3f8131943babfd252bc49
2018-03-31 01:21:25 +00:00
Srujan Gaddam
bc18460165 Fixed loading mac keys in mock and Level3
am: f217742582

Change-Id: I7e656c60c9bc3238a3c660384118ad43f9817c45
2018-03-31 01:21:00 +00:00
Srujan Gaddam
6f074ca35c Remove call to DeriveKeys for release
am: 5064731d02

Change-Id: I53457bd625f4877f7f7e71cd04829653f993134c
2018-03-31 01:20:57 +00:00
Adam Stone
084c370db6 Merge changes If99c1873,I3a3aa4fb into pi-dev
* changes:
  Creates a new license request latency metric
  Fixes missing or broken metrics in Widevine CDM
2018-03-31 00:50:34 +00:00
Edwin Wong
07bf196fc0 Merge "Upgrade widevine HIDL service to v1.1." into pi-dev 2018-03-31 00:43:02 +00:00
Edwin Wong
bc66aebfe2 Upgrade widevine HIDL service to v1.1.
Merged from http://go/wvgerrit/44803.

Upgrade HIDL service to v1.1 and implements new 1.1 media API.

Test: Netflix and Play Movies & TV
  streaming and offline playback

Test: GTS WidevineH264PlaybackTests test
  e.g. ANDROID_BUILD_TOP= ./android-gts/tools/gts-tradefed run gts -m GtsMediaTestCases
  --test com.google.android.media.gts.WidevineH264PlaybackTests#testL1With480P30

Test: GTS MediaDrmTest tests
  e.g. ANDROID_BUILD_TOP= ./android-gts/tools/gts-tradefed run gts -m GtsMediaTestCases
  --test com.google.android.media.gts.MediaDrmTest#testWidevineApi28

Test: unit tests

bug: 69674645
Change-Id: I91e7e43f9178b61a531e846beffb5f5c17050a3c
2018-03-30 14:57:16 -07:00
Adam Stone
09c45c4440 Creates a new license request latency metric
Previously, we did not have a license request latency metric. This is a
notable limitation in our metrics. This adds a metric that captures the
timing between a GenerateKeyRequest and an AddKey operation.

Bug: 72994956
Test: New unit tests. Google Play
Change-Id: If99c187399c02f9b5d4c355732af7588bbbefb11
2018-03-30 21:43:48 +00:00
Adam Stone
e1fe90372f Fixes missing or broken metrics in Widevine CDM
A few metrics were missing or not properly collected in the CDM metrics.
This CL addresses them.

Bug: 64570194
Bug: 72866232

Test: Unit tests and Google Play manual test.
Change-Id: I3a3aa4fb3eb8422c9c8c398016f02409307beb33
2018-03-30 14:07:04 -07:00
Srujan Gaddam
f217742582 Fixed loading mac keys in mock and Level3
Merge of http://go/wvgerrit/45521/

Bug: b/73818548

Test: request_license_tests and GTS tests on sailfish and taimen

This change loads the mac keys into the session to be used in
GenerateSignature from the last call to one of: DeriveKeysFromSessionKey,
GenerateDerivedKeys, LoadKeys, and LoadUsageEntry. OEMCrypto tests are
changed to reflect this as well (specifically the order in which we call
the above methods).
2018-03-29 10:39:21 -07:00
Srujan Gaddam
5064731d02 Remove call to DeriveKeys for release
Merge of http://go/wvgerrit/45520/

Bug: b/70650789

Test: request_license_tests and GTS tests on sailfish and taimen

This is related to b/70650789. An extra call to DeriveKeysFromSessionKey
in the case where there is a provider session token results in the
OEMCrypto mock incorrectly using the derived mac keys to sign the release
message, since a future call to LoadKeys is never called.
2018-03-29 10:37:09 -07:00