Commit Graph

750 Commits

Author SHA1 Message Date
Jeff Tinker
eafc65e794 resolved conflicts for merge of 65a35c7d to klp-dev
Change-Id: If8f3ff6b3f638038da57fde85edee982f7ef8144
2014-04-04 15:48:47 -07:00
Jeff Tinker
65a35c7df6 Update DASH demo player for OEMs
OEMs testing Widevine/DASH playback have requested
additional test content.  This updated demo apk
provides it.

bug: 12789209
Change-Id: Idba85a1569bc59e43cfcb15b762d0d5da74c91aa
2014-04-04 12:09:53 -07:00
Rahul Frias
cbcc609d5b Update YT CP server URI to point to the UAT server
Privacy tests from request license were failing as the YTCP drm
server location had changed.

Also updates the MediaDrmAPI test to reference the UAT server

This affects OEMs doing Widevine integrations on KK devices.

Merge of https://widevine-internal-review.googlesource.com/#/c/9233/
from wv cdm git repository

b/13324394

Change-Id: I97152b2a79a9088303e5fc4a5c07a413e4c85e15
2014-04-01 01:36:49 +00:00
Jeff Tinker
47d85ef54b Merge "Remove external links from PDF documents." into klp-dev 2014-03-14 20:44:13 +00:00
Edwin Wong
dc3eebafa6 Upgrade Widevine Classic to 4.5.0.10120
Fix crash in WV_Teardown() causes by deleting shared output parser object.

We used to have a single output parser object and a single memory chunk object
that are shared by multiple sessions. When we delete the output parser, another
session may still be using it. The deletion causes a native crash intermittently.

The fix addresses these two issues: i)output parser object is now created per
session, and ii)add reference count to keep track of the single memory chunk
object use so we do not delet it while other sessions are still using it.

Merge of https://widevine-internal-review.googlesource.com/#/c/9253/ and
https://widevine-internal-review.googlesource.com/#/c/9271/ from widevine repo
RC/4.5.0/601_AndroidOS_K branch.

Change-Id: I6426b544a6d0c264ec91a89e92153862b87607f3
related-to-bug: 13208359
2014-03-13 20:30:05 -07:00
Rahul Frias
21304f16fe Correct encoding of make/model information
Some make and model information was not being reported correctly to the
license server. "HTC One X+" was encoded as "HTC+One+X+" instead of
"HTC+One+X%2B", which when decoded becomes "HTC One X ". Make and model
information is now correctly url encoded.

Merge of https://widevine-internal-review.googlesource.com/#/c/9240/
from the widevine repo.

b/12722013

Change-Id: I987691c850648f92b408f8749327ff43b13b43a7
2014-03-13 11:14:44 -07:00
Fred Gylys-Colwell
9b6540b148 Remove external links from PDF documents.
A bug (8132682) in "Download as PDF" from Google Docs makes table of
contents links point back to the original document.  This causes
problems with external customers.

This change uses the following work around: print the document, and
select "Save as PDF" as the printer.

This only removes the links.  It does not fix them.  When bug 8132682
is fixed we can re-download the documents with proper links.

bug: 12585419
Change-Id: I4e4b0ff8d083192fd2db6a569d1c3f84c8ec4fa9
2014-01-31 11:21:34 -08:00
Jeff Tinker
1c5ca642cb NULL terminate device unique ID before use
bug: 12228689

If the device ID returned from OEMCrypto_GetDeviceUniqueId is
not NULL terminated in the OEM code, trailing garbage characters
may be included in the license request's client_identification
field, which could be rejected by the server's utf8 parser if
they are invalid characters, causing a license request failure.

The code for CryptoSession::GetDeviceUniqueId should use the
updated id_length from OEMCrypto_GetDeviceUniqueId to adjust
the length of the *device_id string before returning the result
to the caller.

Change-Id: I659866d4234d4f21ec051590fc7bc6367904a48a
2013-12-19 16:05:06 -08:00
Jeff Tinker
78a9d5cd9a Merge "Add tests for key sharing mode and decrypting without keys" into klp-dev 2013-12-19 21:51:56 +00:00
Jeff Tinker
623920d83f Fix seg fault when playing WV video on Molly with the MediaShell
During session sharing, when a sample contains both clear and encrypted
subsamples, subsample flags would on occasion be set incorrectly. Clear
subsamples would be sent to the current session, while encrypted ones
would incur a key id to session lookup and be sent to the appropriate session.
The sessions would then receive decrypt calls with subsample flags
incorrectly set.

