1 /*
2 * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15 #include <mutex>
16 #include <shared_mutex>
17 #include <string>
18 #include <refbase.h>
19 #include "cstdio"
20 #include "cstdlib"
21 #include <securec.h>
22 #include "native_drm_common.h"
23 #include "native_drm_err.h"
24 #include "gmock/gmock.h"
25 #include "native_drm_base.h"
26 #include "native_drm_object.h"
27 #include "imedia_decrypt_module_service.h"
28 #include "native_mediakeysession.h"
29 #include "native_mediakeysystem.h"
30 #include "cstdbool"
31 #include "drm_types.h"
32 #include "drm_framework_unittest.h"
33 #include "drm_log.h"
34 #include "drm_death_recipient.h"
35 #include "key_session_impl.h"
36 #include "imedia_key_system_service.h"
37 #include "media_key_system_factory_impl.h"
38 #include "media_key_system_service_callback_stub.h"
39 #include "http.h"
40 #include "ashmem.h"
41 #include "media_decrypt_module_service_proxy.h"
42 #include <cstring>
43 #include <map>
44 #include <unordered_map>
45 #include "nocopyable.h"
46 #include "ipc_skeleton.h"
47 #include "imedia_key_session_service.h"
48 #include "imedia_key_session_service_callback.h"
49 #include "media_key_session_service_callback_stub.h"
50
51 #define DRM_SAMPLE_CHECK_AND_RETURN_RET_LOG(cond, ret, fmt, ...) \
52 do { \
53 if ((cond)) { \
54 printf(fmt, ##__VA_ARGS__); \
55 return ret; \
56 } \
57 } while (0)
58 #define DRM_SAMPLE_INFO_LOG(fmt, ...) fprintf(stdout, "[INFO] " fmt "\n", ##__VA_ARGS__)
59 #define DRM_SAMPLE_ERROR_LOG(fmt, ...) fprintf(stdout, "[ERROR] " fmt "\n", ##__VA_ARGS__)
60 #define OFFRESPONSE \
61 { \
62 0x31, 0x64, 0x6E, 0x5A, 0x32, 0x4E, 0x57, 0x74, 0x76, 0x4D, 0x47, \
63 0x34, 0x34, 0x4E, 0x6A, 0x42, 0x30, 0x4D, 0x32, 0x77, 0x33, \
64 0x4E, 0x67, 0x3D, 0x3D, 0x3A, 0x59, 0x7A, 0x56, 0x78, 0x63, \
65 0x48, 0x64, 0x70, 0x61, 0x6D, 0x30, 0x34, 0x59, 0x57, 0x45, \
66 0x34, 0x5A, 0x48, 0x6B, 0x79, 0x4D, 0x67, 0x3D, 0x3D \
67 }
68 #define REQUESTINFODATA \
69 { \
70 0x00, 0x00, 0x00, 0x8B, 0x70, 0x73, 0x73, 0x68, 0x00, 0x00, 0x00, \
71 0x00, 0x3D, 0x5E, 0x6D, 0x35, 0x9B, 0x9A, 0x41, 0xE8, 0xB8, \
72 0x43, 0xDD, 0x3C, 0x6E, 0x72, 0xC4, 0x2C, 0x00, 0x00, 0x00, \
73 0x6B, 0x7B, 0x22, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, \
74 0x22, 0x3A, 0x22, 0x56, 0x31, 0x2E, 0x30, 0x22, 0x2C, 0x22, \
75 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x49, 0x44, 0x22, \
76 0x3A, 0x22, 0x64, 0x48, 0x4D, 0x74, 0x4D, 0x6A, 0x59, 0x30, \
77 0x4C, 0x54, 0x45, 0x77, 0x4F, 0x44, 0x41, 0x74, 0x59, 0x57, \
78 0x56, 0x7A, 0x22, 0x2C, 0x22, 0x6B, 0x69, 0x64, 0x73, 0x22, \
79 0x3A, 0x5B, 0x22, 0x47, 0x2B, 0x45, 0x6B, 0x2F, 0x2B, 0x58, \
80 0x6D, 0x55, 0x6B, 0x70, 0x42, 0x48, 0x51, 0x67, 0x58, 0x59, \
81 0x57, 0x51, 0x51, 0x49, 0x67, 0x3D, 0x3D, 0x22, 0x5D, 0x2C, \
82 0x22, 0x65, 0x6E, 0x73, 0x63, 0x68, 0x65, 0x6D, 0x61, 0x22, \
83 0x3A, 0x22, 0x63, 0x62, 0x63, 0x31, 0x22, 0x7D \
84 }
85 #define OFFREQUESTINFODATA \
86 { \
87 0x00, 0x00, 0x00, 0x8b, 0x70, 0x73, 0x73, 0x68, 0x00, 0x00, 0x00, \
88 0x00, 0x3d, 0x5e, 0x6d, 0x35, 0x9b, 0x9a, 0x41, 0xe8, 0xb8, \
89 0x43, 0xdd, 0x3c, 0x6e, 0x72, 0xc4, 0x2c, 0x00, 0x00, 0x00, \
90 0x6b, 0x7b, 0x22, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, \
91 0x22, 0x3a, 0x22, 0x56, 0x31, 0x2e, 0x30, 0x22, 0x2c, 0x22, \
92 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x22, \
93 0x3a, 0x22, 0x64, 0x48, 0x4d, 0x74, 0x4d, 0x6a, 0x59, 0x30, \
94 0x4c, 0x54, 0x45, 0x77, 0x4f, 0x44, 0x41, 0x74, 0x59, 0x57, \
95 0x56, 0x7a, 0x22, 0x2c, 0x22, 0x6b, 0x69, 0x64, 0x73, 0x22, \
96 0x3a, 0x5b, 0x22, 0x47, 0x2b, 0x45, 0x6b, 0x2f, 0x2b, 0x58, \
97 0x6d, 0x55, 0x6b, 0x70, 0x42, 0x48, 0x51, 0x67, 0x58, 0x59, \
98 0x57, 0x51, 0x51, 0x49, 0x67, 0x3d, 0x3d, 0x22, 0x5d, 0x2c, \
99 0x22, 0x65, 0x6e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x22, \
100 0x3a, 0x22, 0x63, 0x62, 0x63, 0x31, 0x22, 0x7d \
101 }
102 #define ONRESPONSE \
103 { \
104 0x30, 0x64, 0x6E, 0x5A, 0x32, 0x4E, 0x57, 0x74, 0x76, 0x4D, 0x47, \
105 0x34, 0x34, 0x4E, 0x6A, 0x42, 0x30, 0x4D, 0x32, 0x77, 0x33, \
106 0x4E, 0x67, 0x3D, 0x3D, 0x3A, 0x59, 0x7A, 0x56, 0x78, 0x63, \
107 0x48, 0x64, 0x70, 0x61, 0x6D, 0x30, 0x34, 0x59, 0x57, 0x45, \
108 0x34, 0x5A, 0x48, 0x6B, 0x79, 0x4D, 0x67, 0x3D, 0x3D \
109 }
110
111
112 #define LICENSE_URL "http://license.dev.trustdta.com:8080/drmproxy/v3/getLicense"
113 #define PROVISION_URL "https://wiseplay-prv.cloud.huawei.com/provision/v1/wiseplay"
114 using namespace testing::ext;
115 using namespace std;
116
117 namespace {
118 const int32_t STEP_ONE = 1;
119 const int32_t STEP_TWO = 2;
120 const int32_t STEP_THREE = 3;
121 const int32_t STEP_FOUR = 4;
122 }
123
124 namespace OHOS {
125 namespace DrmStandard {
126
127 bool g_isWisePlay = false;
SetUpTestCase(void)128 void DrmFrameworkUnitTest::SetUpTestCase(void) {}
129
TearDownTestCase(void)130 void DrmFrameworkUnitTest::TearDownTestCase(void) {}
131
GetUuid()132 static const char *GetUuid()
133 {
134 if (OH_MediaKeySystem_IsSupported("com.clearplay.drm")) {
135 return "com.clearplay.drm";
136 } else if (OH_MediaKeySystem_IsSupported("com.wiseplay.drm")) {
137 return "com.wiseplay.drm";
138 } else {
139 return "ERROR";
140 }
141 }
142
SetUp()143 void DrmFrameworkUnitTest::SetUp()
144 {
145 if (strcmp(GetUuid(), "com.wiseplay.drm") == 0) {
146 g_isWisePlay = true;
147 }
148 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
149 MediaKeySystem *mediaKeySystem = nullptr;
150 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
151 EXPECT_NE(mediaKeySystem, nullptr);
152 EXPECT_EQ(errNo, DRM_ERR_OK);
153 unsigned char request[12288] = { 0 }; // 12288:request len
154 int32_t requestLen = 12288; // 12288:request len
155 char defaultUrl[2048] = { 0 }; // 2048:url len
156 int32_t defaultUrlLen = 2048; // 2048:url len
157 DRM_CertificateStatus certStatus = CERT_STATUS_INVALID;
158 errNo = OH_MediaKeySystem_GetCertificateStatus(mediaKeySystem, &certStatus);
159 EXPECT_EQ(errNo, DRM_ERR_OK);
160 if (certStatus == CERT_STATUS_NOT_PROVISIONED) {
161 errNo = OH_MediaKeySystem_GenerateKeySystemRequest(mediaKeySystem, request, &requestLen, defaultUrl,
162 defaultUrlLen);
163 unsigned char KeySystemResponse[12288] = OFFRESPONSE;
164 int32_t KeySystemResponseLen = 12288;
165 if (g_isWisePlay) {
166 int rett = HttpPost(PROVISION_URL, request, requestLen, KeySystemResponse, &KeySystemResponseLen, 10);
167 EXPECT_EQ(rett, 0);
168 } else {
169 KeySystemResponseLen = 50; // 50 is the length of system response
170 }
171 errNo = OH_MediaKeySystem_ProcessKeySystemResponse(mediaKeySystem, KeySystemResponse, 0);
172 EXPECT_NE(errNo, DRM_ERR_OK);
173 errNo = OH_MediaKeySystem_ProcessKeySystemResponse(mediaKeySystem, KeySystemResponse, KeySystemResponseLen);
174 EXPECT_EQ(errNo, DRM_ERR_OK);
175 }
176 OH_MediaKeySystem_Destroy(mediaKeySystem);
177 mediaKeySystem = nullptr;
178 }
179
TearDown()180 void DrmFrameworkUnitTest::TearDown() {}
181
GetDrmPlugin()182 static const char *GetDrmPlugin()
183 {
184 if (OH_MediaKeySystem_IsSupported("com.clearplay.drm")) {
185 return "killall -9 clearplay_host";
186 } else if (OH_MediaKeySystem_IsSupported("com.wiseplay.drm")) {
187 return "killall -9 wiseplay_host";
188 } else {
189 return "ERROR";
190 }
191 }
192
TestSystemEventCallBack(DRM_EventType eventType,unsigned char * info,int32_t infoLen,char * extra)193 Drm_ErrCode TestSystemEventCallBack(DRM_EventType eventType, unsigned char *info,
194 int32_t infoLen, char *extra)
195 {
196 DRM_SAMPLE_INFO_LOG("TestSystemEventCallBack ok");
197 return DRM_ERR_OK;
198 }
199
TestSessoinEventCallBack(DRM_EventType eventType,unsigned char * info,int32_t infoLen,char * extra)200 Drm_ErrCode TestSessoinEventCallBack(DRM_EventType eventType, unsigned char *info,
201 int32_t infoLen, char *extra)
202 {
203 DRM_SAMPLE_INFO_LOG("TestSessoinEventCallBack ok");
204 return DRM_ERR_OK;
205 }
206
TestSessoinKeyChangeCallBack(DRM_KeysInfo * keysInfo,bool hasNewGoodKeys)207 Drm_ErrCode TestSessoinKeyChangeCallBack(DRM_KeysInfo *keysInfo, bool hasNewGoodKeys)
208 {
209 DRM_SAMPLE_INFO_LOG("TestSessoinKeyChangeCallBack ok");
210 return DRM_ERR_OK;
211 }
212
TestSystemEventCallBackWithObj(MediaKeySystem * mediaKeySystem,DRM_EventType eventType,uint8_t * info,int32_t infoLen,char * extra)213 Drm_ErrCode TestSystemEventCallBackWithObj(MediaKeySystem *mediaKeySystem, DRM_EventType eventType,
214 uint8_t *info, int32_t infoLen, char *extra)
215 {
216 DRM_SAMPLE_INFO_LOG("TestSystemEventCallBackWithObj ok");
217 if (mediaKeySystem == nullptr) {
218 return DRM_ERR_UNKNOWN;
219 }
220 DRM_SAMPLE_INFO_LOG("Event: event type: %d", eventType);
221 DRM_SAMPLE_INFO_LOG("Event: the info body is: ");
222 if (info != nullptr) {
223 for (int32_t i = 0; i < infoLen; i++) {
224 DRM_SAMPLE_INFO_LOG("%x", info[i]);
225 }
226 }
227 if (extra != nullptr) {
228 DRM_SAMPLE_INFO_LOG("Event: the extra is: %s", extra);
229 }
230 return DRM_ERR_OK;
231 }
232
TestSessoinEventCallBackWithObj(MediaKeySession * mediaKeySessoin,DRM_EventType eventType,uint8_t * info,int32_t infoLen,char * extra)233 Drm_ErrCode TestSessoinEventCallBackWithObj(MediaKeySession *mediaKeySessoin, DRM_EventType eventType,
234 uint8_t *info, int32_t infoLen, char *extra)
235 {
236 DRM_SAMPLE_INFO_LOG("TestSessoinEventCallBackWithObj ok");
237 if (mediaKeySessoin == nullptr) {
238 return DRM_ERR_UNKNOWN;
239 }
240 DRM_SAMPLE_INFO_LOG("Event: the event type: %d", eventType);
241 DRM_SAMPLE_INFO_LOG("Event: the info body is: ");
242 if (info != nullptr) {
243 for (int32_t i = 0; i < infoLen; i++) {
244 DRM_SAMPLE_INFO_LOG("%x", info[i]);
245 }
246 }
247 if (extra != nullptr) {
248 DRM_SAMPLE_INFO_LOG("Event: the extra is: %s", extra);
249 }
250 return DRM_ERR_OK;
251 }
252
TestSessoinKeyChangeCallBackWithObj(MediaKeySession * mediaKeySessoin,DRM_KeysInfo * keysInfo,bool hasNewGoodKeys)253 Drm_ErrCode TestSessoinKeyChangeCallBackWithObj(MediaKeySession *mediaKeySessoin, DRM_KeysInfo *keysInfo,
254 bool hasNewGoodKeys)
255 {
256 DRM_SAMPLE_INFO_LOG("TestSessoinKeyChangeCallBackWithObj ok");
257 if (mediaKeySessoin == nullptr) {
258 return DRM_ERR_UNKNOWN;
259 }
260 for (uint32_t i = 0; i < keysInfo->keysInfoCount; i++) {
261 for (uint32_t j = 0; j < MAX_KEY_ID_LEN; j += STEP_FOUR) {
262 DRM_SAMPLE_INFO_LOG("KeyChangedEvent: keyid is: ");
263 DRM_SAMPLE_INFO_LOG("%x %x %x %x",
264 keysInfo->keyId[i][j], keysInfo->keyId[i][j + STEP_ONE],
265 keysInfo->keyId[i][j + STEP_TWO], keysInfo->keyId[i][j + STEP_THREE]);
266 }
267 DRM_SAMPLE_INFO_LOG("KeyChangedEvent: statusValue %s", keysInfo->statusValue[i]);
268 }
269 return DRM_ERR_OK;
270 }
271
272 /*
273 * Feature: Framework
274 * Function: Test to determine if the creation of this DRM instance is supported
275 * Sub function: NA
276 * Function point: NA
277 * Environmental conditions: NA
278 * Case description: Test to determine if it supports creating the DRM instance interface OH_MediaKeySystem_IsSupported
279 */
280 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_MediaKeySystemIsSupportedNormal_001, TestSize.Level0)
281 {
282 bool supported;
283 supported = OH_MediaKeySystem_IsSupported(GetUuid());
284 EXPECT_EQ(supported, true);
285 }
286
287 /*
288 * Feature: Framework
289 * Function: Test to determine if the creation of this DRM instance is supported
290 * Sub function: NA
291 * Function point: NA
292 * Environmental conditions: NA
293 * Case description: Test to determine if it supports creating the DRM instance interface OH_MediaKeySystem_IsSupported
294 */
295 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_MediaKeySystemIsSupported2Normal_002, TestSize.Level0)
296 {
297 bool supported;
298 supported = OH_MediaKeySystem_IsSupported2(GetUuid(), "video/mp4");
299 EXPECT_EQ(supported, true);
300 }
301
302 /*
303 * Feature: Framework
304 * Function: Test to determine if the creation of this DRM instance is supported
305 * Sub function: NA
306 * Function point: NA
307 * Environmental conditions: NA
308 * Case description: Test to determine if it supports creating the DRM instance interface OH_MediaKeySystem_IsSupported
309 */
310 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_MediaKeySystemIsSupported3Normal_003, TestSize.Level0)
311 {
312 bool supported;
313 supported = OH_MediaKeySystem_IsSupported3(GetUuid(), "video/mp4", CONTENT_PROTECTION_LEVEL_HW_CRYPTO);
314 EXPECT_EQ(supported, true);
315 }
316
317 /*
318 * Feature: Framework
319 * Function: Test to determine if the creation of this DRM instance is supported
320 * Sub function: NA
321 * Function point: NA
322 * Environmental conditions: NA
323 * Case description: Test to determine if it supports creating the DRM instance interface OH_MediaKeySystem_IsSupported
324 */
325 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_MediaKeySystemIsSupportedAbNormal_004, TestSize.Level0)
326 {
327 bool supported = true;
328 supported = OH_MediaKeySystem_IsSupported("com.drm.clearpla");
329 EXPECT_EQ(supported, false);
330 supported = OH_MediaKeySystem_IsSupported("");
331 EXPECT_EQ(supported, false);
332 supported = OH_MediaKeySystem_IsSupported(nullptr);
333 EXPECT_EQ(supported, false);
334 }
335
336 /*
337 * Feature: Framework
338 * Function: Test to determine if the creation of this DRM instance is supported
339 * Sub function: NA
340 * Function point: NA
341 * Environmental conditions: NA
342 * Case description: Test to determine if it supports creating the DRM instance interface OH_MediaKeySystem_IsSupported
343 */
344 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_MediaKeySystemIsSupported2AbNormal_005, TestSize.Level0)
345 {
346 bool supported = true;
347 supported = OH_MediaKeySystem_IsSupported2("com.drm.clearpla", "video/mp4");
348 EXPECT_EQ(supported, false);
349 supported = OH_MediaKeySystem_IsSupported2("", "video/mp4");
350 EXPECT_EQ(supported, false);
351 supported = OH_MediaKeySystem_IsSupported2(nullptr, "video/mp4");
352 EXPECT_EQ(supported, false);
353 supported = OH_MediaKeySystem_IsSupported2(GetUuid(), "ideo/mp4");
354 if (g_isWisePlay) {
355 EXPECT_EQ(supported, true);
356 } else {
357 EXPECT_EQ(supported, false);
358 }
359 supported = OH_MediaKeySystem_IsSupported2(GetUuid(), "");
360 EXPECT_EQ(supported, false);
361 supported = OH_MediaKeySystem_IsSupported2(GetUuid(), nullptr);
362 EXPECT_EQ(supported, false);
363 }
364
365 /*
366 * Feature: Framework
367 * Function: Test to determine if the creation of this DRM instance is supported
368 * Sub function: NA
369 * Function point: NA
370 * Environmental conditions: NA
371 * Case description: Test to determine if it supports creating the DRM instance interface OH_MediaKeySystem_IsSupported
372 */
373 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_MediaKeySystemIsSupported3AbNormal_006, TestSize.Level0)
374 {
375 bool supported = true;
376 supported = OH_MediaKeySystem_IsSupported3("com.drm.clearpla", "video/mp4", CONTENT_PROTECTION_LEVEL_HW_CRYPTO);
377 EXPECT_EQ(supported, false);
378 supported = OH_MediaKeySystem_IsSupported3("", "video/mp4", CONTENT_PROTECTION_LEVEL_HW_CRYPTO);
379 EXPECT_EQ(supported, false);
380 supported = OH_MediaKeySystem_IsSupported3(nullptr, "video/mp4", CONTENT_PROTECTION_LEVEL_HW_CRYPTO);
381 EXPECT_EQ(supported, false);
382 supported = OH_MediaKeySystem_IsSupported3(GetUuid(), "ideo/mp4", CONTENT_PROTECTION_LEVEL_HW_CRYPTO);
383 if (g_isWisePlay) {
384 EXPECT_EQ(supported, true);
385 } else {
386 EXPECT_EQ(supported, false);
387 }
388 supported = OH_MediaKeySystem_IsSupported3(GetUuid(), "", CONTENT_PROTECTION_LEVEL_HW_CRYPTO);
389 EXPECT_EQ(supported, false);
390 supported = OH_MediaKeySystem_IsSupported3(GetUuid(), nullptr, CONTENT_PROTECTION_LEVEL_HW_CRYPTO);
391 EXPECT_EQ(supported, false);
392 supported = OH_MediaKeySystem_IsSupported3(GetUuid(), "video/mp4",
393 (DRM_ContentProtectionLevel)(CONTENT_PROTECTION_LEVEL_UNKNOWN - 1));
394 EXPECT_EQ(supported, false);
395 supported = OH_MediaKeySystem_IsSupported3(GetUuid(), "video/mp4",
396 (DRM_ContentProtectionLevel)CONTENT_PROTECTION_LEVEL_MAX);
397 EXPECT_EQ(supported, false);
398 }
399
400 /*
401 * Feature: Framework
402 * Function: Test and create DRM instances
403 * Sub function: NA
404 * Function point: NA
405 * Environmental conditions: NA
406 * Case Description: Test Creating DRM Instance
407 */
408 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_CreateMediaKeySystemNormal_007, TestSize.Level0)
409 {
410 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
411 MediaKeySystem *mediaKeySystem = nullptr;
412 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_UNKNOWN;
413 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
414 EXPECT_NE(mediaKeySystem, nullptr);
415 EXPECT_EQ(errNo, DRM_ERR_OK);
416 errNo = OH_MediaKeySystem_GetMaxContentProtectionLevel(mediaKeySystem, &contentProtectionLevel);
417 EXPECT_EQ(errNo, DRM_ERR_OK);
418 EXPECT_GT(contentProtectionLevel, 0);
419 if (mediaKeySystem != nullptr) {
420 OH_MediaKeySystem_Destroy(mediaKeySystem);
421 mediaKeySystem = nullptr;
422 }
423 }
424
425 /*
426 * Feature: Framework
427 * Function: Test and create DRM instances
428 * Sub function: NA
429 * Function point: NA
430 * Environmental conditions: NA
431 * Case Description: Testing for an incorrect uuid and unsuccessful creation of DRM instance.
432 */
433 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_CreateMediaKeySystemAbNormal_008, TestSize.Level0)
434 {
435 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
436 MediaKeySystem *mediaKeySystem = nullptr;
437 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_UNKNOWN;
438 errNo = OH_MediaKeySystem_Create("com.drm.clerpay", &mediaKeySystem);
439 EXPECT_EQ(mediaKeySystem, nullptr);
440 EXPECT_NE(errNo, DRM_ERR_OK);
441 errNo = OH_MediaKeySystem_GetMaxContentProtectionLevel(mediaKeySystem, &contentProtectionLevel);
442 EXPECT_NE(errNo, DRM_ERR_OK);
443 }
444
445 /*
446 * Feature: Framework
447 * Function: Test and create DRM instances
448 * Sub function: NA
449 * Function point: NA
450 * Environmental conditions: NA
451 * Case Description: Test passed in an empty uuid and failed to create a DRM instance.
452 */
453 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_CreateMediaKeySystemAbNormal_009, TestSize.Level0)
454 {
455 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
456 MediaKeySystem *mediaKeySystem = nullptr;
457 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_UNKNOWN;
458 errNo = OH_MediaKeySystem_Create("", &mediaKeySystem);
459 EXPECT_EQ(mediaKeySystem, nullptr);
460 EXPECT_NE(errNo, DRM_ERR_OK);
461 errNo = OH_MediaKeySystem_GetMaxContentProtectionLevel(mediaKeySystem, &contentProtectionLevel);
462 EXPECT_NE(errNo, DRM_ERR_OK);
463 }
464
465 /*
466 * Feature: Framework
467 * Function: Test and create DRM instances
468 * Sub function: NA
469 * Function point: NA
470 * Environmental conditions: NA
471 * Case description: After the DRM instance is created, it is destroyed, and then the subsequent interface is called.
472 * The interface returns unsuccessful.
473 */
474 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_CreateMediaKeySystemNormal_010, TestSize.Level0)
475 {
476 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
477 MediaKeySystem *mediaKeySystem = nullptr;
478 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_UNKNOWN;
479 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
480 EXPECT_NE(mediaKeySystem, nullptr);
481 EXPECT_EQ(errNo, DRM_ERR_OK);
482 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
483 mediaKeySystem = nullptr;
484 EXPECT_EQ(errNo, DRM_ERR_OK);
485 mediaKeySystem = nullptr;
486 errNo = OH_MediaKeySystem_GetMaxContentProtectionLevel(mediaKeySystem, &contentProtectionLevel);
487 EXPECT_NE(errNo, DRM_ERR_OK);
488 }
489
490 /*
491 * Feature: Framework
492 * Function: Test and create sessions
493 * Sub function: NA
494 * Function point: NA
495 * Environmental conditions: NA
496 * Case Description: Test Creating Sessions
497 */
498 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_CreateMediaKeySessionNormal_011, TestSize.Level0)
499 {
500 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
501 MediaKeySystem *mediaKeySystem = nullptr;
502 MediaKeySession *mediaKeySession = nullptr;
503 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
504 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
505 EXPECT_NE(mediaKeySystem, nullptr);
506 EXPECT_EQ(errNo, DRM_ERR_OK);
507 errNo = OH_MediaKeySystem_SetMediaKeySystemCallback(mediaKeySystem, &TestSystemEventCallBack);
508 EXPECT_EQ(errNo, DRM_ERR_OK);
509 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
510 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
511 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
512 mediaKeySystem = nullptr;
513 EXPECT_EQ(errNo, DRM_ERR_OK);
514 }
515
516 /*
517 * Feature: Framework
518 * Function: Test that the RequireSecureDecoderModule interface is functioning properly
519 * Sub function: NA
520 * Function point: NA
521 * Environmental conditions: NA
522 * Case description: Testing that the RequireSecureDecoderModule interface is functioning properly
523 */
524 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_RequireSecureDecoderModuleNormal_012, TestSize.Level0)
525 {
526 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
527 MediaKeySystem *mediaKeySystem = nullptr;
528 MediaKeySession *mediaKeySession = nullptr;
529 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
530 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
531 EXPECT_NE(mediaKeySystem, nullptr);
532 EXPECT_EQ(errNo, DRM_ERR_OK);
533 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
534 EXPECT_NE(mediaKeySession, nullptr);
535 EXPECT_EQ(errNo, DRM_ERR_OK);
536 bool requireSecureDecoder;
537 errNo = OH_MediaKeySession_RequireSecureDecoderModule(mediaKeySession, "video/mp4", &requireSecureDecoder);
538 EXPECT_EQ(errNo, DRM_ERR_OK);
539 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
540 EXPECT_EQ(errNo, DRM_ERR_OK);
541 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
542 mediaKeySystem = nullptr;
543 EXPECT_EQ(errNo, DRM_ERR_OK);
544 }
545
546 /*
547 * Feature: Framework
548 * Function: RequireSecureDecoderModule Exception Test Input Error mimtype
549 * Sub function: NA
550 * Function point: NA
551 * Environmental conditions: NA
552 * Case Description: RequireSecureDecoderModule Exception Test
553 */
554 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_RequireSecureDecoderModuleAbNormal_013, TestSize.Level0)
555 {
556 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
557 MediaKeySystem *mediaKeySystem = nullptr;
558 MediaKeySession *mediaKeySession = nullptr;
559 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
560 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
561 EXPECT_NE(mediaKeySystem, nullptr);
562 EXPECT_EQ(errNo, DRM_ERR_OK);
563 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
564 EXPECT_NE(mediaKeySession, nullptr);
565 EXPECT_EQ(errNo, DRM_ERR_OK);
566 bool requireSecureDecoder = false;
567 errNo = OH_MediaKeySession_RequireSecureDecoderModule(mediaKeySession, "asdssadadsa", &requireSecureDecoder);
568 EXPECT_EQ(errNo, DRM_ERR_OK);
569 EXPECT_EQ(requireSecureDecoder, false);
570 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
571 EXPECT_EQ(errNo, DRM_ERR_OK);
572 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
573 mediaKeySystem = nullptr;
574 EXPECT_EQ(errNo, DRM_ERR_OK);
575 }
576
577 /*
578 * Feature: Framework
579 * Function: RequireSecureDecoderModule Exception Test Input Error mimtype
580 * Sub function: NA
581 * Function point: NA
582 * Environmental conditions: NA
583 * Case Description: RequireSecureDecoderModule Exception Test
584 */
585 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_RequireSecureDecoderModuleAbNormal_014, TestSize.Level0)
586 {
587 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
588 MediaKeySystem *mediaKeySystem = nullptr;
589 MediaKeySession *mediaKeySession = nullptr;
590 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
591 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
592 EXPECT_NE(mediaKeySystem, nullptr);
593 EXPECT_EQ(errNo, DRM_ERR_OK);
594 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
595 EXPECT_NE(mediaKeySession, nullptr);
596 EXPECT_EQ(errNo, DRM_ERR_OK);
597 bool requireSecureDecoder = false;
598 errNo = OH_MediaKeySession_RequireSecureDecoderModule(mediaKeySession, "", &requireSecureDecoder);
599 EXPECT_NE(errNo, DRM_ERR_OK);
600 EXPECT_EQ(requireSecureDecoder, false);
601 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
602 EXPECT_EQ(errNo, DRM_ERR_OK);
603 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
604 mediaKeySystem = nullptr;
605 EXPECT_EQ(errNo, DRM_ERR_OK);
606 }
607
608 /*
609 * Feature: Framework
610 * Function: RequireSecureDecoderModule Exception Test Input Error mimtype
611 * Sub function: NA
612 * Function point: NA
613 * Environmental conditions: NA
614 * Case Description: RequireSecureDecoderModule Exception Test
615 */
616 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_RequireSecureDecoderModuleAbNormal_015, TestSize.Level0)
617 {
618 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
619 MediaKeySystem *mediaKeySystem = nullptr;
620 MediaKeySession *mediaKeySession = nullptr;
621 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
622 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
623 EXPECT_NE(mediaKeySystem, nullptr);
624 EXPECT_EQ(errNo, DRM_ERR_OK);
625 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
626 EXPECT_NE(mediaKeySession, nullptr);
627 EXPECT_EQ(errNo, DRM_ERR_OK);
628 bool requireSecureDecoder = false;
629 errNo = OH_MediaKeySession_RequireSecureDecoderModule(mediaKeySession, nullptr, &requireSecureDecoder);
630 EXPECT_NE(errNo, DRM_ERR_OK);
631 EXPECT_EQ(requireSecureDecoder, false);
632 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
633 EXPECT_EQ(errNo, DRM_ERR_OK);
634 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
635 mediaKeySystem = nullptr;
636 EXPECT_EQ(errNo, DRM_ERR_OK);
637 }
638
639 /*
640 * Feature: Framework
641 * Function: RequireSecureDecoderModule Exception Test Input Error mimtype
642 * Sub function: NA
643 * Function point: NA
644 * Environmental conditions: NA
645 * Case Description: RequireSecureDecoderModule Exception Test
646 */
647 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_RequireSecureDecoderModuleAbNormal_016, TestSize.Level0)
648 {
649 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
650 MediaKeySystem *mediaKeySystem = nullptr;
651 MediaKeySession *mediaKeySession = nullptr;
652 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
653 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
654 EXPECT_NE(mediaKeySystem, nullptr);
655 EXPECT_EQ(errNo, DRM_ERR_OK);
656 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
657 EXPECT_NE(mediaKeySession, nullptr);
658 EXPECT_EQ(errNo, DRM_ERR_OK);
659 errNo = OH_MediaKeySession_RequireSecureDecoderModule(mediaKeySession, "video/mp4", nullptr);
660 EXPECT_NE(errNo, DRM_ERR_OK);
661 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
662 EXPECT_EQ(errNo, DRM_ERR_OK);
663 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
664 EXPECT_EQ(errNo, DRM_ERR_OK);
665 }
666
667 /*
668 * Feature: Framework
669 * Function: RequireSecureDecoderModule Exception Test Input Error mimtype
670 * Sub function: NA
671 * Function point: NA
672 * Environmental conditions: NA
673 * Case Description: RequireSecureDecoderModule Exception Test
674 */
675 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_RequireSecureDecoderModuleAbNormal_017, TestSize.Level0)
676 {
677 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
678 MediaKeySystem *mediaKeySystem = nullptr;
679 MediaKeySession *mediaKeySession = nullptr;
680 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
681 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
682 EXPECT_NE(mediaKeySystem, nullptr);
683 EXPECT_EQ(errNo, DRM_ERR_OK);
684 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
685 EXPECT_NE(mediaKeySession, nullptr);
686 EXPECT_EQ(errNo, DRM_ERR_OK);
687 bool requireSecureDecoder = false;
688 errNo = OH_MediaKeySession_RequireSecureDecoderModule(nullptr, "video/mp4", &requireSecureDecoder);
689 EXPECT_NE(errNo, DRM_ERR_OK);
690 EXPECT_EQ(requireSecureDecoder, false);
691 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
692 EXPECT_EQ(errNo, DRM_ERR_OK);
693 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
694 EXPECT_EQ(errNo, DRM_ERR_OK);
695 }
696
697 /*
698 * Feature: Framework
699 * Function: GenerateKeySystemRequest normal testing to obtain normal requests
700 * Sub function: NA
701 * Function point: NA
702 * Environmental conditions: NA
703 * Case description: GenerateKeySystemRequest obtained a normal request through normal testing
704 */
705 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GenerateKeySystemRequestNormal_018, TestSize.Level0)
706 {
707 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
708 MediaKeySystem *mediaKeySystem = nullptr;
709 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
710 EXPECT_NE(mediaKeySystem, nullptr);
711 EXPECT_EQ(errNo, DRM_ERR_OK);
712 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
713 EXPECT_EQ(errNo, DRM_ERR_OK);
714 }
715
716 /*
717 * Feature: Framework
718 * Function: GenerateKeySystemRequest parameter exception testing
719 * Sub function: NA
720 * Function point: NA
721 * Environmental conditions: NA
722 * Case Description: GenerateKeySystemRequest Parameter Exception Test
723 */
724 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GenerateKeySystemRequestAbNormal_019, TestSize.Level0)
725 {
726 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
727 MediaKeySystem *mediaKeySystem = nullptr;
728 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
729 EXPECT_NE(mediaKeySystem, nullptr);
730 EXPECT_EQ(errNo, DRM_ERR_OK);
731 unsigned char request[12288] = { 0 }; // 12288:request len
732 int32_t requestLen = 12288; // 12288:request len
733 char defaultUrl[2048] = { 0 }; // 2048:url len
734 int32_t defaultUrlLen = 2048; // 2048:url len
735 errNo = OH_MediaKeySystem_GenerateKeySystemRequest(nullptr, request, &requestLen, defaultUrl, defaultUrlLen);
736 EXPECT_NE(errNo, DRM_ERR_OK);
737 requestLen = 12288; // 12288:request len
738 errNo = OH_MediaKeySystem_GenerateKeySystemRequest(mediaKeySystem, nullptr, &requestLen, defaultUrl,
739 defaultUrlLen);
740 EXPECT_NE(errNo, DRM_ERR_OK);
741 errNo = OH_MediaKeySystem_GenerateKeySystemRequest(mediaKeySystem, request, nullptr, defaultUrl, defaultUrlLen);
742 EXPECT_NE(errNo, DRM_ERR_OK);
743 requestLen = 12288; // 12288:request len
744 errNo = OH_MediaKeySystem_GenerateKeySystemRequest(mediaKeySystem, request, &requestLen, nullptr, defaultUrlLen);
745 EXPECT_NE(errNo, DRM_ERR_OK);
746 requestLen = 12288; // 12288:request len
747 errNo = OH_MediaKeySystem_GenerateKeySystemRequest(mediaKeySystem, request, &requestLen, defaultUrl, 0);
748 EXPECT_NE(errNo, DRM_ERR_OK);
749 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
750 EXPECT_EQ(errNo, DRM_ERR_OK);
751 }
752
753 /*
754 * Feature: Framework
755 * Function: Processing device certificate response testing
756 * Sub function: NA
757 * Function point: NA
758 * Environmental conditions: NA
759 * Case Description: Processing Device Certificate Response Testing
760 */
761 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_ProcessMediaKeyResponseNormal_020, TestSize.Level0)
762 {
763 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
764 MediaKeySystem *mediaKeySystem = nullptr;
765 MediaKeySession *mediaKeySession = nullptr;
766 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
767 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
768 EXPECT_NE(mediaKeySystem, nullptr);
769 EXPECT_EQ(errNo, DRM_ERR_OK);
770 errNo = OH_MediaKeySystem_SetMediaKeySystemCallback(mediaKeySystem, &TestSystemEventCallBack);
771 EXPECT_EQ(errNo, DRM_ERR_OK);
772 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
773 EXPECT_NE(mediaKeySession, nullptr);
774 EXPECT_EQ(errNo, DRM_ERR_OK);
775 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
776 EXPECT_EQ(errNo, DRM_ERR_OK);
777 }
778
779
780 /*
781 * Feature: Framework
782 * Function: Processing device certificate response testing
783 * Sub function: NA
784 * Function point: NA
785 * Environmental conditions: NA
786 * Case Description: Processing Device Certificate Response Testing
787 */
788 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_ProcessMediaKeyResponseAbNormal_021, TestSize.Level0)
789 {
790 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
791 MediaKeySystem *mediaKeySystem = nullptr;
792 MediaKeySession *mediaKeySession = nullptr;
793 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
794 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
795 EXPECT_NE(mediaKeySystem, nullptr);
796 EXPECT_EQ(errNo, DRM_ERR_OK);
797 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
798 EXPECT_NE(mediaKeySession, nullptr);
799 EXPECT_EQ(errNo, DRM_ERR_OK);
800 unsigned char KeySystemResponse[12288] = OFFRESPONSE;
801 int32_t KeySystemResponseLen = 12288;
802 errNo = OH_MediaKeySystem_ProcessKeySystemResponse(nullptr, KeySystemResponse, KeySystemResponseLen);
803 EXPECT_NE(errNo, DRM_ERR_OK);
804 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
805 EXPECT_EQ(errNo, DRM_ERR_OK);
806 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
807 EXPECT_EQ(errNo, DRM_ERR_OK);
808 }
809
810 /*
811 * Feature: Framework
812 * Function: Processing device certificate response testing
813 * Sub function: NA
814 * Function point: NA
815 * Environmental conditions: NA
816 * Case Description: Processing Device Certificate Response Testing
817 */
818 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_ProcessMediaKeyResponseAbNormal_022, TestSize.Level0)
819 {
820 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
821 MediaKeySystem *mediaKeySystem = nullptr;
822 MediaKeySession *mediaKeySession = nullptr;
823 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
824 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
825 EXPECT_NE(mediaKeySystem, nullptr);
826 EXPECT_EQ(errNo, DRM_ERR_OK);
827 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
828 EXPECT_NE(mediaKeySession, nullptr);
829 EXPECT_EQ(errNo, DRM_ERR_OK);
830 int32_t KeySystemResponseLen = 12288;
831 errNo = OH_MediaKeySystem_ProcessKeySystemResponse(mediaKeySystem, nullptr, KeySystemResponseLen);
832 EXPECT_NE(errNo, DRM_ERR_OK);
833 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
834 EXPECT_EQ(errNo, DRM_ERR_OK);
835 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
836 EXPECT_EQ(errNo, DRM_ERR_OK);
837 }
838
839 /*
840 * Feature: Framework
841 * Function: Processing device certificate response testing
842 * Sub function: NA
843 * Function point: NA
844 * Environmental conditions: NA
845 * Case Description: Processing Device Certificate Response Testing
846 */
847 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_ProcessMediaKeyResponseAbNormal_023, TestSize.Level0)
848 {
849 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
850 MediaKeySystem *mediaKeySystem = nullptr;
851 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
852 EXPECT_NE(mediaKeySystem, nullptr);
853 EXPECT_EQ(errNo, DRM_ERR_OK);
854 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
855 EXPECT_EQ(errNo, DRM_ERR_OK);
856 }
857
858 /*
859 * Feature: Framework
860 * Function: Processing device certificate response testing
861 * Sub function: NA
862 * Function point: NA
863 * Environmental conditions: NA
864 * Case Description: Processing Device Certificate Response Testing
865 */
866 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GenerateMediaKeyRequestNormal_024, TestSize.Level0)
867 {
868 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
869 MediaKeySystem *mediaKeySystem = nullptr;
870 MediaKeySession *mediaKeySession = nullptr;
871 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
872 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
873 EXPECT_NE(mediaKeySystem, nullptr);
874 EXPECT_EQ(errNo, DRM_ERR_OK);
875 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
876 EXPECT_NE(mediaKeySession, nullptr);
877 EXPECT_EQ(errNo, DRM_ERR_OK);
878 // mediakeysession
879 DRM_MediaKeyRequest mediaKeyRequest;
880 DRM_MediaKeyRequestInfo info;
881 unsigned char testData[139] = REQUESTINFODATA;
882 memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
883 info.initDataLen = sizeof(testData);
884 info.type = MEDIA_KEY_TYPE_ONLINE;
885 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
886 memcpy_s(info.initData, sizeof(testData), testData, sizeof(testData));
887 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
888 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
889 info.optionsCount = 1;
890 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
891 EXPECT_EQ(errNo, DRM_ERR_OK);
892 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
893 EXPECT_EQ(errNo, DRM_ERR_OK);
894 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
895 EXPECT_EQ(errNo, DRM_ERR_OK);
896 }
897
898 /*
899 * Feature: Framework
900 * Function: Processing device certificate response testing
901 * Sub function: NA
902 * Function point: NA
903 * Environmental conditions: NA
904 * Case Description: Processing Device Certificate Response Testing
905 */
906 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GenerateMediaKeyRequestAbNormal_025, TestSize.Level0)
907 {
908 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
909 MediaKeySystem *mediaKeySystem = nullptr;
910 MediaKeySession *mediaKeySession = nullptr;
911 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
912 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
913 EXPECT_NE(mediaKeySystem, nullptr);
914 EXPECT_EQ(errNo, DRM_ERR_OK);
915 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
916 EXPECT_NE(mediaKeySession, nullptr);
917 EXPECT_EQ(errNo, DRM_ERR_OK);
918 // mediakeysession
919 DRM_MediaKeyRequest mediaKeyRequest;
920 DRM_MediaKeyRequestInfo info;
921 unsigned char testData[139] = REQUESTINFODATA;
922 memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
923 info.initDataLen = sizeof(testData);
924 info.type = MEDIA_KEY_TYPE_ONLINE;
925 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
926 memcpy_s(info.initData, sizeof(testData), testData, sizeof(testData));
927 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
928 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
929 info.optionsCount = 1;
930 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(nullptr, &info, &mediaKeyRequest);
931 EXPECT_NE(errNo, DRM_ERR_OK);
932 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
933 EXPECT_EQ(errNo, DRM_ERR_OK);
934 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
935 EXPECT_EQ(errNo, DRM_ERR_OK);
936 }
937
938 /*
939 * Feature: Framework
940 * Function: Processing device certificate response testing
941 * Sub function: NA
942 * Function point: NA
943 * Environmental conditions: NA
944 * Case Description: Processing Device Certificate Response Testing
945 */
946 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GenerateMediaKeyRequestAbNormal_026, TestSize.Level0)
947 {
948 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
949 MediaKeySystem *mediaKeySystem = nullptr;
950 MediaKeySession *mediaKeySession = nullptr;
951 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
952 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
953 EXPECT_NE(mediaKeySystem, nullptr);
954 EXPECT_EQ(errNo, DRM_ERR_OK);
955 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
956 EXPECT_NE(mediaKeySession, nullptr);
957 EXPECT_EQ(errNo, DRM_ERR_OK);
958 // mediakeysession
959 DRM_MediaKeyRequest mediaKeyRequest;
960 DRM_MediaKeyRequestInfo info;
961 unsigned char testData[139] = REQUESTINFODATA;
962 memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
963 info.initDataLen = sizeof(testData);
964 info.type = MEDIA_KEY_TYPE_ONLINE;
965 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
966 memcpy_s(info.initData, sizeof(testData), testData, sizeof(testData));
967 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
968 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
969 info.optionsCount = 1;
970 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, nullptr, &mediaKeyRequest);
971 EXPECT_NE(errNo, DRM_ERR_OK);
972 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
973 EXPECT_EQ(errNo, DRM_ERR_OK);
974 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
975 EXPECT_EQ(errNo, DRM_ERR_OK);
976 }
977
978 /*
979 * Feature: Framework
980 * Function: Processing device certificate response testing
981 * Sub function: NA
982 * Function point: NA
983 * Environmental conditions: NA
984 * Case Description: Processing Device Certificate Response Testing
985 */
986 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GenerateMediaKeyRequestAbNormal_027, TestSize.Level0)
987 {
988 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
989 MediaKeySystem *mediaKeySystem = nullptr;
990 MediaKeySession *mediaKeySession = nullptr;
991 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
992 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
993 EXPECT_NE(mediaKeySystem, nullptr);
994 EXPECT_EQ(errNo, DRM_ERR_OK);
995 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
996 EXPECT_NE(mediaKeySession, nullptr);
997 EXPECT_EQ(errNo, DRM_ERR_OK);
998 // mediakeysession
999 DRM_MediaKeyRequestInfo info;
1000 unsigned char testData[139] = REQUESTINFODATA;
1001 memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
1002 info.initDataLen = sizeof(testData);
1003 info.type = MEDIA_KEY_TYPE_ONLINE;
1004 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
1005 memcpy_s(info.initData, sizeof(testData), testData, sizeof(testData));
1006 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
1007 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
1008 info.optionsCount = 1;
1009 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, nullptr);
1010 EXPECT_NE(errNo, DRM_ERR_OK);
1011 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
1012 EXPECT_EQ(errNo, DRM_ERR_OK);
1013 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
1014 EXPECT_EQ(errNo, DRM_ERR_OK);
1015 }
1016
1017 /*
1018 * Feature: Framework
1019 * Function: Processing device certificate response testing
1020 * Sub function: NA
1021 * Function point: NA
1022 * Environmental conditions: NA
1023 * Case Description: Processing Device Certificate Response Testing
1024 */
1025 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_ProcessMediaKeyResponseNormal_028, TestSize.Level0)
1026 {
1027 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
1028 MediaKeySystem *mediaKeySystem = nullptr;
1029 MediaKeySession *mediaKeySession = nullptr;
1030 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
1031 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
1032 EXPECT_NE(mediaKeySystem, nullptr);
1033 EXPECT_EQ(errNo, DRM_ERR_OK);
1034 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
1035 EXPECT_NE(mediaKeySession, nullptr);
1036 EXPECT_EQ(errNo, DRM_ERR_OK);
1037 // mediakeysession
1038 DRM_MediaKeyRequest mediaKeyRequest;
1039 DRM_MediaKeyRequestInfo info;
1040 unsigned char testData[139] = REQUESTINFODATA;
1041 memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
1042 info.initDataLen = sizeof(testData);
1043 info.type = MEDIA_KEY_TYPE_ONLINE;
1044 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
1045 memcpy_s(info.initData, sizeof(testData), testData, sizeof(testData));
1046 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
1047 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
1048 info.optionsCount = 1;
1049 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
1050 EXPECT_EQ(errNo, DRM_ERR_OK);
1051 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1052 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1053 unsigned char testKeySessionResponse[12288] = OFFRESPONSE;
1054 int32_t testKeySessionResponseLen = 12288;
1055 if (g_isWisePlay) {
1056 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data,
1057 (uint32_t)mediaKeyRequest.dataLen, testKeySessionResponse, &testKeySessionResponseLen, 10);
1058 EXPECT_EQ(rett, 0);
1059 } else {
1060 testKeySessionResponseLen = 50;
1061 }
1062 errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
1063 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
1064 EXPECT_EQ(errNo, DRM_ERR_OK);
1065 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
1066 EXPECT_EQ(errNo, DRM_ERR_OK);
1067 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
1068 EXPECT_EQ(errNo, DRM_ERR_OK);
1069 }
1070
1071 /*
1072 * Feature: Framework
1073 * Function: Processing device certificate response testing
1074 * Sub function: NA
1075 * Function point: NA
1076 * Environmental conditions: NA
1077 * Case Description: Processing Device Certificate Response Testing
1078 */
1079 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_ProcessMediaKeyResponseAbNormal_029, TestSize.Level0)
1080 {
1081 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
1082 MediaKeySystem *mediaKeySystem = nullptr;
1083 MediaKeySession *mediaKeySession = nullptr;
1084 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
1085 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
1086 EXPECT_NE(mediaKeySystem, nullptr);
1087 EXPECT_EQ(errNo, DRM_ERR_OK);
1088 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
1089 EXPECT_NE(mediaKeySession, nullptr);
1090 EXPECT_EQ(errNo, DRM_ERR_OK);
1091 // mediakeysession
1092 DRM_MediaKeyRequest mediaKeyRequest;
1093 DRM_MediaKeyRequestInfo info;
1094 unsigned char testData[1] = { 0 };
1095 memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
1096 info.initDataLen = sizeof(testData);
1097 info.type = MEDIA_KEY_TYPE_ONLINE;
1098 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
1099 memcpy_s(info.initData, sizeof(testData), testData, sizeof(testData));
1100 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
1101 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
1102 info.optionsCount = 1;
1103 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
1104 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1105 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1106 unsigned char testKeySessionResponse[12288] = OFFRESPONSE;
1107 int32_t testKeySessionResponseLen = 12288;
1108 if (g_isWisePlay) {
1109 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data,
1110 (uint32_t)mediaKeyRequest.dataLen, testKeySessionResponse, &testKeySessionResponseLen, 10);
1111 EXPECT_EQ(rett, 0);
1112 } else {
1113 testKeySessionResponseLen = 50;
1114 }errNo = OH_MediaKeySession_ProcessMediaKeyResponse(nullptr, testKeySessionResponse,
1115 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
1116 EXPECT_NE(errNo, DRM_ERR_OK);
1117 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
1118 EXPECT_EQ(errNo, DRM_ERR_OK);
1119 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
1120 EXPECT_EQ(errNo, DRM_ERR_OK);
1121 }
1122
1123 /*
1124 * Feature: Framework
1125 * Function: Processing device certificate response testing
1126 * Sub function: NA
1127 * Function point: NA
1128 * Environmental conditions: NA
1129 * Case Description: Processing Device Certificate Response Testing
1130 */
1131 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_ProcessMediaKeyResponseAbNormal_030, TestSize.Level0)
1132 {
1133 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
1134 MediaKeySystem *mediaKeySystem = nullptr;
1135 MediaKeySession *mediaKeySession = nullptr;
1136 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
1137 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
1138 EXPECT_NE(mediaKeySystem, nullptr);
1139 EXPECT_EQ(errNo, DRM_ERR_OK);
1140 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
1141 EXPECT_NE(mediaKeySession, nullptr);
1142 EXPECT_EQ(errNo, DRM_ERR_OK);
1143 // mediakeysession
1144 DRM_MediaKeyRequest mediaKeyRequest;
1145 DRM_MediaKeyRequestInfo info;
1146 unsigned char testData[1] = { 0 };
1147 memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
1148 info.initDataLen = sizeof(testData);
1149 info.type = MEDIA_KEY_TYPE_ONLINE;
1150 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
1151 memcpy_s(info.initData, sizeof(testData), testData, sizeof(testData));
1152 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
1153 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
1154 info.optionsCount = 1;
1155 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
1156 unsigned char onlineMediaKeyId[64] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1157 int32_t onlineMediaKeyIdLen = 64; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1158 errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, nullptr, 0,
1159 onlineMediaKeyId, &onlineMediaKeyIdLen);
1160 EXPECT_NE(errNo, DRM_ERR_OK);
1161 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
1162 EXPECT_EQ(errNo, DRM_ERR_OK);
1163 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
1164 EXPECT_EQ(errNo, DRM_ERR_OK);
1165 }
1166
1167 /*
1168 * Feature: Framework
1169 * Function: Processing device certificate response testing
1170 * Sub function: NA
1171 * Function point: NA
1172 * Environmental conditions: NA
1173 * Case Description: Processing Device Certificate Response Testing
1174 */
1175 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_ProcessMediaKeyResponseAbNormal_031, TestSize.Level0)
1176 {
1177 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
1178 MediaKeySystem *mediaKeySystem = nullptr;
1179 MediaKeySession *mediaKeySession = nullptr;
1180 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
1181 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
1182 EXPECT_NE(mediaKeySystem, nullptr);
1183 EXPECT_EQ(errNo, DRM_ERR_OK);
1184 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
1185 EXPECT_NE(mediaKeySession, nullptr);
1186 EXPECT_EQ(errNo, DRM_ERR_OK);
1187 // mediakeysession
1188 DRM_MediaKeyRequest mediaKeyRequest;
1189 DRM_MediaKeyRequestInfo info;
1190 unsigned char testData[139] = REQUESTINFODATA;
1191 memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
1192 info.initDataLen = sizeof(testData);
1193 info.type = MEDIA_KEY_TYPE_ONLINE;
1194 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
1195 memcpy_s(info.initData, sizeof(testData), testData, sizeof(testData));
1196 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
1197 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
1198 info.optionsCount = 1;
1199 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
1200 EXPECT_EQ(errNo, DRM_ERR_OK);
1201 unsigned char testKeySessionResponse[50] = OFFRESPONSE;
1202 int32_t onlineMediaKeyIdLen = 64; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1203 errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
1204 (int32_t)(sizeof(testKeySessionResponse)), nullptr, &onlineMediaKeyIdLen);
1205 EXPECT_NE(errNo, DRM_ERR_OK);
1206 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
1207 EXPECT_EQ(errNo, DRM_ERR_OK);
1208 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
1209 EXPECT_EQ(errNo, DRM_ERR_OK);
1210 }
1211
1212
1213 /*
1214 * Feature: Framework
1215 * Function: Processing device certificate response testing
1216 * Sub function: NA
1217 * Function point: NA
1218 * Environmental conditions: NA
1219 * Case Description: Processing Device Certificate Response Testing
1220 */
1221 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_ProcessMediaKeyResponseAbNormal_032, TestSize.Level0)
1222 {
1223 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
1224 MediaKeySystem *mediaKeySystem = nullptr;
1225 MediaKeySession *mediaKeySession = nullptr;
1226 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
1227 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
1228 EXPECT_NE(mediaKeySystem, nullptr);
1229 EXPECT_EQ(errNo, DRM_ERR_OK);
1230 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
1231 EXPECT_NE(mediaKeySession, nullptr);
1232 EXPECT_EQ(errNo, DRM_ERR_OK);
1233 // mediakeysession
1234 DRM_MediaKeyRequest mediaKeyRequest;
1235 DRM_MediaKeyRequestInfo info;
1236 unsigned char testData[139] = REQUESTINFODATA;
1237 memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
1238 info.initDataLen = sizeof(testData);
1239 info.type = MEDIA_KEY_TYPE_ONLINE;
1240 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
1241 memcpy_s(info.initData, sizeof(testData), testData, sizeof(testData));
1242 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
1243 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
1244 info.optionsCount = 1;
1245 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
1246 EXPECT_EQ(errNo, DRM_ERR_OK);
1247 unsigned char onlineMediaKeyId[64] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1248 unsigned char testKeySessionResponse[50] = OFFRESPONSE;
1249 errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
1250 (int32_t)(sizeof(testKeySessionResponse)), onlineMediaKeyId, nullptr);
1251 EXPECT_NE(errNo, DRM_ERR_OK);
1252 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
1253 EXPECT_EQ(errNo, DRM_ERR_OK);
1254 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
1255 EXPECT_EQ(errNo, DRM_ERR_OK);
1256 }
1257
1258 /*
1259 * Feature: Framework
1260 * Function: Processing device certificate response testing
1261 * Sub function: NA
1262 * Function point: NA
1263 * Environmental conditions: NA
1264 * Case Description: Processing Device Certificate Response Testing
1265 */
1266 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_CheckMediaKeyStatusNormal_033, TestSize.Level0)
1267 {
1268 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
1269 MediaKeySystem *mediaKeySystem = nullptr;
1270 MediaKeySession *mediaKeySession = nullptr;
1271 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
1272 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
1273 EXPECT_NE(mediaKeySystem, nullptr);
1274 EXPECT_EQ(errNo, DRM_ERR_OK);
1275 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
1276 EXPECT_NE(mediaKeySession, nullptr);
1277 EXPECT_EQ(errNo, DRM_ERR_OK);
1278 // mediakeysession
1279 DRM_MediaKeyRequest mediaKeyRequest;
1280 DRM_MediaKeyRequestInfo info;
1281 memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
1282 unsigned char testData[139] = REQUESTINFODATA;
1283 info.type = MEDIA_KEY_TYPE_ONLINE;
1284 info.initDataLen = sizeof(testData);
1285 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
1286 memcpy_s(info.initData, sizeof(testData), testData, sizeof(testData));
1287 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
1288 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
1289 info.optionsCount = 1;
1290 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
1291 EXPECT_EQ(errNo, DRM_ERR_OK);
1292 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1293 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1294 unsigned char testKeySessionResponse[12288] = OFFRESPONSE;
1295 int32_t testKeySessionResponseLen = 12288;
1296 if (g_isWisePlay) {
1297 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data,
1298 (uint32_t)mediaKeyRequest.dataLen, testKeySessionResponse, &testKeySessionResponseLen, 10);
1299 EXPECT_EQ(rett, 0);
1300 } else {
1301 testKeySessionResponseLen = 50;
1302 }
1303 errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
1304 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
1305 EXPECT_EQ(errNo, DRM_ERR_OK);
1306 DRM_MediaKeyStatus mediaKeyStatus;
1307 errNo = OH_MediaKeySession_CheckMediaKeyStatus(mediaKeySession, &mediaKeyStatus);
1308 EXPECT_EQ(errNo, DRM_ERR_OK);
1309
1310 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
1311 EXPECT_EQ(errNo, DRM_ERR_OK);
1312 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
1313 EXPECT_EQ(errNo, DRM_ERR_OK);
1314 }
1315
1316 /*
1317 * Feature: Framework
1318 * Function: Processing device certificate response testing
1319 * Sub function: NA
1320 * Function point: NA
1321 * Environmental conditions: NA
1322 * Case Description: Processing Device Certificate Response Testing
1323 */
1324 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_CheckMediaKeyStatusAbNormal_034, TestSize.Level0)
1325 {
1326 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
1327 MediaKeySystem *mediaKeySystem = nullptr;
1328 MediaKeySession *mediaKeySession = nullptr;
1329 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
1330 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
1331 EXPECT_NE(mediaKeySystem, nullptr);
1332 EXPECT_EQ(errNo, DRM_ERR_OK);
1333 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
1334 EXPECT_NE(mediaKeySession, nullptr);
1335 EXPECT_EQ(errNo, DRM_ERR_OK);
1336 // mediakeysession
1337 DRM_MediaKeyRequest mediaKeyRequest;
1338 DRM_MediaKeyRequestInfo info;
1339 unsigned char testData[139] = REQUESTINFODATA;
1340 memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
1341 info.initDataLen = sizeof(testData);
1342 info.type = MEDIA_KEY_TYPE_ONLINE;
1343 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
1344 memcpy_s(info.initData, sizeof(testData), testData, sizeof(testData));
1345 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
1346 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
1347 info.optionsCount = 1;
1348 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
1349 EXPECT_EQ(errNo, DRM_ERR_OK);
1350 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1351 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1352 unsigned char testKeySessionResponse[12288] = OFFRESPONSE;
1353 int32_t testKeySessionResponseLen = 12288;
1354 if (g_isWisePlay) {
1355 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data,
1356 (uint32_t)mediaKeyRequest.dataLen, testKeySessionResponse, &testKeySessionResponseLen, 10);
1357 EXPECT_EQ(rett, 0);
1358 } else {
1359 testKeySessionResponseLen = 50;
1360 }errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
1361 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
1362 EXPECT_EQ(errNo, DRM_ERR_OK);
1363 DRM_MediaKeyStatus mediaKeyStatus;
1364 errNo = OH_MediaKeySession_CheckMediaKeyStatus(nullptr, &mediaKeyStatus);
1365 EXPECT_NE(errNo, DRM_ERR_OK);
1366 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
1367 EXPECT_EQ(errNo, DRM_ERR_OK);
1368 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
1369 EXPECT_EQ(errNo, DRM_ERR_OK);
1370 }
1371
1372 /*
1373 * Feature: Framework
1374 * Function: Processing device certificate response testing
1375 * Sub function: NA
1376 * Function point: NA
1377 * Environmental conditions: NA
1378 * Case Description: Processing Device Certificate Response Testing
1379 */
1380 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_CheckMediaKeyStatusAbNormal_035, TestSize.Level0)
1381 {
1382 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
1383 MediaKeySystem *mediaKeySystem = nullptr;
1384 MediaKeySession *mediaKeySession = nullptr;
1385 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
1386 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
1387 EXPECT_NE(mediaKeySystem, nullptr);
1388 EXPECT_EQ(errNo, DRM_ERR_OK);
1389 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
1390 EXPECT_NE(mediaKeySession, nullptr);
1391 EXPECT_EQ(errNo, DRM_ERR_OK);
1392 // mediakeysession
1393 DRM_MediaKeyRequest mediaKeyRequest;
1394 DRM_MediaKeyRequestInfo info;
1395 unsigned char testData[139] = REQUESTINFODATA;
1396 memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
1397 info.initDataLen = sizeof(testData);
1398 info.type = MEDIA_KEY_TYPE_ONLINE;
1399 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
1400 memcpy_s(info.initData, sizeof(testData), testData, sizeof(testData));
1401 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
1402 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
1403 info.optionsCount = 1;
1404 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
1405 EXPECT_EQ(errNo, DRM_ERR_OK);
1406 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1407 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1408 unsigned char testKeySessionResponse[12288] = OFFRESPONSE;
1409 int32_t testKeySessionResponseLen = 12288;
1410 if (g_isWisePlay) {
1411 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data,
1412 (uint32_t)mediaKeyRequest.dataLen, testKeySessionResponse, &testKeySessionResponseLen, 10);
1413 EXPECT_EQ(rett, 0);
1414 } else {
1415 testKeySessionResponseLen = 50;
1416 }errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
1417 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
1418 EXPECT_EQ(errNo, DRM_ERR_OK);
1419 errNo = OH_MediaKeySession_CheckMediaKeyStatus(mediaKeySession, nullptr);
1420 EXPECT_NE(errNo, DRM_ERR_OK);
1421 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
1422 EXPECT_EQ(errNo, DRM_ERR_OK);
1423 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
1424 EXPECT_EQ(errNo, DRM_ERR_OK);
1425 }
1426
1427 /*
1428 * Feature: Framework
1429 * Function: Processing device certificate response testing
1430 * Sub function: NA
1431 * Function point: NA
1432 * Environmental conditions: NA
1433 * Case Description: Processing Device Certificate Response Testing
1434 */
1435 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_ClearMediaKeysNormal_036, TestSize.Level0)
1436 {
1437 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
1438 MediaKeySystem *mediaKeySystem = nullptr;
1439 MediaKeySession *mediaKeySession = nullptr;
1440 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
1441 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
1442 EXPECT_NE(mediaKeySystem, nullptr);
1443 EXPECT_EQ(errNo, DRM_ERR_OK);
1444 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
1445 EXPECT_NE(mediaKeySession, nullptr);
1446 EXPECT_EQ(errNo, DRM_ERR_OK);
1447 // mediakeysession
1448 DRM_MediaKeyRequest mediaKeyRequest;
1449 DRM_MediaKeyRequestInfo info;
1450 unsigned char testData[139] = REQUESTINFODATA;
1451 memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
1452 info.initDataLen = sizeof(testData);
1453 info.type = MEDIA_KEY_TYPE_ONLINE;
1454 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
1455 memcpy_s(info.initData, sizeof(testData), testData, sizeof(testData));
1456 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
1457 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
1458 info.optionsCount = 1;
1459 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
1460 EXPECT_EQ(errNo, DRM_ERR_OK);
1461 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1462 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1463 unsigned char testKeySessionResponse[12288] = OFFRESPONSE;
1464 int32_t testKeySessionResponseLen = 12288;
1465 if (g_isWisePlay) {
1466 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data,
1467 (uint32_t)mediaKeyRequest.dataLen, testKeySessionResponse, &testKeySessionResponseLen, 10);
1468 EXPECT_EQ(rett, 0);
1469 } else {
1470 testKeySessionResponseLen = 50;
1471 }errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
1472 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
1473 EXPECT_EQ(errNo, DRM_ERR_OK);
1474 DRM_MediaKeyStatus mediaKeyStatus;
1475 errNo = OH_MediaKeySession_CheckMediaKeyStatus(mediaKeySession, &mediaKeyStatus);
1476 EXPECT_EQ(errNo, DRM_ERR_OK);
1477
1478 errNo = OH_MediaKeySession_ClearMediaKeys(mediaKeySession);
1479 EXPECT_EQ(errNo, DRM_ERR_OK);
1480 errNo = OH_MediaKeySession_CheckMediaKeyStatus(mediaKeySession, &mediaKeyStatus);
1481 if (g_isWisePlay) {
1482 EXPECT_EQ(errNo, DRM_ERR_OK);
1483 } else {
1484 EXPECT_NE(errNo, DRM_ERR_OK);
1485 }
1486 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
1487 EXPECT_EQ(errNo, DRM_ERR_OK);
1488 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
1489 EXPECT_EQ(errNo, DRM_ERR_OK);
1490 }
1491
1492 /*
1493 * Feature: Framework
1494 * Function: Processing device certificate response testing
1495 * Sub function: NA
1496 * Function point: NA
1497 * Environmental conditions: NA
1498 * Case Description: Processing Device Certificate Response Testing
1499 */
1500 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_ClearMediaKeysAbNormal_037, TestSize.Level0)
1501 {
1502 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
1503 MediaKeySystem *mediaKeySystem = nullptr;
1504 MediaKeySession *mediaKeySession = nullptr;
1505 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
1506 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
1507 EXPECT_NE(mediaKeySystem, nullptr);
1508 EXPECT_EQ(errNo, DRM_ERR_OK);
1509 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
1510 EXPECT_NE(mediaKeySession, nullptr);
1511 EXPECT_EQ(errNo, DRM_ERR_OK);
1512 // mediakeysession
1513 DRM_MediaKeyRequest mediaKeyRequest;
1514 DRM_MediaKeyRequestInfo info;
1515 unsigned char testData[139] = REQUESTINFODATA;
1516 memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
1517 info.initDataLen = sizeof(testData);
1518 info.type = MEDIA_KEY_TYPE_ONLINE;
1519 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
1520 memcpy_s(info.initData, sizeof(testData), testData, sizeof(testData));
1521 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
1522 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
1523 info.optionsCount = 1;
1524 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
1525 EXPECT_EQ(errNo, DRM_ERR_OK);
1526 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1527 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1528 unsigned char testKeySessionResponse[12288] = OFFRESPONSE;
1529 int32_t testKeySessionResponseLen = 12288;
1530 if (g_isWisePlay) {
1531 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data,
1532 (uint32_t)mediaKeyRequest.dataLen, testKeySessionResponse, &testKeySessionResponseLen, 10);
1533 EXPECT_EQ(rett, 0);
1534 } else {
1535 testKeySessionResponseLen = 50;
1536 }errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
1537 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
1538 EXPECT_EQ(errNo, DRM_ERR_OK);
1539 DRM_MediaKeyStatus mediaKeyStatus;
1540 errNo = OH_MediaKeySession_CheckMediaKeyStatus(mediaKeySession, &mediaKeyStatus);
1541 errNo = OH_MediaKeySession_ClearMediaKeys(nullptr);
1542 EXPECT_NE(errNo, DRM_ERR_OK);
1543 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
1544 EXPECT_EQ(errNo, DRM_ERR_OK);
1545 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
1546 EXPECT_EQ(errNo, DRM_ERR_OK);
1547 }
1548
1549 /*
1550 * Feature: Framework
1551 * Function: Processing device certificate response testing
1552 * Sub function: NA
1553 * Function point: NA
1554 * Environmental conditions: NA
1555 * Case Description: Processing Device Certificate Response Testing
1556 */
1557 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GetOfflineMediaKeyStatusNormal_038, TestSize.Level0)
1558 {
1559 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
1560 MediaKeySystem *mediaKeySystem = nullptr;
1561 MediaKeySession *mediaKeySession = nullptr;
1562 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
1563 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
1564 EXPECT_NE(mediaKeySystem, nullptr);
1565 EXPECT_EQ(errNo, DRM_ERR_OK);
1566 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
1567 EXPECT_NE(mediaKeySession, nullptr);
1568 EXPECT_EQ(errNo, DRM_ERR_OK);
1569 // mediakeysession
1570 DRM_MediaKeyRequest mediaKeyRequest;
1571 DRM_MediaKeyRequestInfo info;
1572 unsigned char testData[241] = OFFREQUESTINFODATA;
1573 memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
1574 info.initDataLen = testData[3];
1575 info.type = MEDIA_KEY_TYPE_OFFLINE;
1576 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
1577 memcpy_s(info.initData, sizeof(testData), testData, info.initDataLen);
1578 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
1579 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
1580 info.optionsCount = 1;
1581 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
1582 EXPECT_EQ(errNo, DRM_ERR_OK);
1583 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1584 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1585 unsigned char testKeySessionResponse[12288] = OFFRESPONSE;
1586 int32_t testKeySessionResponseLen = 12288;
1587 if (g_isWisePlay) {
1588 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data,
1589 (uint32_t)mediaKeyRequest.dataLen, testKeySessionResponse, &testKeySessionResponseLen, 10);
1590 EXPECT_EQ(rett, 0);
1591 } else {
1592 testKeySessionResponseLen = 50;
1593 }
1594 errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
1595 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
1596 DRM_MediaKeyStatus mediaKeyStatus;
1597 errNo = OH_MediaKeySession_CheckMediaKeyStatus(mediaKeySession, &mediaKeyStatus);
1598 DRM_OfflineMediaKeyStatus OfflineMediaKeyStatus = OFFLINE_MEDIA_KEY_STATUS_UNKNOWN;
1599 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(mediaKeySystem, onlineMediaKeyId, onlineMediaKeyIdLen,
1600 &OfflineMediaKeyStatus);
1601 EXPECT_EQ(errNo, DRM_ERR_OK);
1602 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
1603 EXPECT_EQ(errNo, DRM_ERR_OK);
1604 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
1605 EXPECT_EQ(errNo, DRM_ERR_OK);
1606 }
1607
1608 /*
1609 * Feature: Framework
1610 * Function: Processing device certificate response testing
1611 * Sub function: NA
1612 * Function point: NA
1613 * Environmental conditions: NA
1614 * Case Description: Processing Device Certificate Response Testing
1615 */
1616 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GetOfflineMediaKeyStatusAbNormal_039, TestSize.Level0)
1617 {
1618 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
1619 MediaKeySystem *mediaKeySystem = nullptr;
1620 MediaKeySession *mediaKeySession = nullptr;
1621 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
1622 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
1623 EXPECT_NE(mediaKeySystem, nullptr);
1624 EXPECT_EQ(errNo, DRM_ERR_OK);
1625 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
1626 EXPECT_NE(mediaKeySession, nullptr);
1627 EXPECT_EQ(errNo, DRM_ERR_OK);
1628 // mediakeysession
1629 DRM_MediaKeyRequest mediaKeyRequest;
1630 DRM_MediaKeyRequestInfo info;
1631 unsigned char testData[139] = REQUESTINFODATA;
1632 memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
1633 info.initDataLen = sizeof(testData);
1634 info.type = MEDIA_KEY_TYPE_ONLINE;
1635 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
1636 memcpy_s(info.initData, sizeof(testData), testData, sizeof(testData));
1637 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
1638 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
1639 info.optionsCount = 1;
1640 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
1641 EXPECT_EQ(errNo, DRM_ERR_OK);
1642 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1643 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1644 unsigned char testKeySessionResponse[12288] = OFFRESPONSE;
1645 int32_t testKeySessionResponseLen = 12288;
1646 if (g_isWisePlay) {
1647 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data,
1648 (uint32_t)mediaKeyRequest.dataLen, testKeySessionResponse, &testKeySessionResponseLen, 10);
1649 EXPECT_EQ(rett, 0);
1650 } else {
1651 testKeySessionResponseLen = 50;
1652 }errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
1653 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
1654 EXPECT_EQ(errNo, DRM_ERR_OK);
1655 DRM_MediaKeyStatus mediaKeyStatus;
1656 errNo = OH_MediaKeySession_CheckMediaKeyStatus(mediaKeySession, &mediaKeyStatus);
1657
1658 DRM_OfflineMediaKeyStatus OfflineMediaKeyStatus = OFFLINE_MEDIA_KEY_STATUS_UNKNOWN;
1659 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(nullptr, onlineMediaKeyId, onlineMediaKeyIdLen,
1660 &OfflineMediaKeyStatus);
1661 EXPECT_NE(errNo, DRM_ERR_OK);
1662 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
1663 EXPECT_EQ(errNo, DRM_ERR_OK);
1664 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
1665 EXPECT_EQ(errNo, DRM_ERR_OK);
1666 }
1667
1668 /*
1669 * Feature: Framework
1670 * Function: Processing device certificate response testing
1671 * Sub function: NA
1672 * Function point: NA
1673 * Environmental conditions: NA
1674 * Case Description: Processing Device Certificate Response Testing
1675 */
1676 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GetOfflineMediaKeyStatusAbNormal_040, TestSize.Level0)
1677 {
1678 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
1679 MediaKeySystem *mediaKeySystem = nullptr;
1680 MediaKeySession *mediaKeySession = nullptr;
1681 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
1682 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
1683 EXPECT_NE(mediaKeySystem, nullptr);
1684 EXPECT_EQ(errNo, DRM_ERR_OK);
1685 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
1686 EXPECT_NE(mediaKeySession, nullptr);
1687 EXPECT_EQ(errNo, DRM_ERR_OK);
1688 // mediakeysession
1689 DRM_MediaKeyRequest mediaKeyRequest;
1690 DRM_MediaKeyRequestInfo info;
1691 unsigned char testData[139] = REQUESTINFODATA;
1692 memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
1693 info.initDataLen = sizeof(testData);
1694 info.type = MEDIA_KEY_TYPE_ONLINE;
1695 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
1696 memcpy_s(info.initData, sizeof(testData), testData, sizeof(testData));
1697 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
1698 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
1699 info.optionsCount = 1;
1700 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
1701 EXPECT_EQ(errNo, DRM_ERR_OK);
1702 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1703 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1704 unsigned char testKeySessionResponse[12288] = OFFRESPONSE;
1705 int32_t testKeySessionResponseLen = 12288;
1706 if (g_isWisePlay) {
1707 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data,
1708 (uint32_t)mediaKeyRequest.dataLen, testKeySessionResponse, &testKeySessionResponseLen, 10);
1709 EXPECT_EQ(rett, 0);
1710 } else {
1711 testKeySessionResponseLen = 50;
1712 }errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
1713 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
1714 EXPECT_EQ(errNo, DRM_ERR_OK);
1715 DRM_MediaKeyStatus mediaKeyStatus;
1716 errNo = OH_MediaKeySession_CheckMediaKeyStatus(mediaKeySession, &mediaKeyStatus);
1717
1718 DRM_OfflineMediaKeyStatus OfflineMediaKeyStatus = OFFLINE_MEDIA_KEY_STATUS_UNKNOWN;
1719 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(mediaKeySystem, nullptr, onlineMediaKeyIdLen,
1720 &OfflineMediaKeyStatus);
1721 EXPECT_NE(errNo, DRM_ERR_OK);
1722 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
1723 EXPECT_EQ(errNo, DRM_ERR_OK);
1724 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
1725 EXPECT_EQ(errNo, DRM_ERR_OK);
1726 }
1727
1728 /*
1729 * Feature: Framework
1730 * Function: Processing device certificate response testing
1731 * Sub function: NA
1732 * Function point: NA
1733 * Environmental conditions: NA
1734 * Case Description: Processing Device Certificate Response Testing
1735 */
1736 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GetOfflineMediaKeyStatusAbNormal_041, TestSize.Level0)
1737 {
1738 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
1739 MediaKeySystem *mediaKeySystem = nullptr;
1740 MediaKeySession *mediaKeySession = nullptr;
1741 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
1742 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
1743 EXPECT_NE(mediaKeySystem, nullptr);
1744 EXPECT_EQ(errNo, DRM_ERR_OK);
1745 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
1746 EXPECT_NE(mediaKeySession, nullptr);
1747 EXPECT_EQ(errNo, DRM_ERR_OK);
1748 // mediakeysession
1749 DRM_MediaKeyRequest mediaKeyRequest;
1750 DRM_MediaKeyRequestInfo info;
1751 unsigned char testData[139] = REQUESTINFODATA;
1752 memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
1753 info.initDataLen = sizeof(testData);
1754 info.type = MEDIA_KEY_TYPE_ONLINE;
1755 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
1756 memcpy_s(info.initData, sizeof(testData), testData, sizeof(testData));
1757 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
1758 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
1759 info.optionsCount = 1;
1760 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
1761 EXPECT_EQ(errNo, DRM_ERR_OK);
1762 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1763 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1764 unsigned char testKeySessionResponse[12288] = OFFRESPONSE;
1765 int32_t testKeySessionResponseLen = 12288;
1766 if (g_isWisePlay) {
1767 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data,
1768 (uint32_t)mediaKeyRequest.dataLen, testKeySessionResponse, &testKeySessionResponseLen, 10);
1769 EXPECT_EQ(rett, 0);
1770 } else {
1771 testKeySessionResponseLen = 50;
1772 }errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
1773 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
1774 EXPECT_EQ(errNo, DRM_ERR_OK);
1775 DRM_MediaKeyStatus mediaKeyStatus;
1776 errNo = OH_MediaKeySession_CheckMediaKeyStatus(mediaKeySession, &mediaKeyStatus);
1777
1778 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(mediaKeySystem, onlineMediaKeyId, onlineMediaKeyIdLen,
1779 nullptr);
1780 EXPECT_NE(errNo, DRM_ERR_OK);
1781 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
1782 EXPECT_EQ(errNo, DRM_ERR_OK);
1783 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
1784 EXPECT_EQ(errNo, DRM_ERR_OK);
1785 }
1786
1787 /*
1788 * Feature: Framework
1789 * Function: Processing device certificate response testing
1790 * Sub function: NA
1791 * Function point: NA
1792 * Environmental conditions: NA
1793 * Case Description: Processing Device Certificate Response Testing
1794 */
1795 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GetOfflineMediaKeyIdsNormal_042, TestSize.Level0)
1796 {
1797 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
1798 MediaKeySystem *mediaKeySystem = nullptr;
1799 MediaKeySession *mediaKeySession = nullptr;
1800 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
1801 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
1802 EXPECT_NE(mediaKeySystem, nullptr);
1803 EXPECT_EQ(errNo, DRM_ERR_OK);
1804 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
1805 EXPECT_NE(mediaKeySession, nullptr);
1806 EXPECT_EQ(errNo, DRM_ERR_OK);
1807 // mediakeysession
1808 DRM_MediaKeyRequest mediaKeyRequest;
1809 DRM_MediaKeyRequestInfo info;
1810 unsigned char testData[241] = OFFREQUESTINFODATA;
1811 memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
1812 info.initDataLen = testData[3];
1813 info.type = MEDIA_KEY_TYPE_OFFLINE;
1814 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
1815 memcpy_s(info.initData, sizeof(testData), testData, sizeof(testData));
1816 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
1817 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
1818 info.optionsCount = 1;
1819 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
1820 EXPECT_EQ(errNo, DRM_ERR_OK);
1821 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1822 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1823 unsigned char testKeySessionResponse[12288] = OFFRESPONSE;
1824 int32_t testKeySessionResponseLen = 12288;
1825 if (g_isWisePlay) {
1826 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data,
1827 (uint32_t)mediaKeyRequest.dataLen, testKeySessionResponse, &testKeySessionResponseLen, 10);
1828 EXPECT_EQ(rett, 0);
1829 } else {
1830 testKeySessionResponseLen = 50;
1831 }errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
1832 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
1833 EXPECT_EQ(errNo, DRM_ERR_OK);
1834 DRM_OfflineMediakeyIdArray offlineMediaKeyIds;
1835 errNo = OH_MediaKeySystem_GetOfflineMediaKeyIds(mediaKeySystem, &offlineMediaKeyIds);
1836 EXPECT_EQ(errNo, DRM_ERR_OK);
1837 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
1838 EXPECT_EQ(errNo, DRM_ERR_OK);
1839 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
1840 EXPECT_EQ(errNo, DRM_ERR_OK);
1841 }
1842
1843 /*
1844 * Feature: Framework
1845 * Function: Processing device certificate response testing
1846 * Sub function: NA
1847 * Function point: NA
1848 * Environmental conditions: NA
1849 * Case Description: Processing Device Certificate Response Testing
1850 */
1851 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GetOfflineMediaKeyIdsAbNormal_043, TestSize.Level0)
1852 {
1853 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
1854 MediaKeySystem *mediaKeySystem = nullptr;
1855 MediaKeySession *mediaKeySession = nullptr;
1856 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
1857 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
1858 EXPECT_NE(mediaKeySystem, nullptr);
1859 EXPECT_EQ(errNo, DRM_ERR_OK);
1860 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
1861 EXPECT_NE(mediaKeySession, nullptr);
1862 EXPECT_EQ(errNo, DRM_ERR_OK);
1863 // mediakeysession
1864 DRM_MediaKeyRequest mediaKeyRequest;
1865 DRM_MediaKeyRequestInfo info;
1866 unsigned char testData[139] = REQUESTINFODATA;
1867 memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
1868 info.initDataLen = sizeof(testData);
1869 info.type = MEDIA_KEY_TYPE_ONLINE;
1870 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
1871 memcpy_s(info.initData, sizeof(testData), testData, sizeof(testData));
1872 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
1873 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
1874 info.optionsCount = 1;
1875 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
1876 EXPECT_EQ(errNo, DRM_ERR_OK);
1877 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1878 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1879 unsigned char testKeySessionResponse[12288] = OFFRESPONSE;
1880 int32_t testKeySessionResponseLen = 12288;
1881 if (g_isWisePlay) {
1882 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data,
1883 (uint32_t)mediaKeyRequest.dataLen, testKeySessionResponse, &testKeySessionResponseLen, 10);
1884 EXPECT_EQ(rett, 0);
1885 } else {
1886 testKeySessionResponseLen = 50;
1887 }errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
1888 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
1889 EXPECT_EQ(errNo, DRM_ERR_OK);
1890 DRM_OfflineMediakeyIdArray offlineMediaKeyIds;
1891 errNo = OH_MediaKeySystem_GetOfflineMediaKeyIds(nullptr, &offlineMediaKeyIds);
1892 EXPECT_NE(errNo, DRM_ERR_OK);
1893 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
1894 EXPECT_EQ(errNo, DRM_ERR_OK);
1895 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
1896 EXPECT_EQ(errNo, DRM_ERR_OK);
1897 }
1898
1899 /*
1900 * Feature: Framework
1901 * Function: Processing device certificate response testing
1902 * Sub function: NA
1903 * Function point: NA
1904 * Environmental conditions: NA
1905 * Case Description: Processing Device Certificate Response Testing
1906 */
1907 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GetOfflineMediaKeyIdsAbNormal_044, TestSize.Level0)
1908 {
1909 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
1910 MediaKeySystem *mediaKeySystem = nullptr;
1911 MediaKeySession *mediaKeySession = nullptr;
1912 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
1913 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
1914 EXPECT_NE(mediaKeySystem, nullptr);
1915 EXPECT_EQ(errNo, DRM_ERR_OK);
1916 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
1917 EXPECT_NE(mediaKeySession, nullptr);
1918 EXPECT_EQ(errNo, DRM_ERR_OK);
1919 // mediakeysession
1920 DRM_MediaKeyRequest mediaKeyRequest;
1921 DRM_MediaKeyRequestInfo info;
1922 unsigned char testData[139] = REQUESTINFODATA;
1923 memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
1924 info.initDataLen = sizeof(testData);
1925 info.type = MEDIA_KEY_TYPE_ONLINE;
1926 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
1927 memcpy_s(info.initData, sizeof(testData), testData, sizeof(testData));
1928 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
1929 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
1930 info.optionsCount = 1;
1931 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
1932 EXPECT_EQ(errNo, DRM_ERR_OK);
1933 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1934 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1935 unsigned char testKeySessionResponse[12288] = OFFRESPONSE;
1936 int32_t testKeySessionResponseLen = 12288;
1937 if (g_isWisePlay) {
1938 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data,
1939 (uint32_t)mediaKeyRequest.dataLen, testKeySessionResponse, &testKeySessionResponseLen, 10);
1940 EXPECT_EQ(rett, 0);
1941 } else {
1942 testKeySessionResponseLen = 50;
1943 }errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
1944 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
1945 EXPECT_EQ(errNo, DRM_ERR_OK);
1946 errNo = OH_MediaKeySystem_GetOfflineMediaKeyIds(mediaKeySystem, nullptr);
1947 EXPECT_NE(errNo, DRM_ERR_OK);
1948 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
1949 EXPECT_EQ(errNo, DRM_ERR_OK);
1950 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
1951 EXPECT_EQ(errNo, DRM_ERR_OK);
1952 }
1953
1954 /*
1955 * Feature: Framework
1956 * Function: Processing device certificate response testing
1957 * Sub function: NA
1958 * Function point: NA
1959 * Environmental conditions: NA
1960 * Case Description: Processing Device Certificate Response Testing
1961 */
1962 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GenerateOfflineReleaseRequestNormal_045, TestSize.Level0)
1963 {
1964 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
1965 MediaKeySystem *mediaKeySystem = nullptr;
1966 MediaKeySession *mediaKeySession = nullptr;
1967 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
1968 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
1969 EXPECT_NE(mediaKeySystem, nullptr);
1970 EXPECT_EQ(errNo, DRM_ERR_OK);
1971 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
1972 EXPECT_NE(mediaKeySession, nullptr);
1973 EXPECT_EQ(errNo, DRM_ERR_OK);
1974 // mediakeysession
1975 DRM_MediaKeyRequest mediaKeyRequest;
1976 DRM_MediaKeyRequestInfo info;
1977 unsigned char testData[241] = OFFREQUESTINFODATA;
1978 memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
1979 info.initDataLen = testData[3];
1980 info.type = MEDIA_KEY_TYPE_OFFLINE;
1981 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
1982 memcpy_s(info.initData, sizeof(testData), testData, sizeof(testData));
1983 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
1984 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
1985 info.optionsCount = 1;
1986 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
1987 EXPECT_EQ(errNo, DRM_ERR_OK);
1988 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1989 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1990 unsigned char testKeySessionResponse[12288] = OFFRESPONSE;
1991 int32_t testKeySessionResponseLen = 12288;
1992 if (g_isWisePlay) {
1993 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data,
1994 (uint32_t)mediaKeyRequest.dataLen, testKeySessionResponse, &testKeySessionResponseLen, 10);
1995 EXPECT_EQ(rett, 0);
1996 } else {
1997 testKeySessionResponseLen = 50;
1998 }errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
1999 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
2000 EXPECT_EQ(errNo, DRM_ERR_OK);
2001 DRM_OfflineMediaKeyStatus OfflineMediaKeyStatus = OFFLINE_MEDIA_KEY_STATUS_UNKNOWN;
2002 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(mediaKeySystem, onlineMediaKeyId, onlineMediaKeyIdLen,
2003 &OfflineMediaKeyStatus);
2004 EXPECT_EQ(errNo, DRM_ERR_OK);
2005 EXPECT_EQ(OfflineMediaKeyStatus, 1);
2006 unsigned char releaseRequest[12288] = { 0 }; // 12288:request len
2007 int32_t releaseRequestLen = 12288; // 12288:request len
2008 errNo = OH_MediaKeySession_GenerateOfflineReleaseRequest(mediaKeySession, onlineMediaKeyId, onlineMediaKeyIdLen,
2009 releaseRequest, &releaseRequestLen);
2010 EXPECT_EQ(errNo, DRM_ERR_OK);
2011 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
2012 EXPECT_EQ(errNo, DRM_ERR_OK);
2013 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
2014 EXPECT_EQ(errNo, DRM_ERR_OK);
2015 }
2016
2017 /*
2018 * Feature: Framework
2019 * Function: Processing device certificate response testing
2020 * Sub function: NA
2021 * Function point: NA
2022 * Environmental conditions: NA
2023 * Case Description: Processing Device Certificate Response Testing
2024 */
2025 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GenerateOfflineReleaseRequestAbNormal_046, TestSize.Level0)
2026 {
2027 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
2028 MediaKeySystem *mediaKeySystem = nullptr;
2029 MediaKeySession *mediaKeySession = nullptr;
2030 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
2031 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
2032 EXPECT_NE(mediaKeySystem, nullptr);
2033 EXPECT_EQ(errNo, DRM_ERR_OK);
2034 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
2035 EXPECT_NE(mediaKeySession, nullptr);
2036 EXPECT_EQ(errNo, DRM_ERR_OK);
2037 // mediakeysession
2038 DRM_MediaKeyRequest mediaKeyRequest;
2039 DRM_MediaKeyRequestInfo info;
2040 unsigned char testData[241] = OFFREQUESTINFODATA;
2041 memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
2042 info.initDataLen = testData[3];
2043 info.type = MEDIA_KEY_TYPE_OFFLINE;
2044 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
2045 memcpy_s(info.initData, sizeof(testData), testData, sizeof(testData));
2046 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
2047 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
2048 info.optionsCount = 1;
2049 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
2050 EXPECT_EQ(errNo, DRM_ERR_OK);
2051 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
2052 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
2053 unsigned char testKeySessionResponse[12288] = OFFRESPONSE;
2054 int32_t testKeySessionResponseLen = 12288;
2055 if (g_isWisePlay) {
2056 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data,
2057 (uint32_t)mediaKeyRequest.dataLen, testKeySessionResponse, &testKeySessionResponseLen, 10);
2058 EXPECT_EQ(rett, 0);
2059 } else {
2060 testKeySessionResponseLen = 50;
2061 }errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
2062 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
2063 EXPECT_EQ(errNo, DRM_ERR_OK);
2064 DRM_OfflineMediaKeyStatus OfflineMediaKeyStatus = OFFLINE_MEDIA_KEY_STATUS_UNKNOWN;
2065 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(mediaKeySystem, onlineMediaKeyId, onlineMediaKeyIdLen,
2066 &OfflineMediaKeyStatus);
2067 EXPECT_EQ(errNo, DRM_ERR_OK);
2068 EXPECT_EQ(OfflineMediaKeyStatus, 1);
2069 unsigned char releaseRequest[12288] = { 0 }; // 12288:request len
2070 int32_t releaseRequestLen = 12288; // 12288:request len
2071 errNo = OH_MediaKeySession_GenerateOfflineReleaseRequest(nullptr, onlineMediaKeyId, onlineMediaKeyIdLen,
2072 releaseRequest, &releaseRequestLen);
2073 EXPECT_NE(errNo, DRM_ERR_OK);
2074 releaseRequestLen = 12288; // 12288:request len
2075 errNo = OH_MediaKeySession_GenerateOfflineReleaseRequest(mediaKeySession, nullptr, onlineMediaKeyIdLen,
2076 releaseRequest, &releaseRequestLen);
2077 EXPECT_NE(errNo, DRM_ERR_OK);
2078 releaseRequestLen = 12288; // 12288:request len
2079 errNo = OH_MediaKeySession_GenerateOfflineReleaseRequest(mediaKeySession, onlineMediaKeyId, onlineMediaKeyIdLen,
2080 nullptr, &releaseRequestLen);
2081 EXPECT_NE(errNo, DRM_ERR_OK);
2082 errNo = OH_MediaKeySession_GenerateOfflineReleaseRequest(mediaKeySession, onlineMediaKeyId, onlineMediaKeyIdLen,
2083 releaseRequest, nullptr);
2084 EXPECT_NE(errNo, DRM_ERR_OK);
2085 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
2086 EXPECT_EQ(errNo, DRM_ERR_OK);
2087 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
2088 EXPECT_EQ(errNo, DRM_ERR_OK);
2089 }
2090
2091 /*
2092 * Feature: Framework
2093 * Function: Processing device certificate response testing
2094 * Sub function: NA
2095 * Function point: NA
2096 * Environmental conditions: NA
2097 * Case Description: Processing Device Certificate Response Testing
2098 */
2099 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_ProcessOfflineReleaseResponseNormal_047, TestSize.Level0)
2100 {
2101 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
2102 MediaKeySystem *mediaKeySystem = nullptr;
2103 MediaKeySession *mediaKeySession = nullptr;
2104 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
2105 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
2106 EXPECT_NE(mediaKeySystem, nullptr);
2107 EXPECT_EQ(errNo, DRM_ERR_OK);
2108 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
2109 EXPECT_NE(mediaKeySession, nullptr);
2110 EXPECT_EQ(errNo, DRM_ERR_OK);
2111 // mediakeysession
2112 DRM_MediaKeyRequest mediaKeyRequest;
2113 DRM_MediaKeyRequestInfo info;
2114 unsigned char testData[241] = OFFREQUESTINFODATA;
2115 memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
2116 info.initDataLen = testData[3];
2117 info.type = MEDIA_KEY_TYPE_OFFLINE;
2118 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
2119 memcpy_s(info.initData, sizeof(testData), testData, sizeof(testData));
2120 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
2121 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
2122 info.optionsCount = 1;
2123 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
2124 EXPECT_EQ(errNo, DRM_ERR_OK);
2125 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
2126 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
2127 unsigned char testKeySessionResponse[12288] = OFFRESPONSE;
2128 int32_t testKeySessionResponseLen = 12288;
2129 if (g_isWisePlay) {
2130 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data,
2131 (uint32_t)mediaKeyRequest.dataLen, testKeySessionResponse, &testKeySessionResponseLen, 10);
2132 EXPECT_EQ(rett, 0);
2133 } else {
2134 testKeySessionResponseLen = 50;
2135 }errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
2136 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
2137 EXPECT_EQ(errNo, DRM_ERR_OK);
2138 DRM_OfflineMediaKeyStatus OfflineMediaKeyStatus = OFFLINE_MEDIA_KEY_STATUS_UNKNOWN;
2139 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(mediaKeySystem, onlineMediaKeyId, onlineMediaKeyIdLen,
2140 &OfflineMediaKeyStatus);
2141 EXPECT_EQ(errNo, DRM_ERR_OK);
2142 EXPECT_EQ(OfflineMediaKeyStatus, 1);
2143 unsigned char releaseRequest[12288] = { 0 }; // 12288:request len
2144 int32_t releaseRequestLen = 12288; // 12288:request len
2145 errNo = OH_MediaKeySession_GenerateOfflineReleaseRequest(mediaKeySession, onlineMediaKeyId, onlineMediaKeyIdLen,
2146 releaseRequest, &releaseRequestLen);
2147 EXPECT_EQ(errNo, DRM_ERR_OK);
2148 unsigned char testKeyReleaseResponse[50] = OFFRESPONSE;
2149 if (!g_isWisePlay) {
2150 errNo = OH_MediaKeySession_ProcessOfflineReleaseResponse(mediaKeySession, onlineMediaKeyId, onlineMediaKeyIdLen,
2151 testKeyReleaseResponse, (int32_t)(sizeof(testKeyReleaseResponse)));
2152 EXPECT_EQ(errNo, DRM_ERR_OK);
2153 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(mediaKeySystem, onlineMediaKeyId, onlineMediaKeyIdLen,
2154 &OfflineMediaKeyStatus);
2155 EXPECT_EQ(OfflineMediaKeyStatus, 2);
2156 EXPECT_EQ(errNo, DRM_ERR_OK);
2157 }
2158 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
2159 EXPECT_EQ(errNo, DRM_ERR_OK);
2160 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
2161 EXPECT_EQ(errNo, DRM_ERR_OK);
2162 }
2163
2164 /*
2165 * Feature: Framework
2166 * Function: Processing device certificate response testing
2167 * Sub function: NA
2168 * Function point: NA
2169 * Environmental conditions: NA
2170 * Case Description: Processing Device Certificate Response Testing
2171 */
2172 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_ProcessOfflineReleaseResponseAbNormal_048, TestSize.Level0)
2173 {
2174 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
2175 MediaKeySystem *mediaKeySystem = nullptr;
2176 MediaKeySession *mediaKeySession = nullptr;
2177 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
2178 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
2179 EXPECT_NE(mediaKeySystem, nullptr);
2180 EXPECT_EQ(errNo, DRM_ERR_OK);
2181 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
2182 EXPECT_NE(mediaKeySession, nullptr);
2183 EXPECT_EQ(errNo, DRM_ERR_OK);
2184 // mediakeysession
2185 DRM_MediaKeyRequest mediaKeyRequest;
2186 DRM_MediaKeyRequestInfo info;
2187 unsigned char testData[241] = OFFREQUESTINFODATA;
2188 memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
2189 info.initDataLen = testData[3];
2190 info.type = MEDIA_KEY_TYPE_OFFLINE;
2191 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
2192 memcpy_s(info.initData, sizeof(testData), testData, sizeof(testData));
2193 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
2194 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
2195 info.optionsCount = 1;
2196 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
2197 EXPECT_EQ(errNo, DRM_ERR_OK);
2198 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
2199 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
2200 unsigned char testKeySessionResponse[12288] = OFFRESPONSE;
2201 int32_t testKeySessionResponseLen = 12288;
2202 if (g_isWisePlay) {
2203 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data,
2204 (uint32_t)mediaKeyRequest.dataLen, testKeySessionResponse, &testKeySessionResponseLen, 10);
2205 EXPECT_EQ(rett, 0);
2206 } else {
2207 testKeySessionResponseLen = 50;
2208 }errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
2209 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
2210 EXPECT_EQ(errNo, DRM_ERR_OK);
2211 DRM_OfflineMediaKeyStatus OfflineMediaKeyStatus = OFFLINE_MEDIA_KEY_STATUS_UNKNOWN;
2212 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(mediaKeySystem, onlineMediaKeyId, onlineMediaKeyIdLen,
2213 &OfflineMediaKeyStatus);
2214 EXPECT_EQ(errNo, DRM_ERR_OK);
2215 EXPECT_EQ(OfflineMediaKeyStatus, 1);
2216 unsigned char releaseRequest[12288] = { 0 }; // 12288:request len
2217 int32_t releaseRequestLen = 12288; // 12288:request len
2218 errNo = OH_MediaKeySession_GenerateOfflineReleaseRequest(mediaKeySession, onlineMediaKeyId, onlineMediaKeyIdLen,
2219 releaseRequest, &releaseRequestLen);
2220 EXPECT_EQ(errNo, DRM_ERR_OK);
2221 unsigned char testKeyReleaseResponse[50] = OFFRESPONSE;
2222 errNo = OH_MediaKeySession_ProcessOfflineReleaseResponse(nullptr, onlineMediaKeyId, onlineMediaKeyIdLen,
2223 testKeyReleaseResponse, (int32_t)(sizeof(testKeyReleaseResponse)));
2224 EXPECT_NE(errNo, DRM_ERR_OK);
2225 errNo = OH_MediaKeySession_ProcessOfflineReleaseResponse(mediaKeySession, nullptr, onlineMediaKeyIdLen,
2226 testKeyReleaseResponse, (int32_t)(sizeof(testKeyReleaseResponse)));
2227 EXPECT_NE(errNo, DRM_ERR_OK);
2228 errNo = OH_MediaKeySession_ProcessOfflineReleaseResponse(mediaKeySession, onlineMediaKeyId, onlineMediaKeyIdLen,
2229 nullptr, (int32_t)(sizeof(testKeyReleaseResponse)));
2230 EXPECT_NE(errNo, DRM_ERR_OK);
2231 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
2232 EXPECT_EQ(errNo, DRM_ERR_OK);
2233 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
2234 EXPECT_EQ(errNo, DRM_ERR_OK);
2235 }
2236
2237 /*
2238 * Feature: Framework
2239 * Function: Processing device certificate response testing
2240 * Sub function: NA
2241 * Function point: NA
2242 * Environmental conditions: NA
2243 * Case Description: Processing Device Certificate Response Testing
2244 */
2245 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GetCertificateStatusNormal_049, TestSize.Level0)
2246 {
2247 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
2248 MediaKeySystem *mediaKeySystem = nullptr;
2249 MediaKeySession *mediaKeySession = nullptr;
2250 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
2251 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
2252 EXPECT_NE(mediaKeySystem, nullptr);
2253 EXPECT_EQ(errNo, DRM_ERR_OK);
2254 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
2255 EXPECT_NE(mediaKeySession, nullptr);
2256 EXPECT_EQ(errNo, DRM_ERR_OK);
2257 DRM_CertificateStatus certStatus = CERT_STATUS_INVALID;
2258 errNo = OH_MediaKeySystem_GetCertificateStatus(mediaKeySystem, &certStatus);
2259 EXPECT_EQ(certStatus, 0);
2260 EXPECT_EQ(errNo, DRM_ERR_OK);
2261 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
2262 EXPECT_EQ(errNo, DRM_ERR_OK);
2263 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
2264 EXPECT_EQ(errNo, DRM_ERR_OK);
2265 }
2266
2267 /*
2268 * Feature: Framework
2269 * Function: Processing device certificate response testing
2270 * Sub function: NA
2271 * Function point: NA
2272 * Environmental conditions: NA
2273 * Case Description: Processing Device Certificate Response Testing
2274 */
2275 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GetCertificateStatusAbNormal_050, TestSize.Level0)
2276 {
2277 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
2278 MediaKeySystem *mediaKeySystem = nullptr;
2279 MediaKeySession *mediaKeySession = nullptr;
2280 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
2281 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
2282 EXPECT_NE(mediaKeySystem, nullptr);
2283 EXPECT_EQ(errNo, DRM_ERR_OK);
2284 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
2285 EXPECT_NE(mediaKeySession, nullptr);
2286 EXPECT_EQ(errNo, DRM_ERR_OK);
2287 DRM_CertificateStatus certStatus = CERT_STATUS_INVALID;
2288 errNo = OH_MediaKeySystem_GetCertificateStatus(nullptr, &certStatus);
2289 EXPECT_NE(errNo, DRM_ERR_OK);
2290 errNo = OH_MediaKeySystem_GetCertificateStatus(mediaKeySystem, nullptr);
2291 EXPECT_NE(errNo, DRM_ERR_OK);
2292 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
2293 EXPECT_EQ(errNo, DRM_ERR_OK);
2294 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
2295 EXPECT_EQ(errNo, DRM_ERR_OK);
2296 }
2297
2298 /*
2299 * Feature: Framework
2300 * Function: Processing device certificate response testing
2301 * Sub function: NA
2302 * Function point: NA
2303 * Environmental conditions: NA
2304 * Case Description: Processing Device Certificate Response Testing
2305 */
2306 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_SetConfigurationStringNormal_051, TestSize.Level0)
2307 {
2308 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
2309 MediaKeySystem *mediaKeySystem = nullptr;
2310 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
2311 EXPECT_NE(mediaKeySystem, nullptr);
2312 EXPECT_EQ(errNo, DRM_ERR_OK);
2313 errNo =
2314 OH_MediaKeySystem_SetConfigurationString(mediaKeySystem, "testConfigurationString", "testConfigurationString");
2315 if (g_isWisePlay) {
2316 EXPECT_NE(errNo, DRM_ERR_OK);
2317 } else {
2318 EXPECT_EQ(errNo, DRM_ERR_OK);
2319 }
2320 char value[32];
2321 int32_t valueLen = 32;
2322 errNo = OH_MediaKeySystem_GetConfigurationString(mediaKeySystem, "version", value, valueLen);
2323 if (g_isWisePlay) {
2324 EXPECT_EQ(errNo, DRM_ERR_OK);
2325 errNo = OH_MediaKeySystem_GetConfigurationString(mediaKeySystem, "version", value, 0);
2326 EXPECT_NE(errNo, DRM_ERR_OK);
2327 } else {
2328 EXPECT_NE(errNo, DRM_ERR_OK);
2329 }
2330 errNo = OH_MediaKeySystem_GetConfigurationString(mediaKeySystem, "testConfigurationString", value, 10);
2331 EXPECT_NE(errNo, DRM_ERR_OK);
2332 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
2333 EXPECT_EQ(errNo, DRM_ERR_OK);
2334 }
2335
2336 /*
2337 * Feature: Framework
2338 * Function: Processing device certificate response testing
2339 * Sub function: NA
2340 * Function point: NA
2341 * Environmental conditions: NA
2342 * Case Description: Processing Device Certificate Response Testing
2343 */
2344 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_SetConfigurationStringAbNormal_052, TestSize.Level0)
2345 {
2346 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
2347 MediaKeySystem *mediaKeySystem = nullptr;
2348 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
2349 EXPECT_NE(mediaKeySystem, nullptr);
2350 EXPECT_EQ(errNo, DRM_ERR_OK);
2351 errNo = OH_MediaKeySystem_SetConfigurationString(nullptr, "testConfigurationString", "gezhegezhegezhe");
2352 EXPECT_NE(errNo, DRM_ERR_OK);
2353 errNo = OH_MediaKeySystem_SetConfigurationString(mediaKeySystem, "", "gezhegezhegezhe");
2354 EXPECT_NE(errNo, DRM_ERR_OK);
2355 errNo = OH_MediaKeySystem_SetConfigurationString(mediaKeySystem, nullptr, "gezhegezhegezhe");
2356 EXPECT_NE(errNo, DRM_ERR_OK);
2357 errNo = OH_MediaKeySystem_SetConfigurationString(mediaKeySystem, "testConfigurationString", "");
2358 EXPECT_NE(errNo, DRM_ERR_OK);
2359 errNo = OH_MediaKeySystem_SetConfigurationString(mediaKeySystem, "testConfigurationString", nullptr);
2360 EXPECT_NE(errNo, DRM_ERR_OK);
2361 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
2362 EXPECT_EQ(errNo, DRM_ERR_OK);
2363 }
2364
2365 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GetConfigurationStringAbNormal_053, TestSize.Level0)
2366 {
2367 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
2368 MediaKeySystem *mediaKeySystem = nullptr;
2369 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
2370 EXPECT_NE(mediaKeySystem, nullptr);
2371 EXPECT_EQ(errNo, DRM_ERR_OK);
2372 errNo = OH_MediaKeySystem_SetConfigurationString(mediaKeySystem, "testConfigurationString", "gezhegezhegezhe");
2373 if (g_isWisePlay) {
2374 EXPECT_NE(errNo, DRM_ERR_OK);
2375 } else {
2376 EXPECT_EQ(errNo, DRM_ERR_OK);
2377 }
2378 char value[32];
2379 int32_t valueLen = 32;
2380 errNo = OH_MediaKeySystem_GetConfigurationString(nullptr, "testConfigurationString", value, valueLen);
2381 EXPECT_NE(errNo, DRM_ERR_OK);
2382 errNo = OH_MediaKeySystem_GetConfigurationString(mediaKeySystem, "", value, valueLen);
2383 EXPECT_NE(errNo, DRM_ERR_OK);
2384 errNo = OH_MediaKeySystem_GetConfigurationString(mediaKeySystem, nullptr, value, valueLen);
2385 EXPECT_NE(errNo, DRM_ERR_OK);
2386 errNo = OH_MediaKeySystem_GetConfigurationString(mediaKeySystem, "testConfigurationString", nullptr, valueLen);
2387 EXPECT_NE(errNo, DRM_ERR_OK);
2388 errNo = OH_MediaKeySystem_GetConfigurationString(mediaKeySystem, "testConfigurationString", value, 0);
2389 EXPECT_NE(errNo, DRM_ERR_OK);
2390 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
2391 EXPECT_EQ(errNo, DRM_ERR_OK);
2392 }
2393
2394 /*
2395 * Feature: Framework
2396 * Function: Processing device certificate response testing
2397 * Sub function: NA
2398 * Function point: NA
2399 * Environmental conditions: NA
2400 * Case Description: Processing Device Certificate Response Testing
2401 */
2402 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GetConfigurationByteArrayNormal_054, TestSize.Level0)
2403 {
2404 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
2405 MediaKeySystem *mediaKeySystem = nullptr;
2406 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
2407 EXPECT_NE(mediaKeySystem, nullptr);
2408 EXPECT_EQ(errNo, DRM_ERR_OK);
2409 unsigned char testArray[5] = {1, 2, 3, 4, 5};
2410 errNo = OH_MediaKeySystem_SetConfigurationByteArray(mediaKeySystem, "testConfigurationByteArray", testArray,
2411 sizeof(testArray));
2412 if (g_isWisePlay) {
2413 EXPECT_NE(errNo, DRM_ERR_OK);
2414 } else {
2415 EXPECT_EQ(errNo, DRM_ERR_OK);
2416 }
2417 unsigned char configByteArray[128];
2418 int32_t byteArrayLen = 128;
2419 errNo = OH_MediaKeySystem_GetConfigurationByteArray(mediaKeySystem, "deviceUniqueId", configByteArray,
2420 &byteArrayLen);
2421 if (g_isWisePlay) {
2422 EXPECT_EQ(errNo, DRM_ERR_OK);
2423 } else {
2424 EXPECT_NE(errNo, DRM_ERR_OK);
2425 }
2426
2427 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
2428 EXPECT_EQ(errNo, DRM_ERR_OK);
2429 }
2430
2431 /*
2432 * Feature: Framework
2433 * Function: Processing device certificate response testing
2434 * Sub function: NA
2435 * Function point: NA
2436 * Environmental conditions: NA
2437 * Case Description: Processing Device Certificate Response Testing
2438 */
2439 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_SetConfigurationByteArrayAbNormal_055, TestSize.Level0)
2440 {
2441 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
2442 MediaKeySystem *mediaKeySystem = nullptr;
2443 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
2444 EXPECT_NE(mediaKeySystem, nullptr);
2445 EXPECT_EQ(errNo, DRM_ERR_OK);
2446 unsigned char testArray[5] = {1, 2, 3, 4, 5};
2447 errNo = OH_MediaKeySystem_SetConfigurationByteArray(nullptr, "testConfigurationByteArray", testArray,
2448 sizeof(testArray));
2449 EXPECT_NE(errNo, DRM_ERR_OK);
2450 errNo = OH_MediaKeySystem_SetConfigurationByteArray(mediaKeySystem, "", testArray, sizeof(testArray));
2451 EXPECT_NE(errNo, DRM_ERR_OK);
2452 errNo = OH_MediaKeySystem_SetConfigurationByteArray(mediaKeySystem, nullptr, testArray, sizeof(testArray));
2453 EXPECT_NE(errNo, DRM_ERR_OK);
2454 errNo = OH_MediaKeySystem_SetConfigurationByteArray(mediaKeySystem, "testConfigurationByteArray", nullptr,
2455 sizeof(testArray));
2456 EXPECT_NE(errNo, DRM_ERR_OK);
2457 errNo = OH_MediaKeySystem_SetConfigurationByteArray(mediaKeySystem, "testConfigurationByteArray", testArray, 0);
2458 EXPECT_NE(errNo, DRM_ERR_OK);
2459 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
2460 EXPECT_EQ(errNo, DRM_ERR_OK);
2461 }
2462
2463 /*
2464 * Feature: Framework
2465 * Function: Processing device certificate response testing
2466 * Sub function: NA
2467 * Function point: NA
2468 * Environmental conditions: NA
2469 * Case Description: Processing Device Certificate Response Testing
2470 */
2471 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GetConfigurationByteArrayAbNormal_056, TestSize.Level0)
2472 {
2473 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
2474 MediaKeySystem *mediaKeySystem = nullptr;
2475 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
2476 EXPECT_NE(mediaKeySystem, nullptr);
2477 EXPECT_EQ(errNo, DRM_ERR_OK);
2478 unsigned char testArray[5] = {1, 2, 3, 4, 5};
2479 errNo = OH_MediaKeySystem_SetConfigurationByteArray(mediaKeySystem, "testConfigurationByteArray", testArray,
2480 sizeof(testArray));
2481 unsigned char configByteArray[32];
2482 int32_t byteArrayLen = 32;
2483 errNo = OH_MediaKeySystem_GetConfigurationByteArray(nullptr, "testConfigurationByteArray", configByteArray,
2484 &byteArrayLen);
2485 EXPECT_NE(errNo, DRM_ERR_OK);
2486 errNo = OH_MediaKeySystem_GetConfigurationByteArray(mediaKeySystem, "", configByteArray, &byteArrayLen);
2487 EXPECT_NE(errNo, DRM_ERR_OK);
2488 errNo = OH_MediaKeySystem_GetConfigurationByteArray(mediaKeySystem, nullptr, configByteArray, &byteArrayLen);
2489 EXPECT_NE(errNo, DRM_ERR_OK);
2490 errNo = OH_MediaKeySystem_GetConfigurationByteArray(mediaKeySystem, "testConfigurationByteArray", nullptr,
2491 &byteArrayLen);
2492 EXPECT_NE(errNo, DRM_ERR_OK);
2493 errNo = OH_MediaKeySystem_GetConfigurationByteArray(mediaKeySystem, "testConfigurationByteArray", configByteArray,
2494 nullptr);
2495 EXPECT_NE(errNo, DRM_ERR_OK);
2496 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
2497 EXPECT_EQ(errNo, DRM_ERR_OK);
2498 }
2499
2500 /*
2501 * Feature: Framework
2502 * Function: Processing device certificate response testing
2503 * Sub function: NA
2504 * Function point: NA
2505 * Environmental conditions: NA
2506 * Case Description: Processing Device Certificate Response Testing
2507 */
2508 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GetStatisticsNormal_057, TestSize.Level0)
2509 {
2510 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
2511 MediaKeySystem *mediaKeySystem = nullptr;
2512 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
2513 EXPECT_NE(mediaKeySystem, nullptr);
2514 EXPECT_EQ(errNo, DRM_ERR_OK);
2515 DRM_Statistics statistics;
2516 errNo = OH_MediaKeySystem_GetStatistics(mediaKeySystem, &statistics);
2517 EXPECT_EQ(errNo, DRM_ERR_OK);
2518 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
2519 EXPECT_EQ(errNo, DRM_ERR_OK);
2520 }
2521
2522 /*
2523 * Feature: Framework
2524 * Function: Processing device certificate response testing
2525 * Sub function: NA
2526 * Function point: NA
2527 * Environmental conditions: NA
2528 * Case Description: Processing Device Certificate Response Testing
2529 */
2530 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GetStatisticsAbNormal_058, TestSize.Level0)
2531 {
2532 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
2533 MediaKeySystem *mediaKeySystem = nullptr;
2534 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
2535 EXPECT_NE(mediaKeySystem, nullptr);
2536 EXPECT_EQ(errNo, DRM_ERR_OK);
2537 DRM_Statistics statistics;
2538 errNo = OH_MediaKeySystem_GetStatistics(nullptr, &statistics);
2539 EXPECT_NE(errNo, DRM_ERR_OK);
2540 errNo = OH_MediaKeySystem_GetStatistics(mediaKeySystem, nullptr);
2541 EXPECT_NE(errNo, DRM_ERR_OK);
2542 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
2543 EXPECT_EQ(errNo, DRM_ERR_OK);
2544 }
2545
2546 /*
2547 * Feature: Framework
2548 * Function: Test and create DRM instances
2549 * Sub function: NA
2550 * Function point: NA
2551 * Environmental conditions: NA
2552 * Case Description: Test Creating DRM Instance
2553 */
2554 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GetMaxContentProtectionLevelAbNormal_059, TestSize.Level0)
2555 {
2556 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
2557 MediaKeySystem *mediaKeySystem = nullptr;
2558 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_UNKNOWN;
2559 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
2560 EXPECT_NE(mediaKeySystem, nullptr);
2561 EXPECT_EQ(errNo, DRM_ERR_OK);
2562 errNo = OH_MediaKeySystem_GetMaxContentProtectionLevel(nullptr, &contentProtectionLevel);
2563 EXPECT_NE(errNo, DRM_ERR_OK);
2564 errNo = OH_MediaKeySystem_GetMaxContentProtectionLevel(mediaKeySystem, nullptr);
2565 EXPECT_NE(errNo, DRM_ERR_OK);
2566 if (mediaKeySystem != nullptr) {
2567 OH_MediaKeySystem_Destroy(mediaKeySystem);
2568 }
2569 }
2570
2571 /*
2572 * Feature: Framework
2573 * Function: Processing device certificate response testing
2574 * Sub function: NA
2575 * Function point: NA
2576 * Environmental conditions: NA
2577 * Case Description: Processing Device Certificate Response Testing
2578 */
2579 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_ClearOfflineMediaKeysNormal_060, TestSize.Level0)
2580 {
2581 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
2582 MediaKeySystem *mediaKeySystem = nullptr;
2583 MediaKeySession *mediaKeySession = nullptr;
2584 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
2585 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
2586 EXPECT_NE(mediaKeySystem, nullptr);
2587 EXPECT_EQ(errNo, DRM_ERR_OK);
2588 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
2589 EXPECT_NE(mediaKeySession, nullptr);
2590 EXPECT_EQ(errNo, DRM_ERR_OK);
2591 // mediakeysession
2592 DRM_MediaKeyRequest mediaKeyRequest;
2593 DRM_MediaKeyRequestInfo info;
2594 unsigned char testData[241] = OFFREQUESTINFODATA;
2595 memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
2596 info.initDataLen = testData[3];
2597 info.type = MEDIA_KEY_TYPE_OFFLINE;
2598 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
2599 memcpy_s(info.initData, sizeof(testData), testData, sizeof(testData));
2600 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
2601 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
2602 info.optionsCount = 1;
2603 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
2604 EXPECT_EQ(errNo, DRM_ERR_OK);
2605 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
2606 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
2607 unsigned char testKeySessionResponse[12288] = OFFRESPONSE;
2608 int32_t testKeySessionResponseLen = 12288;
2609 if (g_isWisePlay) {
2610 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data,
2611 (uint32_t)mediaKeyRequest.dataLen, testKeySessionResponse, &testKeySessionResponseLen, 10);
2612 EXPECT_EQ(rett, 0);
2613 } else {
2614 testKeySessionResponseLen = 50;
2615 }errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
2616 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
2617 EXPECT_EQ(errNo, DRM_ERR_OK);
2618 DRM_OfflineMediaKeyStatus OfflineMediaKeyStatus = OFFLINE_MEDIA_KEY_STATUS_UNKNOWN;
2619 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(mediaKeySystem, onlineMediaKeyId, onlineMediaKeyIdLen,
2620 &OfflineMediaKeyStatus);
2621 EXPECT_EQ(OfflineMediaKeyStatus, 1);
2622 EXPECT_EQ(errNo, DRM_ERR_OK);
2623 unsigned char releaseRequest[12288] = { 0 }; // 12288:request len
2624 int32_t releaseRequestLen = 12288; // 12288:request len
2625 errNo = OH_MediaKeySession_GenerateOfflineReleaseRequest(mediaKeySession, onlineMediaKeyId, onlineMediaKeyIdLen,
2626 releaseRequest, &releaseRequestLen);
2627 EXPECT_EQ(errNo, DRM_ERR_OK);
2628 unsigned char testKeyReleaseResponse[50] = OFFRESPONSE;
2629 errNo = OH_MediaKeySession_ProcessOfflineReleaseResponse(mediaKeySession, onlineMediaKeyId, onlineMediaKeyIdLen,
2630 testKeyReleaseResponse, (int32_t)(sizeof(testKeyReleaseResponse)));
2631
2632 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(mediaKeySystem, onlineMediaKeyId, onlineMediaKeyIdLen,
2633 &OfflineMediaKeyStatus);
2634
2635 EXPECT_EQ(errNo, DRM_ERR_OK);
2636 errNo = OH_MediaKeySystem_ClearOfflineMediaKeys(mediaKeySystem, onlineMediaKeyId, onlineMediaKeyIdLen);
2637 EXPECT_EQ(errNo, DRM_ERR_OK);
2638 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(mediaKeySystem, onlineMediaKeyId, onlineMediaKeyIdLen,
2639 &OfflineMediaKeyStatus);
2640
2641 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
2642 EXPECT_EQ(errNo, DRM_ERR_OK);
2643 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
2644 EXPECT_EQ(errNo, DRM_ERR_OK);
2645 }
2646
2647 /*
2648 * Feature: Framework
2649 * Function: Processing device certificate response testing
2650 * Sub function: NA
2651 * Function point: NA
2652 * Environmental conditions: NA
2653 * Case Description: Processing Device Certificate Response Testing
2654 */
2655 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_ClearOfflineMediaKeysAbNormal_061, TestSize.Level0)
2656 {
2657 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
2658 MediaKeySystem *mediaKeySystem = nullptr;
2659 MediaKeySession *mediaKeySession = nullptr;
2660 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
2661 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
2662 EXPECT_NE(mediaKeySystem, nullptr);
2663 EXPECT_EQ(errNo, DRM_ERR_OK);
2664 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
2665 EXPECT_NE(mediaKeySession, nullptr);
2666 EXPECT_EQ(errNo, DRM_ERR_OK);
2667 // mediakeysession
2668 DRM_MediaKeyRequest mediaKeyRequest;
2669 DRM_MediaKeyRequestInfo info;
2670 unsigned char testData[241] = OFFREQUESTINFODATA;
2671 memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
2672 info.initDataLen = testData[3];
2673 info.type = MEDIA_KEY_TYPE_OFFLINE;
2674 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
2675 memcpy_s(info.initData, sizeof(testData), testData, sizeof(testData));
2676 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
2677 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
2678 info.optionsCount = 1;
2679 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
2680 EXPECT_EQ(errNo, DRM_ERR_OK);
2681 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
2682 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
2683 unsigned char testKeySessionResponse[12288] = OFFRESPONSE;
2684 int32_t testKeySessionResponseLen = 12288;
2685 if (g_isWisePlay) {
2686 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data,
2687 (uint32_t)mediaKeyRequest.dataLen, testKeySessionResponse, &testKeySessionResponseLen, 10);
2688 EXPECT_EQ(rett, 0);
2689 } else {
2690 testKeySessionResponseLen = 50;
2691 }errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
2692 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
2693 EXPECT_EQ(errNo, DRM_ERR_OK);
2694 DRM_OfflineMediaKeyStatus OfflineMediaKeyStatus = OFFLINE_MEDIA_KEY_STATUS_UNKNOWN;
2695 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(mediaKeySystem, onlineMediaKeyId, onlineMediaKeyIdLen,
2696 &OfflineMediaKeyStatus);
2697 EXPECT_EQ(OfflineMediaKeyStatus, 1);
2698 EXPECT_EQ(errNo, DRM_ERR_OK);
2699 unsigned char releaseRequest[12288] = { 0 }; // 12288:request len
2700 int32_t releaseRequestLen = 12288; // 12288:request len
2701 errNo = OH_MediaKeySession_GenerateOfflineReleaseRequest(mediaKeySession, onlineMediaKeyId, onlineMediaKeyIdLen,
2702 releaseRequest, &releaseRequestLen);
2703 EXPECT_EQ(errNo, DRM_ERR_OK);
2704 if (!g_isWisePlay) {
2705 unsigned char testKeyReleaseResponse[50] = OFFRESPONSE;
2706 errNo = OH_MediaKeySession_ProcessOfflineReleaseResponse(mediaKeySession, onlineMediaKeyId, onlineMediaKeyIdLen,
2707 testKeyReleaseResponse, (int32_t)(sizeof(testKeyReleaseResponse)));
2708 EXPECT_EQ(errNo, DRM_ERR_OK);
2709 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(mediaKeySystem, onlineMediaKeyId, onlineMediaKeyIdLen,
2710 &OfflineMediaKeyStatus);
2711 EXPECT_EQ(OfflineMediaKeyStatus, 2);
2712 EXPECT_EQ(errNo, DRM_ERR_OK);
2713 errNo = OH_MediaKeySystem_ClearOfflineMediaKeys(nullptr, onlineMediaKeyId, onlineMediaKeyIdLen);
2714 EXPECT_NE(errNo, DRM_ERR_OK);
2715 errNo = OH_MediaKeySystem_ClearOfflineMediaKeys(mediaKeySystem, nullptr, onlineMediaKeyIdLen);
2716 EXPECT_NE(errNo, DRM_ERR_OK);
2717 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(mediaKeySystem, onlineMediaKeyId, onlineMediaKeyIdLen,
2718 &OfflineMediaKeyStatus);
2719 EXPECT_EQ(OfflineMediaKeyStatus, 2);
2720 EXPECT_EQ(errNo, DRM_ERR_OK);
2721 }
2722 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
2723 EXPECT_EQ(errNo, DRM_ERR_OK);
2724 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
2725 EXPECT_EQ(errNo, DRM_ERR_OK);
2726 }
2727
2728 /*
2729 * Feature: Framework
2730 * Function: Processing device certificate response testing
2731 * Sub function: NA
2732 * Function point: NA
2733 * Environmental conditions: NA
2734 * Case Description: Processing Device Certificate Response Testing
2735 */
2736 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_RestoreOfflineMediaKeysNormal_062, TestSize.Level0)
2737 {
2738 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
2739 MediaKeySystem *mediaKeySystem = nullptr;
2740 MediaKeySession *mediaKeySession = nullptr;
2741 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
2742 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
2743 EXPECT_NE(mediaKeySystem, nullptr);
2744 EXPECT_EQ(errNo, DRM_ERR_OK);
2745 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
2746 EXPECT_NE(mediaKeySession, nullptr);
2747 EXPECT_EQ(errNo, DRM_ERR_OK);
2748 // mediakeysession
2749 DRM_MediaKeyRequest mediaKeyRequest;
2750 DRM_MediaKeyRequestInfo info;
2751 unsigned char testData[241] = OFFREQUESTINFODATA;
2752 info.initDataLen = testData[3];
2753 info.type = MEDIA_KEY_TYPE_OFFLINE;
2754 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
2755 memcpy_s(info.initData, sizeof(testData), testData, sizeof(testData));
2756 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
2757 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
2758 info.optionsCount = 1;
2759 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
2760 EXPECT_EQ(errNo, DRM_ERR_OK);
2761 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
2762 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
2763 unsigned char testKeySessionResponse[12288] = OFFRESPONSE;
2764 int32_t testKeySessionResponseLen = 12288;
2765 if (g_isWisePlay) {
2766 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data,
2767 (uint32_t)mediaKeyRequest.dataLen, testKeySessionResponse, &testKeySessionResponseLen, 10);
2768 EXPECT_EQ(rett, 0);
2769 } else {
2770 testKeySessionResponseLen = 50;
2771 }errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
2772 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
2773 EXPECT_EQ(errNo, DRM_ERR_OK);
2774 DRM_OfflineMediaKeyStatus OfflineMediaKeyStatus = OFFLINE_MEDIA_KEY_STATUS_UNKNOWN;
2775 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(mediaKeySystem, onlineMediaKeyId, onlineMediaKeyIdLen,
2776 &OfflineMediaKeyStatus);
2777 EXPECT_EQ(OfflineMediaKeyStatus, 1);
2778 EXPECT_EQ(errNo, DRM_ERR_OK);
2779 unsigned char releaseRequest[12288] = { 0 }; // 12288:request len
2780 int32_t releaseRequestLen = 12288; // 12288:request len
2781 errNo = OH_MediaKeySession_GenerateOfflineReleaseRequest(mediaKeySession, onlineMediaKeyId, onlineMediaKeyIdLen,
2782 releaseRequest, &releaseRequestLen);
2783 EXPECT_EQ(errNo, DRM_ERR_OK);
2784 if (!g_isWisePlay) {
2785 unsigned char testKeyReleaseResponse[50] = OFFRESPONSE;
2786 errNo = OH_MediaKeySession_ProcessOfflineReleaseResponse(mediaKeySession, onlineMediaKeyId, onlineMediaKeyIdLen,
2787 testKeyReleaseResponse, (int32_t)(sizeof(testKeyReleaseResponse)));
2788 EXPECT_EQ(errNo, DRM_ERR_OK);
2789 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(mediaKeySystem, onlineMediaKeyId, onlineMediaKeyIdLen,
2790 &OfflineMediaKeyStatus);
2791 EXPECT_EQ(OfflineMediaKeyStatus, 2);
2792 EXPECT_EQ(errNo, DRM_ERR_OK);
2793 errNo = OH_MediaKeySession_RestoreOfflineMediaKeys(mediaKeySession, onlineMediaKeyId, onlineMediaKeyIdLen);
2794 EXPECT_EQ(errNo, DRM_ERR_OK);
2795 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(mediaKeySystem, onlineMediaKeyId, onlineMediaKeyIdLen,
2796 &OfflineMediaKeyStatus);
2797 EXPECT_EQ(OfflineMediaKeyStatus, 1);
2798 EXPECT_EQ(errNo, DRM_ERR_OK);
2799 }
2800 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
2801 EXPECT_EQ(errNo, DRM_ERR_OK);
2802 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
2803 EXPECT_EQ(errNo, DRM_ERR_OK);
2804 }
2805 /*
2806 * Feature: Framework
2807 * Function: Processing device certificate response testing
2808 * Sub function: NA
2809 * Function point: NA
2810 * Environmental conditions: NA
2811 * Case Description: Processing Device Certificate Response Testing
2812 */
2813 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_RestoreOfflineMediaKeysAbNormal_063, TestSize.Level0)
2814 {
2815 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
2816 MediaKeySystem *mediaKeySystem = nullptr;
2817 MediaKeySession *mediaKeySession = nullptr;
2818 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
2819 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
2820 EXPECT_NE(mediaKeySystem, nullptr);
2821 EXPECT_EQ(errNo, DRM_ERR_OK);
2822 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
2823 EXPECT_NE(mediaKeySession, nullptr);
2824 EXPECT_EQ(errNo, DRM_ERR_OK);
2825 // mediakeysession
2826 DRM_MediaKeyRequest mediaKeyRequest;
2827 DRM_MediaKeyRequestInfo info;
2828 unsigned char testData[241] = OFFREQUESTINFODATA;
2829 memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
2830 info.initDataLen = 139;
2831 info.type = MEDIA_KEY_TYPE_OFFLINE;
2832 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
2833 memcpy_s(info.initData, 139, testData, 139);
2834 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
2835 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
2836 info.optionsCount = 1;
2837 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
2838 EXPECT_EQ(errNo, DRM_ERR_OK);
2839 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
2840 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
2841 unsigned char testKeySessionResponse[12288] = OFFRESPONSE;
2842 int32_t testKeySessionResponseLen = 12288;
2843 if (g_isWisePlay) {
2844 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data,
2845 (uint32_t)mediaKeyRequest.dataLen, testKeySessionResponse, &testKeySessionResponseLen, 10);
2846 EXPECT_EQ(rett, 0);
2847 } else {
2848 testKeySessionResponseLen = 50;
2849 }errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
2850 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
2851 EXPECT_EQ(errNo, DRM_ERR_OK);
2852 DRM_OfflineMediaKeyStatus OfflineMediaKeyStatus = OFFLINE_MEDIA_KEY_STATUS_UNKNOWN;
2853 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(mediaKeySystem, onlineMediaKeyId, onlineMediaKeyIdLen,
2854 &OfflineMediaKeyStatus);
2855 EXPECT_EQ(OfflineMediaKeyStatus, 1);
2856 EXPECT_EQ(errNo, DRM_ERR_OK);
2857 unsigned char releaseRequest[12288] = { 0 }; // 12288:request len
2858 int32_t releaseRequestLen = 12288; // 12288:request len
2859 errNo = OH_MediaKeySession_GenerateOfflineReleaseRequest(mediaKeySession, onlineMediaKeyId, onlineMediaKeyIdLen,
2860 releaseRequest, &releaseRequestLen);
2861 EXPECT_EQ(errNo, DRM_ERR_OK);
2862 if (!g_isWisePlay) {
2863 unsigned char testKeyReleaseResponse[50] = OFFRESPONSE;
2864 errNo = OH_MediaKeySession_ProcessOfflineReleaseResponse(mediaKeySession, onlineMediaKeyId, onlineMediaKeyIdLen,
2865 testKeyReleaseResponse, (int32_t)(sizeof(testKeyReleaseResponse)));
2866 EXPECT_EQ(errNo, DRM_ERR_OK);
2867 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(mediaKeySystem, onlineMediaKeyId, onlineMediaKeyIdLen,
2868 &OfflineMediaKeyStatus);
2869 EXPECT_EQ(OfflineMediaKeyStatus, 2);
2870 EXPECT_EQ(errNo, DRM_ERR_OK);
2871 errNo = OH_MediaKeySession_RestoreOfflineMediaKeys(nullptr, onlineMediaKeyId, onlineMediaKeyIdLen);
2872 EXPECT_NE(errNo, DRM_ERR_OK);
2873 errNo = OH_MediaKeySession_RestoreOfflineMediaKeys(mediaKeySession, nullptr, onlineMediaKeyIdLen);
2874 EXPECT_NE(errNo, DRM_ERR_OK);
2875 errNo = OH_MediaKeySession_RestoreOfflineMediaKeys(mediaKeySession, onlineMediaKeyId, 0);
2876 EXPECT_NE(errNo, DRM_ERR_OK);
2877 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(mediaKeySystem, onlineMediaKeyId, onlineMediaKeyIdLen,
2878 &OfflineMediaKeyStatus);
2879 EXPECT_EQ(OfflineMediaKeyStatus, 2);
2880 EXPECT_EQ(errNo, DRM_ERR_OK);
2881 }
2882 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
2883 EXPECT_EQ(errNo, DRM_ERR_OK);
2884 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
2885 EXPECT_EQ(errNo, DRM_ERR_OK);
2886 }
2887
2888 #define MAX_BUFF 139
filldata(DRM_MediaKeyRequestInfo * info)2889 static void filldata(DRM_MediaKeyRequestInfo *info)
2890 {
2891 unsigned char testData[139] = REQUESTINFODATA;
2892 memset_s(info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
2893 info->initDataLen = sizeof(testData);
2894 info->type = MEDIA_KEY_TYPE_ONLINE;
2895 memcpy_s(info->mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
2896 memcpy_s(info->initData, sizeof(testData), testData, sizeof(testData));
2897 memcpy_s(info->optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
2898 memcpy_s(info->optionData[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
2899 info->optionsCount = 1;
2900 }
2901
2902 const unsigned char TESTKEYRELEASERESPONSE[50] = {0x31, 0x64, 0x6E, 0x5A, 0x32, 0x4E, 0x57, 0x74, 0x76, 0x4D, 0x47,
2903 0x34, 0x34, 0x4E, 0x6A, 0x42, 0x30, 0x4D, 0x32, 0x77, 0x33, 0x4E,
2904 0x67, 0x3D, 0x3D, 0x3A, 0x59, 0x7A, 0x56, 0x78, 0x63, 0x48, 0x64,
2905 0x70, 0x61, 0x6D, 0x30, 0x34, 0x59, 0x57, 0x45, 0x34, 0x5A, 0x48,
2906 0x6B, 0x79, 0x4D, 0x67, 0x3D, 0x3D};
2907 const unsigned char TESTKEYSESSIONRESPONSE[50] = {0x31, 0x64, 0x6E, 0x5A, 0x32, 0x4E, 0x57, 0x74, 0x76, 0x4D, 0x47,
2908 0x34, 0x34, 0x4E, 0x6A, 0x42, 0x30, 0x4D, 0x32, 0x77, 0x33, 0x4E,
2909 0x67, 0x3D, 0x3D, 0x3A, 0x59, 0x7A, 0x56, 0x78, 0x63, 0x48, 0x64,
2910 0x70, 0x61, 0x6D, 0x30, 0x34, 0x59, 0x57, 0x45, 0x34, 0x5A, 0x48,
2911 0x6B, 0x79, 0x4D, 0x67, 0x3D, 0x3D};
2912
filltest3(MediaKeySystem * mediaKeySystem,MediaKeySession * mediaKeySession,unsigned char * keySystemResponse,int32_t KeySystemResponseLen)2913 static void filltest3(MediaKeySystem *mediaKeySystem,
2914 MediaKeySession *mediaKeySession, unsigned char *keySystemResponse, int32_t KeySystemResponseLen)
2915 {
2916 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
2917 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
2918 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
2919 errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, keySystemResponse,
2920 KeySystemResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
2921 EXPECT_EQ(errNo, DRM_ERR_OK);
2922 DRM_OfflineMediaKeyStatus OfflineMediaKeyStatus = OFFLINE_MEDIA_KEY_STATUS_UNKNOWN;
2923 if (!g_isWisePlay) {
2924 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(mediaKeySystem, onlineMediaKeyId, onlineMediaKeyIdLen,
2925 &OfflineMediaKeyStatus);
2926 EXPECT_EQ(OfflineMediaKeyStatus, 1);
2927 EXPECT_EQ(errNo, DRM_ERR_OK);
2928 unsigned char releaseRequest[12288] = { 0 }; // 12288:request len
2929 int32_t releaseRequestLen = 12288; // 12288:request len
2930 errNo = OH_MediaKeySession_GenerateOfflineReleaseRequest(mediaKeySession, onlineMediaKeyId, onlineMediaKeyIdLen,
2931 releaseRequest, &releaseRequestLen);
2932 EXPECT_EQ(errNo, DRM_ERR_OK);
2933 errNo = OH_MediaKeySession_ProcessOfflineReleaseResponse(mediaKeySession, onlineMediaKeyId, onlineMediaKeyIdLen,
2934 (uint8_t *)(TESTKEYRELEASERESPONSE), (int32_t)(sizeof(TESTKEYRELEASERESPONSE)));
2935 EXPECT_EQ(errNo, DRM_ERR_OK);
2936 }
2937 DRM_ContentProtectionLevel sessionContentProtectionLevel = CONTENT_PROTECTION_LEVEL_UNKNOWN;
2938 errNo = OH_MediaKeySession_GetContentProtectionLevel(mediaKeySession, &sessionContentProtectionLevel);
2939 EXPECT_EQ(errNo, DRM_ERR_OK);
2940 errNo = OH_MediaKeySession_GetContentProtectionLevel(nullptr, &sessionContentProtectionLevel);
2941 EXPECT_NE(errNo, DRM_ERR_OK);
2942 errNo = OH_MediaKeySession_GetContentProtectionLevel(mediaKeySession, nullptr);
2943 EXPECT_NE(errNo, DRM_ERR_OK);
2944 }
2945
2946 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GetContentProtectionLevelNormal_064, TestSize.Level0)
2947 {
2948 MediaKeySystem *mediaKeySystem = nullptr;
2949 MediaKeySession *mediaKeySession = nullptr;
2950 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
2951 Drm_ErrCode errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
2952 EXPECT_NE(mediaKeySystem, nullptr);
2953 EXPECT_EQ(errNo, DRM_ERR_OK);
2954 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
2955 EXPECT_NE(mediaKeySession, nullptr);
2956 EXPECT_EQ(errNo, DRM_ERR_OK);
2957 // mediakeysession
2958 DRM_MediaKeyRequest mediaKeyRequest;
2959 DRM_MediaKeyRequestInfo info;
2960 filldata(&info);
2961 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
2962 int32_t KeySystemResponseLen = 12288;
2963 unsigned char KeySystemResponse[12288] = OFFRESPONSE;
2964 if (g_isWisePlay) {
2965 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data,
2966 (uint32_t)mediaKeyRequest.dataLen, KeySystemResponse, &KeySystemResponseLen, 10);
2967 EXPECT_EQ(rett, 0);
2968 } else {
2969 KeySystemResponseLen = 50;
2970 }
2971 EXPECT_EQ(errNo, DRM_ERR_OK);
2972 filltest3(mediaKeySystem, mediaKeySession, KeySystemResponse, KeySystemResponseLen);
2973 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
2974 mediaKeySession = nullptr;
2975 EXPECT_EQ(errNo, DRM_ERR_OK);
2976 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
2977 mediaKeySession = nullptr;
2978 EXPECT_NE(errNo, DRM_ERR_OK);
2979 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
2980 mediaKeySystem = nullptr;
2981 EXPECT_EQ(errNo, DRM_ERR_OK);
2982 }
2983
2984 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GetContentProtectionLevelNormal_065, TestSize.Level0)
2985 {
2986 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
2987 MediaKeySystem *mediaKeySystem = nullptr;
2988 MediaKeySession *mediaKeySession = nullptr;
2989 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
2990 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
2991 EXPECT_NE(mediaKeySystem, nullptr);
2992 EXPECT_EQ(errNo, DRM_ERR_OK);
2993 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
2994 EXPECT_NE(mediaKeySession, nullptr);
2995 EXPECT_EQ(errNo, DRM_ERR_OK);
2996 errNo = OH_MediaKeySystem_SetMediaKeySystemCallback(mediaKeySystem, &TestSystemEventCallBack);
2997 EXPECT_EQ(errNo, DRM_ERR_OK);
2998 MediaKeySession_Callback sessionCallback = { &TestSessoinEventCallBack, &TestSessoinKeyChangeCallBack };
2999 errNo = OH_MediaKeySession_SetMediaKeySessionCallback(mediaKeySession, &sessionCallback);
3000 EXPECT_EQ(errNo, DRM_ERR_OK);
3001 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
3002 EXPECT_EQ(errNo, DRM_ERR_OK);
3003 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
3004 EXPECT_EQ(errNo, DRM_ERR_OK);
3005 }
3006
3007 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_DecryptModuleNormal_066, TestSize.Level0)
3008 {
3009 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3010 MediaKeySystem *mediaKeySystem = nullptr;
3011 MediaKeySession *mediaKeySession = nullptr;
3012 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
3013 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
3014 EXPECT_NE(mediaKeySystem, nullptr);
3015 EXPECT_EQ(errNo, DRM_ERR_OK);
3016 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
3017 EXPECT_NE(mediaKeySession, nullptr);
3018 EXPECT_EQ(errNo, DRM_ERR_OK);
3019 // mediakeysession
3020 DRM_MediaKeyRequest mediaKeyRequest;
3021 DRM_MediaKeyRequestInfo info;
3022 filldata(&info);
3023 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
3024 EXPECT_EQ(errNo, DRM_ERR_OK);
3025 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
3026 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
3027 unsigned char testKeySessionResponse[12288] = OFFRESPONSE;
3028 int32_t testKeySessionResponseLen = 12288;
3029 if (g_isWisePlay) {
3030 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data,
3031 (uint32_t)mediaKeyRequest.dataLen, testKeySessionResponse, &testKeySessionResponseLen, 10);
3032 EXPECT_EQ(rett, 0);
3033 } else {
3034 testKeySessionResponseLen = 50;
3035 }
3036 errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
3037 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
3038 errNo = OH_MediaKeySystem_SetMediaKeySystemCallback(mediaKeySystem, &TestSystemEventCallBack);
3039 EXPECT_EQ(errNo, DRM_ERR_OK);
3040 if (mediaKeySession) {
3041 MediaKeySessionObject *sessionObject = reinterpret_cast<MediaKeySessionObject *>(mediaKeySession);
3042 sptr<IMediaKeySessionService> SessionServiceProxy =
3043 sessionObject->sessionImpl_->GetMediaKeySessionServiceProxy();
3044 sptr<IMediaDecryptModuleService> decryptModule;
3045 SessionServiceProxy->GetMediaDecryptModule(decryptModule);
3046 MessageParcel data;
3047 DrmBuffer srcBuffer;
3048 DrmBuffer dstBuffer;
3049 bool secureDecodrtState = false;
3050 CryptInfo cryptInfo;
3051 decryptModule->DecryptMediaData(secureDecodrtState, cryptInfo, srcBuffer, dstBuffer);
3052 decryptModule->Release();
3053 sptr<MediaKeySessionImplCallback> callback = sessionObject->sessionImpl_->GetApplicationCallback();
3054 callback->~MediaKeySessionImplCallback();
3055 }
3056 if (mediaKeySystem) {
3057 MediaKeySystemObject *systemObject = reinterpret_cast<MediaKeySystemObject *>(mediaKeySystem);
3058 sptr<IMediaKeySystemServiceCallback> serviceCallback =
3059 new (std::nothrow) MediaKeySystemCallback(systemObject->systemImpl_);
3060 sptr<MediaKeySystemCallback> Callback = new (std::nothrow) MediaKeySystemCallback(systemObject->systemImpl_);
3061 const std::vector<uint8_t> data = { 0x01 };
3062 MessageParcel data1;
3063 MessageParcel reply;
3064 MessageOption option;
3065 data1.WriteInt32(static_cast<int32_t>(OHOS::DrmStandard::DrmEventType::DRM_EVENT_PROVISION_REQUIRED));
3066 data1.WriteInt32(1);
3067 data1.WriteInt32(data.size());
3068 for (auto it = data.begin(); it != data.end(); ++it) {
3069 int32_t ret = data1.WriteUint8((*it));
3070 EXPECT_NE(ret, 0);
3071 }
3072 Callback->OnRemoteRequest(static_cast<uint32_t>(IMediaKeySystemServiceCallbackIpcCode::COMMAND_SEND_EVENT),
3073 data1, reply, option);
3074 serviceCallback->SendEvent(OHOS::DrmStandard::DrmEventType::DRM_EVENT_PROVISION_REQUIRED, 1, data);
3075 OHOS::sptr<OHOS::DrmStandard::MediaKeySystemCallbackCapi> SystemCallbackCapi =
3076 new (std::nothrow) MediaKeySystemCallbackCapi();
3077 SystemCallbackCapi->SetCallbackReference(&TestSystemEventCallBack);
3078 SystemCallbackCapi->SendEvent("1", 1, data);
3079 sptr<MediaKeySystemImplCallback> SystemImplCallba = systemObject->systemImpl_->GetApplicationCallback();
3080 SystemImplCallba->~MediaKeySystemImplCallback();
3081 }
3082 EXPECT_EQ(errNo, DRM_ERR_OK);
3083 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
3084 EXPECT_EQ(errNo, DRM_ERR_OK);
3085 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
3086 EXPECT_EQ(errNo, DRM_ERR_OK);
3087 }
3088
3089 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_DecryptModuleNormal_067, TestSize.Level0)
3090 {
3091 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3092 int32_t releaseRequestLen = 12288; // 12288:request len
3093 unsigned char releaseRequest[12288] = { 0 }; // 12288:request len
3094 uint8_t mediaKeyIdToRelease;
3095 MediaKeySession *mediaKeySession = (MediaKeySession *)&mediaKeyIdToRelease;
3096 errNo = OH_MediaKeySession_GenerateOfflineReleaseRequest(mediaKeySession, nullptr, 11, releaseRequest, // 11:len
3097 &releaseRequestLen);
3098 EXPECT_NE(errNo, DRM_ERR_OK);
3099 errNo = OH_MediaKeySession_GenerateOfflineReleaseRequest(mediaKeySession, (uint8_t *)&releaseRequestLen, 0,
3100 releaseRequest, &releaseRequestLen);
3101 EXPECT_NE(errNo, DRM_ERR_OK);
3102 unsigned char testKeyReleaseResponse[50] = OFFRESPONSE;
3103 errNo = OH_MediaKeySession_ProcessOfflineReleaseResponse(mediaKeySession, (uint8_t *)&releaseRequestLen, 0,
3104 testKeyReleaseResponse, (int32_t)(sizeof(testKeyReleaseResponse)));
3105 EXPECT_NE(errNo, DRM_ERR_OK);
3106 errNo = OH_MediaKeySession_ProcessOfflineReleaseResponse(mediaKeySession, nullptr, 11, // 11:len
3107 testKeyReleaseResponse, (int32_t)(sizeof(testKeyReleaseResponse)));
3108 EXPECT_NE(errNo, DRM_ERR_OK);
3109 errNo = OH_MediaKeySession_ProcessOfflineReleaseResponse(mediaKeySession, (uint8_t *)&releaseRequestLen,
3110 11, nullptr, (int32_t)(sizeof(testKeyReleaseResponse))); // 11:len
3111 EXPECT_NE(errNo, DRM_ERR_OK);
3112 errNo = OH_MediaKeySession_ProcessOfflineReleaseResponse(mediaKeySession, (uint8_t *)&releaseRequestLen,
3113 11, testKeyReleaseResponse, 0);
3114 EXPECT_NE(errNo, DRM_ERR_OK);
3115 }
3116
3117 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_RestoreOfflineMediaKeysAbNormal_068, TestSize.Level0)
3118 {
3119 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3120 unsigned char onlineMediaKeyId[88]; // 88:keyId len
3121 uint32_t onlineMediaKeyIdLen = 88; // 88:keyId len
3122 MediaKeySession *mediaKeySession = (MediaKeySession *)&onlineMediaKeyId;
3123 errNo = OH_MediaKeySession_RestoreOfflineMediaKeys(mediaKeySession, onlineMediaKeyId, 0);
3124 EXPECT_NE(errNo, DRM_ERR_OK);
3125 errNo = OH_MediaKeySession_RestoreOfflineMediaKeys(mediaKeySession, nullptr, onlineMediaKeyIdLen);
3126 EXPECT_NE(errNo, DRM_ERR_OK);
3127 }
3128
3129 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_SetMediaKeySessionCallbackNormal_069, TestSize.Level0)
3130 {
3131 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3132 MediaKeySystem *mediaKeySystem = nullptr;
3133 MediaKeySession *mediaKeySession = nullptr;
3134 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
3135 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
3136 EXPECT_NE(mediaKeySystem, nullptr);
3137 EXPECT_EQ(errNo, DRM_ERR_OK);
3138 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
3139 EXPECT_NE(mediaKeySession, nullptr);
3140 EXPECT_EQ(errNo, DRM_ERR_OK);
3141 // test 3: system callback
3142 errNo = OH_MediaKeySystem_SetMediaKeySystemCallback(nullptr, &TestSystemEventCallBack);
3143 EXPECT_NE(errNo, DRM_ERR_OK);
3144 errNo = OH_MediaKeySystem_SetMediaKeySystemCallback(mediaKeySystem, nullptr);
3145 EXPECT_NE(errNo, DRM_ERR_OK);
3146 MediaKeySession_Callback sessionCallback = { &TestSessoinEventCallBack, &TestSessoinKeyChangeCallBack };
3147 errNo = OH_MediaKeySession_SetMediaKeySessionCallback(mediaKeySession, nullptr);
3148 EXPECT_NE(errNo, DRM_ERR_OK);
3149 errNo = OH_MediaKeySession_SetMediaKeySessionCallback(nullptr, &sessionCallback);
3150 EXPECT_NE(errNo, DRM_ERR_OK);
3151 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
3152 EXPECT_EQ(errNo, DRM_ERR_OK);
3153 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
3154 EXPECT_EQ(errNo, DRM_ERR_OK);
3155 }
3156
3157 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_CreateMediaKeySessionAbNormal_070, TestSize.Level0)
3158 {
3159 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3160 MediaKeySystem *mediaKeySystem = nullptr;
3161 MediaKeySession *mediaKeySession = nullptr;
3162 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
3163 errNo = OH_MediaKeySystem_Create(nullptr, &mediaKeySystem);
3164 EXPECT_EQ(mediaKeySystem, nullptr);
3165 errNo = OH_MediaKeySystem_Create(GetUuid(), nullptr);
3166 EXPECT_EQ(mediaKeySystem, nullptr);
3167 errNo = OH_MediaKeySystem_CreateMediaKeySession(nullptr, &contentProtectionLevel, &mediaKeySession);
3168 EXPECT_EQ(mediaKeySession, nullptr);
3169 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, nullptr, &mediaKeySession);
3170 EXPECT_EQ(mediaKeySession, nullptr);
3171 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, nullptr);
3172 EXPECT_EQ(mediaKeySession, nullptr);
3173 uint8_t mediaKeyIdToClear;
3174 errNo = OH_MediaKeySystem_ClearOfflineMediaKeys(mediaKeySystem, (uint8_t *)&mediaKeyIdToClear, 0);
3175 EXPECT_NE(errNo, DRM_ERR_OK);
3176 errNo = OH_MediaKeySystem_ClearOfflineMediaKeys(mediaKeySystem, nullptr, 11); // 11:len
3177 EXPECT_NE(errNo, DRM_ERR_OK);
3178 errNo = OH_MediaKeySession_Destroy(nullptr);
3179 EXPECT_NE(errNo, DRM_ERR_OK);
3180 errNo = OH_MediaKeySystem_Destroy(nullptr);
3181 EXPECT_NE(errNo, DRM_ERR_OK);
3182 }
3183
3184 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_MediaKeySystemDestroyAbNormal_071, TestSize.Level0)
3185 {
3186 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3187 MediaKeySystem *mediaKeySystem = nullptr;
3188 MediaKeySession *mediaKeySession = nullptr;
3189 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
3190 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
3191 EXPECT_NE(mediaKeySystem, nullptr);
3192 EXPECT_EQ(errNo, DRM_ERR_OK);
3193 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
3194 EXPECT_NE(mediaKeySession, nullptr);
3195 EXPECT_EQ(errNo, DRM_ERR_OK);
3196 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
3197 EXPECT_EQ(errNo, DRM_ERR_OK);
3198 if (mediaKeySystem) {
3199 MediaKeySystemObject *systemObject = reinterpret_cast<MediaKeySystemObject *>(mediaKeySystem);
3200 systemObject->systemImpl_->~MediaKeySystemImpl();
3201 }
3202 errNo =
3203 OH_MediaKeySystem_SetConfigurationString(mediaKeySystem, "testConfigurationString", "testConfigurationString");
3204 EXPECT_NE(errNo, DRM_ERR_OK);
3205 char value[32];
3206 errNo = OH_MediaKeySystem_GetConfigurationString(mediaKeySystem, "testConfigurationString", value, 32);
3207 EXPECT_NE(errNo, DRM_ERR_OK);
3208 unsigned char testArray[5] = {1, 2, 3, 4, 5};
3209 errNo = OH_MediaKeySystem_SetConfigurationByteArray(mediaKeySystem, "testConfigurationByteArray", testArray,
3210 sizeof(testArray));
3211 EXPECT_NE(errNo, DRM_ERR_OK);
3212 unsigned char configByteArray[32];
3213 int32_t byteArrayLen = 32;
3214 errNo = OH_MediaKeySystem_GetConfigurationByteArray(mediaKeySystem, "testConfigurationByteArray", configByteArray,
3215 &byteArrayLen);
3216 EXPECT_NE(errNo, DRM_ERR_OK);
3217 DRM_Statistics statistics;
3218 errNo = OH_MediaKeySystem_GetStatistics(mediaKeySystem, &statistics);
3219 EXPECT_NE(errNo, DRM_ERR_OK);
3220 contentProtectionLevel = CONTENT_PROTECTION_LEVEL_UNKNOWN;
3221 errNo = OH_MediaKeySystem_GetMaxContentProtectionLevel(mediaKeySystem, &contentProtectionLevel);
3222 }
3223
3224 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_OH_MediaKeySystemDestroyAbNormal2_072, TestSize.Level0)
3225 {
3226 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3227 MediaKeySystem *mediaKeySystem = nullptr;
3228 MediaKeySession *mediaKeySession = nullptr;
3229 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
3230 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
3231 EXPECT_NE(mediaKeySystem, nullptr);
3232 EXPECT_EQ(errNo, DRM_ERR_OK);
3233 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
3234 EXPECT_NE(mediaKeySession, nullptr);
3235 EXPECT_EQ(errNo, DRM_ERR_OK);
3236 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
3237 EXPECT_EQ(errNo, DRM_ERR_OK);
3238 if (mediaKeySystem) {
3239 MediaKeySystemObject *systemObject = reinterpret_cast<MediaKeySystemObject *>(mediaKeySystem);
3240 systemObject->systemImpl_->~MediaKeySystemImpl();
3241 }
3242 DRM_CertificateStatus certStatus = CERT_STATUS_INVALID;
3243 errNo = OH_MediaKeySystem_GetCertificateStatus(mediaKeySystem, &certStatus);
3244 errNo = OH_MediaKeySystem_SetMediaKeySystemCallback(mediaKeySystem, &TestSystemEventCallBack);
3245 EXPECT_EQ(errNo, DRM_ERR_OK);
3246 contentProtectionLevel = CONTENT_PROTECTION_LEVEL_UNKNOWN;
3247 MediaKeySession *OH_MediaKeySession2 = nullptr;
3248 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &OH_MediaKeySession2);
3249 EXPECT_EQ(OH_MediaKeySession2, nullptr);
3250 EXPECT_NE(errNo, DRM_ERR_OK);
3251 DRM_OfflineMediakeyIdArray offlineMediaKeyIds;
3252 errNo = OH_MediaKeySystem_GetOfflineMediaKeyIds(mediaKeySystem, &offlineMediaKeyIds);
3253 DRM_OfflineMediaKeyStatus OfflineMediaKeyStatus = OFFLINE_MEDIA_KEY_STATUS_UNKNOWN;
3254 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(mediaKeySystem, (uint8_t *)&OfflineMediaKeyStatus, 1,
3255 &OfflineMediaKeyStatus);
3256 errNo = OH_MediaKeySystem_ClearOfflineMediaKeys(mediaKeySystem, (uint8_t *)&OfflineMediaKeyStatus, 1);
3257 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
3258 }
3259
3260 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_MediaKeySessionDestroyAbNormal_073, TestSize.Level0)
3261 {
3262 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3263 MediaKeySystem *mediaKeySystem = nullptr;
3264 MediaKeySession *mediaKeySession = nullptr;
3265 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
3266 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
3267 EXPECT_NE(mediaKeySystem, nullptr);
3268 EXPECT_EQ(errNo, DRM_ERR_OK);
3269 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
3270 EXPECT_NE(mediaKeySession, nullptr);
3271 EXPECT_EQ(errNo, DRM_ERR_OK);
3272 if (mediaKeySession) {
3273 MediaKeySessionObject *sessionObject = reinterpret_cast<MediaKeySessionObject *>(mediaKeySession);
3274 sessionObject->sessionImpl_->~MediaKeySessionImpl();
3275 }
3276 DRM_MediaKeyRequest mediaKeyRequest;
3277 DRM_MediaKeyRequestInfo info;
3278 unsigned char testData[139] = REQUESTINFODATA;
3279 memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
3280 info.initDataLen = sizeof(testData);
3281 info.type = MEDIA_KEY_TYPE_ONLINE;
3282 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
3283 memcpy_s(info.initData, sizeof(testData), testData, sizeof(testData));
3284 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
3285 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
3286 info.optionsCount = 1;
3287 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
3288 EXPECT_NE(errNo, DRM_ERR_OK);
3289 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
3290 EXPECT_EQ(errNo, DRM_ERR_OK);
3291 }
3292
3293 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_MediaKeySessionDestroyAbNormal2_074, TestSize.Level0)
3294 {
3295 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3296 MediaKeySystem *mediaKeySystem = nullptr;
3297 MediaKeySession *mediaKeySession = nullptr;
3298 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
3299 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
3300 EXPECT_NE(mediaKeySystem, nullptr);
3301 EXPECT_EQ(errNo, DRM_ERR_OK);
3302 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
3303 EXPECT_NE(mediaKeySession, nullptr);
3304 EXPECT_EQ(errNo, DRM_ERR_OK);
3305 if (mediaKeySession) {
3306 MediaKeySessionObject *sessionObject = reinterpret_cast<MediaKeySessionObject *>(mediaKeySession);
3307 sessionObject->sessionImpl_->~MediaKeySessionImpl();
3308 }
3309 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
3310 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
3311 unsigned char testKeySessionResponse[12288] = { 0 };
3312 int32_t testKeySessionResponseLen = 12288;
3313 errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
3314 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
3315 EXPECT_NE(errNo, DRM_ERR_OK);
3316 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
3317 EXPECT_EQ(errNo, DRM_ERR_OK);
3318 }
3319
3320 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_MediaKeySession_DestroyAbNormal3_075, TestSize.Level0)
3321 {
3322 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3323 MediaKeySystem *mediaKeySystem = nullptr;
3324 MediaKeySession *mediaKeySession = nullptr;
3325 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
3326 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
3327 EXPECT_NE(mediaKeySystem, nullptr);
3328 EXPECT_EQ(errNo, DRM_ERR_OK);
3329 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
3330 EXPECT_NE(mediaKeySession, nullptr);
3331 EXPECT_EQ(errNo, DRM_ERR_OK);
3332 if (mediaKeySession) {
3333 MediaKeySessionObject *sessionObject = reinterpret_cast<MediaKeySessionObject *>(mediaKeySession);
3334 sessionObject->sessionImpl_->~MediaKeySessionImpl();
3335 }
3336 DRM_MediaKeyStatus mediaKeyStatus;
3337 errNo = OH_MediaKeySession_CheckMediaKeyStatus(mediaKeySession, &mediaKeyStatus);
3338 EXPECT_NE(errNo, DRM_ERR_OK);
3339 errNo = OH_MediaKeySession_ClearMediaKeys(mediaKeySession);
3340 EXPECT_NE(errNo, DRM_ERR_OK);
3341 unsigned char releaseRequest[12288] = { 0 }; // 12288:request len
3342 int32_t releaseRequestLen = 12288; // 12288:request len
3343 errNo = OH_MediaKeySession_GenerateOfflineReleaseRequest(mediaKeySession, (uint8_t *)GetUuid(),
3344 11, releaseRequest, &releaseRequestLen); // 11:len
3345 EXPECT_NE(errNo, DRM_ERR_OK);
3346 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
3347 EXPECT_EQ(errNo, DRM_ERR_OK);
3348 }
3349
3350 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_MediaKeySessionDestroyAbNormal4_076, TestSize.Level0)
3351 {
3352 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3353 MediaKeySystem *mediaKeySystem = nullptr;
3354 MediaKeySession *mediaKeySession = nullptr;
3355 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
3356 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
3357 EXPECT_NE(mediaKeySystem, nullptr);
3358 EXPECT_EQ(errNo, DRM_ERR_OK);
3359 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
3360 EXPECT_NE(mediaKeySession, nullptr);
3361 EXPECT_EQ(errNo, DRM_ERR_OK);
3362 if (mediaKeySession) {
3363 MediaKeySessionObject *sessionObject = reinterpret_cast<MediaKeySessionObject *>(mediaKeySession);
3364 sessionObject->sessionImpl_->~MediaKeySessionImpl();
3365 }
3366 unsigned char testKeyReleaseResponse[50] = OFFRESPONSE;
3367 errNo = OH_MediaKeySession_ProcessOfflineReleaseResponse(mediaKeySession, (uint8_t *)GetUuid(),
3368 11, testKeyReleaseResponse, (int32_t)(sizeof(testKeyReleaseResponse))); // 11:len
3369 EXPECT_NE(errNo, DRM_ERR_OK);
3370 errNo = OH_MediaKeySession_RestoreOfflineMediaKeys(mediaKeySession, (unsigned char *)GetUuid(), 1);
3371 EXPECT_NE(errNo, DRM_ERR_OK);
3372 DRM_ContentProtectionLevel sessionContentProtectionLevel = CONTENT_PROTECTION_LEVEL_UNKNOWN;
3373 errNo = OH_MediaKeySession_GetContentProtectionLevel(mediaKeySession, &sessionContentProtectionLevel);
3374 EXPECT_NE(errNo, DRM_ERR_OK);
3375 bool requireSecureDecoder;
3376 errNo = OH_MediaKeySession_RequireSecureDecoderModule(mediaKeySession, "video/mp4", &requireSecureDecoder);
3377 EXPECT_NE(errNo, DRM_ERR_OK);
3378 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
3379 EXPECT_EQ(errNo, DRM_ERR_OK);
3380 }
3381
3382 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_SetCallbackNormal_077, TestSize.Level0)
3383 {
3384 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3385 MediaKeySystem *mediaKeySystem = nullptr;
3386 MediaKeySession *mediaKeySession = nullptr;
3387 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
3388 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
3389 EXPECT_NE(mediaKeySystem, nullptr);
3390 errNo = OH_MediaKeySystem_SetMediaKeySystemCallback(mediaKeySystem, &TestSystemEventCallBack);
3391 EXPECT_EQ(errNo, DRM_ERR_OK);
3392 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
3393 EXPECT_NE(mediaKeySession, nullptr);
3394 EXPECT_EQ(errNo, DRM_ERR_OK);
3395 MediaKeySession_Callback sessionCallback = { &TestSessoinEventCallBack, &TestSessoinKeyChangeCallBack };
3396 errNo = OH_MediaKeySession_SetMediaKeySessionCallback(mediaKeySession, &sessionCallback);
3397 EXPECT_EQ(errNo, DRM_ERR_OK);
3398 // mediakeysession
3399 DRM_MediaKeyRequest mediaKeyRequest;
3400 DRM_MediaKeyRequestInfo info;
3401 filldata(&info);
3402 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
3403 EXPECT_EQ(errNo, DRM_ERR_OK);
3404 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
3405 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
3406 unsigned char testKeySessionResponse[12288] = OFFRESPONSE;
3407 int32_t testKeySessionResponseLen = 12288;
3408 if (g_isWisePlay) {
3409 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data, (uint32_t)mediaKeyRequest.dataLen,
3410 testKeySessionResponse, &testKeySessionResponseLen, 10);
3411 EXPECT_EQ(rett, 0);} else {
3412 testKeySessionResponseLen = 50;
3413 }errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
3414 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
3415 EXPECT_EQ(errNo, DRM_ERR_OK);
3416 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
3417 EXPECT_EQ(errNo, DRM_ERR_OK);
3418 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
3419 EXPECT_EQ(errNo, DRM_ERR_OK);
3420 }
3421
3422 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_SetCallbackNormal2_078, TestSize.Level0)
3423 {
3424 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3425 MediaKeySystem *mediaKeySystem = nullptr;
3426 MediaKeySession *mediaKeySession = nullptr;
3427 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
3428 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
3429 EXPECT_NE(mediaKeySystem, nullptr);
3430 errNo = OH_MediaKeySystem_SetMediaKeySystemCallback(mediaKeySystem, &TestSystemEventCallBack);
3431 EXPECT_EQ(errNo, DRM_ERR_OK);
3432 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
3433 EXPECT_NE(mediaKeySession, nullptr);
3434 EXPECT_EQ(errNo, DRM_ERR_OK);
3435 MediaKeySession_Callback sessionCallback = { &TestSessoinEventCallBack, &TestSessoinKeyChangeCallBack };
3436 errNo = OH_MediaKeySession_SetMediaKeySessionCallback(mediaKeySession, &sessionCallback);
3437 EXPECT_EQ(errNo, DRM_ERR_OK);
3438 // mediakeysession
3439 DRM_MediaKeyRequest mediaKeyRequest;
3440 DRM_MediaKeyRequestInfo info;
3441 filldata(&info);
3442 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
3443 EXPECT_EQ(errNo, DRM_ERR_OK);
3444 unsigned char onlineMediaKeyId[64] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
3445 unsigned char testKeySessionResponse[2] = {0x07, 0x22};
3446 int32_t onlineMediaKeyIdLen = 64; // 64:OFFLINE_MEDIA_KEY_ID_LEN
3447 errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
3448 (int32_t)(sizeof(testKeySessionResponse)), onlineMediaKeyId, &onlineMediaKeyIdLen);
3449 EXPECT_NE(errNo, DRM_ERR_OK);
3450 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
3451 EXPECT_EQ(errNo, DRM_ERR_OK);
3452 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
3453 EXPECT_EQ(errNo, DRM_ERR_OK);
3454 }
3455
3456 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_ProcessMediaKeyResponseAbNormal_079, TestSize.Level0)
3457 {
3458 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3459 MediaKeySystem *mediaKeySystem = nullptr;
3460 MediaKeySession *mediaKeySession = nullptr;
3461 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
3462 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
3463 EXPECT_NE(mediaKeySystem, nullptr);
3464 EXPECT_EQ(errNo, DRM_ERR_OK);
3465 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
3466 EXPECT_NE(mediaKeySession, nullptr);
3467 EXPECT_EQ(errNo, DRM_ERR_OK);
3468 // mediakeysession
3469 DRM_MediaKeyRequest mediaKeyRequest;
3470 DRM_MediaKeyRequestInfo info;
3471 filldata(&info);
3472 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
3473 EXPECT_EQ(errNo, DRM_ERR_OK);
3474 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
3475 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
3476 unsigned char testKeySessionResponse[12288] = OFFRESPONSE;
3477 int32_t testKeySessionResponseLen = 12288;
3478 if (g_isWisePlay) {
3479 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data, (uint32_t)mediaKeyRequest.dataLen,
3480 testKeySessionResponse, &testKeySessionResponseLen, 10);
3481 EXPECT_EQ(rett, 0);
3482 } else {
3483 testKeySessionResponseLen = 50;
3484 }errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
3485 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
3486 EXPECT_EQ(errNo, DRM_ERR_OK);
3487 unsigned char releaseRequest[12288] = { 0 }; // 12288:request len
3488 int32_t releaseRequestLen = 12288; // 12288:request len
3489 errNo = OH_MediaKeySession_GenerateOfflineReleaseRequest(mediaKeySession, (uint8_t *)("onlineMediaKeyId"),
3490 2, releaseRequest, &releaseRequestLen); // 2:len
3491 EXPECT_EQ(errNo, DRM_ERR_OK);
3492 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
3493 EXPECT_EQ(errNo, DRM_ERR_OK);
3494 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
3495 EXPECT_EQ(errNo, DRM_ERR_OK);
3496 }
3497
3498 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_ProcessOfflineReleaseResponseAbNormal_080, TestSize.Level0)
3499 {
3500 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3501 MediaKeySystem *mediaKeySystem = nullptr;
3502 MediaKeySession *mediaKeySession = nullptr;
3503 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
3504 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
3505 EXPECT_NE(mediaKeySystem, nullptr);
3506 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
3507 // mediakeysession
3508 DRM_MediaKeyRequest mediaKeyRequest;
3509 DRM_MediaKeyRequestInfo info;
3510 filldata(&info);
3511 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
3512 EXPECT_EQ(errNo, DRM_ERR_OK);
3513 unsigned char onlineMediaKeyId[64] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
3514 int32_t onlineMediaKeyIdLen = 64; // 64:OFFLINE_MEDIA_KEY_ID_LEN
3515 int32_t KeySystemResponseLen = 12288;
3516 unsigned char KeySystemResponse[12288] = OFFRESPONSE;
3517 if (g_isWisePlay) {
3518 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data,
3519 (uint32_t)mediaKeyRequest.dataLen, KeySystemResponse, &KeySystemResponseLen, 10);
3520 EXPECT_EQ(rett, 0);
3521 } else {
3522 KeySystemResponseLen = 50;
3523 }
3524 errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, KeySystemResponse,
3525 KeySystemResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
3526 EXPECT_EQ(errNo, DRM_ERR_OK);
3527 unsigned char releaseRequest[12288] = { 0 }; // 12288:request len
3528 int32_t releaseRequestLen = 12288; // 12288:request len
3529 errNo = OH_MediaKeySession_GenerateOfflineReleaseRequest(mediaKeySession, onlineMediaKeyId, onlineMediaKeyIdLen,
3530 releaseRequest, &releaseRequestLen);
3531 EXPECT_EQ(errNo, DRM_ERR_OK);
3532 unsigned char testKeyReleaseResponse[2] = {0x33, 0x22};
3533 errNo = OH_MediaKeySession_ProcessOfflineReleaseResponse(mediaKeySession, onlineMediaKeyId, onlineMediaKeyIdLen,
3534 testKeyReleaseResponse, (int32_t)(sizeof(testKeyReleaseResponse)));
3535 EXPECT_EQ(errNo, DRM_ERR_OK);
3536 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
3537 EXPECT_EQ(errNo, DRM_ERR_OK);
3538 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
3539 }
3540
filltest(MediaKeySystem * mediaKeySystem,MediaKeySession * mediaKeySession)3541 static void filltest(MediaKeySystem *mediaKeySystem, MediaKeySession *mediaKeySession)
3542 {
3543 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3544 unsigned char onlineMediaKeyId[64] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
3545 int32_t onlineMediaKeyIdLen = 64; // 64:OFFLINE_MEDIA_KEY_ID_LEN
3546 errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, (uint8_t *)TESTKEYSESSIONRESPONSE,
3547 (int32_t)(sizeof(TESTKEYSESSIONRESPONSE)), onlineMediaKeyId, &onlineMediaKeyIdLen);
3548 unsigned char releaseRequest[12288] = { 0 }; // 12288:request len
3549 int32_t releaseRequestLen = 12288; // 12288:request len
3550 errNo = OH_MediaKeySession_GenerateOfflineReleaseRequest(mediaKeySession, onlineMediaKeyId, onlineMediaKeyIdLen,
3551 releaseRequest, &releaseRequestLen);
3552 EXPECT_EQ(errNo, DRM_ERR_OK);
3553 errNo = OH_MediaKeySession_ProcessOfflineReleaseResponse(mediaKeySession, onlineMediaKeyId, onlineMediaKeyIdLen,
3554 (uint8_t *)TESTKEYRELEASERESPONSE, (int32_t)(sizeof(TESTKEYRELEASERESPONSE)));
3555 EXPECT_EQ(errNo, DRM_ERR_OK);
3556 errNo = OH_MediaKeySession_RestoreOfflineMediaKeys(mediaKeySession, (unsigned char *)"onlineMediaKeyId", 1);
3557 EXPECT_NE(errNo, DRM_ERR_OK);
3558 }
3559 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_ClearMediaKeysAbNormal_081, TestSize.Level0)
3560 {
3561 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3562 MediaKeySystem *mediaKeySystem = nullptr;
3563 MediaKeySession *mediaKeySession = nullptr;
3564 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
3565 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
3566 EXPECT_NE(mediaKeySystem, nullptr);
3567 EXPECT_EQ(errNo, DRM_ERR_OK);
3568 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
3569 EXPECT_NE(mediaKeySession, nullptr);
3570 EXPECT_EQ(errNo, DRM_ERR_OK);
3571 errNo = OH_MediaKeySession_ClearMediaKeys(mediaKeySession);
3572 EXPECT_EQ(errNo, DRM_ERR_OK);
3573 // mediakeysession
3574 DRM_MediaKeyRequest mediaKeyRequest;
3575 DRM_MediaKeyRequestInfo info;
3576 filldata(&info);
3577 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
3578 EXPECT_EQ(errNo, DRM_ERR_OK);
3579 filltest(mediaKeySystem, mediaKeySession);
3580 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
3581 EXPECT_EQ(errNo, DRM_ERR_OK);
3582 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
3583 EXPECT_EQ(errNo, DRM_ERR_OK);
3584 sleep(1);
3585 }
3586
3587 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_CreateMediaKeySessionAbNormal_082, TestSize.Level0)
3588 {
3589 MediaKeySystem *mediaKeySystem = nullptr;
3590 string name;
3591 string uuid;
3592 Drm_ErrCode errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
3593 EXPECT_NE(mediaKeySystem, nullptr);
3594 EXPECT_EQ(errNo, DRM_ERR_OK);
3595 if (mediaKeySystem) {
3596 MediaKeySystemObject *systemObject = reinterpret_cast<MediaKeySystemObject *>(mediaKeySystem);
3597 ContentProtectionLevel securityLevel =
3598 ContentProtectionLevel::CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
3599 OHOS::sptr<MediaKeySessionImpl> keySessionImpl = nullptr;
3600 systemObject->systemImpl_->~MediaKeySystemImpl();
3601 systemObject->systemImpl_->CreateMediaKeySession(securityLevel, &keySessionImpl);
3602 keySessionImpl = nullptr;
3603 MediaKeySystemCallback *allback = new MediaKeySystemCallback();
3604 allback->~MediaKeySystemCallback();
3605 OHOS::sptr<MediaKeySystemFactoryImpl> fatory = MediaKeySystemFactoryImpl::GetInstance();
3606 fatory->Init();
3607 if (g_isWisePlay) {
3608 name = "com.wiseplay.drm";
3609 } else {
3610 name = "com.wiseplay.drm";
3611 }
3612 fatory->GetMediaKeySystemUuid(name, uuid);
3613 name = "com.test";
3614 fatory->GetMediaKeySystemUuid(name, uuid);
3615 }
3616 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
3617 mediaKeySystem = nullptr;
3618 EXPECT_NE(errNo, DRM_ERR_OK);
3619 MediaKeySystem *mediaKeySystem2 = nullptr;
3620 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem2);
3621 EXPECT_NE(mediaKeySystem2, nullptr);
3622 EXPECT_EQ(errNo, DRM_ERR_OK);
3623 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem2);
3624 mediaKeySystem2 = nullptr;
3625 EXPECT_EQ(errNo, DRM_ERR_OK);
3626 }
3627
3628 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_SessionImplAbNormal_083, TestSize.Level0)
3629 {
3630 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3631 MediaKeySystem *mediaKeySystem = nullptr;
3632 MediaKeySession *mediaKeySession = nullptr;
3633 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
3634 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
3635 EXPECT_NE(mediaKeySystem, nullptr);
3636 EXPECT_EQ(errNo, DRM_ERR_OK);
3637 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
3638 EXPECT_NE(mediaKeySession, nullptr);
3639 EXPECT_EQ(errNo, DRM_ERR_OK);
3640 MediaKeySession_Callback sessionCallback = { &TestSessoinEventCallBack, &TestSessoinKeyChangeCallBack };
3641 errNo = OH_MediaKeySession_SetMediaKeySessionCallback(mediaKeySession, &sessionCallback);
3642 EXPECT_EQ(errNo, DRM_ERR_OK);
3643 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
3644 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
3645 unsigned char testKeySessionResponse[12288] = OFFRESPONSE;
3646 int32_t testKeySessionResponseLen = 50;
3647 errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
3648 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
3649 if (mediaKeySession) {
3650 MediaKeySessionObject *sessionObject = reinterpret_cast<MediaKeySessionObject *>(mediaKeySession);
3651 MediaKeySessionServiceCallback *Object = new MediaKeySessionServiceCallback(sessionObject->sessionImpl_);
3652 std::map<std::vector<uint8_t>, MediaKeySessionKeyStatus> statusTable = { { { 0x01 },
3653 MediaKeySessionKeyStatus::MEDIA_KEY_SESSION_KEY_STATUS_USABLE } };
3654 bool hasNewGoodLicense = false;
3655 Object->SendEventKeyChanged(statusTable, hasNewGoodLicense);
3656 }
3657 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
3658 EXPECT_EQ(errNo, DRM_ERR_OK);
3659 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
3660 mediaKeySystem = nullptr;
3661 EXPECT_EQ(errNo, DRM_ERR_OK);
3662 }
3663
killclearplay(MediaKeySystem * mediaKeySystem,MediaKeySession * mediaKeySession)3664 static void killclearplay(MediaKeySystem *mediaKeySystem, MediaKeySession *mediaKeySession)
3665 {
3666 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3667 std::vector<uint8_t> licenseIdVec = { 0x01 };
3668 std::vector<uint8_t> ReleaseRequest = { 0x01 };
3669 ContentProtectionLevel securityLevel;
3670 system(GetDrmPlugin());
3671 if (mediaKeySession) {
3672 MediaKeySessionObject *sessionObject = reinterpret_cast<MediaKeySessionObject *>(mediaKeySession);
3673 uint32_t result = sessionObject->sessionImpl_->GenerateOfflineReleaseRequest(licenseIdVec, ReleaseRequest);
3674 EXPECT_NE(result, DRM_ERR_OK);
3675 result = sessionObject->sessionImpl_->ProcessOfflineReleaseResponse(licenseIdVec, ReleaseRequest);
3676 EXPECT_NE(result, DRM_ERR_OK);
3677 result = sessionObject->sessionImpl_->GetContentProtectionLevel(&securityLevel);
3678 EXPECT_NE(result, DRM_ERR_OK);
3679 std::map<std::string, std::string> licenseStatus2;
3680 result = sessionObject->sessionImpl_->CheckMediaKeyStatus(licenseStatus2);
3681 EXPECT_NE(result, DRM_ERR_OK);
3682 result = sessionObject->sessionImpl_->RestoreOfflineMediaKeys(licenseIdVec);
3683 EXPECT_NE(result, DRM_ERR_OK);
3684 result = sessionObject->sessionImpl_->ClearMediaKeys();
3685 EXPECT_NE(result, DRM_ERR_OK);
3686 std::string mimeType;
3687 bool status;
3688 result = sessionObject->sessionImpl_->RequireSecureDecoderModule(mimeType, &status);
3689 EXPECT_NE(result, DRM_ERR_OK);
3690 }
3691 errNo = OH_MediaKeySystem_SetMediaKeySystemCallback(mediaKeySystem, &TestSystemEventCallBack);
3692 EXPECT_EQ(errNo, DRM_ERR_OK);
3693 MediaKeySession_Callback sessionCallback = { &TestSessoinEventCallBack, &TestSessoinKeyChangeCallBack };
3694 errNo = OH_MediaKeySession_SetMediaKeySessionCallback(mediaKeySession, &sessionCallback);
3695 EXPECT_EQ(errNo, DRM_ERR_OK);
3696 }
3697
killclearplay2(MediaKeySystem * mediaKeySystem,MediaKeySession * mediaKeySession)3698 static void killclearplay2(MediaKeySystem *mediaKeySystem, MediaKeySession *mediaKeySession)
3699 {
3700 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3701 bool supported = true;
3702 supported = OH_MediaKeySystem_IsSupported(GetUuid());
3703 EXPECT_EQ(supported, true);
3704 supported = OH_MediaKeySystem_IsSupported2(GetUuid(), "video/mp4");
3705 supported = OH_MediaKeySystem_IsSupported3(GetUuid(), "video/mp4", CONTENT_PROTECTION_LEVEL_HW_CRYPTO);
3706
3707 errNo =
3708 OH_MediaKeySystem_SetConfigurationString(mediaKeySystem, "testConfigurationString", "testConfigurationString");
3709 EXPECT_NE(errNo, DRM_ERR_OK);
3710 char value[32];
3711 int32_t valueLen = 32;
3712 errNo = OH_MediaKeySystem_GetConfigurationString(mediaKeySystem, "testConfigurationString", value, valueLen);
3713 EXPECT_NE(errNo, DRM_ERR_OK);
3714 unsigned char testArray[5] = {1, 2, 3, 4, 5};
3715 errNo = OH_MediaKeySystem_SetConfigurationByteArray(mediaKeySystem, "testConfigurationByteArray", testArray,
3716 sizeof(testArray));
3717 EXPECT_NE(errNo, DRM_ERR_OK);
3718 unsigned char configByteArray[32];
3719 int32_t byteArrayLen = 32;
3720 errNo = OH_MediaKeySystem_GetConfigurationByteArray(mediaKeySystem, "testConfigurationByteArray", configByteArray,
3721 &byteArrayLen);
3722 EXPECT_NE(errNo, DRM_ERR_OK);
3723 DRM_Statistics statistics;
3724 errNo = OH_MediaKeySystem_GetStatistics(mediaKeySystem, &statistics);
3725 EXPECT_NE(errNo, DRM_ERR_OK);
3726 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_UNKNOWN;
3727 errNo = OH_MediaKeySystem_GetMaxContentProtectionLevel(mediaKeySystem, &contentProtectionLevel);
3728 EXPECT_NE(errNo, DRM_ERR_OK);
3729 }
3730
3731 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_SetCallbackWithObject_084, TestSize.Level0)
3732 {
3733 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3734 MediaKeySystem *mediaKeySystem = nullptr;
3735 MediaKeySession *mediaKeySession = nullptr;
3736 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
3737 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
3738 EXPECT_NE(mediaKeySystem, nullptr);
3739 errNo = OH_MediaKeySystem_SetMediaKeySystemCallback(mediaKeySystem, &TestSystemEventCallBack);
3740 EXPECT_EQ(errNo, DRM_ERR_OK);
3741 errNo = OH_MediaKeySystem_SetCallback(mediaKeySystem, &TestSystemEventCallBackWithObj);
3742 EXPECT_EQ(errNo, DRM_ERR_OK);
3743 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
3744 EXPECT_NE(mediaKeySession, nullptr);
3745 EXPECT_EQ(errNo, DRM_ERR_OK);
3746 MediaKeySession_Callback callback = { &TestSessoinEventCallBack, &TestSessoinKeyChangeCallBack };
3747 errNo = OH_MediaKeySession_SetMediaKeySessionCallback(mediaKeySession, &callback);
3748 EXPECT_EQ(errNo, DRM_ERR_OK);
3749 OH_MediaKeySession_Callback sessionCallback = { &TestSessoinEventCallBackWithObj,
3750 &TestSessoinKeyChangeCallBackWithObj };
3751 errNo = OH_MediaKeySession_SetCallback(mediaKeySession, &sessionCallback);
3752 EXPECT_EQ(errNo, DRM_ERR_OK);
3753 DRM_MediaKeyRequest mediaKeyRequest;
3754 DRM_MediaKeyRequestInfo info;
3755 filldata(&info);
3756 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
3757 EXPECT_EQ(errNo, DRM_ERR_OK);
3758 unsigned char onlineMediaKeyId[64] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
3759 unsigned char testKeySessionResponse[2] = {0x07, 0x22};
3760 int32_t onlineMediaKeyIdLen = 64; // 64:OFFLINE_MEDIA_KEY_ID_LEN
3761 errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
3762 (int32_t)(sizeof(testKeySessionResponse)), onlineMediaKeyId, &onlineMediaKeyIdLen);
3763 EXPECT_NE(errNo, DRM_ERR_OK);
3764 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
3765 EXPECT_EQ(errNo, DRM_ERR_OK);
3766 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
3767 mediaKeySystem = nullptr;
3768 EXPECT_EQ(errNo, DRM_ERR_OK);
3769 }
3770
3771 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_KillClearPlayHostAbNormal1, TestSize.Level0)
3772 {
3773 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3774 MediaKeySystem *mediaKeySystem = nullptr;
3775 MediaKeySession *mediaKeySession = nullptr;
3776 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
3777 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
3778 EXPECT_NE(mediaKeySystem, nullptr);
3779 EXPECT_EQ(errNo, DRM_ERR_OK);
3780 unsigned char request[12288] = { 0 }; // 12288:request len
3781 int32_t requestLen = 12288; // 12288:request len
3782 char defaultUrl[2048] = { 0 }; // 2048:url len
3783 int32_t defaultUrlLen = 2048; // 2048:url len
3784 errNo = OH_MediaKeySystem_GenerateKeySystemRequest(mediaKeySystem, request, &requestLen, defaultUrl,
3785 defaultUrlLen);
3786 unsigned char KeySystemResponse[12288] = OFFRESPONSE;
3787 int32_t KeySystemResponseLen = 12288;
3788 if (g_isWisePlay) {
3789 int rett = HttpPost(PROVISION_URL, request, requestLen, KeySystemResponse, &KeySystemResponseLen, 10);
3790 EXPECT_EQ(rett, 0);
3791 errNo = OH_MediaKeySystem_ProcessKeySystemResponse(mediaKeySystem, KeySystemResponse, KeySystemResponseLen);
3792 EXPECT_NE(errNo, DRM_ERR_OK);
3793 } else {
3794 KeySystemResponseLen = 50;
3795 errNo = OH_MediaKeySystem_ProcessKeySystemResponse(mediaKeySystem, KeySystemResponse, KeySystemResponseLen);
3796 EXPECT_EQ(errNo, DRM_ERR_OK);
3797 }
3798 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
3799 EXPECT_NE(mediaKeySession, nullptr);
3800 EXPECT_EQ(errNo, DRM_ERR_OK);
3801 killclearplay(mediaKeySystem, mediaKeySession);
3802 sleep(5);
3803 killclearplay2(mediaKeySystem, mediaKeySession);
3804 requestLen = 12288; // 12288:request len
3805 errNo = OH_MediaKeySystem_GenerateKeySystemRequest(mediaKeySystem, request, &requestLen, defaultUrl,
3806 defaultUrlLen);
3807 EXPECT_NE(errNo, DRM_ERR_OK);
3808 errNo = OH_MediaKeySystem_ProcessKeySystemResponse(mediaKeySystem, KeySystemResponse, KeySystemResponseLen);
3809 EXPECT_NE(errNo, DRM_ERR_OK);
3810 DRM_CertificateStatus certStatus = CERT_STATUS_INVALID;
3811 errNo = OH_MediaKeySystem_GetCertificateStatus(mediaKeySystem, &certStatus);
3812 EXPECT_NE(errNo, DRM_ERR_OK);
3813 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
3814 EXPECT_NE(errNo, DRM_ERR_OK);
3815 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
3816 EXPECT_EQ(errNo, DRM_ERR_OK);
3817 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
3818 mediaKeySystem = nullptr;
3819 EXPECT_EQ(errNo, DRM_ERR_OK);
3820 sleep(5);
3821 }
3822
PrepareCryptoInfo_HugeSubsample(CryptInfo & info)3823 static void PrepareCryptoInfo_HugeSubsample(CryptInfo &info)
3824 {
3825 info.type = CryptAlgorithmType::ALGTYPE_AES_CTR;
3826 info.pattern.encryptBlocks = 0;
3827 info.pattern.skipBlocks = 0;
3828 SubSample testSubsample;
3829 testSubsample.clearHeaderLen = 3 * 1024 * 1024; // 1024 = 1kb 3M
3830 testSubsample.payLoadLen = 1 * 1024 * 1024; // 1024 = 1kb 1M
3831 info.subSample.push_back(testSubsample);
3832 testSubsample.clearHeaderLen = 1 * 1024 * 1024; // 1024 = 1kb 1M
3833 testSubsample.payLoadLen = 3 * 1024 * 1024; // 1024 = 1kb 3M
3834 info.subSample.push_back(testSubsample);
3835 testSubsample.clearHeaderLen = 1024; // 1024 = 1kb
3836 testSubsample.payLoadLen = 1024; // 1024 = 1kb
3837 info.subSample.push_back(testSubsample);
3838 testSubsample.clearHeaderLen = 1024; // 1024 = 1kb
3839 testSubsample.payLoadLen = 1024; // 1024 = 1kb
3840 info.subSample.push_back(testSubsample);
3841 testSubsample.clearHeaderLen = 1024; // 1024 = 1kb
3842 testSubsample.payLoadLen = 507 * 1024; // 1024 = 1kb 507kb
3843 info.subSample.push_back(testSubsample);
3844 testSubsample.clearHeaderLen = 24; // 24 = 16 + 8
3845 testSubsample.payLoadLen = 2 * 1024 * 1024; // 1024 = 1kb 2M
3846 info.subSample.push_back(testSubsample);
3847 testSubsample.clearHeaderLen = 1024; // 1024 = 1kb
3848 testSubsample.payLoadLen = 0;
3849 info.subSample.push_back(testSubsample);
3850 }
3851
3852 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_Dump_01, TestSize.Level0)
3853 {
3854 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3855 MediaKeySystem *mediaKeySystem = nullptr;
3856 MediaKeySession *mediaKeySession = nullptr;
3857 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
3858 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
3859 EXPECT_NE(mediaKeySystem, nullptr);
3860 EXPECT_EQ(errNo, DRM_ERR_OK);
3861 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
3862 EXPECT_NE(mediaKeySession, nullptr);
3863 EXPECT_EQ(errNo, DRM_ERR_OK);
3864
3865 if (mediaKeySession) {
3866 MediaKeySessionObject *sessionObject = reinterpret_cast<MediaKeySessionObject *>(mediaKeySession);
3867 sptr<IMediaKeySessionService> SessionServiceProxy =
3868 sessionObject->sessionImpl_->GetMediaKeySessionServiceProxy();
3869 sptr<IMediaDecryptModuleService> decryptModule;
3870 SessionServiceProxy->GetMediaDecryptModule(decryptModule);
3871 MessageParcel data;
3872 DrmBuffer srcBuffer;
3873 DrmBuffer dstBuffer;
3874 bool secureDecodrtState = false;
3875 CryptInfo cryptInfo;
3876 decryptModule->DecryptMediaData(secureDecodrtState, cryptInfo, srcBuffer, dstBuffer);
3877 decryptModule->DecryptMediaData(secureDecodrtState, cryptInfo, srcBuffer, dstBuffer);
3878 decryptModule->DecryptMediaData(secureDecodrtState, cryptInfo, srcBuffer, dstBuffer);
3879 PrepareCryptoInfo_HugeSubsample(cryptInfo);
3880 decryptModule->DecryptMediaData(secureDecodrtState, cryptInfo, srcBuffer, dstBuffer);
3881 system("hidumper -s 3012");
3882 decryptModule->Release();
3883 }
3884
3885 EXPECT_EQ(errNo, DRM_ERR_OK);
3886 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
3887 EXPECT_EQ(errNo, DRM_ERR_OK);
3888 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
3889 EXPECT_EQ(errNo, DRM_ERR_OK);
3890 }
3891
3892 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_CreateMediaKeySystem_MAX_01, TestSize.Level0)
3893 {
3894 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3895 const uint32_t maxNum = 64;
3896 std::vector<MediaKeySystem *> systems(maxNum, nullptr);
3897 const char *name = GetUuid();
3898 for (uint i = 0; i < maxNum; i++) {
3899 errNo = OH_MediaKeySystem_Create(name, &systems[i]);
3900 EXPECT_EQ(errNo, DRM_ERR_OK);
3901 EXPECT_NE(systems[i], nullptr);
3902 }
3903
3904 MediaKeySystem *mediaKeySystem = nullptr;
3905 errNo = OH_MediaKeySystem_Create(name, &mediaKeySystem);
3906 EXPECT_EQ(errNo, DRM_ERR_MAX_SYSTEM_NUM_REACHED);
3907 EXPECT_EQ(mediaKeySystem, nullptr);
3908
3909 for (uint i = 0; i < maxNum; i++) {
3910 errNo = OH_MediaKeySystem_Destroy(systems[i]);
3911 systems[i] = nullptr;
3912 EXPECT_EQ(errNo, DRM_ERR_OK);
3913 }
3914 }
3915
3916 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_CreateMediaKeySession_MAX_01, TestSize.Level0)
3917 {
3918 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3919 const uint32_t maxNum = 64;
3920 std::vector<MediaKeySession *> sessions(maxNum, nullptr);
3921
3922 MediaKeySystem *mediaKeySystem = nullptr;
3923 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
3924 EXPECT_NE(mediaKeySystem, nullptr);
3925 EXPECT_EQ(errNo, DRM_ERR_OK);
3926
3927 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
3928 for (uint i = 0; i < maxNum; i++) {
3929 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &sessions[i]);
3930 EXPECT_EQ(errNo, DRM_ERR_OK);
3931 EXPECT_NE(sessions[i], nullptr);
3932 }
3933
3934 MediaKeySession *mediaKeySession = nullptr;
3935 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
3936 EXPECT_EQ(errNo, DRM_ERR_MAX_SESSION_NUM_REACHED);
3937 EXPECT_EQ(mediaKeySession, nullptr);
3938
3939 for (uint i = 0; i < maxNum; i++) {
3940 errNo = OH_MediaKeySession_Destroy(sessions[i]);
3941 sessions[i] = nullptr;
3942 EXPECT_EQ(errNo, DRM_ERR_OK);
3943 }
3944
3945 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
3946 EXPECT_EQ(errNo, DRM_ERR_OK);
3947 }
3948
3949 } // DrmStandard
3950 } // OHOS
3951