Commit Graph

1695 Commits

Author SHA1 Message Date
Jeff Tinker
5dd0d2a5ce Merge "Fix StringIndexOutOfBoundsException in MediaDrmAPITest" into nyc-dev 2016-04-08 18:05:12 +00:00
Jeff Tinker
06c45414b5 Fix StringIndexOutOfBoundsException in MediaDrmAPITest
The AES test was useful to verify the framework API changes, but
the decrypt test was not correct.  Removing it for now.

Merge of go/wvgerrit/17472

bug: 27973491
Change-Id: I942fda22072636ea7ce56b992e7d3a60077c0d27
2016-04-08 16:51:22 +00:00
Rahul Frias
7cb83eb02e Load keys before sending OnKeyStatusChange notifications
[ merge of http://go/wvgerrit/17454 ]

When processing a license or renewal, calls to Set/UpdateLicense
update the policy information. A side effect was introduced whereby
updating the policy may cause (expiration, session key state)
notifications to be sent to the listener. Due to the ordering,
the notifications would be sent before the keys were loaded/refreshed,
which caused issues when the notifications were immediately acted upon.
This has now been corrected.

b/27842970

Change-Id: Id81a71ff48edfa9ca0baafc43267995d5a3e80a6
2016-04-07 15:58:45 -07:00
Rahul Frias
b76eccf32d Return ERROR_INSUFFICIENT_OUTPUT_PROTECTION when appropriate
[ Merge from http://go/wvgerrit/17429 ]

This is to correct for when HDCP validation failure at the OEMCrypto level
ends up returning a CryptoException through MediaCrypto with error code
Unknown Error (-2998).

b/27849488

Change-Id: Ib3a9b1c3a17b9323f3d079a678cf88dedeec3b4b
2016-04-05 16:44:31 -07:00
John Bruce
19c36a64d6 Merge "Move Widevine Unit Tests to Standard gMock" into nyc-dev 2016-04-04 23:13:23 +00:00
Jeff Tinker
971d94e410 Merge "Fix offline playback using widevine sample player" into nyc-dev 2016-04-04 21:27:19 +00:00
Jeff Tinker
ad8e58f6f7 Fix offline playback using widevine sample player
Previously the sample player relied on implementation
details of FileDescriptor.toString() to get the low
level int file descriptor, which changed in N release.
This updates the sample player to use a more reliable
method.

bug: 26422357
Change-Id: I73cc759542994a352eae646a3872ee1125445739
2016-04-04 12:13:53 -07:00
Fred Gylys-Colwell
c42f1e9372 Update Mock Android.mk
Merge from widevine repo of http://go/wvgerrit/17393

This CL changes the installation directory for oemcrypto reference
code. In particular, it uses the new build rules to specifies the library
should go in /vendor/lib instead of /system/lib or /vendor/lib64.

This library should not be used on a production device.

b/26425759

Change-Id: I3a58d0d1ddeb5601b0f2f97cc87c2d4a2a41f0d8
2016-04-01 15:57:56 -07:00
John "Juce" Bruce
0555a7c9de Move Widevine Unit Tests to Standard gMock
(In addition to being a merge of http://go/wvgerrit/17394, this commit
updates tests/Android.mk to no longer try to build the private gMock.)

Previously, we maintained our own version of gMock (named libwvgmock
to avoid naming conflicts) and depended on it for our unit tests. Now
that Android has gMock in the externals/ directory and vaage@ has
eliminated the need for us to customize gMock's arity, we can stop
depending on or maintaining our own copy.

Bug: 26907374
Change-Id: Ia01d6c02e2f28a642480d7ef178b9bc3dde6d306
2016-04-01 14:49:43 -07:00
Fred Gylys-Colwell
0e929c2ec7 Level 3 OEMCrypto with symbols removed
Merge from widevine side of http://go/wvgerrit/17355

The previous build of this library had some filenames and linker
symbols left in that should not be leaked.  This build removes them.

Library versions:
level3/mips/libwvlevel3.a  Level3 Library 4465 Mar 30 2016 13:29:24
level3/arm/libwvlevel3.a  Level3 Library 4445 Mar 30 2016 13:23:54
level3/x86/libwvlevel3.a  Level3 Library 4464 Mar 30 2016 13:26:29

b/27831262

Change-Id: I7801c6f953af338f5e80e95aa27098ae4c7a6c93
2016-03-30 15:56:15 -07:00
Rahul Frias
e9f15858f0 Address failures in Widevine CDM extended duration tests
[ Merge of http://go/wvgerrit/17250 ]

This appears to be the result of a bad merge.

b/27657766

Change-Id: I890162595623f1c13973cedc17eb611fac7e5535
2016-03-24 13:38:00 -07:00
Fred Gylys-Colwell
9bf25bc67f Turn off mips64 library (second attempt)
Merge from widevine repo of http://go/wvgerrit/17223/3

This time I mean it.

b/27786231

Change-Id: I8d4d3acf7470c8b5878b90774f97b5fce1011ccf
2016-03-23 20:52:12 -07:00
Fred Gylys-Colwell
19cd8db256 Turn off mips64 library
Merge from widevine repo of http://go/wvgerrit/17223

This CL turns off the mips64 bit build for widevine.  This is because
the level 3 mips32 library does not build and run correctly for a 64
bit target.

b/27786231

Change-Id: I3388d9ebc80ae3cf477a8a54adfd1f22dfac4dda
2016-03-23 07:54:31 -07:00
Rahul Frias
f886f7fc3d Merge "Address SessionSharingTest failures from WV request_license_test" into nyc-dev 2016-03-22 17:31:48 +00:00
Fred Gylys-Colwell
45eeeed444 Merge "Change an ASSERT to an EXPECT" into nyc-dev 2016-03-22 17:21:02 +00:00
Fred Gylys-Colwell
2efc6821d2 Change an ASSERT to an EXPECT
Merge from widevine repo of http://go/wvgerrit/17202

This allows more checks in the test to run.  Returning the correct
error code is less important than the next check, which verifies the
signature was not computed.

This helps diagnose b/21708882, but does not fix it.

b/27787064

Change-Id: I65306c54b77370951bc54e8ef9f6140f58bea32c
2016-03-22 10:12:18 -07:00
Rahul Frias
85d776c8b8 Address SessionSharingTest failures from WV request_license_test
[ Merge of http://go/wvgerrit/17204 ]

Sleep was being employed, to introduce a delay so that one license expired
but the other was still active. The duration was long enough that
occasionally the second license would also expire, causing the test to fail.
Reduce the sleep duration to correct this behaviour.

b/27673513

Change-Id: Ieef9100c98783c16fc5ab8fe345fa1dd26604f18
2016-03-21 15:29:08 -07:00
Fred Gylys-Colwell
ea77e37eb7 Merge "Update to OEMCrypto Level 3 Libraries" into nyc-dev 2016-03-21 17:34:21 +00:00
Jeff Tinker
65ed606872 Fix some vendor-specific error reporting
Some decryption errors were being reported as
vendor-unique diagnostic codes that were not generally
actionable by an app.  Recently a new
MediaCodec.CryptoException code was added so these types
of failures can be reported as ERROR_UNSUPPORTED_OPERATION,
in which case the app can use an alternate DRM
configuration in a way that does not require
vendor-specific handling. This change remaps this class
of decrypt errors to the new error code.

Merge of http://go/wvgerrit/17110

bug: 25929554
Change-Id: Iff44c2f04f9ee28d065fb17d59bca4032c5d55ca
2016-03-18 14:16:16 -07:00
Fred Gylys-Colwell
943044788b Update to OEMCrypto Level 3 Libraries
Merge from widevine of http://go/wvgerrit/17178

These are the OEMCrypto Level 3 libraries, built using a stable
version of GCC and build tools on nyc-dev.  Code changes are just
merged from master.  Aside from build tool updates, the CL contains a
fix for b/26567162.

Current version (as printed by oemcrypto/level3/print-version-strings):
level3/arm/libwvlevel3.a  Level3 Library 4445 Mar 17 2016 14:11:16
level3/x86/libwvlevel3.a  Level3 Library 4464 Mar 17 2016 13:14:40
level3/mips/libwvlevel3.a  Level3 Library 4465 Mar 17 2016 11:34:50

bug: 26917438
bug: 26567162
Change-Id: I07d526f28e61c5a9b66fa59b78041a93a99dc8e6
2016-03-18 11:16:51 -07:00
Fred Gylys-Colwell
6a10503b61 OEMCrypto unit test with sample size = 160N+16
Merge from widevine of http://go/wvgerrit/17128

This CL adds a unit test for an edge case that would be handled
differently for HLS and CENC standards.  We enforce the CENC standard.

b/27524491

Change-Id: Ie3cdfaac0fe37dd0eb991179fd84f4e113e07dae
2016-03-16 11:48:43 -07:00
Brian Carlstrom
8186284683 vendor/widevine: Make Thread::run threadName argument required
Bug: 27557176
Change-Id: I652bb1821190a20b059b70b9b8bacd079f731cbb
2016-03-12 16:08:29 -08:00
Rahul Frias
9df35002d6 Merge "Add CDM integration tests for HLS" into nyc-dev 2016-03-11 18:08:55 +00:00
Rahul Frias
59580f40ab Add CDM integration tests for HLS
[ Merge of https://go/wvgerrit/17083 ]

b/27559429

Change-Id: I65a0a163e0e14bf711c257d7ab2c9486ec002c07
2016-03-09 01:13:47 -08:00
Rahul Frias
cbde9109b6 Corrections to support HLS
[ Merge of https://go/wvgerrit/17055 ]

There are a few bugs that need to be addressed to get HLS to work.

* Content ID in json init data is base64 encoded and needs to be decoded
  before being added to the WidevineCencHeader proto.
* Protection scheme was not set in the WidevineCencHeader proto.
* HLS initialization data should be sent as a CENC content identification
  in a license request.

b/20630275

Change-Id: Ie0ac33ac061931df6f26c0afbf3e62e5d01e5041
2016-03-09 01:10:01 -08:00
Fred Gylys-Colwell
ca1bd5cefc Update OEMCrypto v11 Delta Document
Merge of http://go/wvgerrit/17040

The delta document specified the wrong error code if
Minimum_Security_Patch_Level is not valid.  The correct error is
OEMCrypto_ERROR_UNKNOWN_FAILURE.

b/27524999

Change-Id: I0c5d9b6d40b384ae3550348569d78c60093a65d4
2016-03-07 12:04:25 -08:00
Rahul Frias
c60d238783 DO NOT MERGE Only pass whole clear frames to OEMCrypto_CopyBuffer am: 58bad94991 am: 1eeb1ee359 am: a060a58acb
am: a8330e5706  -s ours

* commit 'a8330e5706d3c83fbfb43b6a6be751981f2cfc67':
  DO NOT MERGE Only pass whole clear frames to OEMCrypto_CopyBuffer
2016-03-04 18:26:35 +00:00
Rahul Frias
a8330e5706 DO NOT MERGE Only pass whole clear frames to OEMCrypto_CopyBuffer am: 58bad94991 am: 1eeb1ee359
am: a060a58acb

* commit 'a060a58acbbbae0b37a8ff067e90f8f30d17f818':
  DO NOT MERGE Only pass whole clear frames to OEMCrypto_CopyBuffer
2016-03-04 18:24:34 +00:00
Rahul Frias
a060a58acb DO NOT MERGE Only pass whole clear frames to OEMCrypto_CopyBuffer am: 58bad94991
am: 1eeb1ee359

* commit '1eeb1ee3590095a6cc39b774e33ac6dd26b18f9c':
  DO NOT MERGE Only pass whole clear frames to OEMCrypto_CopyBuffer
2016-03-04 18:22:33 +00:00
Rahul Frias
1eeb1ee359 DO NOT MERGE Only pass whole clear frames to OEMCrypto_CopyBuffer
am: 58bad94991

* commit '58bad949913fc9311e9318d5d7a5f8f06a592367':
  DO NOT MERGE Only pass whole clear frames to OEMCrypto_CopyBuffer
2016-03-04 18:20:31 +00:00
Rahul Frias
58bad94991 DO NOT MERGE Only pass whole clear frames to OEMCrypto_CopyBuffer
[ Merge from http://go/wvgerrit/16499 ]

Passing clear subsamples to OEMCrypto_CopyBuffer and encrypted subsamples
to OEMCrypto_DecryptCTR was causing performance issues as a lack of crypto
session information made it hard to associate clear and encrypted
subsamples with each other.

[ Based on a patch from Kelly Ren/Qualcomm ]

b/26538744

Change-Id: I4644f197b2ec481f6aa89d3fce29b22ebb7b0c06
(cherry picked from commit e3724815c6)
2016-03-04 00:28:13 +00:00
Rahul Frias
8df3e060b1 Merge "Use session with longest remaining duration when session sharing is used." into nyc-dev 2016-02-25 22:29:50 +00:00
Rahul Frias
aefd104981 Use session with longest remaining duration when session sharing is used.
[ Merge of https://go/wvgerrit/16940 ]

An alternate scenario to renewing keys is to load the same keys in
a separate session and make use of them by using the session sharing
feature.

Session sharing involves iterating through a map of sessions and
returning the first session that contains the Key ID. In certain cases
(license about to expire) we might prefer an alternate session
be chosen.

Licenses may expire in two ways. Policy engine, driven by a 1 second
timer may detect expiry and send an asynchronous event. OEMCrypto may
also detect expiry based on information in the key control block
and return an error during decryption. It is possible that these
may differ by upto a second. This can lead to issues where decryption
fails but EVENT_KEY_EXPIRED is not generated till later.

It is possible to address this by using information from both timers
to notify the app about expiry. To implement this correctly will
add complexity and require synchronization between threads. To avoid
this an alternate solution is, if session sharing is used, to pick
the session that has a license with the longest remaining validity.

b/27041140

Change-Id: I398cc4c10ee3a2f192d4a0befe7c8a469dd5bf86
2016-02-24 10:22:18 -08:00
Edwin Wong
81588d4b1a Update Widevine classic integration guide.
Update "Deliverables: section 7.5 to include instructions for N.
Update version to 2.4.

bug:27301749
Change-Id: I84ddaee65325f1efe9da8d9963075b864cf236a2
2016-02-23 18:11:01 -08:00
Edwin Wong
8f6f46aee9 Update Widevine classic integration guide. am: 9790ffb8a8 am: 311d3f75c0 am: fa5eea4b39
am: 42ffb9159b

* commit '42ffb9159bc071426f73c4cecf2c206be654acd5':
  Update Widevine classic integration guide.
2016-02-23 01:50:45 +00:00
Edwin Wong
42ffb9159b Update Widevine classic integration guide. am: 9790ffb8a8 am: 311d3f75c0
am: fa5eea4b39

* commit 'fa5eea4b3924aacea611b528656442c2769af0e5':
  Update Widevine classic integration guide.
2016-02-23 01:44:14 +00:00
Edwin Wong
fa5eea4b39 Update Widevine classic integration guide. am: 9790ffb8a8
am: 311d3f75c0

* commit '311d3f75c0019bd46dc92aff94322ff6d84ce26b':
  Update Widevine classic integration guide.
2016-02-23 01:37:34 +00:00
Edwin Wong
311d3f75c0 Update Widevine classic integration guide.
am: 9790ffb8a8

* commit '9790ffb8a8fe18d2d58076a3ed0ed1d825406eaf':
  Update Widevine classic integration guide.
2016-02-23 01:30:46 +00:00
Edwin Wong
9790ffb8a8 Update Widevine classic integration guide.
Update "Deliverables: section 7.5 to include instructions for M.
Update version to 2.3.

bug:27199720
Change-Id: I55b6177f3e3e97763c6c1721836ad19ff457351f
2016-02-22 15:22:11 -08:00
Aaron Vaage
3de6b6284d Removing old profiler files
When merging the change from Widevine's repo over to NYC,
some deletes were missed. This change removed the unused
classes profiler_session and stats.

The make file still had a reference to Stats, which was
likely due to a merge conflict.

Change-Id: Ic39baafab4bfd84e2b462f6749761c8a228244c7
2016-02-22 21:17:38 +00:00
Kyle Alexander
e69a4fc6dd Merge "Disable DroidGuard during unit tests" into nyc-dev 2016-02-13 06:16:56 +00:00
Kyle Alexander
b756eb5db2 Disable DroidGuard during unit tests
This aligns our test script with the functionality found in our TF
test configuration for preventing concurrency issues with DroidGuard.

Matching Widevine cl: go/wvgerrit/16791

Change-Id: Icc891de0a5f3795d8582b21e1bcf734049ddbf42
2016-02-12 16:45:20 -08:00
Aaron Vaage
0d77fecfb5 OEMCrypto Profiler - Merge of Widevine Updates
This change is a merge of the following changes:
1. Remove MultipleSessions (go/wvgerrit/16763)
2. Increase Memory Budget (go/wvgerrit/16764)
3. Fixing Possible Integer Overflow (go/wvgerrit/16765)
4. Creating Call Table (go/wvgerrit/16766)
5. Creating Call History (go/wvgerrit/16767)
6. Connecting Profiled Scope (go/wvgerrit/16768)
7. Adding Call Table Version Number (go/wvgerrit/16780)
8. Add Version Number to Call History (go/wvgerrit/16781)

bug: 27157796

Change-Id: Ia3f088a1714f3f5b426fee6141daa4ea8d832cf4
2016-02-13 00:27:09 +00:00
Rahul Frias
9c82455e8f Modify protos to support HLS
[ Merge of http://go/wvgerrit/16769 ]

Protos have been updated to match the google3 copy. This introduces
protection scheme to support HLS and MetricData to assist
in reporting. Changes have been made to set or consume data
from appropriate fields.

b/27146600

Change-Id: Ic928a406efb8fbb959b95a77dda6848e839b1948
2016-02-11 12:55:26 -08:00
Rahul Frias
4838979f07 Merge "Test Simultaneous decrypt and remove NULL pointer comparison" into nyc-dev 2016-02-11 17:51:42 +00:00
Rahul Frias
3e5b6d7489 Test Simultaneous decrypt and remove NULL pointer comparison
[ Merge of http://go/wvgerrit/16544, http://go/wvgerrit/16639 ]

* This fixes the oemcrypto unit tests to build with the ce cdm.

The unit tests do not build when it is detected that a long (NULL)
is compared to a pointer.

* Remove NULL pointer comparison

On some platforms ASSERT_NE(NULL, ptr) does not work.  This CL
replaces it with ASSERT_TRUE(NULL != ptr).

* Test Simultaneous Decrypt

With the increasing number of devices that support multiple screens or
windows, it is desireable to verify that OEMCrypto can have several
sessions open and actively decrypting at the same time.

Calls to OEMCrypto are still serialized -- this is not a threading
test -- but we still have multiple sessions open and decrypt from each
of them.

* Remove unused variable in initialization_data

Change-Id: I1a4be38fb30a14f610544416db653a81342f16b3
2016-02-11 01:27:12 -08:00
Rahul Frias
7c4eaef227 Merge "Refactor GenerateKeyRequest to reduce number of parameters" into nyc-dev 2016-02-11 08:36:57 +00:00
Rahul Frias
a444571c53 Refactor GenerateKeyRequest to reduce number of parameters
[ Merge of http://go/wvgerrit/16625 and http://go/wvgerrit/16633 ]

Reduce the number of parameters needed by GenerateKeyRequest.
Combining all output values into a single struct.

BUG: 26162546
Change-Id: Ibeb3f4df4a8e877511f8ab2e6c543001a921f285
2016-02-10 17:50:05 -08:00
Edwin Wong
fa4cb04a00 Set umask to ensure sensitive files are only accessible by owner.
[Merge of http://go/wvgerrit/16626]
[Cherrypick from http://go/ag/858552 to nyc-dev branch]

Setting umask to ensure only owner can access sensitive files.
Fixes request_license_test which creates directories and files
accessible by group and others.

bug: 26567162
Change-Id: I63553ec9210f3a4c160cd4c4f2a49c9e0a4157db
2016-02-10 14:30:19 -08:00
Kyle Alexander
c7e92b68e6 Update canary test with latest Android version string.
This silences the canary test to match the Android version string
change from NYC to N. properties_android.cpp has already previously
been updated for N, so no need to bump the Widevine Android version
number at this time (see: go/ag/800077)

Matching Widevine cl: go/wvgerrit/16664

Bug: 26901110
Change-Id: Ib8f47f77bbb4dd2c7c302102fe43007059af2d50
2016-02-04 20:47:12 +00:00