Commit Graph

2776 Commits

Author SHA1 Message Date
Rahul Frias
934e0aeff8 Avoid race conditions between periodic timer and close sessions
am: 5b169b1722

Change-Id: Ibd7d1f58e4ba17dd29baee1a788193ffd17aa7c6
2018-05-04 09:19:43 -07:00
Rahul Frias
5b169b1722 Avoid race conditions between periodic timer and close sessions
[ Merge of http://go/wvgerrit/49402 ]

Bug: 78912546
Test: WV unit/integration tests, GtsMediaTestCases, Aupt tests
Change-Id: Ic2016e8b557cd2dd45d5d3bbaa28be16e58dab8b
2018-05-02 23:56:17 -07:00
Rahul Frias
377279169c Merge "Allow a service certificate to be specified for provisioning" into pi-dev am: 734b6b819e
am: bd52f22081

Change-Id: Ibcc3857f7588d658d8d1f18b2eb7a31d9714d721
2018-05-02 17:06:28 -07:00
Rahul Frias
bd52f22081 Merge "Allow a service certificate to be specified for provisioning" into pi-dev
am: 734b6b819e

Change-Id: I4c76246a836901ea6d7fa73fa8292a8ab8bfb7fc
2018-05-02 15:04:56 -07:00
Rahul Frias
734b6b819e Merge "Allow a service certificate to be specified for provisioning" into pi-dev 2018-05-02 21:51:54 +00:00
android-build-team Robot
1e5d40a74c Merge "Share Widevine DRM Device Provisioning Models doc" into pi-dev am: 81ce8b4601
am: af5e1bdce7

Change-Id: I8c669f10880c839cfb9b51546809ed548719ce25
2018-04-27 16:47:14 -07:00
android-build-team Robot
af5e1bdce7 Merge "Share Widevine DRM Device Provisioning Models doc" into pi-dev
am: 81ce8b4601

Change-Id: I9cb81adf8acc5261ea0b5f48a2cd253635457d42
2018-04-27 16:42:39 -07:00
android-build-team Robot
81ce8b4601 Merge "Share Widevine DRM Device Provisioning Models doc" into pi-dev 2018-04-27 23:38:05 +00:00
Fred Gylys-Colwell
530c77bffb Share Widevine DRM Device Provisioning Models doc
Merge from Widevine repo of http://go/wvgerrit/47760

This CL adds a pdf of the document Widevine DRM Device Provisioning
Models, which explains the difference between Provisioning 2.0 and
3.0.

bug: http://b/74242000 Update Integration Guide
test: documentation only.
Change-Id: I64026ab4e93931adaa168d99939ee71d760e5862
2018-04-27 13:30:22 -07:00
Rahul Frias
668f387ff6 Save usage information before closing a session am: 9ba6493e1b
am: 86a1b18c24

Change-Id: I021e8792da5051f3a7cde08a7af33409e2c81194
2018-04-26 17:13:03 -07:00
Rahul Frias
86a1b18c24 Save usage information before closing a session
am: 9ba6493e1b

Change-Id: If189b6bb2edc6e8b10f2274775cb8caaff89a412
2018-04-26 16:56:34 -07:00
Rahul Frias
9ba6493e1b Save usage information before closing a session
[ Merge of http://go/wvgerrit/48640 ]

Usage information is saved periodically, in order to avoid excessive
flash writes. This limits our session usage accuracy to
within a usage save period. Saving usage information when
closing a session is an improvement and addresses some failures
seen with Netflix compliance tests.

Bug: 74015553
Test: WV unit/integration tests
Change-Id: I680aad05922f334df0611ff3933082a512f7c002
2018-04-26 14:14:51 -07:00
Rahul Frias
86c93da973 Merge "Remove duplicate information from client identification" into pi-dev am: 40b1131c13
am: aaf3d3da0c

Change-Id: Ia35736d5226fbb99412bc0850a5d7f9cb517ce38
2018-04-26 13:54:13 -07:00
Rahul Frias
aaf3d3da0c Merge "Remove duplicate information from client identification" into pi-dev
am: 40b1131c13

Change-Id: Ie587de42c6b18a5612962e68cb7e506b3843f6e5
2018-04-26 13:46:04 -07:00
Rahul Frias
40b1131c13 Merge "Remove duplicate information from client identification" into pi-dev 2018-04-26 20:29:36 +00:00
Rahul Frias
d7e0a3562c Remove duplicate information from client identification
[ Merge of http://go/wvgerrit/48720 ]

The device ID does not need to be sent in the client identification
information as it is either present in other fields or ignored
by the license service.

This also allows for build information to be reported during
provisioning for devices with OEM certificates.

Bug: 78578351
Test: WV unit/integration tests. GtsMediaTestCases.
Change-Id: I708c63d34f0e2df7e465154d12096a394a1b23d7
2018-04-25 17:21:40 -07:00
Adam Stone
1e471cdf3f Merge "Remove a spammy log message from metrics collections." into pi-dev am: 6d3dbfca83
am: 25a8f93b2a

Change-Id: Ib4b6d915f6a78476223bca84fb467870ebf2ae74
2018-04-25 17:18:44 -07:00
Adam Stone
25a8f93b2a Merge "Remove a spammy log message from metrics collections." into pi-dev
am: 6d3dbfca83

Change-Id: I04c1e4bedb75c3cee9fcebd4d3e1a204145d164e
2018-04-25 17:13:49 -07:00
Adam Stone
6d3dbfca83 Merge "Remove a spammy log message from metrics collections." into pi-dev 2018-04-26 00:08:33 +00:00
Srujan Gaddam
f2783ecb19 Merge "Address offline playback with rollbacked time" into pi-dev am: 04ad84a533
am: 58549580c6

Change-Id: I06dcb4520ff2c72cef8f79e38c2acec2ecdc6eb7
2018-04-25 11:30:46 -07:00
Srujan Gaddam
58549580c6 Merge "Address offline playback with rollbacked time" into pi-dev
am: 04ad84a533

Change-Id: I397dbb095c7139c82e800830eb1ea3baa2f7c61f
2018-04-25 11:01:40 -07:00
Srujan Gaddam
04ad84a533 Merge "Address offline playback with rollbacked time" into pi-dev 2018-04-25 17:34:31 +00:00
Rahul Frias
816f00e533 Allow a service certificate to be specified for provisioning
[ Merge of http://go/wvgerrit/48400 ]

Client identification information has recently been enabled in
provisioning messages. For privacy concerns this information
is being encrypted with a default service certificate.
Apps need to be able to override the default one to allow
for provisioning with third party provisioning services.

Bug: 78420508
Test: WV unit, integration tests
      New WvCdmRequestLicenseTest.ProvisioningTestWithServiceCertificate test
      GTS MediaDrmTestCases

Change-Id: Iee61ad47d33ce011efbea4eb90f7e4b1f032d15f
2018-04-24 11:14:35 -07:00
John Bruce
4ac9a39f45 Merge "Update OS Version in Version Canary" into pi-dev am: e3e437a6eb
am: e2235aee09

Change-Id: I1f4e84eaf88bd954989c6207326d0a11d3e1212c
2018-04-23 18:33:35 -07:00
John Bruce
e2235aee09 Merge "Update OS Version in Version Canary" into pi-dev
am: e3e437a6eb

Change-Id: I5049b33a464b19f39aac68d23c5d39866b8f5c07
2018-04-23 18:11:49 -07:00
John Bruce
e3e437a6eb Merge "Update OS Version in Version Canary" into pi-dev 2018-04-24 01:02:59 +00:00
Srujan Gaddam
73c3007c24 Address offline playback with rollbacked time
Merge from http://go/wvgerrit/47640

Test: unit/integration tests

Bug: b/62058202

The usage table keeps track of license duration by using the current
system time. However, if a user were to rollback the time, they can
effectively continue offline playback indefinitely. This changes the way
we compute time by computing offsets by which the user rollbacked the
time and adding it to the current time. This change also includes a test
to verify protection against rollback for usage entries that is only run
when the user is root.

Change-Id: I97c430e1443747b0f9759ae5390b8f5d06bdebf1
2018-04-23 15:44:26 -07:00
Rahul Frias
8184c43b72 Merge "Enable encryption of client ID for provisioning" into pi-dev am: d873f40d80
am: e51a3fa402

Change-Id: I20fe0ad5d1fe54c2e0468810bd35436bdfa596d4
2018-04-23 15:16:58 -07:00
Rahul Frias
e51a3fa402 Merge "Enable encryption of client ID for provisioning" into pi-dev
am: d873f40d80

Change-Id: I4f2e613570b16e97141b9e4b8843f78e6123d92c
2018-04-23 15:08:35 -07:00
Rahul Frias
d873f40d80 Merge "Enable encryption of client ID for provisioning" into pi-dev 2018-04-23 22:03:53 +00:00
Rahul Frias
a8d236cb88 Prevent race conditions between decrypt and close session am: 07bb4de042
am: 909650a0b3

Change-Id: I9effccd42b5e083363a2c213ff289f667cc4a71e
2018-04-23 07:10:39 -07:00
Rahul Frias
909650a0b3 Prevent race conditions between decrypt and close session
am: 07bb4de042

Change-Id: I3f52a62587b90aab7d4e22a6257edbefc059721c
2018-04-23 07:02:38 -07:00
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