Commit Graph

703 Commits

Author SHA1 Message Date
Rahul Frias
939401861e Address test network issues
am: 3380679886

Change-Id: I0cadd9a2713f1614b3f4a97b234a1d065cb42425
2016-12-13 09:23:21 +00:00
Rahul Frias
f77df16bd5 Merge "Address test network issues" into nyc-mr2-dev 2016-12-13 09:18:10 +00:00
Fred Gylys-Colwell
7e7ef2bb58 Level 3: Throw out keybox with wrong system id *DO NOT MERGE*
This CL modifies the haystack code to throw out the keybox if the
system id is wrong.  This should help prevent b/33344450 from
persisting.

Part of this code change was to backport some updates to the haystack
tools on master.

arm/libwvlevel3.a  Level3 Library 4445 Dec  6 2016 16:58:47
x86/libwvlevel3.a  Level3 Library 4464 Dec  6 2016 17:06:21
mips/libwvlevel3.a  Level3 Library 4465 Dec  7 2016 13:36:32

b/33556871

Change-Id: I8dadf4bc7981af6afb970533df61d34b80d133a7
2016-12-12 16:11:08 -08:00
Aaron Vaage
4ad500d878 [ OEMCrypto Profiler ] Removed Call Table
This is a merge of go/wvgerrit/22627

The call table was meant to be a long-term way to track
the performance of all OEMCrypto function calls.

This feature does not get used. Apps that call into the
profiler can generate this from the history.

This change was designed to go into Android O
(go/wvgerrit/22503) but since the Call Table is causing problems
on specific chip sets its being removed in NYC MR2.

Bug: 33550032
Bug: 33459261
Change-Id: I2af417a32452e7d0d0a1ada8794efd849c497dc8
2016-12-12 15:05:07 -08:00
Rahul Frias
4c89e58f9b Correct subsample flags in request_license_test am: e7782c1e27
am: 541c9e632a

Change-Id: Ib97b8d7a9bfe57f68275e9193943df84afa729e5
2016-12-05 23:06:59 +00:00
Rahul Frias
541c9e632a Correct subsample flags in request_license_test
am: e7782c1e27

