Don't add offsets to ion handles
Fixes a secure buffer addressing offset error in the Widevine CENC drm engine. bug: 8667527 Merges the following from Widevine CDM repository: Allow specification of offset into secure buffer https://widevine-internal-review.googlesource.com/#/c/5100/ Update WVCryptoPlugin to Pass Output Offset as a Separate Parameter https://widevine-internal-review.googlesource.com/#/c/5120/ Add offset to secure data buffer in OEMCrypto DecryptCTR https://widevine-internal-review.googlesource.com/#/c/5110/ Change-Id: Ic3e4b35304c8fbae4aebe4c495285eb787e8c205
This commit is contained in:
@@ -113,6 +113,7 @@ typedef struct {
|
||||
struct { // type == OEMCrypto_BufferType_Secure
|
||||
void* handle;
|
||||
size_t max_length;
|
||||
size_t offset;
|
||||
} secure;
|
||||
struct { // type == OEMCrypto_BufferType_Direct
|
||||
bool is_video;
|
||||
@@ -638,11 +639,13 @@ OEMCryptoResult OEMCrypto_SelectKey(const OEMCrypto_SESSION session,
|
||||
* arguments are ignored.
|
||||
* iv (in) - The initial value block to be used for content decryption.
|
||||
* This is discussed further below.
|
||||
* offset (in) - If non-zero, the decryption block boundary is different
|
||||
* from the start of the data. offset should be subtracted from
|
||||
* block_offset (in) - If non-zero, the decryption block boundary is
|
||||
* different from the start of the data. offset should be subtracted from
|
||||
* data_addr to compute the starting address of the first decrypted
|
||||
* block. The bytes between the decryption block start address and
|
||||
* data_addr are discarded after decryption.
|
||||
* data_addr are discarded after decryption. This is only used to adjust
|
||||
* the start of decryption block. It does not adjust the beginning of the
|
||||
* source or destination data. 0 <= block_offset < 16.
|
||||
* out_buffer (in) - A caller-owned descriptor that specifies the
|
||||
* handling of the decrypted byte stream. See OEMCrypto_DestbufferDesc
|
||||
* for details.
|
||||
@@ -690,14 +693,13 @@ OEMCryptoResult OEMCrypto_SelectKey(const OEMCrypto_SESSION session,
|
||||
* Version:
|
||||
* This method changed in API version 5.
|
||||
*/
|
||||
OEMCryptoResult
|
||||
OEMCrypto_DecryptCTR(OEMCrypto_SESSION session,
|
||||
const uint8_t *data_addr,
|
||||
size_t data_length,
|
||||
bool is_encrypted,
|
||||
const uint8_t *iv,
|
||||
size_t offset,
|
||||
const OEMCrypto_DestBufferDesc* out_buffer);
|
||||
OEMCryptoResult OEMCrypto_DecryptCTR(OEMCrypto_SESSION session,
|
||||
const uint8_t *data_addr,
|
||||
size_t data_length,
|
||||
bool is_encrypted,
|
||||
const uint8_t *iv,
|
||||
size_t block_offset,
|
||||
const OEMCrypto_DestBufferDesc* out_buffer);
|
||||
|
||||
/*
|
||||
* OEMCrypto_InstallKeybox
|
||||
|
||||
Reference in New Issue
Block a user