Commit Graph

915 Commits

Author SHA1 Message Date
Scott Randolph
cfcdceaa4f Use explicit .c_str() for hidl_string
hidl_string no longer will provide an implicit cast to const char* as it
interfers with other expected behaviors of the class.  It now emulated
std::string in requiring a call to .c_str() to get the same behavior.

Bug:  36532780
Test:  Build the tree
Change-Id: I2ce4354619a99d7c5ae8b39762d5506891ccd1ed
2017-04-06 10:58:56 -07:00
Edwin Wong
72f89a3b7f Merge "Remove dependencies from frameworks C++ containers." into oc-dev 2017-04-06 04:18:27 +00:00
TreeHugger Robot
8e041f9fd3 Merge "Fix compiler warnings" into oc-dev 2017-04-06 00:19:38 +00:00
Edwin Wong
d9e7070de7 Remove dependencies from frameworks C++ containers.
Replace AString, KeyedVector, List, String8 and Vector
with stl containers. Remove corresponding frameworks
libraries.

Test: Play Movies & TV (streaming and pinning)
Test: Netflix
Test: unit tests

bug: 34677927
Change-Id: I125f45054987d69bbca59c1ffdcbe8add38c3c13
2017-04-05 22:46:04 +00:00
TreeHugger Robot
82a0ed59fe Merge "Build libvtswidevine to relative directory." into oc-dev 2017-04-04 23:05:29 +00:00
Ryan Campbell
cdaeb0716c Build libvtswidevine to relative directory.
Build libvtswidevine module relative to the directory
drm-vts-test-libs.

Test: make vts; libvtswidevine.so is in correct place.
Bug: 36889176
Bug: 36817233
Change-Id: Iadb5bd6e71a1a7c99a69feff2ecb7bded90af24d
2017-04-04 13:26:01 -07:00
John W. Bruce
b99a4c736f Turn on 64-bit Executables on Supported Platforms
This commit changes the unit tests and HAL Service to run as 64-bit on
devices that have enabled 64-bit DRM Plugins.

Bug: 36076017
Test: Turned on the flag for a device and used the file command to
      verify that all binaries were built as 64-bit.
Test: Turned the flag back off and verified that all binaries were built
      as 32-bit. This should affect no current devices.
Change-Id: Ieb7218f15b9359f2038a6f60b8c994b16d2b5b53
2017-04-01 19:05:30 -07:00
Jeff Tinker
749ce0efcf Fix compiler warnings
Formats for size_t were incorrect

Change-Id: Ibdfdd734b9fe9e74e014fe10152ad8b9baf2d6f2
2017-03-31 16:19:41 -07:00
TreeHugger Robot
b3ea54b6dc Merge "Add checks for invalid parameters" into oc-dev 2017-03-31 05:29:54 +00:00
TreeHugger Robot
2b49e7c4ec Merge "DRM VTS Vendor module for widevine" into oc-dev 2017-03-31 05:29:54 +00:00
John Bruce
0fba3719e7 Merge "Fix & Improve Test-Building and -Running Scripts" into oc-dev 2017-03-31 00:56:55 +00:00
Jeff Tinker
76f43abcbe Add checks for invalid parameters
Part of VTS test suite validation

related-to-bug: 32815560

Test: drm hal vts test
Change-Id: I52be29cd46f535482a761f98acf6ff28870c061c
2017-03-30 16:15:01 -07:00
Jeff Tinker
01cb3cb787 DRM VTS Vendor module for widevine
This module is used with the drm VTS tests as part of HIDL/HAL
testing.  For background reference:
hardware/interfaces/drm/1.0/vts/doc/Drm_Vendor_Modules_v1.pdf

Change-Id: I38eb13696343e08fa2a1758219350d25698bfb7d
related-to-bug: 32815560
2017-03-30 23:07:11 +00:00
John W. Bruce
f2463075ac Fix & Improve Test-Building and -Running Scripts
(This is a merge of wvgerrit/24922)

This contains several fixes and improvements to the
build_and_run_all_unit_tests.sh and run_all_unit_tests.sh scripts:

