Commit Graph

19 Commits

Author SHA1 Message Date
Jeff Tinker
352e7b0820 Add end-to-end decryption test with vectors
Added a test_mode flag to the libwvdrmengine plugin
to support verifying decryption results.

Change-Id: I9edbd6279d54fc495b5bbad8273c179106cad474
2013-04-09 13:32:46 -07:00
Jeff Tinker
826576315c Widevine CENC drm engine update: enable decryption
This import syncs to the widevine git repostiory change
commit ab3e1e43642cf36900f55169597a33f222709fdb

Change-Id: I3a6f1e2969e5fe7ed1ca12f90b0eb0a3b7899835
2013-04-09 13:24:32 -07:00
Jeff Tinker
c0f1d6750e Fix broken full_x86 and full_mips builds
Also cleans up some redundant files.

Change-Id: Id9a18bcb917ae999865f7c5564a72dba27b0ce97
2013-04-04 19:44:27 -07:00
Jeff Tinker
f3ec8c19d6 Import updates to the Widevine CENC DRM Plugin
This change incorporates the following CLs from the Widevine
cdm repository:

    Update the java request/response test app to match Drm API changes
    Don't build the mock liboemcrypto.so by default
    Do not build CDM tests by default
    Fix Build Break in DrmEngine Unit Tests
    Fix Build Break in WVDrmPlugin
    Initial version of roadmap for CDM projects.
    Implement License Query
    Implement Generic DRM in OEMCrypto Reference Implementation
    Add key_data_length field when calling OEMCrypto_LoadKeys
    Policy engine unittests
    Generalized DRM API for OEMCrypto
    Fixes proto buf libraries build.
    Add Version Number to OEMCrypto API
    Test key control block duration field in OEMCrypto
    Add fix for missing crypto offset.
    Fixed android/media*/test builds and added proto files for Cert. provisioning
    Refactor and clean up callback code in CDM.
    Add "device_id" name-value pair to LicenseRequest::ClientIdentification
    Separate unit and end-to-end tests from the top level makefie.
    Includes changes for 'fall back to l3 oemcrypto lib' in top level makefile.
    Fall Back to Level 3 if Level 1 Fails
    Fix compilation error in wvcdm_unittest.
    Fix Android build break due to Decrypt() signature change in cdm_engine.h.
    Wire up callbacks and errors in the Steel proxy.
    Fix lock assert if there is no keybox on the device.
    RSA Certificate Unit Test
    Change Generic_Verify signature to constant.

Change-Id: I2e42db9d0b4f8d4e833675ae81d0714509bbfd2c
2013-04-03 19:53:12 -07:00
Jeff Tinker
998d67fc8c Merge "MediaDrm API update" into jb-mr2-dev 2013-04-02 22:49:22 +00:00
Jeff Tinker
9a16115975 MediaDrm API update
Clarify offline usage of sessions and keys and implement
implement CryptoSession to support additional crypto use
cases.

Change-Id: I3788e7b187cd20c4224bf07f3fc6bef48ee38bd6
2013-03-30 16:30:21 -07:00
Edwin Wong
fe06ceec14 Separate unit and end-to-end tests from the top level makefie.
The top level makefile will build license_protocol_protos.a, which is
needed by libcdm.a. Unit and end-to-end tests are now build separately
under cdm/test.

