Commit Graph

3855 Commits

Author SHA1 Message Date
Fred Gylys-Colwell
efb0452042 Replace OEMCrypto_LoadDeviceRSAKey with OEMCrypto_LoadDRMPrivateKey am: 56b836bda3 am: bb42e9bd41 am: 6b56c1c5ec am: b3657d0a6e
Change-Id: I0dc2f37ce34771592cdd0af4ce905a896a88fccd
2020-03-29 20:13:22 +00:00
Fred Gylys-Colwell
b3657d0a6e Replace OEMCrypto_LoadDeviceRSAKey with OEMCrypto_LoadDRMPrivateKey am: 56b836bda3 am: bb42e9bd41 am: 6b56c1c5ec
Change-Id: I05a984258ab5637351a2ef6d48fff3ac7da7b1a9
2020-03-29 19:55:57 +00:00
Fred Gylys-Colwell
6b56c1c5ec Replace OEMCrypto_LoadDeviceRSAKey with OEMCrypto_LoadDRMPrivateKey am: 56b836bda3 am: bb42e9bd41
Change-Id: I4099a6dcd2aed17b2132ac0fad22b0268098d22d
2020-03-29 19:45:51 +00:00
Fred Gylys-Colwell
bb42e9bd41 Replace OEMCrypto_LoadDeviceRSAKey with OEMCrypto_LoadDRMPrivateKey am: 56b836bda3
Change-Id: I2478269c1165c4dac094b6f79eae77c80b65668e
2020-03-29 19:30:45 +00:00
Fred Gylys-Colwell
56b836bda3 Replace OEMCrypto_LoadDeviceRSAKey with OEMCrypto_LoadDRMPrivateKey
Merge from Widevine repo of http://go/wvgerrit/96783

This CL updates the reference code, unit tests, and adapter to use the
new v16 function OEMCrypto_LoadDRMPrivateKey. This is just an API
change to allow ECC support in the future. The reference code does not
yet support ECC certificates, and the CDM code assumes that all
certificates have an RSA key.