* All tests are now identified as vendor binaries and thus are stored in
  the /vendor/bin/ directory instead of /system/bin/. Previously, some
  tests had moved to /vendor/bin/ but the scripts had not been updated,
  causing these tests to fail to run.
* The -j parameter can now be passed to build_and_run_all_unit_tests.sh,
  for those who want to speed up their build by using multiple cores.
* The 64-bit library directories are now added to the library search
  path, in anticipation of devices with 64-bit DRM Plugins.
* Checking for Verity protection is now done in
  build_and_run_all_unit_tests.sh (which is the script that actually
  modifies the file system) instead of just in run_all_unit_tests.sh.
* The library search path is no longer set unnecessarily for
  libwvdrmengine_hidl_test.
* The Treble-only tests and non-Treble-only tests now only run on
  devices that meet their respective criteria.

Bug: 36071236
Test: Ran build_and_run_all_unit_tests.sh
Change-Id: Iea236880c4445858111c801dfa278a528bca0f6c
2017-03-29 19:01:04 -07:00
Edwin Wong
957d4a30dd Fix testOEMCryptoVersion
Merge from go/wvgerrit/24882:

The result of crypto_session.GetApiVersion is misinterpreted.

Test: ANDROID_BUILD_TOP= -gts/tools/gts-tradefed run gts
 -m GtsMediaTestCases --test com.google.android.media.gts.
 MediaDrmTest#testOemCryptoVersion

Test: ANDROID_BUILD_TOP= -gts/tools/gts-tradefed run gts
 -m GtsMediaTestCases --test com.google.android.media.gts.
 MediaDrmTest

bug: 36728950
Change-Id: I72a05608f778fa81689013d3b231010b71329ea1
2017-03-29 15:49:59 -07:00
Fred Gylys-Colwell
92dff24180 Merge "Disable new unit tests for old oemcrypto" into oc-dev 2017-03-29 20:22:23 +00:00
Edwin Wong
54061a8bb8 Widevine HAL must not access mediametrics binder service.
Widevine HAL is not part of framework/system image and thus it is not
permitted to use Binder. Binder-like mechanisms which are permitted are
HwBinder  or VendorBinder (for communications only with vendor image
components).

Remove references to MediaAnalyticsItems used by ami_adapter.*.

Test: Play Movies & TV (streaming and pinned content)
Test: Netflix
Test: Widevine unit tests

bug: 36576915
Change-Id: I786f206c01d7c5ebfce719f3f51f5f7927f0359e
2017-03-28 14:24:02 -07:00
Fred Gylys-Colwell
17da2fbfdd Disable new unit tests for old oemcrypto
Merge from Widevine repo of http://go/wvgerrit/24863

The oemcrypto unit tests GenericKeyDecryptSameBuffer and
GenericKeyDecryptSameBuffer require features in oemcrypto v12, so they
should not be run on devices that report oemcrypto v11 or earlier.

b/36071236

Test: Unit tests run on Ryu and Bullhead.
Change-Id: Ia6645559ed98cae8d9807a14d6f0e514c5c4c615
2017-03-28 13:29:01 -07:00
John W. Bruce
bfe6046199 Build Android Unit Tests 32-bit Only
(This is a merge of http://go/wvgerrit/24738)

The change to enable 64-bit as a possible target for Widevine Android
made all the unit tests build as 64-bit on compatible platforms. Since
none of these devices support 64-bit properly yet, this is a mistake.
This patch restores unit test builds to being 32-bit only for now.

In the future, when the switch for 64-bit-supporting devices is added,
it will also switch the unit tests to 64-bit mode.

Bug: 36071236
Test: Verified unit test format with "file" command.
Change-Id: Ib4d3678181f3221b85fe6409f1d842dd15af3daa
2017-03-23 17:09:15 -07:00
TreeHugger Robot
99566d48e9 Merge "Clean Up Warnings in Android Glue Code" 2017-03-23 19:52:49 +00:00
Fred Gylys-Colwell
85365a1497 Fix or ignore compiler warnings
Merge from Widevine repo of http://go/wvgerrit/24688

b/35466719

Change-Id: If89f0cad0c61f37536a84f8dadaf08072356343a
2017-03-22 14:07:08 -07:00
John W. Bruce
92d26ff87e Clean Up Warnings in Android Glue Code
(This is a merge of go/wvgerrit/24739)

This cleans up some warnings in the Android glue code:

1) Checking if unsigned values are >= 0.
2) Using {0} initializer syntax instead of fully expanding to {0,0}.

