Commit Graph

3967 Commits

Author SHA1 Message Date
Robert Shih
dc9809f7c3 CryptoSession: handle 0-length buffer in DecryptSample
In `Combine Decrypt Calls to OEMCrypto`,
OEMCrypto_ERROR_BUFFER_TOO_LARGE is used as the default error code to
signal fallback to legacy decrypt (sending subsamples separately).
The error code would not be updated if no calls to OEMCrypto were
made (e.g. 0-length buffers).

This change resets error code to OEMCrypto_SUCCESS after fall back to
legacy decrypt. Consequently, buffers that do no require OEMCrypto
calls would return OEMCrypto_SUCCESS.

Merge of http://go/wvgerrit/96743

Bug: 150188155
Test: GtsMediaTestCases
Test: DashTest#testWidevineH264AdaptiveWithRendererDisabling
Change-Id: Ib23803c51f16bc809bda5c2720e628e81f1df1dc
2020-04-01 02:47:13 +00:00
John Bruce
158f1f8c48 Merge "Update OEMCrypto Version Compatibility Document" into rvc-dev am: c113df815d am: d57c09b29b am: 630141b5fc
Change-Id: I0131a1c967fb3c53288a71f6987b93ad5c412c1d
2020-03-30 19:34:59 +00:00
John Bruce
f867569b57 Merge "Update OEMCrypto Version Compatibility Document" into rvc-dev am: c113df815d am: d57c09b29b am: 6ae7e5e14a am: 0faf2b48f0
Change-Id: I17977a0755c137f8afdd6bcff8306ad4b1f49067
2020-03-30 19:09:36 +00:00
John Bruce
630141b5fc Merge "Update OEMCrypto Version Compatibility Document" into rvc-dev am: c113df815d am: d57c09b29b
Change-Id: Id972921cfb3c458c8611631e3f5375b7a0066e0a
2020-03-30 19:09:24 +00:00
John Bruce
34a282635a Merge "Update OEMCrypto Version Compatibility Document" into rvc-dev am: c113df815d am: 5f09de89ae am: bbd4f33386
Change-Id: I68e44ebe51d3a5afd73303f2e225a0b813f01f50
2020-03-30 18:57:28 +00:00
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
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
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
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
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
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
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