In order for this to work correctly all subsamples within a sample need to be
sent to the same session. This requires that key ids be specified and
checked if at least one of the subsamples is encrypted. If however none of
the subsamples are encrypted then a valid key id may not have been provided
to MediaCrypto, and the subsamples may be sent to any session.
In order to support this, the CDM decrypt will now allow the caller to
specify whether to validate the key Id.

Then a check is added to wvcrypto determine whether to ask the CDM to
validate the key ID based on the clear/encrypted states of the subsamples.
The list of subsamples is already being preprocessed, so this
additional check just determines if any subsamples are encrypted, and sets
the validation flag appropriately.

b/11967440

Merge of https://widevine-internal-review.googlesource.com/#/c/8510/3 and
https://widevine-internal-review.googlesource.com/#/c/8520/2 from the
widevine cdm repo.

Change-Id: If65c36a31e56b69f514f0cc547a0becf0c54c40a
2013-12-12 17:25:01 -08:00
Jeff Tinker
711a98164f Add tests for key sharing mode and decrypting without keys
Merge of https://widevine-internal-review.googlesource.com/#/c/8480/ from
widevine cdm repo.

Change-Id: Idb5ab83bceeb97016075c26c428aba692f017929
related-to-bug: 11967440
2013-12-12 16:23:19 -08:00
Jeff Tinker
5d5d1baf7a Merge "Address unit test failures" into klp-dev 2013-12-12 19:26:03 +00:00
Jeff Tinker
88063a8d20 Merge "Add additional MediaDrm API tests" into klp-dev 2013-12-12 19:25:48 +00:00
Jeff Tinker
38cc7122fd Improve unit test build script
Make the build_and_run_all_unit_tests script push individual tests
instead of doing a full sync, makes it easier to run unit tests
against release builds.

Merge of https://widevine-internal-review.googlesource.com/#/c/8405/
from the widevine cdm repo.

Change-Id: I8efda77be9ab863f616fab88c4782b7c9edb8858
2013-12-12 10:58:42 -08:00
Jeff Tinker
4ab8efc21d Add additional MediaDrm API tests
bug: 12033958

Merge of https://widevine-internal-review.googlesource.com/#/c/8402/
from the Widevine CDM repo.

Change-Id: I441eb816db69620feff0bd72c485bd3ad7ec8031
2013-12-12 10:56:51 -08:00
Jeff Tinker
68e1e7c578 Merge "Generate a unique license request ID" into klp-dev 2013-12-12 18:17:34 +00:00
Rahul Frias
f32baf91b5 Address unit test failures
A number of failures were observed,
* GPlay dev license server is being worked on. This causes random
  failures when running unit tests. Switching to the staging
  server for now.