Bug: 152558018
Test: unit tests on taimen and w/v16 mod mock.
Change-Id: I0793b416513b81b3d74849f0b58dbdc91f075ac6
2020-03-29 10:43:54 -07:00
Rahul Frias
f88d610570 Merge "Reject partial clear subsamples when keys are not loaded" into rvc-dev am: 3560247878 am: c79babac4c am: bb38d223f8 am: 4b28c9b871 am: 1aaa864456
Change-Id: Ib44e7baf058247fcc9cd7b84efad2e82a096d122
2020-03-28 19:56:04 +00:00
Rahul Frias
1aaa864456 Merge "Reject partial clear subsamples when keys are not loaded" into rvc-dev am: 3560247878 am: c79babac4c am: bb38d223f8 am: 4b28c9b871
Change-Id: I1242eeb6600bdf8770166111a71f810eb8b8d9b6
2020-03-28 19:47:31 +00:00
Rahul Frias
ce2a165929 Merge "Reject partial clear subsamples when keys are not loaded" into rvc-dev am: 3560247878 am: eba182293d am: e53740a0c4 am: ac2dadef0e
Change-Id: Ie9dc79f38087cbf4843d3d031f576dbc9a4c5005
2020-03-28 19:47:24 +00:00
Rahul Frias
f3889b69e6 Merge "Reject partial clear subsamples when keys are not loaded" into rvc-dev am: 3560247878 am: c79babac4c am: 93bb315c8e am: ce55664f89
Change-Id: I1df6038bf84ee6191b0d96e21cd55c47cd15b447
2020-03-28 19:47:16 +00:00
Rahul Frias
ac2dadef0e Merge "Reject partial clear subsamples when keys are not loaded" into rvc-dev am: 3560247878 am: eba182293d am: e53740a0c4
Change-Id: I03e00b968e99196bd53bd875fad98990ea9adfb5
2020-03-28 19:31:15 +00:00
Rahul Frias
ce55664f89 Merge "Reject partial clear subsamples when keys are not loaded" into rvc-dev am: 3560247878 am: c79babac4c am: 93bb315c8e
Change-Id: I514b0ec18e4b124dc8979826ed25730821e391d8
2020-03-28 19:31:08 +00:00
Rahul Frias
4b28c9b871 Merge "Reject partial clear subsamples when keys are not loaded" into rvc-dev am: 3560247878 am: c79babac4c am: bb38d223f8
Change-Id: I96a8df06aa5c94e7ada10ffe860202a748aeb1a6
2020-03-28 19:31:06 +00:00
Rahul Frias
e53740a0c4 Merge "Reject partial clear subsamples when keys are not loaded" into rvc-dev am: 3560247878 am: eba182293d
Change-Id: I917f52263e70e03ea958c789b2f366fc29e19608
2020-03-28 19:09:26 +00:00
Rahul Frias
bb38d223f8 Merge "Reject partial clear subsamples when keys are not loaded" into rvc-dev am: 3560247878 am: c79babac4c
Change-Id: I1e826fc634e3517898c10caa61624cc905242608
2020-03-28 19:09:26 +00:00
Rahul Frias
93bb315c8e Merge "Reject partial clear subsamples when keys are not loaded" into rvc-dev am: 3560247878 am: c79babac4c
Change-Id: Icfa7b9cf7c3714f86e3de812f386512f2be9a312
2020-03-28 19:09:14 +00:00
Rahul Frias
eba182293d Merge "Reject partial clear subsamples when keys are not loaded" into rvc-dev am: 3560247878
Change-Id: I8af7288266e5ad5ec82685ea7b467e8ef35a29cb
2020-03-28 18:43:07 +00:00
Rahul Frias
c79babac4c Merge "Reject partial clear subsamples when keys are not loaded" into rvc-dev am: 3560247878
Change-Id: I1a0ebfba3f4648e44dc3f28870076c6a6e0f1cc2
2020-03-28 18:42:55 +00:00
Rahul Frias
3560247878 Merge "Reject partial clear subsamples when keys are not loaded" into rvc-dev 2020-03-28 18:24:15 +00:00
Rahul Frias
734aea940b Reject partial clear subsamples when keys are not loaded
[ Merge of http://go/wvgerrit/96514 ]

The combined decryption call feature was introduced in android R.
In earlier releases, subsamples were passed one at a time for
decryption within the plugin. A decryption request that consists
entirely of clear data should be passed on to OEMCrypto even if
no keys are loaded.

A sample might consist of subsamples of clear and protected data.
In legacy mode, this proved to be an issue for OEMCrypto if the clear
subsamples were passed on but the protected ones were rejected (b/110251447).

For legacy mode and in the absence of keys being loaded, the subsample will
be passed to OEMCrypto only if the clear lead/frame is in a single subsample
and not broken up across multiple subsamples.

Bug: 150316417
Test: WV android unit/integration tests
Change-Id: Iff8ae8f58530cb9c5d31ce388742443ae807c16f
2020-03-27 15:07:29 -07:00
Fred Gylys-Colwell
7833a80a4b Add unit test for preloaded license am: ca404aae6f am: ab82b4b78f am: f2c24373a6 am: e3f5c1ae3f am: c5dcb0dbca
Change-Id: I95b31f0086ffaac7f588e4b347d64943a2b93551
2020-03-27 20:07:04 +00:00
Fred Gylys-Colwell
fa1b891b8f Add unit test for preloaded license am: ca404aae6f am: 6bd4b47612 am: 64e528dc99 am: 6e12c64da2
Change-Id: I3b27162ccd394fe33526b1588ddcb045f4b2cebe
2020-03-27 20:05:36 +00:00
Fred Gylys-Colwell
9265752bce Add unit test for preloaded license am: ca404aae6f am: ab82b4b78f am: d8ea3672c4 am: 3cdcf12c20
Change-Id: I0ed6e8f8d26afa3e7eb9e81fcc06e480ff958803
2020-03-27 20:01:37 +00:00
Fred Gylys-Colwell
c5dcb0dbca Add unit test for preloaded license am: ca404aae6f am: ab82b4b78f am: f2c24373a6 am: e3f5c1ae3f
Change-Id: Ibf9ab418251b97b2bb15d69d7fc7c37949d14804
2020-03-27 19:47:01 +00:00
Fred Gylys-Colwell
6e12c64da2 Add unit test for preloaded license am: ca404aae6f am: 6bd4b47612 am: 64e528dc99
Change-Id: I080c5f4fab3947d4e910e9e2472dac389c9a54fb
2020-03-27 19:36:08 +00:00
Fred Gylys-Colwell
3cdcf12c20 Add unit test for preloaded license am: ca404aae6f am: ab82b4b78f am: d8ea3672c4
Change-Id: Icf7f0036654ae5609bbe3c653fc8447c265567b0
2020-03-27 19:34:53 +00:00
Fred Gylys-Colwell
e3f5c1ae3f Add unit test for preloaded license am: ca404aae6f am: ab82b4b78f am: f2c24373a6
Change-Id: I092fdbd44330551134a6bb98511858cc9cbef0dc
2020-03-27 19:31:36 +00:00
Fred Gylys-Colwell
64e528dc99 Add unit test for preloaded license am: ca404aae6f am: 6bd4b47612
Change-Id: I0ce97c01bceaa48a5ea8fce2870f8c072eca3fbe
2020-03-27 19:21:28 +00:00
Fred Gylys-Colwell
f2c24373a6 Add unit test for preloaded license am: ca404aae6f am: ab82b4b78f
Change-Id: Icfcfda4c1410426ba3364907594a513052b04455
2020-03-27 19:21:27 +00:00
Fred Gylys-Colwell
d8ea3672c4 Add unit test for preloaded license am: ca404aae6f am: ab82b4b78f
Change-Id: I650eec69db450862ca645b1cab0f55c20926a635
2020-03-27 19:21:04 +00:00
Fred Gylys-Colwell
ab82b4b78f Add unit test for preloaded license am: ca404aae6f
Change-Id: I68c4098513de8313f7ecd9b30958c5b05a620703
2020-03-27 19:05:44 +00:00
Fred Gylys-Colwell
6bd4b47612 Add unit test for preloaded license am: ca404aae6f
Change-Id: Ieeff31dfb52a182da5217ab26ddd168d39e44381
2020-03-27 19:05:43 +00:00
Fred Gylys-Colwell
ca404aae6f Add unit test for preloaded license
Merge from Widevine repo of http://go/wvgerrit/96508

This adds a unit test for to verify that a preloaded license may be
loaded into OEMCrypto. A preloaded license is a license that does not
have a nonce, and for which there is no license request. This is used
in CAS and ATSC.

I also updated the test version string to
OEMCrypto unit tests for API 16.2. Tests last updated 2020-03-27

Bug: 144105097
Test: ran oemcrypto unit tests on taimen and with v16 modmock.
Change-Id: I6a4926917f36a084d15defa7b908d067612c4dcf
2020-03-26 15:38:38 -07:00
John W. Bruce
d21d70f533 Restore OpenSSL Compatibility
(This is a merge of http://go/wvgerrit/96226.)

This patch does a number of different things in order to re-enable the
CDM to use OpenSSL 1.1.0+ out of the box, instead of just BoringSSL:

* To support https://cryptography.io/, BoringSSL has reimplemented just
  enough of the OpenSSL PKCS7 API that we can fulfill our purposes with
  code that works on either library. This patch replaces code in
  privacy_crypto_boringssl.cpp and oec_session_util.cpp that was only
  compatible with BoringSSL with code that also works in OpenSSL.

* Replaces code in oec_session_util.cpp that used the deprecated OpenSSL
  1.0.0 API with OpenSSL 1.1.0-compatible code. This code previously
  worked on BoringSSL because they have not yet removed the OpenSSL
  1.0.0 functions, even though they also implemented the 1.1.0 API.

* Replaces openssl/mem.h (which does not work in OpenSSL 1.1.0 and
  higher) with openssl/crypto.h. (which works in all OpenSSL and
  BoringSSL releases) This does not require any function code changes.

* The OID-comparison code in privacy_crypto_boringssl.cpp was using
  BoringSSL-exclusive functions to convert OBJ-format OIDs to text.
  Conversion functions that work on either library exist. However, the
  new code uses a different technique instead, pre-converting the
  passed-in OID to OBJ format. This allows it to be compared to the
  certificate directly, avoiding converting every certificate extension
  OID to text.

* Allows the selection of "openssl" as the privacy_crypto_impl and adds
  a variable to configure OpenSSL. More will follow in future patches
  as more configurations of OpenSSL are supported.

Bug: 140053043
Test: CE CDM Unit Tests
Test: CE CDM Unit Tests w/ the x86-64 Platform Reconfigured to OpenSSL
Test: Android Unit Tests
Change-Id: I57cebbbfb59e0bcab85b589b98fb9ffd18885415
2020-03-26 13:20:15 -07:00
Cong Lin
c0d7f16b78 Merge "Use unique_ptr in oemcrypto ref" into rvc-dev am: a55244025b am: 0abb41845e am: b9ef42f7a6 am: f42fbe6394 am: 0b792d2ebd
Change-Id: I841580a755f44d47e2d52b1503304ac4b806c354
2020-03-26 19:05:08 +00:00
Cong Lin
cf08d26e84 Merge "Use unique_ptr in oemcrypto ref" into rvc-dev am: a55244025b am: 275b896d9c am: a87dafc5ba am: 7ede55d7c1
Change-Id: I355bfeb702c6f0df6cbf4cbbf9bdd9067de4426c
2020-03-26 19:04:16 +00:00
Cong Lin
71d7045bf5 Merge "Use unique_ptr in oemcrypto ref" into rvc-dev am: a55244025b am: 0abb41845e am: b651eb3278 am: 63ad1466ee
Change-Id: I4e44901202141a42f882159483e84a82575f9803
2020-03-26 19:03:24 +00:00
Cong Lin
0b792d2ebd Merge "Use unique_ptr in oemcrypto ref" into rvc-dev am: a55244025b am: 0abb41845e am: b9ef42f7a6 am: f42fbe6394
Change-Id: I15603c179e59e65d60e8060ef037ef3a2b3f0d2a
2020-03-26 19:02:47 +00:00
Cong Lin
7ede55d7c1 Merge "Use unique_ptr in oemcrypto ref" into rvc-dev am: a55244025b am: 275b896d9c am: a87dafc5ba
Change-Id: Ib185969162dc4ff2ba950995094b440f2f0bb60d
2020-03-26 18:54:04 +00:00
Cong Lin
63ad1466ee Merge "Use unique_ptr in oemcrypto ref" into rvc-dev am: a55244025b am: 0abb41845e am: b651eb3278
Change-Id: I15b7d558abe8ee52f9894fd0c7beab1df00639ee
2020-03-26 18:53:50 +00:00
Cong Lin
f42fbe6394 Merge "Use unique_ptr in oemcrypto ref" into rvc-dev am: a55244025b am: 0abb41845e am: b9ef42f7a6
Change-Id: I18dbb965ac53cff45ed75d4f0040c3db83cfa68d
2020-03-26 18:53:20 +00:00
Cong Lin
a87dafc5ba Merge "Use unique_ptr in oemcrypto ref" into rvc-dev am: a55244025b am: 275b896d9c
Change-Id: I871b21d3aabccbb70c271748332b145f56ebdca9
2020-03-26 18:42:56 +00:00
Cong Lin
b9ef42f7a6 Merge "Use unique_ptr in oemcrypto ref" into rvc-dev am: a55244025b am: 0abb41845e
Change-Id: I1b05161d7fe15f573a70a58768b186ef87c7188f
2020-03-26 18:42:34 +00:00
Cong Lin
b651eb3278 Merge "Use unique_ptr in oemcrypto ref" into rvc-dev am: a55244025b am: 0abb41845e
Change-Id: I1fef37738bf914471a412e199643874983ee9b1e
2020-03-26 18:42:25 +00:00
Cong Lin
275b896d9c Merge "Use unique_ptr in oemcrypto ref" into rvc-dev am: a55244025b
Change-Id: I266de93e39d6754539b562da6b24ce42892b294d
2020-03-26 18:28:22 +00:00
Cong Lin
0abb41845e Merge "Use unique_ptr in oemcrypto ref" into rvc-dev am: a55244025b
Change-Id: If9fd5ca1143cf3372cf70a7d3627c8e98514a3a8
2020-03-26 18:28:10 +00:00
Cong Lin
a55244025b Merge "Use unique_ptr in oemcrypto ref" into rvc-dev 2020-03-26 18:15:33 +00:00
Cong Lin
a53a6bf355 Use unique_ptr in oemcrypto ref
Merge from Widevine repo of http://go/wvgerrit/95945

The reference oemcrypto and testbed still use old style pointers, even
though we now require a more modern C++ compiler. Updated a few places
where smart pointer would be appropriate.

Bug: 141393616
Test: Ran unit tests
Change-Id: I8b1e155bce241075928e373478d6f8e1001233f9
2020-03-26 16:15:24 +00:00
Alex Dale
3f41d19575 Merge "Usage table header operations no longer need an open session." into rvc-dev am: 73f301a66c am: ef31c865f2 am: a983f577b1 am: 228075d3f5 am: 547ef61575
Change-Id: I41c4cfa235ae9732aaec2a1387fa31206c533174
2020-03-26 04:26:31 +00:00
Alex Dale
410d4693ea Merge "New CDM error codes for usage table errors." into rvc-dev am: 8d45d93d0e am: b587f64cac am: c75f01f7c9 am: 819f20e6aa am: 9ae6ffd1db
Change-Id: I6f9690abb0a721d9e9ac35d38ce9a139d0d27869
2020-03-26 04:26:24 +00:00
Alex Dale
e9f3e3a2ce Merge "Usage table header operations no longer need an open session." into rvc-dev am: 73f301a66c am: d650718c27 am: 970ceb343a am: 21561e45dc
Change-Id: I1bd12128385912e164234cbad8f246a3913118a6
2020-03-26 04:26:17 +00:00