Change-Id: I7667fe5cd3ae42b72b5c65686bc9ae8f78fb61af
2016-12-05 23:03:12 +00:00
Rahul Frias
dab8aab4a8 Merge "Correct subsample flags in request_license_test" into nyc-mr2-dev 2016-12-05 22:58:51 +00:00
Rahul Frias
e6f668ca16 Release offline release sessions
[ Merge of http://go/wvgerrit/21960 ]

When an offline release message is generated, a session is created
internally to generate the release and handle the release response.
If the response is never provided (network, server errors),
or there is an error when the response is being processed, the
session may not be closed. This change introduces a time to live for
release sessions of 60 seconds and will be reclaimed after this period.

Test: verified by unittests on angler

b/32223945

Change-Id: I3bd4637733ddf6c343956ed9f97c68d84dc7d4e4
2016-12-04 01:51:09 -08:00
Rahul Frias
9a55ca3249 Release offline release sessions -- DO NOT MERGE
[ Merge of http://go/wvgerrit/21960 ]

When an offline release message is generated, a session is created
internally to generate the release and handle the release response.
If the response is never provided (network, server errors),
or there is an error when the response is being processed, the
session may not be closed. This change introduces a time to live for
release sessions of 60 seconds and will be reclaimed after this period.

b/32223945

Change-Id: I3bd4637733ddf6c343956ed9f97c68d84dc7d4e4
2016-12-02 14:43:53 -08:00
Rahul Frias
e7782c1e27 Correct subsample flags in request_license_test
[ Merge of  http://go/wvgerrit/21980 ]

b/32487750

Change-Id: I5a3c3a768f3d1a81af4e8d897f68cfdbeb3526da
2016-12-01 11:17:59 -08:00
Fred Gylys-Colwell
0fb76d5c1b Refactor OEMCrypto Unit Tests
Merge from widevine repo of http://go/wvgerrit/21681

This CL refactors some oemcrypto unit tests in preparation for adding
Provisioning 3.0 tests.

- The signature GenerateNonce has changed.  Instead of the caller
  passing in a pointer for the nonce, we store the nonce in a member
  variable of Session.

- GenerateDerivedKeys is being replaced by InstallTestSessionKeys.
  This sets up and calls the appropriate derive keys method.  This
  function is in the test class, instead of the session class so that
  multiple sessions in a class can share the same wrapped rsa key.
  This will be modified for provisioning 3.0 in a future CL.

- Rename tests that require a keybox.  Some tests are specific for
  using a keybox to request a DRM cert. These tests are renamed so we
  can filter them out on devices that use an OEM Cert.  Corresponding
  tests for devices using provisioning 3.0 will be in a future CL.

- Some member variables and methods in the class Session were not
  used.  They are removed.

- Added openssl smart pointer.

- Comments.  I added comments.

- clang format.

Change-Id: Ib579a322858e0ef92652a42167241b35cf85a041
2016-11-29 15:05:23 -08:00
Fred Gylys-Colwell
4cac936b10 OEMCrypto v12 Haystack and Adapter
Merge of several CLs from the widevine repo.

Merge from widevine repo of http://go/wvgerrit/22440
Build OEMCrypto v12 Haystacks with cache flush

level3/mips/libwvlevel3.a  Level3 Library 4465 Nov 29 2016 13:34:45
level3/arm/libwvlevel3.a  Level3 Library 4445 Nov 29 2016 14:02:08
level3/x86/libwvlevel3.a  Level3 Library 4464 Nov 29 2016 14:22:21

Merge from widevine repo of http://go/wvgerrit/22403
Pull cache flush out of Haystack

Merge from widevine repo of http://go/wvgerrit/21145
OEMCrypto v12 stubs -- just the header file changes.

Merge from widevine repo of http://go/wvgerrit/21146
Add OEMCrypto v12 functions to profiler

This CL adds the new oemcrypto v12 functions for provision 3.0 to the
list of profiler functions.

Merge from widevine repo of http://go/wvgerrit/21143
OEMCrypto v12 adapter

This CL updates the oemcrypto dynamic and static adpaters to include
oemcrypto v12 funtionality.  It adds the three new Provisioning 3.0
functions.

It also adds code in the initialization routine to null out all of
the function pointers if any of them fail to load.  It is better to
fall back to level 3 than to use an inconsistent level 1.

b/31528025

Change-Id: I3579dc93e00ad7e7c743beecdd8291eac557d4e4
2016-11-29 14:56:36 -08:00
Fred Gylys-Colwell
5228b538f0 Specify units for time based property fields.
Merge from widevine of http://go/wvgerrit/21381

Change-Id: I8b209e1403e94adc7843ff1009c8cd1d5761b917
2016-11-28 21:40:19 -08:00
Rahul Frias
3380679886 Address test network issues
[ Merge of http://go/wvgerrit/22140 ]

There are occasional issues when trying to connect to
http://widevine-proxy.appspot.com/proxy . This changes introduces upto
3 retry attempts. The UAT server on appspot is being replaced by UAT on borg
and so it is not worth our while to debug these issues furthur.

b/30022298

Change-Id: I76c1421e93c7c14b5d2bcd7ad07119a705245922
2016-11-10 18:40:10 -08:00
Fred Gylys-Colwell
f248bbb9ee Merge "File util, generic crypto, and key query" 2016-10-25 17:40:54 +00:00
John "Juce" Bruce
a7c4880777 Update Expected Version Number in Canary am: 2201d52b4c am: 2cbe56b613
am: ef03c6795e

Change-Id: I134e9c8f587b666b19debf8517a589208b256ed7
2016-10-19 23:53:06 +00:00
John "Juce" Bruce
2201d52b4c Update Expected Version Number in Canary
(This is a merge of go/wvgerrit/21580)

The version number for N-MR1 has been increased to 7.1.1, which
triggered our version number canary. Since this is still N-MR1, no
Widevine version number update is necessary as we already updated it for
N-MR1, but the canary needs to be updated.

Bug: 32018966
Change-Id: Ia1d673f837d9c6a5935f26beec7372b25ea3a6b9
2016-10-19 13:36:01 -07:00
Fred Gylys-Colwell
eb3f8b786a File util, generic crypto, and key query
This CL merges several CLs from the widevine repo:

http://go/wvgerrit/18012 Add support for querying allowed usage for key.
http://go/wvgerrit/17971 Add per-origin storage.
http://go/wvgerrit/18152 Add OEMCrypto's generic crypto operations to CDM.
http://go/wvgerrit/17911 QueryKeyControlInfo => QueryOemCryptoSessionId

Note: numbering in wv_cdm_types.h was added in this CL and will be
back ported to wvgerrit in a future CL.

Change-Id: Idb9e9a67e94f62f25dc16c5307f75a08b3430b64
2016-09-14 16:43:07 -07:00
Fred Gylys-Colwell
24124ea6e3 Pull cache flush out of Haystack am: 84d7185e5f am: 6304a242ae
am: 4354c9182a

Change-Id: I826e93e08dc046b52aea97a3619e73dae98fb2db
2016-09-12 17:30:52 +00:00
Fred Gylys-Colwell
84d7185e5f Pull cache flush out of Haystack
Merge of http://go/wvgerrit/20924

This CL pulls the cache flush code out of the haystack code and into
the adapter level.  This is so it will be built with processor
specific compiler flags instead of as part of the precompiled binary.

level3/mips/libwvlevel3.a  Level3 Library 4465 Sep 10 2016 21:44:37
level3/arm/libwvlevel3.a  Level3 Library 4445 Sep 10 2016 21:30:01
level3/x86/libwvlevel3.a  Level3 Library 4464 Sep 10 2016 21:49:53

b/30550782 Battery Problems

Change-Id: I8967da498a43cabe82e78345162705dc2fcdb859
2016-09-10 21:55:52 -07:00
John "Juce" Bruce
38eb094433 Widevine Version Number for NYC-MR1 am: 15ca8148a8 am: 08a706f1b0
am: 3778d8218a

Change-Id: Ic91ea69f4e7c9e809ba8bba649540d1c04cd2485
2016-09-02 20:50:23 +00:00
John "Juce" Bruce
08a706f1b0 Widevine Version Number for NYC-MR1
am: 15ca8148a8

Change-Id: I6faba922cc7b02cf4e2a7a274cdd554bc294deb1
2016-09-02 20:15:01 +00:00
John Bruce
3fbc2106d8 Merge "Widevine Version Number for NYC-MR1" into nyc-mr1-dev 2016-09-02 20:09:55 +00:00
John "Juce" Bruce
eb153e78fc Fix cens Mode in Android CDM am: e0f4942b8f am: 442099fb15
am: 67682ddf1a

Change-Id: Idb1f713da3002733152544dd6eae2da06119dbdb
2016-08-30 05:06:47 +00:00
John "Juce" Bruce
442099fb15 Fix cens Mode in Android CDM
am: e0f4942b8f

Change-Id: Ie043c99a62c6f04c6b5733b47767d8873111a43c
2016-08-29 21:24:27 +00:00
John Bruce
bf53608a4e Merge "Fix cens Mode in Android CDM" into nyc-mr1-dev 2016-08-29 21:19:13 +00:00
John "Juce" Bruce
e0f4942b8f Fix cens Mode in Android CDM
(This is a merge of go/wvgerrit/20500)

This patch removes the logic that calculates the "pattern offset" from
the Android glue layer. There is no such thing as a pattern offset, and
setting this value to anything other than zero may break cens mode on
some devices.

To reduce the risk of setting this value to anything other than zero,
the offset_blocks parameter has been removed from the pattern descriptor
in the CDM Core. It will have to remain part of OEMCrypto v11,
unfortunately, but the code to set it to zero is now centralized in
CryptoSession.

Bug: 28726863
Change-Id: I9c5bfe470fe251c7a57901dc2e998f4dab7fe7d7
2016-08-26 16:02:21 -07:00
Rahul Frias
2ec84f7338 Do not convert the protection scheme to network byte order am: 6a206191f0 am: fa55cf181b
am: 1ca2348287

Change-Id: I86b1e333b20b137a4e61604b392f8059f7a42719
2016-08-23 23:20:07 +00:00
John "Juce" Bruce
15ca8148a8 Widevine Version Number for NYC-MR1
(This is a merge of go/wvgerrit/20402)

This updates the version number to v4.1.0 for the NYC-MR1 release. It
also updates the canary to pass on the nyc-mr1-dev branch.

Bug: 30813903
Change-Id: I05de038ff52e9f7633efff7011052b48b59d90fa
2016-08-23 15:34:39 -07:00
Rahul Frias
6a206191f0 Do not convert the protection scheme to network byte order
[ Merge of http://go/wvgerrit/19960 ]

Protections schemes are specified using a 4CC code {"cbc1", "cbcs",
"cenc", "cens"}. A host to network conversion was performed when the
PSSH was created and inserted into the license request. A reverse
conversion was performed when the code was extracted from the
license response.

These conversions are problematic if the PSSH is created externally and
passed into mediaDrm. To address this, the conversions have been removed
and allow protobuf to handle byte ordering. For backward compatibility
we allow codes in either ordering.

b/30713238

Change-Id: I25f01ecc621549fd3c13b443e4c8b89168463249
2016-08-23 12:51:12 -07:00
Dan Albert
eadd3689a2 Stop hard coding gtest paths.
These are automatically exported by libgtest.

Change-Id: Ia55222989523ecda7a4a686ef794040515f56224
Test: mma
Bug: None
2016-08-22 13:53:20 -07:00
Jeff Tinker
5747f51a98 Annotate CDM error enums with their values
This makes it easier to translate an error code
number to the corresponding enum.

Merge of https://widevine-internal-review.googlesource.com/18793/
from the widevine repo.

Change-Id: I7d07f16e5477decd27fcc5391fc62b1bd254d4a3
2016-08-02 20:56:16 +00:00
Rahul Frias
f99c890116 Merge \\\"Upgrade TLS version in integration tests\\\" into nyc-dev am: 1ebaf6ad82 am: 6cd9b50064
am: 88a9525513

Change-Id: I6f18b5707716795b02ae971d101110a651e937e9
2016-06-20 20:13:38 +00:00
Rahul Frias
1ebaf6ad82 Merge "Upgrade TLS version in integration tests" into nyc-dev 2016-06-20 19:55:27 +00:00
Rahul Frias
b552a133c2 Upgrade TLS version in integration tests
[ Merge of http://go/wvgerrit/18295 ]

SSL v3 is being disabled across Google infrastructure. Networking
code in integration tests used SSL v3 during HTTPS protocol negotiation.
Once this is disabled, it will cause integration test failures at
staging and UAT license servers.

With this change the client will use TLS 1.2. Insecure cipher suites
(TLS_RSA_WITH_RC4_128_MD5, TLS_RSA_WITH_RC4_128_SHA,
 TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, TLS_ECDHE_RSA_WITH_RC4_128_SHA)
have been disabled as well.

b/29356581

Change-Id: I98a04d345fe83c48132b9d79986a21cc84827dc8
2016-06-17 22:28:56 -07:00
Jeff Tinker
e046b3283b Update the expected android build version for NYC release am: 2bd6131162 am: 3c5ca90637
am: 4818bca635

Change-Id: I50789f65050411de888c43cd8b45df4532b6c596
2016-06-17 19:54:04 +00:00
Jeff Tinker
2bd6131162 Update the expected android build version for NYC release
bug: 29270537
Change-Id: I2f85dd95e1a2b9eaa79299441b48716599211eea
2016-06-17 00:39:33 +00:00
Jeff Tinker
6219322a1e Fix the order of test case name and test name
In the unit tests, the test case name and test name
are logged, but currently the test case and name are
reversed.  This CL orders them correctly, so instead
of, e.g. CheckHDCPCapability.OEMCryptoClientTest, we
get OEMCryptoClientTest.CheckHDCPCapability as intended.

Merge of go/wvgerrit/18045 from widevine repo

Change-Id: I20bb2d47de0c84b3a1f00bb46af5ed0a45d7fc56
2016-06-01 19:07:19 +00:00
Rahul Frias
e33895f5de Report OEMCrypto security patch level
[ Merge of http://go/wvgerrit/17959 ]

This will allow the license server to base licensing decisions on the
devices security module revision.

b/28882058

Change-Id: I574e7686bb305397946d2bfaff504cfae242e628
2016-05-23 10:50:07 -07:00
John "Juce" Bruce
6d2822f6c6 Don't Validate Crypto Mode for Unencrypted Decrypt
(This is a merge of http://go/wvgerrit/17661)

Because Widevine core always has a decrypt mode set, even on unencrypted
calls where we potentially do not know the crypto mode, it will reject
unencrypted decrypt calls for sessions that have been flagged as
AES-CBC, since the crypto mode defaults to AES-CTR.

The fix is to not validate the crypto mode on unencrypted decrypt calls,
as the data won't be getting decrypted anyway.

Bug: 28423928
Change-Id: If848834dd498ca96983a2b69d448b8d81d50e0a4
2016-04-27 12:20:18 -07:00
Rahul Frias
ecfd61e803 Merge "Modify QueryStatusL3 test to allow for L3 devices" into nyc-dev 2016-04-15 22:51:56 +00:00
Fred Gylys-Colwell
2717f29707 Specify generic encryption buffer sizes
Merge from widevine repo of http://go/wvgerrit/17463

This CL updates the unit tests to verify that
OEMCrypto_Generic_Encrypt and OEMCrypto_Generic_Decrypt can handle a
buffer size of at least 100k.  It also adds code to the
oemcrypto_dynamic_adapter so that buffer sizes that are larger than
100k are broken into chunks of 100k.

All Nexus devices targeted for N pass these tests.

b/27040752

Change-Id: Iaf5c65d2f0b69e60f03cc99732d1ecab60658049
2016-04-14 15:02:59 -07:00
Rahul Frias
c535436bab Modify QueryStatusL3 test to allow for L3 devices
[ Merge of http://go/wvgerrit/17501 ]

Widevine request_license_tests were written with the expectation that
devices would by default be enabled for security level 1 and fallback
to level 3 if needed. Some devices such as seed are L3 only and results
in failures in the QueryStatusL3 test. This CL corrects the test's
expectation.

b/26902214

Change-Id: Ie84554337cd3716d120f67e592888af0cde719c7
2016-04-13 10:30:07 -07: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 "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
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
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
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
Brian Carlstrom
8186284683 vendor/widevine: Make Thread::run threadName argument required
Bug: 27557176
Change-Id: I652bb1821190a20b059b70b9b8bacd079f731cbb
2016-03-12 16:08:29 -08:00