Commit Graph

4270 Commits

Author SHA1 Message Date
John Bruce
0faf2b48f0 Merge "Update OEMCrypto Version Compatibility Document" into rvc-dev am: c113df815d am: d57c09b29b am: 6ae7e5e14a
Change-Id: Iab845ff16e0b2dd02cc3ba9904a35e8907e55cfa
2020-03-30 18:56:26 +00:00
John Bruce
bbd4f33386 Merge "Update OEMCrypto Version Compatibility Document" into rvc-dev am: c113df815d am: 5f09de89ae
Change-Id: I73ca6457a6b8aa132e47a5479751f3616f92c3b0
2020-03-30 18:15:28 +00:00
John Bruce
6ae7e5e14a Merge "Update OEMCrypto Version Compatibility Document" into rvc-dev am: c113df815d am: d57c09b29b
Change-Id: I097e489a6858ca3ed9a62f8cd3b2a6b05f8ec54d
2020-03-30 18:14:31 +00:00
John Bruce
d57c09b29b Merge "Update OEMCrypto Version Compatibility Document" into rvc-dev am: c113df815d
Change-Id: I4e1f3e8ff3e11e7d06defad929bf08ef828b23eb
2020-03-30 18:00:26 +00:00
John Bruce
5f09de89ae Merge "Update OEMCrypto Version Compatibility Document" into rvc-dev am: c113df815d
Change-Id: Ifcfe2508123bca879c457082090133751bceae6a
2020-03-30 17:59:52 +00:00
John Bruce
c113df815d Merge "Update OEMCrypto Version Compatibility Document" into rvc-dev 2020-03-30 17:46:33 +00:00
Fred Gylys-Colwell
e203d3eedd Replace OEMCrypto_LoadDeviceRSAKey with OEMCrypto_LoadDRMPrivateKey am: 56b836bda3 am: bb42e9bd41 am: fc1326554e am: 2c93b9fefd am: 4acedcb708
Change-Id: I9a1568a724d4334e289c344db04234051b6ca716
2020-03-29 20:17:54 +00:00
Fred Gylys-Colwell
4acedcb708 Replace OEMCrypto_LoadDeviceRSAKey with OEMCrypto_LoadDRMPrivateKey am: 56b836bda3 am: bb42e9bd41 am: fc1326554e am: 2c93b9fefd
Change-Id: Id413144b39ddd5f2d8791eca14fc090d6cc74b49
2020-03-29 20:13:35 +00:00
Fred Gylys-Colwell
1f8f8b958b Replace OEMCrypto_LoadDeviceRSAKey with OEMCrypto_LoadDRMPrivateKey am: 56b836bda3 am: 4af6f0cf42 am: c78affbc28 am: eaa14012ea
Change-Id: I796e95f803d6de04437103ab4d073a33d9e71c13
2020-03-29 20:13:28 +00:00
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
eaa14012ea Replace OEMCrypto_LoadDeviceRSAKey with OEMCrypto_LoadDRMPrivateKey am: 56b836bda3 am: 4af6f0cf42 am: c78affbc28
Change-Id: Ic1c1a620680d8cce01c97c63a625a19ca636a823
2020-03-29 19:56:01 +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
2c93b9fefd Replace OEMCrypto_LoadDeviceRSAKey with OEMCrypto_LoadDRMPrivateKey am: 56b836bda3 am: bb42e9bd41 am: fc1326554e
Change-Id: I6b578013087d91227155c35812bc21166554fc54
2020-03-29 19:55:53 +00:00
Fred Gylys-Colwell
c78affbc28 Replace OEMCrypto_LoadDeviceRSAKey with OEMCrypto_LoadDRMPrivateKey am: 56b836bda3 am: 4af6f0cf42
Change-Id: I938b2cad4c00df41562b0f7ddb327f60961f491e
2020-03-29 19:46:04 +00:00
Fred Gylys-Colwell
fc1326554e Replace OEMCrypto_LoadDeviceRSAKey with OEMCrypto_LoadDRMPrivateKey am: 56b836bda3 am: bb42e9bd41
Change-Id: I8c35f3c05793844ce4bf24cde418936f31cc6d04
2020-03-29 19:46:03 +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
4af6f0cf42 Replace OEMCrypto_LoadDeviceRSAKey with OEMCrypto_LoadDRMPrivateKey am: 56b836bda3
Change-Id: Ia80b1cb34f01e6d85461eb2fef7f22abe219e6b4
2020-03-29 19:30:57 +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
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
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
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
John W. Bruce
1f08e4dcf1 Update OEMCrypto Version Compatibility Document
(This is a merge of http://go/wvgerrit/96723.)

This syncs the document with the current version in Google Docs. Changes
since the last version:

* Specified that the Cobalt table only applies to First-Party Platforms
* Filled in gaps in Cobalt table
* Updated the Android R entry to reflect that some devices will stay on
  v15
* Added further details on the contents of various OEMCrypto v16
  versions
* Corrected Cobalt versions erroneously marked as Supported
* Updated copyright statement for 2020
* Reworded the header on the CE CDM section
* Corrected which CE CDM versions used OEMCrypto v8
* Put a section heading on the first table in the document to clarify
  that it is not a table of contents nor a document version history

Bug: 151455443
Test: Verified PDF visually
Change-Id: I0a15f79a58a94cda178018373852582abb6c1463
2020-03-27 13:41:59 -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