Support AES-CBC sample encryption in MediaDrm
bug:23719082
Change-Id: I8f892657d8be888056165b98c7c810339e7a8b41
diff --git a/include/media/hardware/CryptoAPI.h b/include/media/hardware/CryptoAPI.h
index 3e3257f..0e86aac 100644
--- a/include/media/hardware/CryptoAPI.h
+++ b/include/media/hardware/CryptoAPI.h
@@ -46,10 +46,8 @@
enum Mode {
kMode_Unencrypted = 0,
kMode_AES_CTR = 1,
-
- // Neither key nor iv are being used in this mode.
- // Each subsample is encrypted w/ an iv of all zeroes.
- kMode_AES_WV = 2, // FIX constant
+ kMode_AES_WV = 2,
+ kMode_AES_CBC = 3,
};
struct SubSample {
@@ -57,6 +55,16 @@
uint32_t mNumBytesOfEncryptedData;
};
+ struct Pattern {
+ // Number of blocks to be encrypted in the pattern. If zero, pattern
+ // encryption is inoperative.
+ uint32_t mEncryptBlocks;
+
+ // Number of blocks to be skipped (left clear) in the pattern. If zero,
+ // pattern encryption is inoperative.
+ uint32_t mSkipBlocks;
+ };
+
CryptoPlugin() {}
virtual ~CryptoPlugin() {}
@@ -96,6 +104,7 @@
const uint8_t key[16],
const uint8_t iv[16],
Mode mode,
+ const Pattern &pattern,
const void *srcPtr,
const SubSample *subSamples, size_t numSubSamples,
void *dstPtr,