Bug: 34394125
Test: Verified compilation passes
Change-Id: Id59730b97da7fce320f634451a44a4df4bf0b494
2017-03-22 11:08:32 -07:00
Edwin Wong
c4aad89fd0 Rename libhidl_utils to libwidevinehidl_utils.
This library is local to vendor/widevine HAL service, rename to
indicate this is used only by widevine HAL.

Test: Play Movies & TV (streaming and pinned)

Test: Netflix

bug: 36430909
Change-Id: Iacaf78f4223bf305569e7f1d04dd4e4ad0a87727
2017-03-20 11:14:36 -07:00
Edwin Wong
266898a352 Fix CTS post submit failures
MediaCodecTest.android.media.cts.MediaCodecTest.testCryptoError
was failing due to incorrect error code translation introduced
by the drm hidl hal.

Test: ANDROID_BUILD_TOP= ./android-cts/tools/cts-tradefed run cts
  --module CtsMediaTestCases --test
  android.media.cts.MediaCodecTest#testCryptoError

bug: 35137940
Change-Id: I5177367df7b57fe23a4b17c38462886786537140
2017-03-15 13:21:37 -07:00
Rahul Frias
2ec7ec27bb Address warnings in CDM unittests
[ Merge of http://go/wvgerrit/24600 ]

Test: Unit test only change. Verified by rerunning unittests.

b/36221430

Change-Id: I36a8a0a5df400673689280cbf53ba9394f827c90
2017-03-14 12:13:12 -07:00
Adam Stone
dd88c13fb1 Trim unnecessary CDM metrics.
Bug: 35269103
Test: Removing unnecessary code. Existing tests pass.
Change-Id: I1ba8572a8b3fabbf707e77b366717c9ba3069ace
2017-03-13 19:10:39 -07:00
John Bruce
5cd6622a75 Merge "Enable SPOIDs in Treble Widevine Glue Layer" 2017-03-10 03:17:52 +00:00
John Bruce
f37e37c37b Merge "Implement Widevine drm HIDL HAL service." 2017-03-10 03:13:01 +00:00
Fred Gylys-Colwell
ca2f1641c3 Merge changes I2f7052b6,Ifbfaf97c
* changes:
  Test Cleanup
  Report error OEMCrypto_ERROR_ENTRY_IN_USE
2017-03-08 20:44:36 +00:00
Fred Gylys-Colwell
2dbc81318a Merge "Give Nonce Error Explicit Name" 2017-03-08 20:44:00 +00:00
TreeHugger Robot
1322df2d28 Merge "Clean up how metrics were disabled" 2017-03-07 03:55:47 +00:00
Fred Gylys-Colwell
9bd9bcd61a Test Cleanup
Some tests code was not correctly merged from the widevine side.

An initializer in generic_crypto_unittest.cpp was missed in
http://go/wvgerrit/23767

bug: 35951647

Change-Id: I2f7052b621989a032179346edf43dcaf6cb7d921
2017-03-03 21:30:02 +00:00
Fred Gylys-Colwell
14c3a3865a Give Nonce Error Explicit Name
Merge from widevine repo of http://go/wvgerrit/24421

A nonce generation error for a certificate provisioning request had a
generic name Error2.  However, this is an actionable error by the
application: the application should wait 1 second and try again.
Therefore it deserves a more descriptive name.

bug: 35926133
bug: 35879493

Change-Id: I6c87a5a762cb970c9530a55c993d7acbed773a00
2017-03-03 21:25:20 +00:00
John W. Bruce
d9b90be205 Enable SPOIDs in Treble Widevine Glue Layer
Adds code to the Widevine Glue Layer that drives the generation and use
of SPOIDs on platforms that support SPOIDs. (All devices whose first
release is Android O or later.) Note that this only applies to the new,
Treble-ized API. If the Widevine DRM Plugin is accessed through the old
API, it will not use SPOIDs. This is by design because the old API does
not provide an application package name, so SPOID generation is no
better than the existing, origin-based solution.

Bug: 27101531
Test: Unit tests
Test: GTS tests
Test: Google Play
Change-Id: I80f79fca84065105e218e9070a1d5299c8e33500
2017-03-02 13:46:16 -08:00
Edwin Wong
2dc53442e7 Implement Widevine drm HIDL HAL service.
Modify Android mediadrm and mediacrypto glue layer to use
HIDL interface.

Test: Play Movies (streaming and offline playback)

Test: ANDROID_BUILD_TOP= ./android-gts/tools/gts-tradefed
run gts -m GtsMediaTestCases

Test:
adb shell /system/bin/libwvdrmengine_hidl_test

Test:
adb shell /system/bin/libwvdrmmediacrypto_hidl_test

Test:
adb shell /system/bin/libwvdrmdrmplugin_hidl_test

bug: 34628973
Change-Id: Icd5f2dd556acb9874697963b4d7d62cb7c943e74
2017-03-02 13:46:11 -08:00
Fred Gylys-Colwell
ce535ad21e Report error OEMCrypto_ERROR_ENTRY_IN_USE
Merge from Widevine repo of http://go/wvgerrit/24311

This CL adds the error OEMCrypto_ERROR_ENTRY_IN_USE to unit tests, the
reference oemcrypto, and the level 3 haystack.

bug: 35879590
Change-Id: Ifbfaf97c0045147aed4498ec0b57d90b26f100d0
2017-03-02 10:55:05 -08:00
Fred Gylys-Colwell
70ffdb1c6a Backwards Compatibility Tests
Merge from Widevine repo of http://go/wvgerrit/24241

The CL also only modifies existing tests so that they will pass
with an old version of OEMCrypto, or it filters out the tests so
that they do not run.  This positions us so that we can more
easily verify how much backwards compatibility we expect to work.

bug: 35877886

Change-Id: Iadc06672d7f9cef75800662ff83389c504a3fd04
2017-03-02 10:15:10 -08:00
Fred Gylys-Colwell
a4506542df Merge "Source and destination buffers may point to same buffer" 2017-03-02 04:44:11 +00:00
John Bruce
1178b10992 Merge "Enable 64-bit Android Builds" 2017-03-02 04:33:31 +00:00
Fred Gylys-Colwell
872fd1077e Merge "Avoid Nonce Flood in core/test/cdm_engine_test.cpp" 2017-03-02 03:46:58 +00:00
Fred Gylys-Colwell
5fa587bd0b Merge "Widevine L1 Provisioning Models" 2017-03-02 03:46:36 +00:00
John W. Bruce
df0dad5311 Enable 64-bit Android Builds
(This is a merge of go/wvgerrit/23686)

This patch removes the makefile lines that previously prevented the
Widevine DRM Plugin from being built as 64-bit on Android. 64-bit
builds are now fully supported.

Only one piece of CDM code has had to change. Due to a bug in
libprotobuf before v3.0, int64 values from protobufs are technically a
different type from int64_t values in code on some 64-bit
architectures. Both have the same in-memory representation at runtime
but are seen as distinct types by the compiler. The compiler will
automatically convert in most places, but template instantiation is
not one of them, so a few places that passed a Protobuf int64 directly
into a template had to be modified.

Please note that tweaks to the mediadrmserver (not covered by this
patch) are needed in order for it to run as 64-bit and load 64-bit DRM
Plugins. Please also note that, as we have no 64-bit L1 OEMCrypto on
any devices, using the 64-bit mediadrmserver and Widevine library will
make your device fall back to L3 for the time being.

Bug: 18949752
Test: OEMCrypto unit tests
Test: Widevine unit tests
Test: Google Play (on Marlin)
Test: Widevine GTS Tests (on Marlin)
Change-Id: Ib6cdf2dd1ff75a1c473cacdc5e22397caa0a656c
2017-03-02 02:58:56 +00:00
Fred Gylys-Colwell
848d851441 Merge "Clean up oemcrypto dynamic adapter and add level 3 libraries" 2017-03-02 02:48:43 +00:00
Fred Gylys-Colwell
4025322185 Source and destination buffers may point to same buffer
Merge from Widevine repo of http://go/wvgerrit/23581

This CL adds some unit tests to oemcrypto to verify that DecryptCENC
and the generic encrypt and decrypt functions behave correctly when
the input and output buffer is the same. i.e. decrypt in place.

The mock and haystack are also updated to pass the tests.

b/34080119

Change-Id: Ie295bdaddbb8058bebb36f6dab092d307f249ecd
2017-03-01 18:27:38 -08:00
Fred Gylys-Colwell
27c01e82b5 Clean up oemcrypto dynamic adapter and add level 3 libraries
Merge from Widevine repo of http://go/wvgerrit/24043

This CL simplifies the way the oemcrypto dynamic adapter handles
backwards compatibility while looking up old function pointers.

It also puts in guards for functions that do not have pointers.

Current Level 3 libraries merged from http://go/wvgerrit/23686/

level3/arm64/libwvlevel3.a  Level3 Library 7283 Feb 15 2017 13:39:10
level3/mips64/libwvlevel3.a  Level3 Library 7285 Feb 15 2017 13:51:12
level3/arm/libwvlevel3.a  Level3 Library 4445 Feb 15 2017 14:20:04
level3/x86_64/libwvlevel3.a  Level3 Library 7284 Feb 15 2017 13:43:04
level3/x86/libwvlevel3.a  Level3 Library 4464 Feb 15 2017 14:14:55
level3/mips/libwvlevel3.a  Level3 Library 4465 Feb 15 2017 14:10:04

Test: OEMCrypto Unit tests pass on bullhead, fugu, and all 
six emulators.  A bullhead was crippled to use L3 only, and 
Play Movies worked OK.  ExoPlayer tests were also run on the 
bullhead.  L1 was re-installed on the bullhead, and Play Movies and 
ExoPlayer tests were repeated with no problems.

Bug: 18949752
Bug: 31458046

Change-Id: I8668fde1ce8a045c71bf33c566f3ff86e11821c5
2017-03-02 01:49:52 +00:00
Fred Gylys-Colwell
55db447738 Widevine L1 Provisioning Models
Merge from Widevine repo of http://go/wvgerrit/24305

This CL adds a pdf of the document "Widevine L1 Provisiong Models"
to the source directory so we can share with partners.

bug: 35880276

Change-Id: I60ea958b2e4cefc783c692ad78784b7071f59e2e
2017-03-01 13:44:16 -08:00
Fred Gylys-Colwell
e2f9028c57 Avoid Nonce Flood in core/test/cdm_engine_test.cpp
Merge from Widevine repo of http://go/wvgerrit/24205

This adds a single retry to each call into cdm_engine that uses a
nonce. This should prevent spurious tests failing because they
accidentally generated a nonce flood.

bug: 35879493
Change-Id: I99a5f2063f04befb74361ff44c4ce8e34f41e89d
2017-03-01 13:39:56 -08:00
Fred Gylys-Colwell
3b7b2c91c1 Merge "Clean Up OEMCrypto Header" 2017-03-01 18:40:51 +00:00
Fred Gylys-Colwell
7112a5eec3 Add more slack to timing tests
Merge from Widevine repo of http://go/wvgerrit/24042

This CL adjusts the tolerance in tests that check the license_received
time.  This was periodically failing because a nonce flood might delay
the test by 1 second, which was being rounded up to 2.  The tolerance
is now 3.  The time is explicily used when it is available.  Some
extra logging is also added to the mock.

bug:31458046

Change-Id: I450880cb3cd8bd5ef66cba13b94dd963d2663d9a
2017-03-01 06:30:43 +00:00
Fred Gylys-Colwell
3a9c9ce498 Clean Up OEMCrypto Header
Merge from Widevine repo of http://go/wvgerrit/23482

Now that the documentation has been approved, it's time to
copy text from http://go/oemcrypto to OEMCryptoCENC.h

This also has all the little tweaks to the documents that have been
requested over the past couple of weeks.

b/31458046

Change-Id: I5b865031eb7945005c06bf1b00ecfaaedcad15f4
2017-02-28 22:26:05 -08:00