* Occasionally, the license server times out. Introducing a retry
  mechanism do deal with HTTP responses (merge from master #45e8ddd5f)
* Release license tests are now disabled. Tests were previously passing,
  even though they were not in fact supported by the GPlay license server.
  The response included just enough information to be a valid license and
  passed minimal verification that was taking place. Additional verification
  was not necessary because session is torndown and resources released as
  soon as the response has been received.
  A change at the GPlay server now causes the release license request to be
  flagged as an error and the tests to fail. Work is in progress to
  support release of licenses at the GPlay server.
* The wrong message test (from request license tests) fails. This is
  because GPlay behaviour changed from returning a HTTP 500, when
  processing an invalid PSSH, to returning a HTTP 200 without any included
  license.
* Security level path backward compatibility tests on L3 which failed and
  caused the succeeding license request tests to fail.

b/12000457

Change-Id: I8e6adc490504475d1039793ea555a17799cb78c4
2013-12-11 16:22:58 -08:00
Madan Ankapura
3567597ada Merge "Add x86 Builds for Widevine Classic 4.5.0.10113 - DO NOT MERGE" into klp-dev 2013-12-07 02:33:12 +00:00
Rahul Frias
1b22c80568 Generate a unique license request ID
The request ID was set to a fixed value, which caused license requests
to be rejected by the YT server with TOO_MANY_STREAMS_PER_VIDEO

The request ID is now a combination of a randomly generated value and
a rolling index. This is based off a fix by gmorgan@ on the eureka
branch #98fa6e5e.

Merge of https://widevine-internal-review.googlesource.com/#/c/8496/
from the widevine cdm repo.

b/12018697

Change-Id: I6c05fea885d46aea53a07235c3e5ac65a6971eaf
2013-12-06 12:26:55 -08:00
John "Juce" Bruce
33a223dcf1 Add x86 Builds for Widevine Classic 4.5.0.10113 - DO NOT MERGE
Adds L1 x86 build of Widevine Classic that has been verified by partners.

Change-Id: Id85fea0e0311d06f0875a4aaedebaa9b00d17efa
2013-12-03 19:03:47 -08:00
Fred Gylys-Colwell
c53e0c778c Correct SelectKey return value when no keys loaded
Previously, Level 3 SelectKey returned no error when called before
any keys were loaded.  After this CL, it will return
OEMCrypto_ERROR_NO_CONTENT_KEY.

Library version:
arm  - Level3 Library Nov 20 2013 18:09:31
mips - Level3 Library Nov 20 2013 17:58:56
x86  - Level3 Library Nov 20 2013 18:13:01

bug: 11769839
Change-Id: I1b3f057e3ae9f2f174cae91f6849080345f02003
2013-11-20 18:18:43 -08:00
Jeff Tinker
113d4d0755 Add end-to-end generic encrypt/decrypt/sign/verify tests
bug: 11534771

Merge of https://widevine-internal-review.googlesource.com/#/c/8291/
from the Widevine CDM repo.

Change-Id: I76110013838f91c8009fe710586226c96de890be
2013-11-12 14:19:58 -08:00
Jeff Tinker
357e6c419c Merge "Haystack and Obfuscated OEMCrypto Level 3" into klp-dev 2013-11-08 01:54:44 +00:00
Jeff Tinker
8e5bc02e51 Merge "Allow license renewals after expiry" into klp-dev 2013-11-07 19:09:50 +00:00
Jeff Tinker
0553f411db Add ExoPlayerDemo.apk to vendor/widevine so partners can access
it and use to verify integrations.

bug: 11357407

Change-Id: Ie38cef1dfd2fe685721e7fb4f37e881326321727
2013-11-06 14:28:09 -08:00
John "Juce" Bruce
fd482527e4 L1 System Lowered to L3 Still Requires Secure Decoders
Merge of https://widevine-internal-review.googlesource.com/#/c/8263
from the Widevine repo.

Changes the behavior of requiresSecureDecoderComponent() to query the
session for whether a lowered security level has been requested
before querying the system to see what its default security level is.

As part of this, we added a new QuerySessionStatus() method to the
CDM that gets status info on a session-specific level, such as the
effective security level of a session.

Bug: 11428937
Change-Id: I5549a2fdd400cc87f567d27fcf74c473451093d6
2013-11-06 19:31:24 +00:00
Jeff Tinker
0a9f0b1dd8 Merge "Upgrade Widevine Classic to 4.5.0.10113 - DO NOT MERGE" into klp-dev 2013-11-06 18:00:53 +00:00
Jeff Tinker
dd672f0c68 Merge "Use renewal URL in license tests" into klp-dev 2013-11-06 17:24:07 +00:00
Jeff Tinker
3046902171 Merge "Search for keys in shared sessions only when content is encrypted" into klp-dev 2013-11-06 17:22:33 +00:00
Rahul Frias
774a078f1d Allow license renewals after expiry
Licenses could be renewed uptil the point of expiry. After that point
we expected that the session would have to be closed and a new one
opened with a new license loaded. Clank requested that we support
renewal of sessions past expiry.

In addition, the error returned on decryption, if OEMCrypto
determines that the KCB duration has expired, is NEED_KEY rather than
KEY_ERROR.

Merge of https://widevine-internal-review.googlesource.com/#/c/8240
from the widevine cdm repo.

b/11390539

Change-Id: I023320f3f25514cd07b368701a92100429ce1c04
2013-11-05 16:40:17 -08:00
Fred Gylys-Colwell
becb1bf0be Haystack and Obfuscated OEMCrypto Level 3
This CL contains working versions of the haystack tools and the
OEMCrypto Level 3 library for android ARM, MIPS and x86.

The version number of the level 3 library is:
android/level3/arm/libwvlevel3.a  Level3 Library Nov  4 2013 18:39:06
android/level3/mips/libwvlevel3.a Level3 Library Nov  4 2013 18:42:29
android/level3/x86/libwvlevel3.a  Level3 Library Nov  4 2013 18:41:07

bug: 9374954 MediaDrm haystack based L3 code hardening implementation.
Change-Id: Ifef13900a11e83e4257723d3c6fc7107550882a8
2013-11-05 10:32:11 -08:00
John "Juce" Bruce
84b79eccb6 Upgrade Widevine Classic to 4.5.0.10113 - DO NOT MERGE
Contains the following, BC-Triaged fixes:

Bug: 8767242
Media player error -1010 on playback

Bug: 8342523
Android Media player is able to play WVM content if license is
already acquired

Change-Id: I3ee7863a5bf214fb8c4e4aefdd05f5062d568617
2013-11-04 12:03:41 -08:00
Jeff Tinker
84e83f4a33 Merge "Move OEMCrypto_Initialize earlier" into klp-dev 2013-10-31 22:40:43 +00:00
Jeff Tinker
acb47e0f9a Move OEMCrypto_Initialize earlier
Some OEMCrypto calls are happening before OEMCrypto_Initialize.
This change moves initialization earlier so it occurs before
any other calls to OEMCrypto.

bug: 10582250
Change-Id: Ic8992e8f0738dbfeb10074a4e1543bb9931a49d5
2013-10-28 15:53:52 -07:00
Rahul Frias
64c3cb986a Use renewal URL in license tests
After a change to the GPlay license server, it no longer accepts heartbeats
at the license server URL ( https://jmt17.google.com/video-dev/license/ ).
The CDM correctly reports https://jmt17.google.com/video-dev/heartbeat/
as the renewal URL but the current test code ignores the reported URL.
The license server then rejects the request and send back an empty
license response.

This causes WvCdmRequestLicenseTest.StreamingLicenseRenewal
and WvCdmRequestLicenseTest.StreamingLicenseRenewal to fail. Request
license tests have been modified to respect the renewal URL.

Merge of https://widevine-internal-review.googlesource.com/#/c/8188
from the widevine cdm repo

b/11290339

Change-Id: I1dcf8277edce99633086fb3db8ffeb7a32a5500d
2013-10-25 13:15:56 -07:00
Rahul Frias
252a07316a Search for keys in shared sessions only when content is encrypted
Also return NEED_KEY rather than KEY_ERROR if keys are not found.

Merge of https://widevine-internal-review.googlesource.com/#/c/8250
from the widevine cdm repo.

b/11375092

Change-Id: Ibc629e8b4018f43f5f9528258563a2af79bdfb4b
2013-10-25 13:09:40 -07:00
Jeff Tinker
49e593d127 Stop policy timer before invoking session destructor
The CDM session was being destroyed before the policy timer was stopped
and before the session was removed from a list of active sessions. This
allowed race conditions, where the policy timer would try to evaluate
policy for a closed session. This led to segfaults.
b/11338324

Merge of https://widevine-internal-review.googlesource.com/#/c/8240/1
from the widevine cdm repo.

Change-Id: Ib159ccfdb763a47da573f5c06c0793c2c63886c4
2013-10-25 10:50:02 -07:00
Colin Cross
6fc2ee33c3 set LOCAL_MODULE_OWNER for libwvdrmengine.so
Change-Id: I10d63ef381a612a0177ce5a3ddd24f44b6ae05a0
2013-10-24 12:40:19 -07:00
Rahul Frias
e385ff3a7f Do not close CDM session on removeKeys
A change was introduced between jb-mr2 and klp-dev that closed
the CDM session when the removeKeys mediaDrm APIs was called.
This was introduced because there is no way of unloading keys from
an OEMCrypto session.

This caused problems for Netflix, as an exception occurred when they
tried to close a session after calling removeKeys.

Reverting to jb-mr2 behaviour for now. b/11188818 has been opened to
track a longer term resolution.

b/11185042

Change-Id: I03bc736d2bc5bdabc86cfb7b75ae8bcbc03ffc7c
2013-10-11 14:42:37 -07:00
Jeff Tinker
9b1d8119e5 Merge "Allows sharing of keys between sessions" into klp-dev 2013-10-11 17:02:00 +00:00
Rahul Frias
56bd5d5d82 Allows sharing of keys between sessions
This change allows the app to specify that keys may be shared by sessions.
The app enables this by setting the session sharing properties in DRM Plugin.
Keys are shared only amoungst the specified group of sessions.

Merged from widevine CDM repo
 * https://widevine-internal-review.googlesource.com/#/c/8019/
 * https://widevine-internal-review.googlesource.com/#/c/8021/

Bug: 11013707
Change-Id: I52db41a53138b4fc563ebc6d38a623f23f7cdfb5
2013-10-10 23:23:39 -07:00
Rahul Frias
a74980b2f1 Address key selection and decryption concurrency issues
Decryption calls though multiple threads may result in race conditions
between the setting of the key and the actual call to decryption.
This results in OEMCrypto errors when the buffer type used in
decryption did not match the key selected. This is addressed by
having the the two calls be in the same critical section.

b/11009857

Change-Id: I74f1a0689ca17114f3cdd029022013b05c415acd
2013-10-02 15:44:39 -07:00
Fred Gylys-Colwell
67c794bac3 Add unit test for empty mac key
Merge of change https://widevine-internal-review.googlesource.com/7950.

In the OEMCrypto library, it is valid to call LoadKeys with an empty
mac key.  The library should not update the mac and enc keys and
should not throw an error.

Since we have seen this behavior in several implementations, a unit
test should be added that verifies the correct behavior.

bug: 11032674
Change-Id: I011ba39c8abc47547226a722143e92dac3f63dc5
2013-10-01 19:02:16 -07:00
John "Juce" Bruce
fc0c408c8d am 5a2e3f41: (-s ours) am 1e0e3e3a: (-s ours) am 470fb26f: am 071f6998: DO NOT MERGE - Update Widevine Classic on JB-MR1.1 to 4.5.0.10107
* commit '5a2e3f41369239f6e614c30bef2fe2c116e464b0':
  DO NOT MERGE - Update Widevine Classic on JB-MR1.1 to 4.5.0.10107
2013-10-01 15:43:07 -07:00
John "Juce" Bruce
5a2e3f4136 am 1e0e3e3a: (-s ours) am 470fb26f: am 071f6998: DO NOT MERGE - Update Widevine Classic on JB-MR1.1 to 4.5.0.10107
* commit '1e0e3e3a9f220077a4bd61a8b34ad52d66773d1a':
  DO NOT MERGE - Update Widevine Classic on JB-MR1.1 to 4.5.0.10107
2013-10-01 15:23:13 -07:00
John "Juce" Bruce
1e0e3e3a9f am 470fb26f: am 071f6998: DO NOT MERGE - Update Widevine Classic on JB-MR1.1 to 4.5.0.10107
* commit '470fb26f7201e0f3161e5f0aea95743ad5d4aa11':
  DO NOT MERGE - Update Widevine Classic on JB-MR1.1 to 4.5.0.10107
2013-10-01 15:19:32 -07:00
John "Juce" Bruce
470fb26f72 am 071f6998: DO NOT MERGE - Update Widevine Classic on JB-MR1.1 to 4.5.0.10107
* commit '071f6998928ff2dbc0c5c3393f4ea9f0e6205ce9':
  DO NOT MERGE - Update Widevine Classic on JB-MR1.1 to 4.5.0.10107
2013-10-01 15:17:45 -07:00
John "Juce" Bruce
071f699892 DO NOT MERGE - Update Widevine Classic on JB-MR1.1 to 4.5.0.10107
This updates the Widevine Classic libraries to version 4.5.0.10107.
This version backports the bugfix for the IPv6 issue from JB-MR2.
Also, the Widevine build system has been updated to support all six
flavors. (2 security levels x 3 instruction sets)

This change adds x86 L1 binaries and MIPS L3 binaries, as these have
been validated by partners.

Bug: 10246711
Change-Id: Ic0cf32ffd82fc8dacced84cecdee059afa1049ca
2013-10-01 15:12:21 -07:00
Jeff Tinker
c28be299dc Avoid multiple loads of Device RSA private key
Molly reports OEMCrypto errors when Device RSA private key is
loaded a second time in the same session. This occurs in privacy
mode when a service certificate is request and later a key request is
generated.

bug: 10815492

Merge of https://widevine-internal-review.googlesource.com/#/c/7823/
from Widevine cdm repo

Change-Id: I98999fb0e77597109b68c379eaaa4838d3f6dde4
2013-09-19 17:23:58 -07:00
Fred Gylys-Colwell
4fbb928628 am 7ac83679: (-s ours) am e80df9e5: (-s ours) am fc913138: am 0b56285a: Update JBMR1 Widevine Libraries to 4.5.0.10095 (DO NOT MERGE)
* commit '7ac83679de4f8931d01bbd53697a2b8daf04051b':
  Update JBMR1 Widevine Libraries to 4.5.0.10095 (DO NOT MERGE)
2013-09-12 11:58:45 -07:00