Clear Content Copy
Copy from Widevine repository of http://go/wvgerrit/13841 This CL adds a nonblocking CopyBuffer to OEMCrypto, its unit tests, and plumbs it up to the cdm CryptoSession and CdmEngine. b/19543782 Change-Id: I4c88bd2f8d7f67ecccb549c1934b7c0da15a8429
This commit is contained in:
@@ -1065,15 +1065,13 @@ bool SessionContext::DecryptMessage(const std::vector<uint8_t>& key,
|
||||
OEMCryptoResult SessionContext::DecryptCTR(
|
||||
const uint8_t* iv, size_t block_offset, const uint8_t* cipher_data,
|
||||
size_t cipher_data_length, bool is_encrypted, uint8_t* clear_data,
|
||||
BufferType buffer_type) {
|
||||
OEMCryptoBufferType buffer_type) {
|
||||
// If the data is clear, we do not need a current key selected.
|
||||
if (!is_encrypted) {
|
||||
if (buffer_type != kBufferTypeDirect) {
|
||||
memcpy(reinterpret_cast<uint8_t*>(clear_data), cipher_data,
|
||||
cipher_data_length);
|
||||
return OEMCrypto_SUCCESS;
|
||||
}
|
||||
// For reference implementation, we quietly drop the clear direct video.
|
||||
if (buffer_type == OEMCrypto_BufferType_Direct)
|
||||
return OEMCrypto_ERROR_NOT_IMPLEMENTED;
|
||||
memcpy(reinterpret_cast<uint8_t*>(clear_data), cipher_data,
|
||||
cipher_data_length);
|
||||
return OEMCrypto_SUCCESS;
|
||||
}
|
||||
|
||||
@@ -1084,7 +1082,7 @@ OEMCryptoResult SessionContext::DecryptCTR(
|
||||
}
|
||||
const KeyControlBlock& control = current_content_key()->control();
|
||||
if (control.control_bits() & kControlDataPathSecure) {
|
||||
if (!ce_->closed_platform() && buffer_type == kBufferTypeClear) {
|
||||
if (!ce_->closed_platform() && buffer_type == OEMCrypto_BufferType_Clear) {
|
||||
LOGE("[DecryptCTR(): Secure key with insecure buffer]");
|
||||
return OEMCrypto_ERROR_DECRYPT_FAILED;
|
||||
}
|
||||
@@ -1129,12 +1127,12 @@ OEMCryptoResult SessionContext::DecryptCTR(
|
||||
return OEMCrypto_ERROR_DECRYPT_FAILED;
|
||||
}
|
||||
|
||||
if (buffer_type == kBufferTypeDirect) {
|
||||
if (buffer_type == OEMCrypto_BufferType_Direct) {
|
||||
// For reference implementation, we quietly drop the decrypted direct video.
|
||||
return OEMCrypto_SUCCESS;
|
||||
}
|
||||
|
||||
if (buffer_type == kBufferTypeSecure) {
|
||||
if (buffer_type == OEMCrypto_BufferType_Secure) {
|
||||
// For reference implementation, we also quietly drop secure data.
|
||||
return OEMCrypto_SUCCESS;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user