Also, the tests use Google C++ Testing Framework, so please build the
gtest library from external/gtest and run "mm" once before building
the tests.
Or just run "mmma vendor/widevine/libwvdrmengine" (or mma in
vendor/widevine/libwvdrmengine") once.

Change-Id: Iec5a7a974e2f23651191b7325230d9ae3d6b83f2
2013-03-27 11:54:46 -07:00
Jeff Tinker
1a8aa0dd05 Initial import of Widevine Common Encryption DRM engine
Builds libwvmdrmengine.so, which is loaded by the new
MediaDrm APIs to support playback of Widevine/CENC
protected content.

Change-Id: I6f57dd37083dfd96c402cb9dd137c7d74edc8f1c
2013-03-22 11:14:17 -07:00
Fred Gylys-Colwell
0d5a8ccc7a Move OEMCrypto Mock files to Clear Key Library
In order to match the other implementations of CDM, we are going
to replace the android OEMCrypto mockup with the one in the cdm
repository.

This would be disruptive to the clear key library because it
relies on the current implementation of the mockup.  In order to
prevent that, I am moving the current mockup into the same directory
as the clear key library.  Then, we can put the new mockup under
the directory libwvdrmengine.

This mockup will then be deleted when the clear key library is deleted.

Change-Id: I89ee23f249dacd18241ae5ca499329e620bf5a2c
2013-01-31 09:22:22 -08:00
Fred Gylys-Colwell
fede3bffdd Add DecryptCTR to OEMCrypto Mock
This is a software only implementation of the OEMCrypto library for
testing the rest of the DRM code.  It currently implements the
OEMCrypto_DecrtyptCTR function using a clear key.

I've included the license request code so the rest of the group can
play with it, but I have only tested part of it.

This patch also has some makefiles and an integration testing.  You
should be able to generate the shared library libclearkeydrmengine.so with
cd vendor/widevine/libclearkeydrmengine; mm
You can create some unit test and integration test programs from the
directories:
vendor/widevine/libwvdrmengine/oemcrypto/test
vendor/widevine/libclearkeydrmengine/test
vendor/widevine/libclearkeydrmengine/inttest
vendor/widevine/libclearkeydrmengine/crypto/test

This change also addresses some comments about comments in OEMCryptoDASH.h
which were made in https://googleplex-android-review.googlesource.com/257323

Change-Id: Id6899b9f8d2f09e09be2ea493baa83a6b929073b
2012-12-21 12:41:42 -08:00
Fred Gylys-Colwell
d5aa1e41d3 Threading Contract and Error Messages
I added a few error codes for out-of-resource type conditions.

I added comments explain which functions may be called simultaneously.

Basically, info only functions, like getDeviceId, may be called anytime after
initialization.  Functions that have a session parameter may be called at the
same time as other functions for a different session, but not for the same session.
Functions that create or delete sessions may not be called as the same time as any
each other, or at the same time as any session functions.  The CDM is required to
honor these conventions.

If the OEM can only decrypt for one session at a time, it is the OEM's
responsibility to hold a lock.

Change-Id: If4b11afd70b5b2e67d78802ea0057fb25271ae90
2012-12-05 15:58:55 -08:00
Fred Gylys-Colwell
03d43a5d2d Merge "Separate OEMCrypto DASH from Legacy OEMCrypto" 2012-12-04 14:32:35 -08:00
Fred Gylys-Colwell
4529037bd8 Separate OEMCrypto DASH from Legacy OEMCrypto
The file OEMCrypto.h was renamed to OEMCryptoDASH.h and all
functions that are only needed for legacy support were removed.

Change-Id: I3a7a6f8cbb3ee415b4a313416a25ed78785ecdd7
2012-12-04 13:48:52 -08:00
Edwin Wong
eebba73ce1 Merge "Add ContentDecryptionModule API" 2012-12-04 12:31:39 -08:00
Fred Gylys-Colwell
d74290cc9f Update OEMCrypto.h
This change incorporates updates to the Eureka version of
OEMCrypto.h as documented here:
     https://widevine-internal-review.googlesource.com/2334

Change-Id: I52abde82cbea9b30b74e9c2292e401d5318df99d
2012-12-03 14:17:53 -08:00
Rahul Frias
9a7e424596 Add ContentDecryptionModule API
This header file documents the interface of the ContentDecryptionModule
and the CDM client.

b7615806

Change-Id: I9a036ec5539f7e5b66adb8a6a4326120624d1b30
2012-12-02 22:49:02 -08:00
Fred Gylys-Colwell
684eb227d4 Add Mock OEMCrypto Stub
I added a Mock OEMCrypto implementation with stubs only.

I corrected the "extern C" location in OEMCrypto.h. (Thanks, Jerry!)

I added some Android.mk files that allows us to compile and
run a few simple unit tests.

Unit Test 1: The library compiles. (passes)
Unit Test 2: The test program links and runs. (passes)

Change-Id: Ib4c9554553de49645b5841b0bae889728cbfc8b1
2012-11-30 12:41:10 -08:00
Fred Gylys-Colwell
27bb877763 Add OEMCrypto.h Header
I put the OEMCrypto.h file in its final resting place.

Change-Id: Ie8ccf5501c518dda0a7ee4ea494e588ea9497afd
2012-11-27 16:40:42 -08:00
Fred Gylys-Colwell
225c70eeed Create Skeleton Directory Tree for DASH
This is the skeleton directory tree for work in the DASH
implementation.

Change-Id: I38b52d133d48df6b78f3d142b1969686c60fc76b
2012-11-27 13:04:27 -08:00