Commit Graph

5003 Commits

Author SHA1 Message Date
Alex Dale
1775c4d49b Merge "Added unittests for OEM Certificates." into sc-dev am: 2cf17c34fe
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/13625373

Change-Id: Iaf571e6b87ccd83106b7528b6fb3efd4bbe262fc
2021-03-19 02:05:52 +00:00
Alex Dale
2cf17c34fe Merge "Added unittests for OEM Certificates." into sc-dev 2021-03-19 01:29:23 +00:00
TreeHugger Robot
81bbc741d7 Merge "Release crypto resources when provisioning fails" into sc-dev am: d1db6df88b
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/13678765

Change-Id: Ib7587ff50abaf56be590fff7a7c58df65e78d39a
2021-03-19 00:08:59 +00:00
TreeHugger Robot
86a115e6cb Merge "Log license request and response" into sc-dev am: 9f574be636
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/13740255

Change-Id: I901bd772877b4d6b990a9b35d52a4c127d3f84d5
2021-03-19 00:08:41 +00:00
TreeHugger Robot
d1db6df88b Merge "Release crypto resources when provisioning fails" into sc-dev 2021-03-18 23:27:57 +00:00
TreeHugger Robot
9f574be636 Merge "Log license request and response" into sc-dev 2021-03-18 23:27:33 +00:00
Alex Dale
72e0cfa66f Merge "Wrapped OEM Certificate." into sc-dev am: 6c58348bb8
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/13623728

Change-Id: I4d8b00a1892ed7615346ece0891ede2c2894b820
2021-03-18 22:06:04 +00:00
Alex Dale
6c58348bb8 Merge "Wrapped OEM Certificate." into sc-dev 2021-03-18 21:15:32 +00:00
Rahul Frias
bca4c759ac Correct test data member name am: edf9ad5b90
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/13796843

Change-Id: I427900d6fdb460696c395a1beca693d8c20167e0
2021-03-18 00:04:22 +00:00
Rahul Frias
8861f9ff38 device_files proto changes for Expiring DRM certificates am: dbb1671e39
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/13785063

