summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'drm/1.0/vts/functional/drm_hal_clearkey_test.cpp')
-rw-r--r--drm/1.0/vts/functional/drm_hal_clearkey_test.cpp64
1 files changed, 29 insertions, 35 deletions
diff --git a/drm/1.0/vts/functional/drm_hal_clearkey_test.cpp b/drm/1.0/vts/functional/drm_hal_clearkey_test.cpp
index a110eb15..4a1892b8 100644
--- a/drm/1.0/vts/functional/drm_hal_clearkey_test.cpp
+++ b/drm/1.0/vts/functional/drm_hal_clearkey_test.cpp
@@ -89,10 +89,6 @@ static const uint8_t kInvalidUUID[16] = {
89 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80, 89 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80,
90 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80}; 90 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80};
91 91
92static const uint32_t k256SubSampleByteCount = 256;
93static const uint32_t k512SubSampleClearBytes = 512;
94static const uint32_t k512SubSampleEncryptedBytes = 512;
95
96class DrmHalClearkeyFactoryTest : public ::testing::VtsHalHidlTargetTestBase { 92class DrmHalClearkeyFactoryTest : public ::testing::VtsHalHidlTargetTestBase {
97 public: 93 public:
98 virtual void SetUp() override { 94 virtual void SetUp() override {
@@ -349,8 +345,7 @@ SessionId DrmHalClearkeyPluginTest::openSession() {
349 * Helper method to close a session 345 * Helper method to close a session
350 */ 346 */
351void DrmHalClearkeyPluginTest::closeSession(const SessionId& sessionId) { 347void DrmHalClearkeyPluginTest::closeSession(const SessionId& sessionId) {
352 auto result = drmPlugin->closeSession(sessionId); 348 EXPECT_TRUE(drmPlugin->closeSession(sessionId).isOk());
353 EXPECT_EQ(Status::OK, result);
354} 349}
355 350
356/** 351/**
@@ -793,7 +788,7 @@ TEST_F(DrmHalClearkeyPluginTest, SetMacAlgorithmNoSession) {
793 */ 788 */
794TEST_F(DrmHalClearkeyPluginTest, GenericEncryptNotSupported) { 789TEST_F(DrmHalClearkeyPluginTest, GenericEncryptNotSupported) {
795 SessionId session = openSession(); 790 SessionId session = openSession();
796 ; 791
797 hidl_vec<uint8_t> keyId = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}; 792 hidl_vec<uint8_t> keyId = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1};
798 hidl_vec<uint8_t> input = {1, 2, 3, 4, 5}; 793 hidl_vec<uint8_t> input = {1, 2, 3, 4, 5};
799 hidl_vec<uint8_t> iv = std::vector<uint8_t>(AES_BLOCK_SIZE, 0); 794 hidl_vec<uint8_t> iv = std::vector<uint8_t>(AES_BLOCK_SIZE, 0);
@@ -822,7 +817,7 @@ TEST_F(DrmHalClearkeyPluginTest, GenericDecryptNotSupported) {
822 817
823TEST_F(DrmHalClearkeyPluginTest, GenericSignNotSupported) { 818TEST_F(DrmHalClearkeyPluginTest, GenericSignNotSupported) {
824 SessionId session = openSession(); 819 SessionId session = openSession();
825 ; 820
826 hidl_vec<uint8_t> keyId = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}; 821 hidl_vec<uint8_t> keyId = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1};
827 hidl_vec<uint8_t> message = {1, 2, 3, 4, 5}; 822 hidl_vec<uint8_t> message = {1, 2, 3, 4, 5};
828 auto res = drmPlugin->sign(session, keyId, message, 823 auto res = drmPlugin->sign(session, keyId, message,
@@ -836,7 +831,7 @@ TEST_F(DrmHalClearkeyPluginTest, GenericSignNotSupported) {
836 831
837TEST_F(DrmHalClearkeyPluginTest, GenericVerifyNotSupported) { 832TEST_F(DrmHalClearkeyPluginTest, GenericVerifyNotSupported) {
838 SessionId session = openSession(); 833 SessionId session = openSession();
839 ; 834
840 hidl_vec<uint8_t> keyId = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}; 835 hidl_vec<uint8_t> keyId = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1};
841 hidl_vec<uint8_t> message = {1, 2, 3, 4, 5}; 836 hidl_vec<uint8_t> message = {1, 2, 3, 4, 5};
842 hidl_vec<uint8_t> signature = {0, 0, 0, 0, 0, 0, 0, 0, 837 hidl_vec<uint8_t> signature = {0, 0, 0, 0, 0, 0, 0, 0,
@@ -926,8 +921,7 @@ sp<IMemory> DrmHalClearkeyPluginTest::getDecryptMemory(size_t size,
926 */ 921 */
927TEST_F(DrmHalClearkeyPluginTest, SetMediaDrmSession) { 922TEST_F(DrmHalClearkeyPluginTest, SetMediaDrmSession) {
928 auto sessionId = openSession(); 923 auto sessionId = openSession();
929 Status status = cryptoPlugin->setMediaDrmSession(sessionId); 924 EXPECT_TRUE(cryptoPlugin->setMediaDrmSession(sessionId).isOk());
930 EXPECT_EQ(Status::OK, status);
931 closeSession(sessionId); 925 closeSession(sessionId);
932} 926}
933 927
@@ -948,8 +942,7 @@ TEST_F(DrmHalClearkeyPluginTest, SetMediaDrmSessionClosedSession) {
948 */ 942 */
949TEST_F(DrmHalClearkeyPluginTest, SetMediaDrmSessionEmptySession) { 943TEST_F(DrmHalClearkeyPluginTest, SetMediaDrmSessionEmptySession) {
950 SessionId sessionId; 944 SessionId sessionId;
951 Status status = cryptoPlugin->setMediaDrmSession(sessionId); 945 EXPECT_TRUE(cryptoPlugin->setMediaDrmSession(sessionId).isOk());
952 EXPECT_EQ(Status::OK, status);
953} 946}
954 947
955/** 948/**
@@ -1131,18 +1124,17 @@ TEST_F(DrmHalClearkeyDecryptTest, TestQueryKeyStatus) {
1131TEST_F(DrmHalClearkeyDecryptTest, ClearSegmentTest) { 1124TEST_F(DrmHalClearkeyDecryptTest, ClearSegmentTest) {
1132 vector<uint8_t> iv(AES_BLOCK_SIZE, 0); 1125 vector<uint8_t> iv(AES_BLOCK_SIZE, 0);
1133 const Pattern noPattern = {0, 0}; 1126 const Pattern noPattern = {0, 0};
1127 const uint32_t kByteCount = 256;
1134 const vector<SubSample> subSamples = { 1128 const vector<SubSample> subSamples = {
1135 {.numBytesOfClearData = k256SubSampleByteCount, 1129 {.numBytesOfClearData = kByteCount,
1136 .numBytesOfEncryptedData = 0}}; 1130 .numBytesOfEncryptedData = 0}};
1137 auto sessionId = openSession(); 1131 auto sessionId = openSession();
1138 loadKeys(sessionId); 1132 loadKeys(sessionId);
1139 1133 EXPECT_TRUE(cryptoPlugin->setMediaDrmSession(sessionId).isOk());
1140 Status status = cryptoPlugin->setMediaDrmSession(sessionId);
1141 EXPECT_EQ(Status::OK, status);
1142 1134
1143 uint32_t byteCount = decrypt(Mode::UNENCRYPTED, &iv[0], subSamples, 1135 uint32_t byteCount = decrypt(Mode::UNENCRYPTED, &iv[0], subSamples,
1144 noPattern, Status::OK); 1136 noPattern, Status::OK);
1145 EXPECT_EQ(k256SubSampleByteCount, byteCount); 1137 EXPECT_EQ(kByteCount, byteCount);
1146 1138
1147 closeSession(sessionId); 1139 closeSession(sessionId);
1148} 1140}
@@ -1154,18 +1146,18 @@ TEST_F(DrmHalClearkeyDecryptTest, ClearSegmentTest) {
1154TEST_F(DrmHalClearkeyDecryptTest, EncryptedAesCtrSegmentTest) { 1146TEST_F(DrmHalClearkeyDecryptTest, EncryptedAesCtrSegmentTest) {
1155 vector<uint8_t> iv(AES_BLOCK_SIZE, 0); 1147 vector<uint8_t> iv(AES_BLOCK_SIZE, 0);
1156 const Pattern noPattern = {0, 0}; 1148 const Pattern noPattern = {0, 0};
1149 const uint32_t kClearBytes = 512;
1150 const uint32_t kEncryptedBytes = 512;
1157 const vector<SubSample> subSamples = { 1151 const vector<SubSample> subSamples = {
1158 {.numBytesOfClearData = k512SubSampleClearBytes, 1152 {.numBytesOfClearData = kClearBytes,
1159 .numBytesOfEncryptedData = k512SubSampleEncryptedBytes}}; 1153 .numBytesOfEncryptedData = kEncryptedBytes}};
1160 auto sessionId = openSession(); 1154 auto sessionId = openSession();
1161 loadKeys(sessionId); 1155 loadKeys(sessionId);
1162 1156 EXPECT_TRUE(cryptoPlugin->setMediaDrmSession(sessionId).isOk());
1163 Status status = cryptoPlugin->setMediaDrmSession(sessionId);
1164 EXPECT_EQ(Status::OK, status);
1165 1157
1166 uint32_t byteCount = decrypt(Mode::AES_CTR, &iv[0], subSamples, 1158 uint32_t byteCount = decrypt(Mode::AES_CTR, &iv[0], subSamples,
1167 noPattern, Status::OK); 1159 noPattern, Status::OK);
1168 EXPECT_EQ(k512SubSampleClearBytes + k512SubSampleEncryptedBytes, byteCount); 1160 EXPECT_EQ(kClearBytes + kEncryptedBytes, byteCount);
1169 1161
1170 closeSession(sessionId); 1162 closeSession(sessionId);
1171} 1163}
@@ -1177,12 +1169,10 @@ TEST_F(DrmHalClearkeyDecryptTest, EncryptedAesCtrSegmentTestNoKeys) {
1177 vector<uint8_t> iv(AES_BLOCK_SIZE, 0); 1169 vector<uint8_t> iv(AES_BLOCK_SIZE, 0);
1178 const Pattern noPattern = {0, 0}; 1170 const Pattern noPattern = {0, 0};
1179 const vector<SubSample> subSamples = { 1171 const vector<SubSample> subSamples = {
1180 {.numBytesOfClearData = k256SubSampleByteCount, 1172 {.numBytesOfClearData = 256,
1181 .numBytesOfEncryptedData = k256SubSampleByteCount}}; 1173 .numBytesOfEncryptedData = 256}};
1182 auto sessionId = openSession(); 1174 auto sessionId = openSession();
1183 1175 EXPECT_TRUE(cryptoPlugin->setMediaDrmSession(sessionId).isOk());
1184 Status status = cryptoPlugin->setMediaDrmSession(sessionId);
1185 EXPECT_EQ(Status::OK, status);
1186 1176
1187 uint32_t byteCount = decrypt(Mode::AES_CTR, &iv[0], subSamples, 1177 uint32_t byteCount = decrypt(Mode::AES_CTR, &iv[0], subSamples,
1188 noPattern, Status::ERROR_DRM_NO_LICENSE); 1178 noPattern, Status::ERROR_DRM_NO_LICENSE);
@@ -1207,9 +1197,9 @@ void DrmHalClearkeyDecryptTest::decryptWithInvalidKeys(
1207 EXPECT_EQ(Status::OK, status); 1197 EXPECT_EQ(Status::OK, status);
1208 EXPECT_EQ(0u, myKeySetId.size()); 1198 EXPECT_EQ(0u, myKeySetId.size());
1209 }); 1199 });
1210 ASSERT_OK(res); 1200 EXPECT_OK(res);
1211 1201
1212 ASSERT_TRUE(cryptoPlugin->setMediaDrmSession(sessionId).isOk()); 1202 EXPECT_TRUE(cryptoPlugin->setMediaDrmSession(sessionId).isOk());
1213 1203
1214 uint32_t byteCount = decrypt(Mode::AES_CTR, &iv[0], subSamples, 1204 uint32_t byteCount = decrypt(Mode::AES_CTR, &iv[0], subSamples,
1215 noPattern, Status::ERROR_DRM_NO_LICENSE); 1205 noPattern, Status::ERROR_DRM_NO_LICENSE);
@@ -1224,9 +1214,11 @@ void DrmHalClearkeyDecryptTest::decryptWithInvalidKeys(
1224TEST_F(DrmHalClearkeyDecryptTest, DecryptWithEmptyKey) { 1214TEST_F(DrmHalClearkeyDecryptTest, DecryptWithEmptyKey) {
1225 vector<uint8_t> iv(AES_BLOCK_SIZE, 0); 1215 vector<uint8_t> iv(AES_BLOCK_SIZE, 0);
1226 const Pattern noPattern = {0, 0}; 1216 const Pattern noPattern = {0, 0};
1217 const uint32_t kClearBytes = 512;
1218 const uint32_t kEncryptedBytes = 512;
1227 const vector<SubSample> subSamples = { 1219 const vector<SubSample> subSamples = {
1228 {.numBytesOfClearData = k512SubSampleClearBytes, 1220 {.numBytesOfClearData = kClearBytes,
1229 .numBytesOfEncryptedData = k512SubSampleEncryptedBytes}}; 1221 .numBytesOfEncryptedData = kEncryptedBytes}};
1230 1222
1231 // base 64 encoded JSON response string, must not contain padding character '=' 1223 // base 64 encoded JSON response string, must not contain padding character '='
1232 const hidl_string emptyKeyResponse = 1224 const hidl_string emptyKeyResponse =
@@ -1259,9 +1251,11 @@ TEST_F(DrmHalClearkeyDecryptTest, DecryptWithEmptyKey) {
1259TEST_F(DrmHalClearkeyDecryptTest, DecryptWithKeyTooLong) { 1251TEST_F(DrmHalClearkeyDecryptTest, DecryptWithKeyTooLong) {
1260 vector<uint8_t> iv(AES_BLOCK_SIZE, 0); 1252 vector<uint8_t> iv(AES_BLOCK_SIZE, 0);
1261 const Pattern noPattern = {0, 0}; 1253 const Pattern noPattern = {0, 0};
1254 const uint32_t kClearBytes = 512;
1255 const uint32_t kEncryptedBytes = 512;
1262 const vector<SubSample> subSamples = { 1256 const vector<SubSample> subSamples = {
1263 {.numBytesOfClearData = k512SubSampleClearBytes, 1257 {.numBytesOfClearData = kClearBytes,
1264 .numBytesOfEncryptedData = k512SubSampleEncryptedBytes}}; 1258 .numBytesOfEncryptedData = kEncryptedBytes}};
1265 1259
1266 // base 64 encoded JSON response string, must not contain padding character '=' 1260 // base 64 encoded JSON response string, must not contain padding character '='
1267 const hidl_string keyTooLongResponse = 1261 const hidl_string keyTooLongResponse =