Commit Graph

2194 Commits

Author SHA1 Message Date
Rahul Frias
221ac95f1a Merge changes I9039bc1f,I43758cd2 into oc-dev
am: c2969ef0f4

Change-Id: I95eda1b053fa299e50d85886258a231c9300f6ed
2017-04-19 23:58:12 +00:00
John W. Bruce
68d26ef98b Remove API Version TODO Comments
(This is a merge of http://go/wvgerrit/26221)

We have agreed on API 26 for O, so these comments can be removed without
making any further changes.

Bug: 34548395
Test: This is a comment-only change. But I verified it builds.
Change-Id: I490befba4f47902a84b60e562a7a5eb162a9f3be
2017-04-19 16:48:14 -07:00
Rahul Frias
c2969ef0f4 Merge changes I9039bc1f,I43758cd2 into oc-dev
* changes:
  Allow decryption of unencrypted data before key has been retrieved
  Correct CryptoException error returned before keys have been loaded
2017-04-19 23:40:51 +00:00
John W. Bruce
ce6bd41627 Define Provisioning-Unique ID for New Device IDs
(This is a merge of wvgerrit/25583)

Devices that use Provisioning 3.0 did not have a Provisioning-Unique ID
defined. Attempting to retrieve it would result in an error.

Devices that use SPOIDs with keyboxes would expose the keybox's real
Provisioning-Unique ID when asked. This is a security flaw.

To solve both cases, an alternative Provisioning-Unique ID is used,
consisting of the Device-Unique ID bitwise-inverted.

Bug: 36065223
Test: run_all_unit_tests.sh
Change-Id: I32512a3e11403e679939187e156904a57a9e24ef
2017-04-19 16:35:29 -07:00
John W. Bruce
8513b71499 Hash OEM Certificate
(This is a merge of wvgerrit/25582)

Provisioning 3.0 devices that do not use SPOIDs have been returning
their full OEM Public Certificate as their device ID. While this is not
a security concern, (it is a PUBLIC cert) the cert is many times larger
than applications are likely expecting. (several kilobytes vs. just a
few bytes) This patch hashes the OEM Public Certificate to produce a
smaller value, but only when it is being provided out of the CDM to a
caller.

Bug: 34716264
Test: run_all_unit_tests.sh
Change-Id: Ib82cf7a174a8bf02ff606edd0394ada13842224c
2017-04-19 16:03:22 -07:00
John W. Bruce
84ae8875bf Rebuild Haystack and Store L3 Keybox in /data/vendor
am: 76d3ca9091

Change-Id: Ib61e1b2b3ff01addb9bedbbe3d434db337861c6d
2017-04-19 22:01:14 +00:00
Rahul Frias
76e0c7b5d3 Merge "Allow OfflineLicenseRenewal test to be repeatedly invoked" into oc-dev
am: 6260d4d628

Change-Id: Id4f4f3f2222be6ddfb45413010e0f192db151158
2017-04-19 18:24:52 +00:00
Rahul Frias
f3c6cea6dc Merge "Add usage information tests to device files unit tests" into oc-dev
am: 3b68424d1f

Change-Id: I841b1a2cbb445415996b0328ded5a36daf99b1df
2017-04-19 18:24:38 +00:00
John W. Bruce
76d3ca9091 Rebuild Haystack and Store L3 Keybox in /data/vendor
(This is a merge of http://go/wvgerrit/25900 and http://go/wvgerrit/25920)

This commit contains the latest Haystack prebuilt binaries based on
the latest OEMCrypto code in the Widevine tree. This is to pick up the
change "Report error OEMCrypto_ERROR_ENTRY_IN_USE", which fixes
several failing unit tests. This CL also adjusts the L3 library so
that it stores its data in the directory specified by the layer above.

level3/x86_64/libwvlevel3.a    Level3 Library 7284 Apr 13 2017 16:58:07
level3/arm/libwvlevel3.a       Level3 Library 4445 Apr 13 2017 16:48:19
level3/mips64/libwvlevel3.a    Level3 Library 7285 Apr 13 2017 23:52:51
level3/mips/libwvlevel3.a      Level3 Library 4465 Apr 13 2017 23:16:02
level3/arm64/libwvlevel3.a     Level3 Library 7283 Apr 13 2017 17:05:12
level3/x86/libwvlevel3.a       Level3 Library 4464 Apr 13 2017 16:36:25

Bug: 36656178
Bug: 37210088
Test: build_and_run_all_unit_tests.sh and GTS tests
Change-Id: Ia5b272cd945f0c9f2fe37ecd0f3ccd2f2ff398bc
2017-04-19 11:23:06 -07:00
Rahul Frias
6260d4d628 Merge "Allow OfflineLicenseRenewal test to be repeatedly invoked" into oc-dev 2017-04-19 18:11:48 +00:00
Rahul Frias
3b68424d1f Merge "Add usage information tests to device files unit tests" into oc-dev 2017-04-19 18:09:40 +00:00
Rahul Frias
0f374af4ab Allow decryption of unencrypted data before key has been retrieved
[ Merge of http://go/wvgerrit/25987 ]

Test: Added Cdm/WvCdmSessionSharingNoKeyTest to request_license_test.
      Verified by wv unit and integration tests.

b/28182987

Change-Id: I9039bc1fca83e2c1044c3af2f47f31dc4fb5c910
2017-04-19 00:47:40 -07:00
Rahul Frias
3d599197be Correct CryptoException error returned before keys have been loaded
[ Merge of http://go/wvgerrit/25983 ]

Earlier versions of android returned CryptoException with
error code ERROR_NO_KEY, when a decrypt call was received before keys were
loaded. Changes to O resulted in ERROR_SESSION_NOT_OPENED being returned
instead. This CL reverts the behaviour.

Also a change to correct CDM error code numbering in comments.

Test: Verified by unit and integration tests

b/37219830

Change-Id: I43758cd29cf9d1945f878ac352a5f26538b48cdb
2017-04-19 00:40:48 -07:00
Rahul Frias
0f5f05f9cd Merge "Revert "Detect when unable to meet policy requirements"" into oc-dev
am: 80798ae11c

Change-Id: Ic5463e04aa477b8af351ea03436263514dafd9ec
2017-04-18 20:51:11 +00:00
Rahul Frias
80798ae11c Merge "Revert "Detect when unable to meet policy requirements"" into oc-dev 2017-04-18 20:37:22 +00:00
Rahul Frias
e733943729 Revert "Detect when unable to meet policy requirements"
This reverts commit 1223330ccc.

b/37460568

Change-Id: I936c06f679126ac50fb2d4753b4270b4ba42def5
2017-04-18 20:03:56 +00:00
John W. Bruce
c0a7655834 Maxing Out Sessions Can Cause SPOID Failures
(This is a merge of http://go/wvgerrit/25581)

To prevent dead DRM Plugins from being instantiated when there are no
sessions available, the time at which the device ID is queried has been
moved from instantiation-time to SPOID-calculation-time.

SPOIDs can now fail to be generated. Which means anything that depends
on a SPOID may fail because of this. However, this is a more actionable
problem for apps than having them receive a dead or unusable DRM Plugin
object.

Bug: 36660726
Test: libwvdrmdrmplugin_hidl_test
Change-Id: Ice6a8eabfee8d48bf2af02e2e7169aa95af9f2e4
2017-04-18 10:25:39 -07:00
John W. Bruce
19947dfe6f Move SPOID Enable/Disable Logic Out of WVDrmPlugin
(This is a merge of http://go/wvgerrit/25580)

While writing fixes for b/36660726, b/34716264, and b/36065223, it
became clear that having the logic that checks whether the device
supports SPOIDs embedded inside WVDrmPlugin was complicating its code
and inhibiting testing of the class. By moving this check into the code
that instantiates WVDrmPlugin, the result of the calculation can be
independently tested while the tests for WVDrmPlugin can put it in
whatever state they need for the sake of unit testing.

As a consequence of this, the check on retrieving the "deviceUniqueId"
byte array property, which was removed when SPOIDs were implemented, can
be reinstated.

Bug: 36660726
Bug: 34716264
Bug: 36065223
Test: libwvdrmdrmplugin_hidl_test & libwvdrmengine_hidl_test
Change-Id: I961d2ee42bbdc42f0c324e36d9a74ac92205a437
2017-04-18 09:56:58 -07:00
Rahul Frias
3bf36c4321 Merge "Detect when unable to meet policy requirements" into oc-dev
am: 551f4cb474

Change-Id: Ic0a7095525471ca0ebb514a396aae352c23e5311
2017-04-15 06:55:54 +00:00
Rahul Frias
551f4cb474 Merge "Detect when unable to meet policy requirements" into oc-dev 2017-04-15 06:50:05 +00:00
Rahul Frias
16e76d3bb5 Merge "Correct KeySetId value when returned by AddKey" into oc-dev
am: f655f329e2

Change-Id: I0d1225d188edae07945a6f687abd5ef99a8f969c
2017-04-15 06:40:51 +00:00
Rahul Frias
f655f329e2 Merge "Correct KeySetId value when returned by AddKey" into oc-dev 2017-04-15 06:37:06 +00:00
Rahul Frias
57bb6c29ca Add usage information tests to device files unit tests
[ Merge of http://go/wvgerrit/24445 ]

Test: Verified by wv unit and integration tests

b/36048120

Change-Id: I9d067e79654331e8e58df5dce5411fbadc73e575
2017-04-14 15:12:25 -07:00
Jeff Tinker
5ea9fc8cb4 Merge "Translate CDM session not opened errors" into oc-dev
am: 6116fdb97a

Change-Id: I9d888f35db146164f52e9450107fce76d4448316
2017-04-14 21:44:55 +00:00
Jeff Tinker
b2e501c1e4 Merge "Add an offline test asset for the drm vts test" into oc-dev
am: 45910edd19

Change-Id: I6c7db741362d17acee78d1abd28b12e906da9e23
2017-04-14 21:44:53 +00:00
TreeHugger Robot
6116fdb97a Merge "Translate CDM session not opened errors" into oc-dev 2017-04-14 21:38:30 +00:00
TreeHugger Robot
45910edd19 Merge "Add an offline test asset for the drm vts test" into oc-dev 2017-04-14 21:38:30 +00:00
Iliyan Malchev
22169f63e8 Route drm@1.0-service.widevine libbinder to /dev/vndbinder
am: 28b89a9b4f

Change-Id: I7dd7634546dd780a34423e48be47807030e9b90a
2017-04-14 18:25:12 +00:00
Rahul Frias
5321b96623 Correct KeySetId value when returned by AddKey
[ Merge of http://go/wvgerrit/25643 ]

The MediaDrm#provideKeyResponse API states that an empty byte array is
returned when the license type is streaming or release but a non-empty
value was being returned in some cases.

The KeySetId is now returned when the license type is offline or when
the license is streaming and has a secure stop associated with it.

Test: Verified by request_license_test integration tests. Tests have been
      modified to validate the returned Key Set Id values.

b/36093612

Change-Id: I82dba537c77ddd1d1876cbce58729f3db901ee51
2017-04-14 07:54:01 -07:00
Iliyan Malchev
28b89a9b4f Route drm@1.0-service.widevine libbinder to /dev/vndbinder
b/37309712: [Marlin/Sailfish] Fatal signal 6 (SIGABRT) when playing Exo
	    Player L1 encrypted content
Test: marlin

Change-Id: I05b12ea334138498be13bca92c9b1db6ed1b9870
Signed-off-by: Iliyan Malchev <malchev@google.com>
2017-04-14 01:22:04 -07:00
Jeff Tinker
3914953bff Add an offline test asset for the drm vts test
To test restoreKeys, a content configuration with a
license policy allowing offline playaback was needed.

Test: drm vts test

bug:34178477
Change-Id: Ib90d7a878c0f310569abb09f21138c7a6ac9daae
2017-04-14 00:30:07 -07:00
Jeff Tinker
f5240b69e4 Translate CDM session not opened errors
The drm hidl hal specifies that operations on sessions that
are not opened return ERROR_DRM_SESSION_NOT_OPENED.  This
change adds that translation, previously they were mapped
to unknown error.

Test: drm vts test

bug:34178477
Change-Id: I3777dd90eea7061f3fa5413a5732d7d58b85b49b
2017-04-14 00:28:47 -07:00
Jeff Tinker
a40302e208 Merge "Corrections to widevine plugin for vts tests" into oc-dev
am: c3ea64aa89

Change-Id: Ic8076eb4b4634734126d362a5d0032a1a6d27c58
2017-04-14 00:12:28 +00:00
TreeHugger Robot
c3ea64aa89 Merge "Corrections to widevine plugin for vts tests" into oc-dev 2017-04-14 00:05:42 +00:00
Rahul Frias
1223330ccc Detect when unable to meet policy requirements
[ Merge of http://go/wvgerrit/25781 ]

The security level (software/hardware, decryption/decode)
in the policy that specified how the key was to be used was
not being respected for L3. Playback would either continue or
a vendor specific error would be thrown.

If the device cannot use the key as permitted by the policy
CryptoException#ERROR_INSUFFICIENT_OUTPUT_PROTECTION will be thrown.

Test: Verified by WV unit+integration tests.
      Verified by WidevineDashPolicyTests
      Verified by WidevineDashPolicyTests#testL3SoftwareSecureDecoderRequired,
      testL3HardwareSecureCryptoRequired, testL3HardwareSecureDecodeRequired,
      testL3SecureVideoPathRequired.

b/31913737
b/31913439

Change-Id: Ibfc7f3dd6fc7264e8cf9b0d33f6f8d619eed6c00
2017-04-13 16:50:10 -07:00
Jeff Tinker
6c15ea673d Corrections to widevine plugin for vts tests
Add a check for invalid session size in restoreKeys
and correct the return code when attempting to create a
plugin with an invalid uuid. Also correct the return code
when attempting to decrypt after keys have been removed.

bug:37172151
Change-Id: I7e832ffe04081471a0cdb3a9329808f47f12cfc3
2017-04-13 14:53:12 -07:00
Rahul Frias
8b0edd6481 Correct error returned when license is for the future
am: ce62e1d7e7

Change-Id: Idaac6fec1faa0df3a41a5aa29b173a4985f6b0cd
2017-04-13 01:29:54 +00:00
Rahul Frias
ce62e1d7e7 Correct error returned when license is for the future
[ Merge of http://go/wvgerrit/25721 ]

Return CryptoException with errorCode ERROR_NO_KEY when an attempt is made
to make use of a license whose start time is in the future.

Test: Verified by WidevineDashPolicyTests#testL1LicenseStart2030

b/31914841

Change-Id: I2a157c227550a2391b6536365f34f1dfec3dea0c
2017-04-12 13:20:44 -07:00
John Bruce
d7d5715f21 Merge "Always Report OEMCrypto_ERROR_KEY_EXPIRED as NEED_KEY" into oc-dev
am: 1b0d67f368

Change-Id: Ib99df99fbb441f67a4cab52c45095287e05cd532
2017-04-12 18:08:50 +00:00
John Bruce
1b0d67f368 Merge "Always Report OEMCrypto_ERROR_KEY_EXPIRED as NEED_KEY" into oc-dev 2017-04-12 17:48:58 +00:00
Fred Gylys-Colwell
4c5ae08575 Merge "Disable MinVersionNumber13 Test *DO NOT MERGE*" into oc-dev
am: cc28abea0b

Change-Id: I6d284dc2a9dde9b6e4f5b578aa56423d07431a4f
2017-04-12 01:41:53 +00:00
TreeHugger Robot
cc28abea0b Merge "Disable MinVersionNumber13 Test *DO NOT MERGE*" into oc-dev 2017-04-12 01:37:18 +00:00
Fred Gylys-Colwell
565d911792 Merge "Address merge comments" into oc-dev
am: dbaacf9232

Change-Id: Ia8f793fa61b98aa8391468808fa5b75b5ff7c1c1
2017-04-12 00:21:58 +00:00
TreeHugger Robot
dbaacf9232 Merge "Address merge comments" into oc-dev 2017-04-11 23:57:19 +00:00
Rahul Frias
b474ba042e Allow OfflineLicenseRenewal test to be repeatedly invoked
[ Merge of http://go/wvgerrit/25720 ]

Test: Repeatedly invoke WvCdmRequestLicenseTest.OfflineLicenseRenewal

b/28915200

Change-Id: I5be6be02d09ced1a7ba8bac2c8706f199d063db8
2017-04-11 16:40:16 -07:00
Jeff Tinker
70d8036881 Merge "Report binderized vendor service name" into oc-dev
am: eef94c002f

Change-Id: I7b0a17b2cb1328df14cf771ecd01908eb8e3a427
2017-04-11 21:20:11 +00:00
Jeff Tinker
c95756d367 Merge "Add checks for invalid parameters" into oc-dev
am: 9a69579330

Change-Id: Ic1c9fcb851e7c8ce7027ce620c9ac053f24a81b1
2017-04-11 21:20:01 +00:00
TreeHugger Robot
eef94c002f Merge "Report binderized vendor service name" into oc-dev 2017-04-11 21:02:21 +00:00
TreeHugger Robot
9a69579330 Merge "Add checks for invalid parameters" into oc-dev 2017-04-11 21:01:25 +00:00
Fred Gylys-Colwell
f9d08a30a4 Disable MinVersionNumber13 Test *DO NOT MERGE*
Merge from Widevine repo of http://go/wvgerrit/25662

OEMCrypto v13 is required for OC MR1, and is not needed for OC.  This
CL disables the unit tests MinVersionNumber13 for OC.  This CL should
not be merged to master.

b/36866361

Test: all unit tests pass on sailfish.

Change-Id: I04d7b468ac9479257c25519acb6ac13204acabd5
2017-04-10 18:04:58 -07:00