Change-Id: Ife02960284ed715861b66f76c27004f2ed3b6172
2021-03-18 00:04:20 +00:00
Rahul Frias
edf9ad5b90 Correct test data member name
[ Merge of http://go/wvgerrit/119645 ]

Bug: 169740403
Test: WV unit/integration tests
Change-Id: I2a3e82869e3a45112e8b15eea4ac668980c3eb4d
2021-03-16 13:29:30 -07:00
Rahul Frias
dbb1671e39 device_files proto changes for Expiring DRM certificates
[ Merge of http://go/wvgerrit/119644 ]

This change includes additional fields in DeviceCertificate, License and
UsageInfo.

New DRM certificate will include a creation and expiration time.
In addition acquisition_time_seconds will allow the client to calulate
expiration time even when client and provisioning service clocks
are not in sync.

expiration_time_seconds will allow clients to expire DRM certificates
that do include an expiration time. A random value within a window
(4-8 months after update) will be calculated to avoid
a provisioning storm.

Drm certificate will be added to offline licenses. In a future release,
licenses will be removed on expiry and the certification information
that needs to be sent to the license service will be reduced.
This should reduce space overhead.

UsageInfo will use a certificate cache in case multiple usage info
entries use the same DRM certificate.

Bug: 169740403
Test: WV unit/integration tests
Change-Id: I2f34a1df526fa8168162a1b1ea930a2f257b87cd
2021-03-16 13:10:53 -07:00
TreeHugger Robot
64ffa5502f Merge "Address compilation warnings" into sc-dev am: 6ee9f49e5c
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/13818826

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I92ab0a942ca6772d3ceb5af66bd9dfca92a780e4
2021-03-13 03:44:17 +00:00
Alex Dale
467bc7162a Android tests call exit() when complete. am: 16c704fa09
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/13845281

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I878d495626c7d4bea0b267830915b58722facf04
2021-03-13 03:43:45 +00:00
TreeHugger Robot
6ee9f49e5c Merge "Address compilation warnings" into sc-dev 2021-03-13 02:43:45 +00:00
Alex Dale
16c704fa09 Android tests call exit() when complete.
[ Merge of http://go/wvgerrit/119804 ]

The coverage framework used by Android requires the process to call
exit() for coverage information to be dumped after the tests.

Android unit tests have been adapted to use the a new main module.
The core test_main.cpp used by integration tests has been updated to
call exit().

Bug: 138941105
Test: Linux and Android unittests
Change-Id: Ifffc7b8290c50dffe527738a36547c1d2fb90bd3
2021-03-12 16:22:20 -08:00
Rahul Frias
a828bf5f58 Annotate fallthrough in OEC Testbed
[ Merge of http://go/wvgerrit/119230 ]

This patch adds an annotation to the one place in the codebase where we
intentionally fall through between switch statement cases, in order to
appease stricter compilers.

Bug: 182058081
Test: compile, WV unit/integration tests
Change-Id: I004a6a6e61681fcf22c6bf25d9b0284b8b64e776
2021-03-12 00:58:52 -08:00
Rahul Frias
cb48161e95 Merge "Update drm_certificate.proto" into sc-dev am: 9f918bc16b
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/13744352

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I15bb1291e5e2a6dd8891302847ef4e98b7288284
2021-03-11 19:26:13 +00:00
Rahul Frias
9f918bc16b Merge "Update drm_certificate.proto" into sc-dev 2021-03-11 18:57:36 +00:00
Rahul Frias
094fabed5a Address compilation warnings
[ Merge of http://go/wvgerrit/119523 ]

Bug: 182299187
Test: compile vendor/widevine/libwvdrmengine
Change-Id: I39d1b62a3237bfb9163a7e157b871f22e3fec394
2021-03-10 18:49:57 -08:00
Rahul Frias
83a85430e3 Release crypto resources when provisioning fails
[ Merge of http://go/wvgerrit/119564 ]

This closes a crypto session when the provisioning request fails. We
cannot be as eager when handling the response as the app may have
multiple simultaneous provisioning attempts in flight. In this case
all provisioning responses except the one associated with the last
request will fail. If we close the session on error, even the one
associated with the last request may fail.

Bug: 180986725
Test: WV unit/integration tests
Change-Id: Ic3d33a374e442b5bf040e345bed829d91c4ef1dc
2021-03-10 18:12:09 -08:00
Rahul Frias
b8049e1f20 Log license request and response
[ Merge of http://go/wvgerrit/119563 ]

This also increases the max log size from 1024 to 5120

Bug: 181642154
Test: WV unit/integration tests
Change-Id: Ifae90354dad1165f4d9fa3c9fe33a4dc14df1270
2021-03-10 17:58:15 -08:00
Edwin Wong
d3cd01d34c [automerger skipped] [RESTRICT AUTOMERGE] Fix potential decrypt destPtr overflow. am: f3ad627bcb am: 18065ce373 -s ours am: 49279fb200 am: 45dc1d106a am: d6226efa60 -s ours am: 4310a64a48 -s ours
am skip reason: Change-Id Id3aece61d46d548c304782d4e1dc3a4747795c01 with SHA-1 f3ad627bcb is in history

Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/13462543

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: If2f119233787b151a81e060d611ba626f8e2796b
2021-03-10 22:39:03 +00:00
Edwin Wong
4310a64a48 [automerger skipped] [RESTRICT AUTOMERGE] Fix potential decrypt destPtr overflow. am: f3ad627bcb am: 18065ce373 -s ours am: 49279fb200 am: 45dc1d106a am: d6226efa60 -s ours
am skip reason: subject contains skip directive

Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/13462543

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Id7a7aeb5963e74c3a263340bbab089aa42e49a2c
2021-03-10 22:37:39 +00:00
Edwin Wong
862d5184ec [automerger skipped] [RESTRICT AUTOMERGE] Fix potential decrypt destPtr overflow. am: f3ad627bcb am: 18065ce373 -s ours am: 49279fb200 am: 242713098f -s ours am: 08a80add55
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/13462543

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I915603ac6a9a3e7275a7fc711d9e6b831c74fdda
2021-03-10 22:15:39 +00:00
Edwin Wong
08a80add55 [automerger skipped] [RESTRICT AUTOMERGE] Fix potential decrypt destPtr overflow. am: f3ad627bcb am: 18065ce373 -s ours am: 49279fb200 am: 242713098f -s ours
am skip reason: subject contains skip directive

Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/13462543

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I7a37930fc220495957e017e204d95e32ade6d282
2021-03-10 21:57:10 +00:00
Edwin Wong
d6226efa60 [automerger skipped] [RESTRICT AUTOMERGE] Fix potential decrypt destPtr overflow. am: f3ad627bcb am: 18065ce373 -s ours am: 49279fb200 am: 45dc1d106a
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/13462543

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I88ba0b965d2d546ba090e1b138846b997744dece
2021-03-10 21:53:38 +00:00
Edwin Wong
242713098f [automerger skipped] [RESTRICT AUTOMERGE] Fix potential decrypt destPtr overflow. am: f3ad627bcb am: 18065ce373 -s ours am: 49279fb200
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/13462543

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I75d982f8a96803bfdf6ff9bd5807d802d80e04c6
2021-03-10 21:36:27 +00:00
Edwin Wong
45dc1d106a [automerger skipped] [RESTRICT AUTOMERGE] Fix potential decrypt destPtr overflow. am: f3ad627bcb am: 18065ce373 -s ours am: 49279fb200
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/13462543

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I0a8f36599fe984fedf236f6240fd1f08bf99f36d
2021-03-10 21:13:54 +00:00
Edwin Wong
49279fb200 [automerger skipped] [RESTRICT AUTOMERGE] Fix potential decrypt destPtr overflow. am: f3ad627bcb am: 18065ce373 -s ours
am skip reason: subject contains skip directive

Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/13462543

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Ia1bce0f38c0ab07f1028e9ecd0f38b78b8de0d77
2021-03-10 20:56:24 +00:00
Edwin Wong
18065ce373 [RESTRICT AUTOMERGE] Fix potential decrypt destPtr overflow. am: f3ad627bcb
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/13462543

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I36fb97d8855ef97a15c7d9d553efa874a2df7c84
2021-03-10 20:12:35 +00:00
Alex Dale
39fb5fde42 Merge "Added unittests for reference RSA implementation." into sc-dev am: d40302f3e3
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/13619898

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Ia14b91e8c80c5e7e27a9877abd963020b2382ce1
2021-03-10 15:45:07 +00:00
Rahul Frias
7f0fbbee22 Integration test for license duration with renewal am: 9ab837c78a
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/13807335

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I996b7448c4b35084e13f1bed7c9ae1116e255045
2021-03-10 15:42:48 +00:00
Rahul Frias
c6b6a06fe0 An integration test for secure buffers am: 3176f5f66f
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/13805574

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I31802d6060bab2b117a3e8b1695c000ca81a63f6
2021-03-10 15:42:47 +00:00
Rahul Frias
80cfd103ad Add Duration Use Case integration tests am: 0831e575ba
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/13805072

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I2b66f2f139b0a755712e5a3df78eaa2413b5f356
2021-03-10 15:42:44 +00:00
Rahul Frias
368179216c Fix test sleep on iOS. am: a9f051faac
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/13805070

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I83b4fe9f33fb61fc1b4a57088783513d9e5abbae
2021-03-10 15:42:42 +00:00
Rahul Frias
f540c4084c Restrict a2b_hex to 2000 bytes. am: 9a659e31c1
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/13805068

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I0222738e2478832fc53012be6b234b34f62935b9
2021-03-10 15:42:40 +00:00
Rahul Frias
70963e5971 Return error when test initialization fails am: 616a9b38dc
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/13798630

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Ia7d3546e771d887bdec0ddc55fc8507b27a46918
2021-03-10 15:42:38 +00:00
Rahul Frias
7a380a4bd4 Set renewal server on command line for tests am: 50efa73e34
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/13798629

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I000c647fa4e2a75bd30d713b60d12be19e3c2b51
2021-03-10 15:42:35 +00:00
Rahul Frias
2d5fb35575 Fix deprecated and printf warnings. am: 24e4c33262
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/13798628

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I96bbfb3f2dc7d98e124af95d779f9195e6ee2fcf
2021-03-10 15:41:07 +00:00
Rahul Frias
9081643582 Throw DeniedByServerException when provisioning detects a revoked device am: 71cf45fb3f
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/13798627

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I5155bd714e27328a3dba02603134ebb26331fbaa
2021-03-10 15:19:28 +00:00
Alex Dale
7f5a530cfb Include DRM key type to SessionMetrics. am: e52086c283
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/13679588

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Ic0ca254ce31eb16d1bf435fe4252da0e3bfcaecb
2021-03-10 12:15:29 +00:00
Robert Shih
47a63dd9cf Merge "libwvhidl: map errors to PROVISIONING_REQUEST_REJECTED" into sc-dev am: 6c03986218
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/13756452

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I8062f28b49feaa0cdd6fad3bf7c64a3abca72096
2021-03-10 12:09:04 +00:00
Rahul Frias
0cf99f685f Update drm_certificate.proto
[ Merge of http://go/wvgerrit/118563 ]

Sync with the latest version of drm_certificate.proto to add in
certificate expiry time. Add in signed_drm_certificate.proto and remove
messages from device_certificate.proto.

SignedDrmDeviceCertificate and DrmDeviceCertificate are now named
SignedDrmCertificate and DrmCertificate. This necessitated non-proto
changes.

Bug: 169740403
Test: WV unit/integration tests
Change-Id: Ie5969ac7217a25eb075a41df59b77da2becd4545
2021-03-09 14:57:47 -08:00
Alex Dale
d40302f3e3 Merge "Added unittests for reference RSA implementation." into sc-dev 2021-03-09 22:19:51 +00:00
Edwin Wong
76f39ddb08 [RESTRICT AUTOMERGE] Fix WVCryptoPlugin use after free vulnerability.
The shared memory buffer used by srcPtr can be freed by another
thread because it is not protected by a mutex. Subsequently,
a use after free AIGABRT can occur in a race condition.

SafetyNet logging is not added to avoid log spamming. The
mutex lock is called to setup for decryption, which is
called frequently.

The crash was reproduced on the device before the fix.
Verified the test passes after the fix.

Test: sts
  sts-tradefed run sts-engbuild-no-spl-lock -m StsHostTestCases --test android.security.sts.Bug_176495665#testPocBug_176495665

Test: push to device with target_hwasan-userdebug build
  adb shell /data/local/tmp/Bug-176495665_sts64

Bug: 176495665
Bug: 176444161
Change-Id: Ie1aca0ceacb4b7a1b6e473b823541607a36d8cb4
Merged-In: If62b73a9c636048f942a2fc63a13b5bfd1e57b86
2021-03-09 17:10:54 +00:00
Edwin Wong
596d8bf4cc Fix WVCryptoPlugin use after free vulnerability.
The shared memory buffer used by srcPtr can be freed by another
thread because it is not protected by a mutex. Subsequently,
a use after free AIGABRT can occur in a race condition.

SafetyNet logging is not added to avoid log spamming. The
mutex lock is called to setup for decryption, which is
called frequently.

The crash was reproduced on the device before the fix.
Verified the test passes after the fix.

Test: sts
  sts-tradefed run sts-engbuild-no-spl-lock -m StsHostTestCases --test android.security.sts.Bug_176495665#testPocBug_176495665

Test: push to device with target_hwasan-userdebug build
  adb shell /data/local/tmp/Bug-176495665_sts64

Bug: 176495665
Bug: 176444161
Change-Id: If62b73a9c636048f942a2fc63a13b5bfd1e57b86
2021-03-08 21:37:42 -08:00
Alex Dale
23f7cd60a7 Sync Android reference with CDM reference.
The sc-dev branch on Android is out of sync with several important
changes on the CDM master branch.  This changes copies several CLs.

[ Merge of http://go/wvgerrit/104524 ]

OEMCrypto unittest: generic crypto APIs

Add unit tests to verify that generic crypto APIs do not crash for large
input buffer lengths and signature lengths.

[ Merge of http://go/wvgerrit/106583 ]

Fix secure buffer tests in OEMCrypto testbed

The secure buffers were not being used correctly in the testbed, and
were failing OEMCryptoMemoryCopyBufferForHugeBufferLengths.

[ Merge of http://go/wvgerrit/109603 ]

Reject block_offsets of 16 or greater in OEC Ref

This is a potential security hole. We will be enforcing that OEMCrypto
rejects this in an upcoming test, so the Ref must be updated to reject
it.

[ Merge of http://go/wvgerrit/110165 ]

Fix Format String Signedness

See above for full description.

[ Merge of http://go/wvgerrit/111784 ]

Fix heap overflow test in L3 and OEMCrypto ref

Check the length of wrapped_rsa_key_length before casting to
WrappedRSAKey struct.

[ Merge of http://go/wvgerrit/113563 ]

Reword "blacklisted" to "forbidden"

[ Merge of http://go/wvgerrit/113583 ]

Use error code from RAND_bytes

The return code from RAND_bytes was not used correctly.

[ Merge of http://go/wvgerrit/113644 ]

Check for buffer overflow when computing subsample size

The test DecryptCENCForNumBytesClearPlusEncryptedOverflowsSize
cleverly picks num_bytes_clear + num_bytes_encrypted = 1 after integer
overflow. This is in the refernce code, level 3, and odkitee.

[ Merge of http://go/wvgerrit/113683 ]

OEMCrypto reference code: respect analog flags for clear buffers

The reference code should honor the analog_display_active flag for
both clear and secure buffers.

[ Merge of http://go/wvgerrit/114883 ]

Add size check for IV in OEMCrypto APIs

IV is supposed to be 16 bytes but the size is never checked before iv
gets used in LoadProvisioning.

Bug: 145026457
Bug: 147569428
Bug: 159847851
Bug: 162372059
Bug: 169278035
Bug: 169980065
Bug: 173460694
Bug: 173994023
Bug: 174523584
Bug: 175001473
Bug: 175041667
Test: No compiled files changed
Change-Id: If0ccd1cd3a56f72eedd2a6cb202a34bc7b43ca0d
2021-03-08 19:45:05 -08:00
Alex Dale
eb56801fdb Added unittests for WV CRC-32 implementation.
[ Merge of http://go/wvgerrit/115549 ]

Our WV CRC-32 implementation is for CRC-32/MPEG-2 (rather than the
documented CRC-32-IEEE).  The OEMCrypto document has been updated to
reflect the reference implementation.

Test: oemcrypto_partner_tests
Bug: 135283522
Change-Id: Iea8fc4ec500aec96bdb27102c51dfcca77d7bffb
2021-03-08 19:45:05 -08:00
Alex Dale
b3b11ca1ea Added unittests for OEM Certificates.
[ Merge of http://go/wvgerrit/115548 ]

Create a small set of unittests to verify the functionality of OEM
Certificate.

This adds a test OEM Public Certificate and OEM Private Key.

Bug: 135283522
Test: oemcrypto_unittests
Change-Id: Iaa634543d9cb5005d91f1e7c528bf05b2b0c4d68
2021-03-08 19:45:05 -08:00