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 "i_mediadecryptmodule_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 "i_mediakeysystem_service.h"
37 #include "media_key_system_factory_impl.h"
38 #include "mediakeysystem_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 "i_keysession_service.h"
48 #include "i_keysession_service_callback.h"
49 #include "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 }errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
1594 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
1595 DRM_MediaKeyStatus mediaKeyStatus;
1596 errNo = OH_MediaKeySession_CheckMediaKeyStatus(mediaKeySession, &mediaKeyStatus);
1597 DRM_OfflineMediaKeyStatus OfflineMediaKeyStatus = OFFLINE_MEDIA_KEY_STATUS_UNKNOWN;
1598 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(mediaKeySystem, onlineMediaKeyId, onlineMediaKeyIdLen,
1599 &OfflineMediaKeyStatus);
1600 EXPECT_EQ(errNo, DRM_ERR_OK);
1601 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
1602 EXPECT_EQ(errNo, DRM_ERR_OK);
1603 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
1604 EXPECT_EQ(errNo, DRM_ERR_OK);
1605 }
1606
1607 /*
1608 * Feature: Framework
1609 * Function: Processing device certificate response testing
1610 * Sub function: NA
1611 * Function point: NA
1612 * Environmental conditions: NA
1613 * Case Description: Processing Device Certificate Response Testing
1614 */
1615 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GetOfflineMediaKeyStatusAbNormal_039, TestSize.Level0)
1616 {
1617 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
1618 MediaKeySystem *mediaKeySystem = nullptr;
1619 MediaKeySession *mediaKeySession = nullptr;
1620 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
1621 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
1622 EXPECT_NE(mediaKeySystem, nullptr);
1623 EXPECT_EQ(errNo, DRM_ERR_OK);
1624 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
1625 EXPECT_NE(mediaKeySession, nullptr);
1626 EXPECT_EQ(errNo, DRM_ERR_OK);
1627 // mediakeysession
1628 DRM_MediaKeyRequest mediaKeyRequest;
1629 DRM_MediaKeyRequestInfo info;
1630 unsigned char testData[139] = REQUESTINFODATA;
1631 memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
1632 info.initDataLen = sizeof(testData);
1633 info.type = MEDIA_KEY_TYPE_ONLINE;
1634 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
1635 memcpy_s(info.initData, sizeof(testData), testData, sizeof(testData));
1636 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
1637 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
1638 info.optionsCount = 1;
1639 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
1640 EXPECT_EQ(errNo, DRM_ERR_OK);
1641 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1642 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1643 unsigned char testKeySessionResponse[12288] = OFFRESPONSE;
1644 int32_t testKeySessionResponseLen = 12288;
1645 if (g_isWisePlay) {
1646 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data,
1647 (uint32_t)mediaKeyRequest.dataLen, testKeySessionResponse, &testKeySessionResponseLen, 10);
1648 EXPECT_EQ(rett, 0);
1649 } else {
1650 testKeySessionResponseLen = 50;
1651 }errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
1652 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
1653 EXPECT_EQ(errNo, DRM_ERR_OK);
1654 DRM_MediaKeyStatus mediaKeyStatus;
1655 errNo = OH_MediaKeySession_CheckMediaKeyStatus(mediaKeySession, &mediaKeyStatus);
1656
1657 DRM_OfflineMediaKeyStatus OfflineMediaKeyStatus = OFFLINE_MEDIA_KEY_STATUS_UNKNOWN;
1658 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(nullptr, onlineMediaKeyId, onlineMediaKeyIdLen,
1659 &OfflineMediaKeyStatus);
1660 EXPECT_NE(errNo, DRM_ERR_OK);
1661 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
1662 EXPECT_EQ(errNo, DRM_ERR_OK);
1663 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
1664 EXPECT_EQ(errNo, DRM_ERR_OK);
1665 }
1666
1667 /*
1668 * Feature: Framework
1669 * Function: Processing device certificate response testing
1670 * Sub function: NA
1671 * Function point: NA
1672 * Environmental conditions: NA
1673 * Case Description: Processing Device Certificate Response Testing
1674 */
1675 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GetOfflineMediaKeyStatusAbNormal_040, TestSize.Level0)
1676 {
1677 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
1678 MediaKeySystem *mediaKeySystem = nullptr;
1679 MediaKeySession *mediaKeySession = nullptr;
1680 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
1681 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
1682 EXPECT_NE(mediaKeySystem, nullptr);
1683 EXPECT_EQ(errNo, DRM_ERR_OK);
1684 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
1685 EXPECT_NE(mediaKeySession, nullptr);
1686 EXPECT_EQ(errNo, DRM_ERR_OK);
1687 // mediakeysession
1688 DRM_MediaKeyRequest mediaKeyRequest;
1689 DRM_MediaKeyRequestInfo info;
1690 unsigned char testData[139] = REQUESTINFODATA;
1691 memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
1692 info.initDataLen = sizeof(testData);
1693 info.type = MEDIA_KEY_TYPE_ONLINE;
1694 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
1695 memcpy_s(info.initData, sizeof(testData), testData, sizeof(testData));
1696 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
1697 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
1698 info.optionsCount = 1;
1699 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
1700 EXPECT_EQ(errNo, DRM_ERR_OK);
1701 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1702 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1703 unsigned char testKeySessionResponse[12288] = OFFRESPONSE;
1704 int32_t testKeySessionResponseLen = 12288;
1705 if (g_isWisePlay) {
1706 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data,
1707 (uint32_t)mediaKeyRequest.dataLen, testKeySessionResponse, &testKeySessionResponseLen, 10);
1708 EXPECT_EQ(rett, 0);
1709 } else {
1710 testKeySessionResponseLen = 50;
1711 }errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
1712 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
1713 EXPECT_EQ(errNo, DRM_ERR_OK);
1714 DRM_MediaKeyStatus mediaKeyStatus;
1715 errNo = OH_MediaKeySession_CheckMediaKeyStatus(mediaKeySession, &mediaKeyStatus);
1716
1717 DRM_OfflineMediaKeyStatus OfflineMediaKeyStatus = OFFLINE_MEDIA_KEY_STATUS_UNKNOWN;
1718 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(mediaKeySystem, nullptr, onlineMediaKeyIdLen,
1719 &OfflineMediaKeyStatus);
1720 EXPECT_NE(errNo, DRM_ERR_OK);
1721 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
1722 EXPECT_EQ(errNo, DRM_ERR_OK);
1723 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
1724 EXPECT_EQ(errNo, DRM_ERR_OK);
1725 }
1726
1727 /*
1728 * Feature: Framework
1729 * Function: Processing device certificate response testing
1730 * Sub function: NA
1731 * Function point: NA
1732 * Environmental conditions: NA
1733 * Case Description: Processing Device Certificate Response Testing
1734 */
1735 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GetOfflineMediaKeyStatusAbNormal_041, TestSize.Level0)
1736 {
1737 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
1738 MediaKeySystem *mediaKeySystem = nullptr;
1739 MediaKeySession *mediaKeySession = nullptr;
1740 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
1741 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
1742 EXPECT_NE(mediaKeySystem, nullptr);
1743 EXPECT_EQ(errNo, DRM_ERR_OK);
1744 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
1745 EXPECT_NE(mediaKeySession, nullptr);
1746 EXPECT_EQ(errNo, DRM_ERR_OK);
1747 // mediakeysession
1748 DRM_MediaKeyRequest mediaKeyRequest;
1749 DRM_MediaKeyRequestInfo info;
1750 unsigned char testData[139] = REQUESTINFODATA;
1751 memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
1752 info.initDataLen = sizeof(testData);
1753 info.type = MEDIA_KEY_TYPE_ONLINE;
1754 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
1755 memcpy_s(info.initData, sizeof(testData), testData, sizeof(testData));
1756 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
1757 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
1758 info.optionsCount = 1;
1759 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
1760 EXPECT_EQ(errNo, DRM_ERR_OK);
1761 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1762 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1763 unsigned char testKeySessionResponse[12288] = OFFRESPONSE;
1764 int32_t testKeySessionResponseLen = 12288;
1765 if (g_isWisePlay) {
1766 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data,
1767 (uint32_t)mediaKeyRequest.dataLen, testKeySessionResponse, &testKeySessionResponseLen, 10);
1768 EXPECT_EQ(rett, 0);
1769 } else {
1770 testKeySessionResponseLen = 50;
1771 }errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
1772 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
1773 EXPECT_EQ(errNo, DRM_ERR_OK);
1774 DRM_MediaKeyStatus mediaKeyStatus;
1775 errNo = OH_MediaKeySession_CheckMediaKeyStatus(mediaKeySession, &mediaKeyStatus);
1776
1777 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(mediaKeySystem, onlineMediaKeyId, onlineMediaKeyIdLen,
1778 nullptr);
1779 EXPECT_NE(errNo, DRM_ERR_OK);
1780 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
1781 EXPECT_EQ(errNo, DRM_ERR_OK);
1782 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
1783 EXPECT_EQ(errNo, DRM_ERR_OK);
1784 }
1785
1786 /*
1787 * Feature: Framework
1788 * Function: Processing device certificate response testing
1789 * Sub function: NA
1790 * Function point: NA
1791 * Environmental conditions: NA
1792 * Case Description: Processing Device Certificate Response Testing
1793 */
1794 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GetOfflineMediaKeyIdsNormal_042, TestSize.Level0)
1795 {
1796 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
1797 MediaKeySystem *mediaKeySystem = nullptr;
1798 MediaKeySession *mediaKeySession = nullptr;
1799 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
1800 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
1801 EXPECT_NE(mediaKeySystem, nullptr);
1802 EXPECT_EQ(errNo, DRM_ERR_OK);
1803 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
1804 EXPECT_NE(mediaKeySession, nullptr);
1805 EXPECT_EQ(errNo, DRM_ERR_OK);
1806 // mediakeysession
1807 DRM_MediaKeyRequest mediaKeyRequest;
1808 DRM_MediaKeyRequestInfo info;
1809 unsigned char testData[241] = OFFREQUESTINFODATA;
1810 memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
1811 info.initDataLen = testData[3];
1812 info.type = MEDIA_KEY_TYPE_OFFLINE;
1813 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
1814 memcpy_s(info.initData, sizeof(testData), testData, sizeof(testData));
1815 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
1816 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
1817 info.optionsCount = 1;
1818 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
1819 EXPECT_EQ(errNo, DRM_ERR_OK);
1820 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1821 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1822 unsigned char testKeySessionResponse[12288] = OFFRESPONSE;
1823 int32_t testKeySessionResponseLen = 12288;
1824 if (g_isWisePlay) {
1825 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data,
1826 (uint32_t)mediaKeyRequest.dataLen, testKeySessionResponse, &testKeySessionResponseLen, 10);
1827 EXPECT_EQ(rett, 0);
1828 } else {
1829 testKeySessionResponseLen = 50;
1830 }errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
1831 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
1832 EXPECT_EQ(errNo, DRM_ERR_OK);
1833 DRM_OfflineMediakeyIdArray offlineMediaKeyIds;
1834 errNo = OH_MediaKeySystem_GetOfflineMediaKeyIds(mediaKeySystem, &offlineMediaKeyIds);
1835 EXPECT_EQ(errNo, DRM_ERR_OK);
1836 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
1837 EXPECT_EQ(errNo, DRM_ERR_OK);
1838 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
1839 EXPECT_EQ(errNo, DRM_ERR_OK);
1840 }
1841
1842 /*
1843 * Feature: Framework
1844 * Function: Processing device certificate response testing
1845 * Sub function: NA
1846 * Function point: NA
1847 * Environmental conditions: NA
1848 * Case Description: Processing Device Certificate Response Testing
1849 */
1850 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GetOfflineMediaKeyIdsAbNormal_043, TestSize.Level0)
1851 {
1852 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
1853 MediaKeySystem *mediaKeySystem = nullptr;
1854 MediaKeySession *mediaKeySession = nullptr;
1855 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
1856 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
1857 EXPECT_NE(mediaKeySystem, nullptr);
1858 EXPECT_EQ(errNo, DRM_ERR_OK);
1859 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
1860 EXPECT_NE(mediaKeySession, nullptr);
1861 EXPECT_EQ(errNo, DRM_ERR_OK);
1862 // mediakeysession
1863 DRM_MediaKeyRequest mediaKeyRequest;
1864 DRM_MediaKeyRequestInfo info;
1865 unsigned char testData[139] = REQUESTINFODATA;
1866 memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
1867 info.initDataLen = sizeof(testData);
1868 info.type = MEDIA_KEY_TYPE_ONLINE;
1869 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
1870 memcpy_s(info.initData, sizeof(testData), testData, sizeof(testData));
1871 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
1872 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
1873 info.optionsCount = 1;
1874 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
1875 EXPECT_EQ(errNo, DRM_ERR_OK);
1876 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1877 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1878 unsigned char testKeySessionResponse[12288] = OFFRESPONSE;
1879 int32_t testKeySessionResponseLen = 12288;
1880 if (g_isWisePlay) {
1881 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data,
1882 (uint32_t)mediaKeyRequest.dataLen, testKeySessionResponse, &testKeySessionResponseLen, 10);
1883 EXPECT_EQ(rett, 0);
1884 } else {
1885 testKeySessionResponseLen = 50;
1886 }errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
1887 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
1888 EXPECT_EQ(errNo, DRM_ERR_OK);
1889 DRM_OfflineMediakeyIdArray offlineMediaKeyIds;
1890 errNo = OH_MediaKeySystem_GetOfflineMediaKeyIds(nullptr, &offlineMediaKeyIds);
1891 EXPECT_NE(errNo, DRM_ERR_OK);
1892 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
1893 EXPECT_EQ(errNo, DRM_ERR_OK);
1894 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
1895 EXPECT_EQ(errNo, DRM_ERR_OK);
1896 }
1897
1898 /*
1899 * Feature: Framework
1900 * Function: Processing device certificate response testing
1901 * Sub function: NA
1902 * Function point: NA
1903 * Environmental conditions: NA
1904 * Case Description: Processing Device Certificate Response Testing
1905 */
1906 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GetOfflineMediaKeyIdsAbNormal_044, TestSize.Level0)
1907 {
1908 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
1909 MediaKeySystem *mediaKeySystem = nullptr;
1910 MediaKeySession *mediaKeySession = nullptr;
1911 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
1912 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
1913 EXPECT_NE(mediaKeySystem, nullptr);
1914 EXPECT_EQ(errNo, DRM_ERR_OK);
1915 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
1916 EXPECT_NE(mediaKeySession, nullptr);
1917 EXPECT_EQ(errNo, DRM_ERR_OK);
1918 // mediakeysession
1919 DRM_MediaKeyRequest mediaKeyRequest;
1920 DRM_MediaKeyRequestInfo info;
1921 unsigned char testData[139] = REQUESTINFODATA;
1922 memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
1923 info.initDataLen = sizeof(testData);
1924 info.type = MEDIA_KEY_TYPE_ONLINE;
1925 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
1926 memcpy_s(info.initData, sizeof(testData), testData, sizeof(testData));
1927 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
1928 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
1929 info.optionsCount = 1;
1930 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
1931 EXPECT_EQ(errNo, DRM_ERR_OK);
1932 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1933 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1934 unsigned char testKeySessionResponse[12288] = OFFRESPONSE;
1935 int32_t testKeySessionResponseLen = 12288;
1936 if (g_isWisePlay) {
1937 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data,
1938 (uint32_t)mediaKeyRequest.dataLen, testKeySessionResponse, &testKeySessionResponseLen, 10);
1939 EXPECT_EQ(rett, 0);
1940 } else {
1941 testKeySessionResponseLen = 50;
1942 }errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
1943 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
1944 EXPECT_EQ(errNo, DRM_ERR_OK);
1945 errNo = OH_MediaKeySystem_GetOfflineMediaKeyIds(mediaKeySystem, nullptr);
1946 EXPECT_NE(errNo, DRM_ERR_OK);
1947 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
1948 EXPECT_EQ(errNo, DRM_ERR_OK);
1949 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
1950 EXPECT_EQ(errNo, DRM_ERR_OK);
1951 }
1952
1953 /*
1954 * Feature: Framework
1955 * Function: Processing device certificate response testing
1956 * Sub function: NA
1957 * Function point: NA
1958 * Environmental conditions: NA
1959 * Case Description: Processing Device Certificate Response Testing
1960 */
1961 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GenerateOfflineReleaseRequestNormal_045, TestSize.Level0)
1962 {
1963 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
1964 MediaKeySystem *mediaKeySystem = nullptr;
1965 MediaKeySession *mediaKeySession = nullptr;
1966 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
1967 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
1968 EXPECT_NE(mediaKeySystem, nullptr);
1969 EXPECT_EQ(errNo, DRM_ERR_OK);
1970 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
1971 EXPECT_NE(mediaKeySession, nullptr);
1972 EXPECT_EQ(errNo, DRM_ERR_OK);
1973 // mediakeysession
1974 DRM_MediaKeyRequest mediaKeyRequest;
1975 DRM_MediaKeyRequestInfo info;
1976 unsigned char testData[241] = OFFREQUESTINFODATA;
1977 memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
1978 info.initDataLen = testData[3];
1979 info.type = MEDIA_KEY_TYPE_OFFLINE;
1980 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
1981 memcpy_s(info.initData, sizeof(testData), testData, sizeof(testData));
1982 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
1983 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
1984 info.optionsCount = 1;
1985 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
1986 EXPECT_EQ(errNo, DRM_ERR_OK);
1987 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1988 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
1989 unsigned char testKeySessionResponse[12288] = OFFRESPONSE;
1990 int32_t testKeySessionResponseLen = 12288;
1991 if (g_isWisePlay) {
1992 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data,
1993 (uint32_t)mediaKeyRequest.dataLen, testKeySessionResponse, &testKeySessionResponseLen, 10);
1994 EXPECT_EQ(rett, 0);
1995 } else {
1996 testKeySessionResponseLen = 50;
1997 }errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
1998 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
1999 EXPECT_EQ(errNo, DRM_ERR_OK);
2000 DRM_OfflineMediaKeyStatus OfflineMediaKeyStatus = OFFLINE_MEDIA_KEY_STATUS_UNKNOWN;
2001 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(mediaKeySystem, onlineMediaKeyId, onlineMediaKeyIdLen,
2002 &OfflineMediaKeyStatus);
2003 EXPECT_EQ(errNo, DRM_ERR_OK);
2004 EXPECT_EQ(OfflineMediaKeyStatus, 1);
2005 unsigned char releaseRequest[12288] = { 0 }; // 12288:request len
2006 int32_t releaseRequestLen = 12288; // 12288:request len
2007 errNo = OH_MediaKeySession_GenerateOfflineReleaseRequest(mediaKeySession, onlineMediaKeyId, onlineMediaKeyIdLen,
2008 releaseRequest, &releaseRequestLen);
2009 EXPECT_EQ(errNo, DRM_ERR_OK);
2010 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
2011 EXPECT_EQ(errNo, DRM_ERR_OK);
2012 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
2013 EXPECT_EQ(errNo, DRM_ERR_OK);
2014 }
2015
2016 /*
2017 * Feature: Framework
2018 * Function: Processing device certificate response testing
2019 * Sub function: NA
2020 * Function point: NA
2021 * Environmental conditions: NA
2022 * Case Description: Processing Device Certificate Response Testing
2023 */
2024 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GenerateOfflineReleaseRequestAbNormal_046, TestSize.Level0)
2025 {
2026 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
2027 MediaKeySystem *mediaKeySystem = nullptr;
2028 MediaKeySession *mediaKeySession = nullptr;
2029 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
2030 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
2031 EXPECT_NE(mediaKeySystem, nullptr);
2032 EXPECT_EQ(errNo, DRM_ERR_OK);
2033 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
2034 EXPECT_NE(mediaKeySession, nullptr);
2035 EXPECT_EQ(errNo, DRM_ERR_OK);
2036 // mediakeysession
2037 DRM_MediaKeyRequest mediaKeyRequest;
2038 DRM_MediaKeyRequestInfo info;
2039 unsigned char testData[241] = OFFREQUESTINFODATA;
2040 memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
2041 info.initDataLen = testData[3];
2042 info.type = MEDIA_KEY_TYPE_OFFLINE;
2043 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
2044 memcpy_s(info.initData, sizeof(testData), testData, sizeof(testData));
2045 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
2046 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
2047 info.optionsCount = 1;
2048 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
2049 EXPECT_EQ(errNo, DRM_ERR_OK);
2050 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
2051 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
2052 unsigned char testKeySessionResponse[12288] = OFFRESPONSE;
2053 int32_t testKeySessionResponseLen = 12288;
2054 if (g_isWisePlay) {
2055 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data,
2056 (uint32_t)mediaKeyRequest.dataLen, testKeySessionResponse, &testKeySessionResponseLen, 10);
2057 EXPECT_EQ(rett, 0);
2058 } else {
2059 testKeySessionResponseLen = 50;
2060 }errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
2061 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
2062 EXPECT_EQ(errNo, DRM_ERR_OK);
2063 DRM_OfflineMediaKeyStatus OfflineMediaKeyStatus = OFFLINE_MEDIA_KEY_STATUS_UNKNOWN;
2064 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(mediaKeySystem, onlineMediaKeyId, onlineMediaKeyIdLen,
2065 &OfflineMediaKeyStatus);
2066 EXPECT_EQ(errNo, DRM_ERR_OK);
2067 EXPECT_EQ(OfflineMediaKeyStatus, 1);
2068 unsigned char releaseRequest[12288] = { 0 }; // 12288:request len
2069 int32_t releaseRequestLen = 12288; // 12288:request len
2070 errNo = OH_MediaKeySession_GenerateOfflineReleaseRequest(nullptr, onlineMediaKeyId, onlineMediaKeyIdLen,
2071 releaseRequest, &releaseRequestLen);
2072 EXPECT_NE(errNo, DRM_ERR_OK);
2073 releaseRequestLen = 12288; // 12288:request len
2074 errNo = OH_MediaKeySession_GenerateOfflineReleaseRequest(mediaKeySession, nullptr, onlineMediaKeyIdLen,
2075 releaseRequest, &releaseRequestLen);
2076 EXPECT_NE(errNo, DRM_ERR_OK);
2077 releaseRequestLen = 12288; // 12288:request len
2078 errNo = OH_MediaKeySession_GenerateOfflineReleaseRequest(mediaKeySession, onlineMediaKeyId, onlineMediaKeyIdLen,
2079 nullptr, &releaseRequestLen);
2080 EXPECT_NE(errNo, DRM_ERR_OK);
2081 errNo = OH_MediaKeySession_GenerateOfflineReleaseRequest(mediaKeySession, onlineMediaKeyId, onlineMediaKeyIdLen,
2082 releaseRequest, nullptr);
2083 EXPECT_NE(errNo, DRM_ERR_OK);
2084 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
2085 EXPECT_EQ(errNo, DRM_ERR_OK);
2086 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
2087 EXPECT_EQ(errNo, DRM_ERR_OK);
2088 }
2089
2090 /*
2091 * Feature: Framework
2092 * Function: Processing device certificate response testing
2093 * Sub function: NA
2094 * Function point: NA
2095 * Environmental conditions: NA
2096 * Case Description: Processing Device Certificate Response Testing
2097 */
2098 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_ProcessOfflineReleaseResponseNormal_047, TestSize.Level0)
2099 {
2100 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
2101 MediaKeySystem *mediaKeySystem = nullptr;
2102 MediaKeySession *mediaKeySession = nullptr;
2103 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
2104 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
2105 EXPECT_NE(mediaKeySystem, nullptr);
2106 EXPECT_EQ(errNo, DRM_ERR_OK);
2107 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
2108 EXPECT_NE(mediaKeySession, nullptr);
2109 EXPECT_EQ(errNo, DRM_ERR_OK);
2110 // mediakeysession
2111 DRM_MediaKeyRequest mediaKeyRequest;
2112 DRM_MediaKeyRequestInfo info;
2113 unsigned char testData[241] = OFFREQUESTINFODATA;
2114 memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
2115 info.initDataLen = testData[3];
2116 info.type = MEDIA_KEY_TYPE_OFFLINE;
2117 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
2118 memcpy_s(info.initData, sizeof(testData), testData, sizeof(testData));
2119 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
2120 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
2121 info.optionsCount = 1;
2122 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
2123 EXPECT_EQ(errNo, DRM_ERR_OK);
2124 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
2125 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
2126 unsigned char testKeySessionResponse[12288] = OFFRESPONSE;
2127 int32_t testKeySessionResponseLen = 12288;
2128 if (g_isWisePlay) {
2129 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data,
2130 (uint32_t)mediaKeyRequest.dataLen, testKeySessionResponse, &testKeySessionResponseLen, 10);
2131 EXPECT_EQ(rett, 0);
2132 } else {
2133 testKeySessionResponseLen = 50;
2134 }errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
2135 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
2136 EXPECT_EQ(errNo, DRM_ERR_OK);
2137 DRM_OfflineMediaKeyStatus OfflineMediaKeyStatus = OFFLINE_MEDIA_KEY_STATUS_UNKNOWN;
2138 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(mediaKeySystem, onlineMediaKeyId, onlineMediaKeyIdLen,
2139 &OfflineMediaKeyStatus);
2140 EXPECT_EQ(errNo, DRM_ERR_OK);
2141 EXPECT_EQ(OfflineMediaKeyStatus, 1);
2142 unsigned char releaseRequest[12288] = { 0 }; // 12288:request len
2143 int32_t releaseRequestLen = 12288; // 12288:request len
2144 errNo = OH_MediaKeySession_GenerateOfflineReleaseRequest(mediaKeySession, onlineMediaKeyId, onlineMediaKeyIdLen,
2145 releaseRequest, &releaseRequestLen);
2146 EXPECT_EQ(errNo, DRM_ERR_OK);
2147 unsigned char testKeyReleaseResponse[50] = OFFRESPONSE;
2148 if (!g_isWisePlay) {
2149 errNo = OH_MediaKeySession_ProcessOfflineReleaseResponse(mediaKeySession, onlineMediaKeyId, onlineMediaKeyIdLen,
2150 testKeyReleaseResponse, (int32_t)(sizeof(testKeyReleaseResponse)));
2151 EXPECT_EQ(errNo, DRM_ERR_OK);
2152 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(mediaKeySystem, onlineMediaKeyId, onlineMediaKeyIdLen,
2153 &OfflineMediaKeyStatus);
2154 EXPECT_EQ(OfflineMediaKeyStatus, 2);
2155 EXPECT_EQ(errNo, DRM_ERR_OK);
2156 }
2157 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
2158 EXPECT_EQ(errNo, DRM_ERR_OK);
2159 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
2160 EXPECT_EQ(errNo, DRM_ERR_OK);
2161 }
2162
2163 /*
2164 * Feature: Framework
2165 * Function: Processing device certificate response testing
2166 * Sub function: NA
2167 * Function point: NA
2168 * Environmental conditions: NA
2169 * Case Description: Processing Device Certificate Response Testing
2170 */
2171 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_ProcessOfflineReleaseResponseAbNormal_048, TestSize.Level0)
2172 {
2173 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
2174 MediaKeySystem *mediaKeySystem = nullptr;
2175 MediaKeySession *mediaKeySession = nullptr;
2176 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
2177 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
2178 EXPECT_NE(mediaKeySystem, nullptr);
2179 EXPECT_EQ(errNo, DRM_ERR_OK);
2180 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
2181 EXPECT_NE(mediaKeySession, nullptr);
2182 EXPECT_EQ(errNo, DRM_ERR_OK);
2183 // mediakeysession
2184 DRM_MediaKeyRequest mediaKeyRequest;
2185 DRM_MediaKeyRequestInfo info;
2186 unsigned char testData[241] = OFFREQUESTINFODATA;
2187 memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
2188 info.initDataLen = testData[3];
2189 info.type = MEDIA_KEY_TYPE_OFFLINE;
2190 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
2191 memcpy_s(info.initData, sizeof(testData), testData, sizeof(testData));
2192 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
2193 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
2194 info.optionsCount = 1;
2195 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
2196 EXPECT_EQ(errNo, DRM_ERR_OK);
2197 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
2198 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
2199 unsigned char testKeySessionResponse[12288] = OFFRESPONSE;
2200 int32_t testKeySessionResponseLen = 12288;
2201 if (g_isWisePlay) {
2202 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data,
2203 (uint32_t)mediaKeyRequest.dataLen, testKeySessionResponse, &testKeySessionResponseLen, 10);
2204 EXPECT_EQ(rett, 0);
2205 } else {
2206 testKeySessionResponseLen = 50;
2207 }errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
2208 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
2209 EXPECT_EQ(errNo, DRM_ERR_OK);
2210 DRM_OfflineMediaKeyStatus OfflineMediaKeyStatus = OFFLINE_MEDIA_KEY_STATUS_UNKNOWN;
2211 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(mediaKeySystem, onlineMediaKeyId, onlineMediaKeyIdLen,
2212 &OfflineMediaKeyStatus);
2213 EXPECT_EQ(errNo, DRM_ERR_OK);
2214 EXPECT_EQ(OfflineMediaKeyStatus, 1);
2215 unsigned char releaseRequest[12288] = { 0 }; // 12288:request len
2216 int32_t releaseRequestLen = 12288; // 12288:request len
2217 errNo = OH_MediaKeySession_GenerateOfflineReleaseRequest(mediaKeySession, onlineMediaKeyId, onlineMediaKeyIdLen,
2218 releaseRequest, &releaseRequestLen);
2219 EXPECT_EQ(errNo, DRM_ERR_OK);
2220 unsigned char testKeyReleaseResponse[50] = OFFRESPONSE;
2221 errNo = OH_MediaKeySession_ProcessOfflineReleaseResponse(nullptr, onlineMediaKeyId, onlineMediaKeyIdLen,
2222 testKeyReleaseResponse, (int32_t)(sizeof(testKeyReleaseResponse)));
2223 EXPECT_NE(errNo, DRM_ERR_OK);
2224 errNo = OH_MediaKeySession_ProcessOfflineReleaseResponse(mediaKeySession, nullptr, onlineMediaKeyIdLen,
2225 testKeyReleaseResponse, (int32_t)(sizeof(testKeyReleaseResponse)));
2226 EXPECT_NE(errNo, DRM_ERR_OK);
2227 errNo = OH_MediaKeySession_ProcessOfflineReleaseResponse(mediaKeySession, onlineMediaKeyId, onlineMediaKeyIdLen,
2228 nullptr, (int32_t)(sizeof(testKeyReleaseResponse)));
2229 EXPECT_NE(errNo, DRM_ERR_OK);
2230 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
2231 EXPECT_EQ(errNo, DRM_ERR_OK);
2232 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
2233 EXPECT_EQ(errNo, DRM_ERR_OK);
2234 }
2235
2236 /*
2237 * Feature: Framework
2238 * Function: Processing device certificate response testing
2239 * Sub function: NA
2240 * Function point: NA
2241 * Environmental conditions: NA
2242 * Case Description: Processing Device Certificate Response Testing
2243 */
2244 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GetCertificateStatusNormal_049, TestSize.Level0)
2245 {
2246 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
2247 MediaKeySystem *mediaKeySystem = nullptr;
2248 MediaKeySession *mediaKeySession = nullptr;
2249 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
2250 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
2251 EXPECT_NE(mediaKeySystem, nullptr);
2252 EXPECT_EQ(errNo, DRM_ERR_OK);
2253 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
2254 EXPECT_NE(mediaKeySession, nullptr);
2255 EXPECT_EQ(errNo, DRM_ERR_OK);
2256 DRM_CertificateStatus certStatus = CERT_STATUS_INVALID;
2257 errNo = OH_MediaKeySystem_GetCertificateStatus(mediaKeySystem, &certStatus);
2258 EXPECT_EQ(certStatus, 0);
2259 EXPECT_EQ(errNo, DRM_ERR_OK);
2260 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
2261 EXPECT_EQ(errNo, DRM_ERR_OK);
2262 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
2263 EXPECT_EQ(errNo, DRM_ERR_OK);
2264 }
2265
2266 /*
2267 * Feature: Framework
2268 * Function: Processing device certificate response testing
2269 * Sub function: NA
2270 * Function point: NA
2271 * Environmental conditions: NA
2272 * Case Description: Processing Device Certificate Response Testing
2273 */
2274 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GetCertificateStatusAbNormal_050, TestSize.Level0)
2275 {
2276 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
2277 MediaKeySystem *mediaKeySystem = nullptr;
2278 MediaKeySession *mediaKeySession = nullptr;
2279 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
2280 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
2281 EXPECT_NE(mediaKeySystem, nullptr);
2282 EXPECT_EQ(errNo, DRM_ERR_OK);
2283 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
2284 EXPECT_NE(mediaKeySession, nullptr);
2285 EXPECT_EQ(errNo, DRM_ERR_OK);
2286 DRM_CertificateStatus certStatus = CERT_STATUS_INVALID;
2287 errNo = OH_MediaKeySystem_GetCertificateStatus(nullptr, &certStatus);
2288 EXPECT_NE(errNo, DRM_ERR_OK);
2289 errNo = OH_MediaKeySystem_GetCertificateStatus(mediaKeySystem, nullptr);
2290 EXPECT_NE(errNo, DRM_ERR_OK);
2291 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
2292 EXPECT_EQ(errNo, DRM_ERR_OK);
2293 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
2294 EXPECT_EQ(errNo, DRM_ERR_OK);
2295 }
2296
2297 /*
2298 * Feature: Framework
2299 * Function: Processing device certificate response testing
2300 * Sub function: NA
2301 * Function point: NA
2302 * Environmental conditions: NA
2303 * Case Description: Processing Device Certificate Response Testing
2304 */
2305 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_SetConfigurationStringNormal_051, TestSize.Level0)
2306 {
2307 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
2308 MediaKeySystem *mediaKeySystem = nullptr;
2309 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
2310 EXPECT_NE(mediaKeySystem, nullptr);
2311 EXPECT_EQ(errNo, DRM_ERR_OK);
2312 errNo =
2313 OH_MediaKeySystem_SetConfigurationString(mediaKeySystem, "testConfigurationString", "testConfigurationString");
2314 if (g_isWisePlay) {
2315 EXPECT_NE(errNo, DRM_ERR_OK);
2316 } else {
2317 EXPECT_EQ(errNo, DRM_ERR_OK);
2318 }
2319 char value[32];
2320 int32_t valueLen = 32;
2321 errNo = OH_MediaKeySystem_GetConfigurationString(mediaKeySystem, "version", value, valueLen);
2322 if (g_isWisePlay) {
2323 EXPECT_EQ(errNo, DRM_ERR_OK);
2324 } else {
2325 EXPECT_NE(errNo, DRM_ERR_OK);
2326 }
2327 errNo = OH_MediaKeySystem_GetConfigurationString(mediaKeySystem, "testConfigurationString", value, 10);
2328 EXPECT_NE(errNo, DRM_ERR_OK);
2329 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
2330 EXPECT_EQ(errNo, DRM_ERR_OK);
2331 }
2332
2333 /*
2334 * Feature: Framework
2335 * Function: Processing device certificate response testing
2336 * Sub function: NA
2337 * Function point: NA
2338 * Environmental conditions: NA
2339 * Case Description: Processing Device Certificate Response Testing
2340 */
2341 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_SetConfigurationStringAbNormal_052, TestSize.Level0)
2342 {
2343 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
2344 MediaKeySystem *mediaKeySystem = nullptr;
2345 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
2346 EXPECT_NE(mediaKeySystem, nullptr);
2347 EXPECT_EQ(errNo, DRM_ERR_OK);
2348 errNo = OH_MediaKeySystem_SetConfigurationString(nullptr, "testConfigurationString", "gezhegezhegezhe");
2349 EXPECT_NE(errNo, DRM_ERR_OK);
2350 errNo = OH_MediaKeySystem_SetConfigurationString(mediaKeySystem, "", "gezhegezhegezhe");
2351 EXPECT_NE(errNo, DRM_ERR_OK);
2352 errNo = OH_MediaKeySystem_SetConfigurationString(mediaKeySystem, nullptr, "gezhegezhegezhe");
2353 EXPECT_NE(errNo, DRM_ERR_OK);
2354 errNo = OH_MediaKeySystem_SetConfigurationString(mediaKeySystem, "testConfigurationString", "");
2355 EXPECT_NE(errNo, DRM_ERR_OK);
2356 errNo = OH_MediaKeySystem_SetConfigurationString(mediaKeySystem, "testConfigurationString", nullptr);
2357 EXPECT_NE(errNo, DRM_ERR_OK);
2358 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
2359 EXPECT_EQ(errNo, DRM_ERR_OK);
2360 }
2361
2362 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GetConfigurationStringAbNormal_053, TestSize.Level0)
2363 {
2364 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
2365 MediaKeySystem *mediaKeySystem = nullptr;
2366 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
2367 EXPECT_NE(mediaKeySystem, nullptr);
2368 EXPECT_EQ(errNo, DRM_ERR_OK);
2369 errNo = OH_MediaKeySystem_SetConfigurationString(mediaKeySystem, "testConfigurationString", "gezhegezhegezhe");
2370 if (g_isWisePlay) {
2371 EXPECT_NE(errNo, DRM_ERR_OK);
2372 } else {
2373 EXPECT_EQ(errNo, DRM_ERR_OK);
2374 }
2375 char value[32];
2376 int32_t valueLen = 32;
2377 errNo = OH_MediaKeySystem_GetConfigurationString(nullptr, "testConfigurationString", value, valueLen);
2378 EXPECT_NE(errNo, DRM_ERR_OK);
2379 errNo = OH_MediaKeySystem_GetConfigurationString(mediaKeySystem, "", value, valueLen);
2380 EXPECT_NE(errNo, DRM_ERR_OK);
2381 errNo = OH_MediaKeySystem_GetConfigurationString(mediaKeySystem, nullptr, value, valueLen);
2382 EXPECT_NE(errNo, DRM_ERR_OK);
2383 errNo = OH_MediaKeySystem_GetConfigurationString(mediaKeySystem, "testConfigurationString", nullptr, valueLen);
2384 EXPECT_NE(errNo, DRM_ERR_OK);
2385 errNo = OH_MediaKeySystem_GetConfigurationString(mediaKeySystem, "testConfigurationString", value, 0);
2386 EXPECT_NE(errNo, DRM_ERR_OK);
2387 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
2388 EXPECT_EQ(errNo, DRM_ERR_OK);
2389 }
2390
2391 /*
2392 * Feature: Framework
2393 * Function: Processing device certificate response testing
2394 * Sub function: NA
2395 * Function point: NA
2396 * Environmental conditions: NA
2397 * Case Description: Processing Device Certificate Response Testing
2398 */
2399 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GetConfigurationByteArrayNormal_054, TestSize.Level0)
2400 {
2401 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
2402 MediaKeySystem *mediaKeySystem = nullptr;
2403 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
2404 EXPECT_NE(mediaKeySystem, nullptr);
2405 EXPECT_EQ(errNo, DRM_ERR_OK);
2406 unsigned char testArray[5] = {1, 2, 3, 4, 5};
2407 errNo = OH_MediaKeySystem_SetConfigurationByteArray(mediaKeySystem, "testConfigurationByteArray", testArray,
2408 sizeof(testArray));
2409 if (g_isWisePlay) {
2410 EXPECT_NE(errNo, DRM_ERR_OK);
2411 } else {
2412 EXPECT_EQ(errNo, DRM_ERR_OK);
2413 }
2414 unsigned char configByteArray[128];
2415 int32_t byteArrayLen = 128;
2416 errNo = OH_MediaKeySystem_GetConfigurationByteArray(mediaKeySystem, "deviceUniqueId", configByteArray,
2417 &byteArrayLen);
2418 if (g_isWisePlay) {
2419 EXPECT_EQ(errNo, DRM_ERR_OK);
2420 } else {
2421 EXPECT_NE(errNo, DRM_ERR_OK);
2422 }
2423
2424 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
2425 EXPECT_EQ(errNo, DRM_ERR_OK);
2426 }
2427
2428 /*
2429 * Feature: Framework
2430 * Function: Processing device certificate response testing
2431 * Sub function: NA
2432 * Function point: NA
2433 * Environmental conditions: NA
2434 * Case Description: Processing Device Certificate Response Testing
2435 */
2436 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_SetConfigurationByteArrayAbNormal_055, TestSize.Level0)
2437 {
2438 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
2439 MediaKeySystem *mediaKeySystem = nullptr;
2440 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
2441 EXPECT_NE(mediaKeySystem, nullptr);
2442 EXPECT_EQ(errNo, DRM_ERR_OK);
2443 unsigned char testArray[5] = {1, 2, 3, 4, 5};
2444 errNo = OH_MediaKeySystem_SetConfigurationByteArray(nullptr, "testConfigurationByteArray", testArray,
2445 sizeof(testArray));
2446 EXPECT_NE(errNo, DRM_ERR_OK);
2447 errNo = OH_MediaKeySystem_SetConfigurationByteArray(mediaKeySystem, "", testArray, sizeof(testArray));
2448 EXPECT_NE(errNo, DRM_ERR_OK);
2449 errNo = OH_MediaKeySystem_SetConfigurationByteArray(mediaKeySystem, nullptr, testArray, sizeof(testArray));
2450 EXPECT_NE(errNo, DRM_ERR_OK);
2451 errNo = OH_MediaKeySystem_SetConfigurationByteArray(mediaKeySystem, "testConfigurationByteArray", nullptr,
2452 sizeof(testArray));
2453 EXPECT_NE(errNo, DRM_ERR_OK);
2454 errNo = OH_MediaKeySystem_SetConfigurationByteArray(mediaKeySystem, "testConfigurationByteArray", testArray, 0);
2455 EXPECT_NE(errNo, DRM_ERR_OK);
2456 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
2457 EXPECT_EQ(errNo, DRM_ERR_OK);
2458 }
2459
2460 /*
2461 * Feature: Framework
2462 * Function: Processing device certificate response testing
2463 * Sub function: NA
2464 * Function point: NA
2465 * Environmental conditions: NA
2466 * Case Description: Processing Device Certificate Response Testing
2467 */
2468 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GetConfigurationByteArrayAbNormal_056, TestSize.Level0)
2469 {
2470 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
2471 MediaKeySystem *mediaKeySystem = nullptr;
2472 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
2473 EXPECT_NE(mediaKeySystem, nullptr);
2474 EXPECT_EQ(errNo, DRM_ERR_OK);
2475 unsigned char testArray[5] = {1, 2, 3, 4, 5};
2476 errNo = OH_MediaKeySystem_SetConfigurationByteArray(mediaKeySystem, "testConfigurationByteArray", testArray,
2477 sizeof(testArray));
2478 unsigned char configByteArray[32];
2479 int32_t byteArrayLen = 32;
2480 errNo = OH_MediaKeySystem_GetConfigurationByteArray(nullptr, "testConfigurationByteArray", configByteArray,
2481 &byteArrayLen);
2482 EXPECT_NE(errNo, DRM_ERR_OK);
2483 errNo = OH_MediaKeySystem_GetConfigurationByteArray(mediaKeySystem, "", configByteArray, &byteArrayLen);
2484 EXPECT_NE(errNo, DRM_ERR_OK);
2485 errNo = OH_MediaKeySystem_GetConfigurationByteArray(mediaKeySystem, nullptr, configByteArray, &byteArrayLen);
2486 EXPECT_NE(errNo, DRM_ERR_OK);
2487 errNo = OH_MediaKeySystem_GetConfigurationByteArray(mediaKeySystem, "testConfigurationByteArray", nullptr,
2488 &byteArrayLen);
2489 EXPECT_NE(errNo, DRM_ERR_OK);
2490 errNo = OH_MediaKeySystem_GetConfigurationByteArray(mediaKeySystem, "testConfigurationByteArray", configByteArray,
2491 nullptr);
2492 EXPECT_NE(errNo, DRM_ERR_OK);
2493 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
2494 EXPECT_EQ(errNo, DRM_ERR_OK);
2495 }
2496
2497 /*
2498 * Feature: Framework
2499 * Function: Processing device certificate response testing
2500 * Sub function: NA
2501 * Function point: NA
2502 * Environmental conditions: NA
2503 * Case Description: Processing Device Certificate Response Testing
2504 */
2505 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GetStatisticsNormal_057, TestSize.Level0)
2506 {
2507 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
2508 MediaKeySystem *mediaKeySystem = nullptr;
2509 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
2510 EXPECT_NE(mediaKeySystem, nullptr);
2511 EXPECT_EQ(errNo, DRM_ERR_OK);
2512 DRM_Statistics statistics;
2513 errNo = OH_MediaKeySystem_GetStatistics(mediaKeySystem, &statistics);
2514 EXPECT_EQ(errNo, DRM_ERR_OK);
2515 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
2516 EXPECT_EQ(errNo, DRM_ERR_OK);
2517 }
2518
2519 /*
2520 * Feature: Framework
2521 * Function: Processing device certificate response testing
2522 * Sub function: NA
2523 * Function point: NA
2524 * Environmental conditions: NA
2525 * Case Description: Processing Device Certificate Response Testing
2526 */
2527 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GetStatisticsAbNormal_058, TestSize.Level0)
2528 {
2529 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
2530 MediaKeySystem *mediaKeySystem = nullptr;
2531 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
2532 EXPECT_NE(mediaKeySystem, nullptr);
2533 EXPECT_EQ(errNo, DRM_ERR_OK);
2534 DRM_Statistics statistics;
2535 errNo = OH_MediaKeySystem_GetStatistics(nullptr, &statistics);
2536 EXPECT_NE(errNo, DRM_ERR_OK);
2537 errNo = OH_MediaKeySystem_GetStatistics(mediaKeySystem, nullptr);
2538 EXPECT_NE(errNo, DRM_ERR_OK);
2539 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
2540 EXPECT_EQ(errNo, DRM_ERR_OK);
2541 }
2542
2543 /*
2544 * Feature: Framework
2545 * Function: Test and create DRM instances
2546 * Sub function: NA
2547 * Function point: NA
2548 * Environmental conditions: NA
2549 * Case Description: Test Creating DRM Instance
2550 */
2551 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GetMaxContentProtectionLevelAbNormal_059, TestSize.Level0)
2552 {
2553 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
2554 MediaKeySystem *mediaKeySystem = nullptr;
2555 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_UNKNOWN;
2556 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
2557 EXPECT_NE(mediaKeySystem, nullptr);
2558 EXPECT_EQ(errNo, DRM_ERR_OK);
2559 errNo = OH_MediaKeySystem_GetMaxContentProtectionLevel(nullptr, &contentProtectionLevel);
2560 EXPECT_NE(errNo, DRM_ERR_OK);
2561 errNo = OH_MediaKeySystem_GetMaxContentProtectionLevel(mediaKeySystem, nullptr);
2562 EXPECT_NE(errNo, DRM_ERR_OK);
2563 if (mediaKeySystem != nullptr) {
2564 OH_MediaKeySystem_Destroy(mediaKeySystem);
2565 }
2566 }
2567
2568 /*
2569 * Feature: Framework
2570 * Function: Processing device certificate response testing
2571 * Sub function: NA
2572 * Function point: NA
2573 * Environmental conditions: NA
2574 * Case Description: Processing Device Certificate Response Testing
2575 */
2576 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_ClearOfflineMediaKeysNormal_060, TestSize.Level0)
2577 {
2578 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
2579 MediaKeySystem *mediaKeySystem = nullptr;
2580 MediaKeySession *mediaKeySession = nullptr;
2581 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
2582 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
2583 EXPECT_NE(mediaKeySystem, nullptr);
2584 EXPECT_EQ(errNo, DRM_ERR_OK);
2585 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
2586 EXPECT_NE(mediaKeySession, nullptr);
2587 EXPECT_EQ(errNo, DRM_ERR_OK);
2588 // mediakeysession
2589 DRM_MediaKeyRequest mediaKeyRequest;
2590 DRM_MediaKeyRequestInfo info;
2591 unsigned char testData[241] = OFFREQUESTINFODATA;
2592 memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
2593 info.initDataLen = testData[3];
2594 info.type = MEDIA_KEY_TYPE_OFFLINE;
2595 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
2596 memcpy_s(info.initData, sizeof(testData), testData, sizeof(testData));
2597 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
2598 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
2599 info.optionsCount = 1;
2600 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
2601 EXPECT_EQ(errNo, DRM_ERR_OK);
2602 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
2603 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
2604 unsigned char testKeySessionResponse[12288] = OFFRESPONSE;
2605 int32_t testKeySessionResponseLen = 12288;
2606 if (g_isWisePlay) {
2607 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data,
2608 (uint32_t)mediaKeyRequest.dataLen, testKeySessionResponse, &testKeySessionResponseLen, 10);
2609 EXPECT_EQ(rett, 0);
2610 } else {
2611 testKeySessionResponseLen = 50;
2612 }errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
2613 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
2614 EXPECT_EQ(errNo, DRM_ERR_OK);
2615 DRM_OfflineMediaKeyStatus OfflineMediaKeyStatus = OFFLINE_MEDIA_KEY_STATUS_UNKNOWN;
2616 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(mediaKeySystem, onlineMediaKeyId, onlineMediaKeyIdLen,
2617 &OfflineMediaKeyStatus);
2618 EXPECT_EQ(OfflineMediaKeyStatus, 1);
2619 EXPECT_EQ(errNo, DRM_ERR_OK);
2620 unsigned char releaseRequest[12288] = { 0 }; // 12288:request len
2621 int32_t releaseRequestLen = 12288; // 12288:request len
2622 errNo = OH_MediaKeySession_GenerateOfflineReleaseRequest(mediaKeySession, onlineMediaKeyId, onlineMediaKeyIdLen,
2623 releaseRequest, &releaseRequestLen);
2624 EXPECT_EQ(errNo, DRM_ERR_OK);
2625 unsigned char testKeyReleaseResponse[50] = OFFRESPONSE;
2626 errNo = OH_MediaKeySession_ProcessOfflineReleaseResponse(mediaKeySession, onlineMediaKeyId, onlineMediaKeyIdLen,
2627 testKeyReleaseResponse, (int32_t)(sizeof(testKeyReleaseResponse)));
2628
2629 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(mediaKeySystem, onlineMediaKeyId, onlineMediaKeyIdLen,
2630 &OfflineMediaKeyStatus);
2631
2632 EXPECT_EQ(errNo, DRM_ERR_OK);
2633 errNo = OH_MediaKeySystem_ClearOfflineMediaKeys(mediaKeySystem, onlineMediaKeyId, onlineMediaKeyIdLen);
2634 EXPECT_EQ(errNo, DRM_ERR_OK);
2635 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(mediaKeySystem, onlineMediaKeyId, onlineMediaKeyIdLen,
2636 &OfflineMediaKeyStatus);
2637
2638 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
2639 EXPECT_EQ(errNo, DRM_ERR_OK);
2640 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
2641 EXPECT_EQ(errNo, DRM_ERR_OK);
2642 }
2643
2644 /*
2645 * Feature: Framework
2646 * Function: Processing device certificate response testing
2647 * Sub function: NA
2648 * Function point: NA
2649 * Environmental conditions: NA
2650 * Case Description: Processing Device Certificate Response Testing
2651 */
2652 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_ClearOfflineMediaKeysAbNormal_061, TestSize.Level0)
2653 {
2654 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
2655 MediaKeySystem *mediaKeySystem = nullptr;
2656 MediaKeySession *mediaKeySession = nullptr;
2657 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
2658 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
2659 EXPECT_NE(mediaKeySystem, nullptr);
2660 EXPECT_EQ(errNo, DRM_ERR_OK);
2661 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
2662 EXPECT_NE(mediaKeySession, nullptr);
2663 EXPECT_EQ(errNo, DRM_ERR_OK);
2664 // mediakeysession
2665 DRM_MediaKeyRequest mediaKeyRequest;
2666 DRM_MediaKeyRequestInfo info;
2667 unsigned char testData[241] = OFFREQUESTINFODATA;
2668 memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
2669 info.initDataLen = testData[3];
2670 info.type = MEDIA_KEY_TYPE_OFFLINE;
2671 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
2672 memcpy_s(info.initData, sizeof(testData), testData, sizeof(testData));
2673 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
2674 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
2675 info.optionsCount = 1;
2676 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
2677 EXPECT_EQ(errNo, DRM_ERR_OK);
2678 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
2679 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
2680 unsigned char testKeySessionResponse[12288] = OFFRESPONSE;
2681 int32_t testKeySessionResponseLen = 12288;
2682 if (g_isWisePlay) {
2683 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data,
2684 (uint32_t)mediaKeyRequest.dataLen, testKeySessionResponse, &testKeySessionResponseLen, 10);
2685 EXPECT_EQ(rett, 0);
2686 } else {
2687 testKeySessionResponseLen = 50;
2688 }errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
2689 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
2690 EXPECT_EQ(errNo, DRM_ERR_OK);
2691 DRM_OfflineMediaKeyStatus OfflineMediaKeyStatus = OFFLINE_MEDIA_KEY_STATUS_UNKNOWN;
2692 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(mediaKeySystem, onlineMediaKeyId, onlineMediaKeyIdLen,
2693 &OfflineMediaKeyStatus);
2694 EXPECT_EQ(OfflineMediaKeyStatus, 1);
2695 EXPECT_EQ(errNo, DRM_ERR_OK);
2696 unsigned char releaseRequest[12288] = { 0 }; // 12288:request len
2697 int32_t releaseRequestLen = 12288; // 12288:request len
2698 errNo = OH_MediaKeySession_GenerateOfflineReleaseRequest(mediaKeySession, onlineMediaKeyId, onlineMediaKeyIdLen,
2699 releaseRequest, &releaseRequestLen);
2700 EXPECT_EQ(errNo, DRM_ERR_OK);
2701 if (!g_isWisePlay) {
2702 unsigned char testKeyReleaseResponse[50] = OFFRESPONSE;
2703 errNo = OH_MediaKeySession_ProcessOfflineReleaseResponse(mediaKeySession, onlineMediaKeyId, onlineMediaKeyIdLen,
2704 testKeyReleaseResponse, (int32_t)(sizeof(testKeyReleaseResponse)));
2705 EXPECT_EQ(errNo, DRM_ERR_OK);
2706 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(mediaKeySystem, onlineMediaKeyId, onlineMediaKeyIdLen,
2707 &OfflineMediaKeyStatus);
2708 EXPECT_EQ(OfflineMediaKeyStatus, 2);
2709 EXPECT_EQ(errNo, DRM_ERR_OK);
2710 errNo = OH_MediaKeySystem_ClearOfflineMediaKeys(nullptr, onlineMediaKeyId, onlineMediaKeyIdLen);
2711 EXPECT_NE(errNo, DRM_ERR_OK);
2712 errNo = OH_MediaKeySystem_ClearOfflineMediaKeys(mediaKeySystem, nullptr, onlineMediaKeyIdLen);
2713 EXPECT_NE(errNo, DRM_ERR_OK);
2714 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(mediaKeySystem, onlineMediaKeyId, onlineMediaKeyIdLen,
2715 &OfflineMediaKeyStatus);
2716 EXPECT_EQ(OfflineMediaKeyStatus, 2);
2717 EXPECT_EQ(errNo, DRM_ERR_OK);
2718 }
2719 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
2720 EXPECT_EQ(errNo, DRM_ERR_OK);
2721 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
2722 EXPECT_EQ(errNo, DRM_ERR_OK);
2723 }
2724
2725 /*
2726 * Feature: Framework
2727 * Function: Processing device certificate response testing
2728 * Sub function: NA
2729 * Function point: NA
2730 * Environmental conditions: NA
2731 * Case Description: Processing Device Certificate Response Testing
2732 */
2733 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_RestoreOfflineMediaKeysNormal_062, TestSize.Level0)
2734 {
2735 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
2736 MediaKeySystem *mediaKeySystem = nullptr;
2737 MediaKeySession *mediaKeySession = nullptr;
2738 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
2739 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
2740 EXPECT_NE(mediaKeySystem, nullptr);
2741 EXPECT_EQ(errNo, DRM_ERR_OK);
2742 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
2743 EXPECT_NE(mediaKeySession, nullptr);
2744 EXPECT_EQ(errNo, DRM_ERR_OK);
2745 // mediakeysession
2746 DRM_MediaKeyRequest mediaKeyRequest;
2747 DRM_MediaKeyRequestInfo info;
2748 unsigned char testData[241] = OFFREQUESTINFODATA;
2749 info.initDataLen = testData[3];
2750 info.type = MEDIA_KEY_TYPE_OFFLINE;
2751 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
2752 memcpy_s(info.initData, sizeof(testData), testData, sizeof(testData));
2753 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
2754 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
2755 info.optionsCount = 1;
2756 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
2757 EXPECT_EQ(errNo, DRM_ERR_OK);
2758 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
2759 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
2760 unsigned char testKeySessionResponse[12288] = OFFRESPONSE;
2761 int32_t testKeySessionResponseLen = 12288;
2762 if (g_isWisePlay) {
2763 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data,
2764 (uint32_t)mediaKeyRequest.dataLen, testKeySessionResponse, &testKeySessionResponseLen, 10);
2765 EXPECT_EQ(rett, 0);
2766 } else {
2767 testKeySessionResponseLen = 50;
2768 }errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
2769 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
2770 EXPECT_EQ(errNo, DRM_ERR_OK);
2771 DRM_OfflineMediaKeyStatus OfflineMediaKeyStatus = OFFLINE_MEDIA_KEY_STATUS_UNKNOWN;
2772 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(mediaKeySystem, onlineMediaKeyId, onlineMediaKeyIdLen,
2773 &OfflineMediaKeyStatus);
2774 EXPECT_EQ(OfflineMediaKeyStatus, 1);
2775 EXPECT_EQ(errNo, DRM_ERR_OK);
2776 unsigned char releaseRequest[12288] = { 0 }; // 12288:request len
2777 int32_t releaseRequestLen = 12288; // 12288:request len
2778 errNo = OH_MediaKeySession_GenerateOfflineReleaseRequest(mediaKeySession, onlineMediaKeyId, onlineMediaKeyIdLen,
2779 releaseRequest, &releaseRequestLen);
2780 EXPECT_EQ(errNo, DRM_ERR_OK);
2781 if (!g_isWisePlay) {
2782 unsigned char testKeyReleaseResponse[50] = OFFRESPONSE;
2783 errNo = OH_MediaKeySession_ProcessOfflineReleaseResponse(mediaKeySession, onlineMediaKeyId, onlineMediaKeyIdLen,
2784 testKeyReleaseResponse, (int32_t)(sizeof(testKeyReleaseResponse)));
2785 EXPECT_EQ(errNo, DRM_ERR_OK);
2786 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(mediaKeySystem, onlineMediaKeyId, onlineMediaKeyIdLen,
2787 &OfflineMediaKeyStatus);
2788 EXPECT_EQ(OfflineMediaKeyStatus, 2);
2789 EXPECT_EQ(errNo, DRM_ERR_OK);
2790 errNo = OH_MediaKeySession_RestoreOfflineMediaKeys(mediaKeySession, onlineMediaKeyId, onlineMediaKeyIdLen);
2791 EXPECT_EQ(errNo, DRM_ERR_OK);
2792 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(mediaKeySystem, onlineMediaKeyId, onlineMediaKeyIdLen,
2793 &OfflineMediaKeyStatus);
2794 EXPECT_EQ(OfflineMediaKeyStatus, 1);
2795 EXPECT_EQ(errNo, DRM_ERR_OK);
2796 }
2797 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
2798 EXPECT_EQ(errNo, DRM_ERR_OK);
2799 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
2800 EXPECT_EQ(errNo, DRM_ERR_OK);
2801 }
2802 /*
2803 * Feature: Framework
2804 * Function: Processing device certificate response testing
2805 * Sub function: NA
2806 * Function point: NA
2807 * Environmental conditions: NA
2808 * Case Description: Processing Device Certificate Response Testing
2809 */
2810 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_RestoreOfflineMediaKeysAbNormal_063, TestSize.Level0)
2811 {
2812 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
2813 MediaKeySystem *mediaKeySystem = nullptr;
2814 MediaKeySession *mediaKeySession = nullptr;
2815 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
2816 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
2817 EXPECT_NE(mediaKeySystem, nullptr);
2818 EXPECT_EQ(errNo, DRM_ERR_OK);
2819 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
2820 EXPECT_NE(mediaKeySession, nullptr);
2821 EXPECT_EQ(errNo, DRM_ERR_OK);
2822 // mediakeysession
2823 DRM_MediaKeyRequest mediaKeyRequest;
2824 DRM_MediaKeyRequestInfo info;
2825 unsigned char testData[241] = OFFREQUESTINFODATA;
2826 memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
2827 info.initDataLen = 139;
2828 info.type = MEDIA_KEY_TYPE_OFFLINE;
2829 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
2830 memcpy_s(info.initData, 139, testData, 139);
2831 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
2832 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
2833 info.optionsCount = 1;
2834 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
2835 EXPECT_EQ(errNo, DRM_ERR_OK);
2836 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
2837 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
2838 unsigned char testKeySessionResponse[12288] = OFFRESPONSE;
2839 int32_t testKeySessionResponseLen = 12288;
2840 if (g_isWisePlay) {
2841 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data,
2842 (uint32_t)mediaKeyRequest.dataLen, testKeySessionResponse, &testKeySessionResponseLen, 10);
2843 EXPECT_EQ(rett, 0);
2844 } else {
2845 testKeySessionResponseLen = 50;
2846 }errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
2847 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
2848 EXPECT_EQ(errNo, DRM_ERR_OK);
2849 DRM_OfflineMediaKeyStatus OfflineMediaKeyStatus = OFFLINE_MEDIA_KEY_STATUS_UNKNOWN;
2850 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(mediaKeySystem, onlineMediaKeyId, onlineMediaKeyIdLen,
2851 &OfflineMediaKeyStatus);
2852 EXPECT_EQ(OfflineMediaKeyStatus, 1);
2853 EXPECT_EQ(errNo, DRM_ERR_OK);
2854 unsigned char releaseRequest[12288] = { 0 }; // 12288:request len
2855 int32_t releaseRequestLen = 12288; // 12288:request len
2856 errNo = OH_MediaKeySession_GenerateOfflineReleaseRequest(mediaKeySession, onlineMediaKeyId, onlineMediaKeyIdLen,
2857 releaseRequest, &releaseRequestLen);
2858 EXPECT_EQ(errNo, DRM_ERR_OK);
2859 if (!g_isWisePlay) {
2860 unsigned char testKeyReleaseResponse[50] = OFFRESPONSE;
2861 errNo = OH_MediaKeySession_ProcessOfflineReleaseResponse(mediaKeySession, onlineMediaKeyId, onlineMediaKeyIdLen,
2862 testKeyReleaseResponse, (int32_t)(sizeof(testKeyReleaseResponse)));
2863 EXPECT_EQ(errNo, DRM_ERR_OK);
2864 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(mediaKeySystem, onlineMediaKeyId, onlineMediaKeyIdLen,
2865 &OfflineMediaKeyStatus);
2866 EXPECT_EQ(OfflineMediaKeyStatus, 2);
2867 EXPECT_EQ(errNo, DRM_ERR_OK);
2868 errNo = OH_MediaKeySession_RestoreOfflineMediaKeys(nullptr, onlineMediaKeyId, onlineMediaKeyIdLen);
2869 EXPECT_NE(errNo, DRM_ERR_OK);
2870 errNo = OH_MediaKeySession_RestoreOfflineMediaKeys(mediaKeySession, nullptr, onlineMediaKeyIdLen);
2871 EXPECT_NE(errNo, DRM_ERR_OK);
2872 errNo = OH_MediaKeySession_RestoreOfflineMediaKeys(mediaKeySession, onlineMediaKeyId, 0);
2873 EXPECT_NE(errNo, DRM_ERR_OK);
2874 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(mediaKeySystem, onlineMediaKeyId, onlineMediaKeyIdLen,
2875 &OfflineMediaKeyStatus);
2876 EXPECT_EQ(OfflineMediaKeyStatus, 2);
2877 EXPECT_EQ(errNo, DRM_ERR_OK);
2878 }
2879 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
2880 EXPECT_EQ(errNo, DRM_ERR_OK);
2881 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
2882 EXPECT_EQ(errNo, DRM_ERR_OK);
2883 }
2884
2885 #define MAX_BUFF 139
filldata(DRM_MediaKeyRequestInfo * info)2886 static void filldata(DRM_MediaKeyRequestInfo *info)
2887 {
2888 unsigned char testData[139] = REQUESTINFODATA;
2889 memset_s(info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
2890 info->initDataLen = sizeof(testData);
2891 info->type = MEDIA_KEY_TYPE_ONLINE;
2892 memcpy_s(info->mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
2893 memcpy_s(info->initData, sizeof(testData), testData, sizeof(testData));
2894 memcpy_s(info->optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
2895 memcpy_s(info->optionData[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
2896 info->optionsCount = 1;
2897 }
2898
2899 const unsigned char TESTKEYRELEASERESPONSE[50] = {0x31, 0x64, 0x6E, 0x5A, 0x32, 0x4E, 0x57, 0x74, 0x76, 0x4D, 0x47,
2900 0x34, 0x34, 0x4E, 0x6A, 0x42, 0x30, 0x4D, 0x32, 0x77, 0x33, 0x4E,
2901 0x67, 0x3D, 0x3D, 0x3A, 0x59, 0x7A, 0x56, 0x78, 0x63, 0x48, 0x64,
2902 0x70, 0x61, 0x6D, 0x30, 0x34, 0x59, 0x57, 0x45, 0x34, 0x5A, 0x48,
2903 0x6B, 0x79, 0x4D, 0x67, 0x3D, 0x3D};
2904 const unsigned char TESTKEYSESSIONRESPONSE[50] = {0x31, 0x64, 0x6E, 0x5A, 0x32, 0x4E, 0x57, 0x74, 0x76, 0x4D, 0x47,
2905 0x34, 0x34, 0x4E, 0x6A, 0x42, 0x30, 0x4D, 0x32, 0x77, 0x33, 0x4E,
2906 0x67, 0x3D, 0x3D, 0x3A, 0x59, 0x7A, 0x56, 0x78, 0x63, 0x48, 0x64,
2907 0x70, 0x61, 0x6D, 0x30, 0x34, 0x59, 0x57, 0x45, 0x34, 0x5A, 0x48,
2908 0x6B, 0x79, 0x4D, 0x67, 0x3D, 0x3D};
2909
filltest3(MediaKeySystem * mediaKeySystem,MediaKeySession * mediaKeySession,unsigned char * keySystemResponse,int32_t KeySystemResponseLen)2910 static void filltest3(MediaKeySystem *mediaKeySystem,
2911 MediaKeySession *mediaKeySession, unsigned char *keySystemResponse, int32_t KeySystemResponseLen)
2912 {
2913 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
2914 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
2915 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
2916 errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, keySystemResponse,
2917 KeySystemResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
2918 EXPECT_EQ(errNo, DRM_ERR_OK);
2919 DRM_OfflineMediaKeyStatus OfflineMediaKeyStatus = OFFLINE_MEDIA_KEY_STATUS_UNKNOWN;
2920 if (!g_isWisePlay) {
2921 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(mediaKeySystem, onlineMediaKeyId, onlineMediaKeyIdLen,
2922 &OfflineMediaKeyStatus);
2923 EXPECT_EQ(OfflineMediaKeyStatus, 1);
2924 EXPECT_EQ(errNo, DRM_ERR_OK);
2925 unsigned char releaseRequest[12288] = { 0 }; // 12288:request len
2926 int32_t releaseRequestLen = 12288; // 12288:request len
2927 errNo = OH_MediaKeySession_GenerateOfflineReleaseRequest(mediaKeySession, onlineMediaKeyId, onlineMediaKeyIdLen,
2928 releaseRequest, &releaseRequestLen);
2929 EXPECT_EQ(errNo, DRM_ERR_OK);
2930 errNo = OH_MediaKeySession_ProcessOfflineReleaseResponse(mediaKeySession, onlineMediaKeyId, onlineMediaKeyIdLen,
2931 (uint8_t *)(TESTKEYRELEASERESPONSE), (int32_t)(sizeof(TESTKEYRELEASERESPONSE)));
2932 EXPECT_EQ(errNo, DRM_ERR_OK);
2933 }
2934 DRM_ContentProtectionLevel sessionContentProtectionLevel = CONTENT_PROTECTION_LEVEL_UNKNOWN;
2935 errNo = OH_MediaKeySession_GetContentProtectionLevel(mediaKeySession, &sessionContentProtectionLevel);
2936 EXPECT_EQ(errNo, DRM_ERR_OK);
2937 errNo = OH_MediaKeySession_GetContentProtectionLevel(nullptr, &sessionContentProtectionLevel);
2938 EXPECT_NE(errNo, DRM_ERR_OK);
2939 errNo = OH_MediaKeySession_GetContentProtectionLevel(mediaKeySession, nullptr);
2940 EXPECT_NE(errNo, DRM_ERR_OK);
2941 }
2942
2943 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GetContentProtectionLevelNormal_064, TestSize.Level0)
2944 {
2945 MediaKeySystem *mediaKeySystem = nullptr;
2946 MediaKeySession *mediaKeySession = nullptr;
2947 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
2948 Drm_ErrCode errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
2949 EXPECT_NE(mediaKeySystem, nullptr);
2950 EXPECT_EQ(errNo, DRM_ERR_OK);
2951 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
2952 EXPECT_NE(mediaKeySession, nullptr);
2953 EXPECT_EQ(errNo, DRM_ERR_OK);
2954 // mediakeysession
2955 DRM_MediaKeyRequest mediaKeyRequest;
2956 DRM_MediaKeyRequestInfo info;
2957 filldata(&info);
2958 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
2959 int32_t KeySystemResponseLen = 12288;
2960 unsigned char KeySystemResponse[12288] = OFFRESPONSE;
2961 if (g_isWisePlay) {
2962 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data,
2963 (uint32_t)mediaKeyRequest.dataLen, KeySystemResponse, &KeySystemResponseLen, 10);
2964 EXPECT_EQ(rett, 0);
2965 } else {
2966 KeySystemResponseLen = 50;
2967 }
2968 EXPECT_EQ(errNo, DRM_ERR_OK);
2969 filltest3(mediaKeySystem, mediaKeySession, KeySystemResponse, KeySystemResponseLen);
2970 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
2971 mediaKeySession = nullptr;
2972 EXPECT_EQ(errNo, DRM_ERR_OK);
2973 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
2974 mediaKeySession = nullptr;
2975 EXPECT_NE(errNo, DRM_ERR_OK);
2976 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
2977 mediaKeySystem = nullptr;
2978 EXPECT_EQ(errNo, DRM_ERR_OK);
2979 }
2980
2981 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GetContentProtectionLevelNormal_065, TestSize.Level0)
2982 {
2983 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
2984 MediaKeySystem *mediaKeySystem = nullptr;
2985 MediaKeySession *mediaKeySession = nullptr;
2986 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
2987 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
2988 EXPECT_NE(mediaKeySystem, nullptr);
2989 EXPECT_EQ(errNo, DRM_ERR_OK);
2990 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
2991 EXPECT_NE(mediaKeySession, nullptr);
2992 EXPECT_EQ(errNo, DRM_ERR_OK);
2993 errNo = OH_MediaKeySystem_SetMediaKeySystemCallback(mediaKeySystem, &TestSystemEventCallBack);
2994 EXPECT_EQ(errNo, DRM_ERR_OK);
2995 MediaKeySession_Callback sessionCallback = { &TestSessoinEventCallBack, &TestSessoinKeyChangeCallBack };
2996 errNo = OH_MediaKeySession_SetMediaKeySessionCallback(mediaKeySession, &sessionCallback);
2997 EXPECT_EQ(errNo, DRM_ERR_OK);
2998 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
2999 EXPECT_EQ(errNo, DRM_ERR_OK);
3000 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
3001 EXPECT_EQ(errNo, DRM_ERR_OK);
3002 }
3003
3004 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_DecryptModuleNormal_066, TestSize.Level0)
3005 {
3006 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3007 MediaKeySystem *mediaKeySystem = nullptr;
3008 MediaKeySession *mediaKeySession = nullptr;
3009 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
3010 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
3011 EXPECT_NE(mediaKeySystem, nullptr);
3012 EXPECT_EQ(errNo, DRM_ERR_OK);
3013 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
3014 EXPECT_NE(mediaKeySession, nullptr);
3015 EXPECT_EQ(errNo, DRM_ERR_OK);
3016 // mediakeysession
3017 DRM_MediaKeyRequest mediaKeyRequest;
3018 DRM_MediaKeyRequestInfo info;
3019 filldata(&info);
3020 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
3021 EXPECT_EQ(errNo, DRM_ERR_OK);
3022 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
3023 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
3024 unsigned char testKeySessionResponse[12288] = OFFRESPONSE;
3025 int32_t testKeySessionResponseLen = 12288;
3026 if (g_isWisePlay) {
3027 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data,
3028 (uint32_t)mediaKeyRequest.dataLen, testKeySessionResponse, &testKeySessionResponseLen, 10);
3029 EXPECT_EQ(rett, 0);
3030 } else {
3031 testKeySessionResponseLen = 50;
3032 }
3033 errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
3034 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
3035 errNo = OH_MediaKeySystem_SetMediaKeySystemCallback(mediaKeySystem, &TestSystemEventCallBack);
3036 EXPECT_EQ(errNo, DRM_ERR_OK);
3037 if (mediaKeySession) {
3038 MediaKeySessionObject *sessionObject = reinterpret_cast<MediaKeySessionObject *>(mediaKeySession);
3039 sptr<IMediaKeySessionService> SessionServiceProxy =
3040 sessionObject->sessionImpl_->GetMediaKeySessionServiceProxy();
3041 sptr<IMediaDecryptModuleService> decryptModule;
3042 SessionServiceProxy->GetMediaDecryptModule(decryptModule);
3043 MessageParcel data;
3044 IMediaDecryptModuleService::DrmBuffer srcBuffer;
3045 IMediaDecryptModuleService::DrmBuffer dstBuffer;
3046 bool secureDecodrtState = false;
3047 IMediaDecryptModuleService::CryptInfo cryptInfo;
3048 decryptModule->DecryptMediaData(secureDecodrtState, cryptInfo, srcBuffer, dstBuffer);
3049 decryptModule->Release();
3050 sptr<MediaKeySessionImplCallback> callback = sessionObject->sessionImpl_->GetApplicationCallback();
3051 callback->~MediaKeySessionImplCallback();
3052 }
3053 if (mediaKeySystem) {
3054 MediaKeySystemObject *systemObject = reinterpret_cast<MediaKeySystemObject *>(mediaKeySystem);
3055 sptr<IMediaKeySystemServiceCallback> serviceCallback =
3056 new (std::nothrow) MediaKeySystemCallback(systemObject->systemImpl_);
3057 sptr<MediaKeySystemCallback> Callback = new (std::nothrow) MediaKeySystemCallback(systemObject->systemImpl_);
3058 const std::vector<uint8_t> data = { 0x01 };
3059 MessageParcel data1;
3060 MessageParcel reply;
3061 MessageOption option;
3062 Callback->OnRemoteRequest(MEDIA_KEY_SYSTEM_SERVICE_CALLBACK_SEND_EVENT, data1, reply, option);
3063 serviceCallback->SendEvent(OHOS::DrmStandard::DrmEventType::DRM_EVENT_PROVISION_REQUIRED, 1, data);
3064 OHOS::sptr<OHOS::DrmStandard::MediaKeySystemCallbackCapi> SystemCallbackCapi =
3065 new (std::nothrow) MediaKeySystemCallbackCapi();
3066 SystemCallbackCapi->SetCallbackReference(&TestSystemEventCallBack);
3067 SystemCallbackCapi->SendEvent("1", 1, data);
3068 sptr<MediaKeySystemImplCallback> SystemImplCallba = systemObject->systemImpl_->GetApplicationCallback();
3069 SystemImplCallba->~MediaKeySystemImplCallback();
3070 }
3071 EXPECT_EQ(errNo, DRM_ERR_OK);
3072 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
3073 EXPECT_EQ(errNo, DRM_ERR_OK);
3074 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
3075 EXPECT_EQ(errNo, DRM_ERR_OK);
3076 }
3077
3078 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_DecryptModuleNormal_067, TestSize.Level0)
3079 {
3080 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3081 int32_t releaseRequestLen = 12288; // 12288:request len
3082 unsigned char releaseRequest[12288] = { 0 }; // 12288:request len
3083 uint8_t mediaKeyIdToRelease;
3084 MediaKeySession *mediaKeySession = (MediaKeySession *)&mediaKeyIdToRelease;
3085 errNo = OH_MediaKeySession_GenerateOfflineReleaseRequest(mediaKeySession, nullptr, 11, releaseRequest, // 11:len
3086 &releaseRequestLen);
3087 EXPECT_NE(errNo, DRM_ERR_OK);
3088 errNo = OH_MediaKeySession_GenerateOfflineReleaseRequest(mediaKeySession, (uint8_t *)&releaseRequestLen, 0,
3089 releaseRequest, &releaseRequestLen);
3090 EXPECT_NE(errNo, DRM_ERR_OK);
3091 unsigned char testKeyReleaseResponse[50] = OFFRESPONSE;
3092 errNo = OH_MediaKeySession_ProcessOfflineReleaseResponse(mediaKeySession, (uint8_t *)&releaseRequestLen, 0,
3093 testKeyReleaseResponse, (int32_t)(sizeof(testKeyReleaseResponse)));
3094 EXPECT_NE(errNo, DRM_ERR_OK);
3095 errNo = OH_MediaKeySession_ProcessOfflineReleaseResponse(mediaKeySession, nullptr, 11, // 11:len
3096 testKeyReleaseResponse, (int32_t)(sizeof(testKeyReleaseResponse)));
3097 EXPECT_NE(errNo, DRM_ERR_OK);
3098 errNo = OH_MediaKeySession_ProcessOfflineReleaseResponse(mediaKeySession, (uint8_t *)&releaseRequestLen,
3099 11, nullptr, (int32_t)(sizeof(testKeyReleaseResponse))); // 11:len
3100 EXPECT_NE(errNo, DRM_ERR_OK);
3101 errNo = OH_MediaKeySession_ProcessOfflineReleaseResponse(mediaKeySession, (uint8_t *)&releaseRequestLen,
3102 11, testKeyReleaseResponse, 0);
3103 EXPECT_NE(errNo, DRM_ERR_OK);
3104 }
3105
3106 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_RestoreOfflineMediaKeysAbNormal_068, TestSize.Level0)
3107 {
3108 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3109 unsigned char onlineMediaKeyId[88]; // 88:keyId len
3110 uint32_t onlineMediaKeyIdLen = 88; // 88:keyId len
3111 MediaKeySession *mediaKeySession = (MediaKeySession *)&onlineMediaKeyId;
3112 errNo = OH_MediaKeySession_RestoreOfflineMediaKeys(mediaKeySession, onlineMediaKeyId, 0);
3113 EXPECT_NE(errNo, DRM_ERR_OK);
3114 errNo = OH_MediaKeySession_RestoreOfflineMediaKeys(mediaKeySession, nullptr, onlineMediaKeyIdLen);
3115 EXPECT_NE(errNo, DRM_ERR_OK);
3116 }
3117
3118 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_SetMediaKeySessionCallbackNormal_069, TestSize.Level0)
3119 {
3120 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3121 MediaKeySystem *mediaKeySystem = nullptr;
3122 MediaKeySession *mediaKeySession = nullptr;
3123 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
3124 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
3125 EXPECT_NE(mediaKeySystem, nullptr);
3126 EXPECT_EQ(errNo, DRM_ERR_OK);
3127 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
3128 EXPECT_NE(mediaKeySession, nullptr);
3129 EXPECT_EQ(errNo, DRM_ERR_OK);
3130 // test 3: system callback
3131 errNo = OH_MediaKeySystem_SetMediaKeySystemCallback(nullptr, &TestSystemEventCallBack);
3132 EXPECT_NE(errNo, DRM_ERR_OK);
3133 errNo = OH_MediaKeySystem_SetMediaKeySystemCallback(mediaKeySystem, nullptr);
3134 EXPECT_NE(errNo, DRM_ERR_OK);
3135 MediaKeySession_Callback sessionCallback = { &TestSessoinEventCallBack, &TestSessoinKeyChangeCallBack };
3136 errNo = OH_MediaKeySession_SetMediaKeySessionCallback(mediaKeySession, nullptr);
3137 EXPECT_NE(errNo, DRM_ERR_OK);
3138 errNo = OH_MediaKeySession_SetMediaKeySessionCallback(nullptr, &sessionCallback);
3139 EXPECT_NE(errNo, DRM_ERR_OK);
3140 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
3141 EXPECT_EQ(errNo, DRM_ERR_OK);
3142 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
3143 EXPECT_EQ(errNo, DRM_ERR_OK);
3144 }
3145
3146 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_CreateMediaKeySessionAbNormal_070, TestSize.Level0)
3147 {
3148 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3149 MediaKeySystem *mediaKeySystem = nullptr;
3150 MediaKeySession *mediaKeySession = nullptr;
3151 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
3152 errNo = OH_MediaKeySystem_Create(nullptr, &mediaKeySystem);
3153 EXPECT_EQ(mediaKeySystem, nullptr);
3154 errNo = OH_MediaKeySystem_Create(GetUuid(), nullptr);
3155 EXPECT_EQ(mediaKeySystem, nullptr);
3156 errNo = OH_MediaKeySystem_CreateMediaKeySession(nullptr, &contentProtectionLevel, &mediaKeySession);
3157 EXPECT_EQ(mediaKeySession, nullptr);
3158 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, nullptr, &mediaKeySession);
3159 EXPECT_EQ(mediaKeySession, nullptr);
3160 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, nullptr);
3161 EXPECT_EQ(mediaKeySession, nullptr);
3162 uint8_t mediaKeyIdToClear;
3163 errNo = OH_MediaKeySystem_ClearOfflineMediaKeys(mediaKeySystem, (uint8_t *)&mediaKeyIdToClear, 0);
3164 EXPECT_NE(errNo, DRM_ERR_OK);
3165 errNo = OH_MediaKeySystem_ClearOfflineMediaKeys(mediaKeySystem, nullptr, 11); // 11:len
3166 EXPECT_NE(errNo, DRM_ERR_OK);
3167 errNo = OH_MediaKeySession_Destroy(nullptr);
3168 EXPECT_NE(errNo, DRM_ERR_OK);
3169 errNo = OH_MediaKeySystem_Destroy(nullptr);
3170 EXPECT_NE(errNo, DRM_ERR_OK);
3171 }
3172
3173 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_MediaKeySystemDestroyAbNormal_071, TestSize.Level0)
3174 {
3175 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3176 MediaKeySystem *mediaKeySystem = nullptr;
3177 MediaKeySession *mediaKeySession = nullptr;
3178 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
3179 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
3180 EXPECT_NE(mediaKeySystem, nullptr);
3181 EXPECT_EQ(errNo, DRM_ERR_OK);
3182 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
3183 EXPECT_NE(mediaKeySession, nullptr);
3184 EXPECT_EQ(errNo, DRM_ERR_OK);
3185 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
3186 EXPECT_EQ(errNo, DRM_ERR_OK);
3187 if (mediaKeySystem) {
3188 MediaKeySystemObject *systemObject = reinterpret_cast<MediaKeySystemObject *>(mediaKeySystem);
3189 systemObject->systemImpl_->~MediaKeySystemImpl();
3190 }
3191 errNo =
3192 OH_MediaKeySystem_SetConfigurationString(mediaKeySystem, "testConfigurationString", "testConfigurationString");
3193 EXPECT_NE(errNo, DRM_ERR_OK);
3194 char value[32];
3195 errNo = OH_MediaKeySystem_GetConfigurationString(mediaKeySystem, "testConfigurationString", value, 32);
3196 EXPECT_NE(errNo, DRM_ERR_OK);
3197 unsigned char testArray[5] = {1, 2, 3, 4, 5};
3198 errNo = OH_MediaKeySystem_SetConfigurationByteArray(mediaKeySystem, "testConfigurationByteArray", testArray,
3199 sizeof(testArray));
3200 EXPECT_NE(errNo, DRM_ERR_OK);
3201 unsigned char configByteArray[32];
3202 int32_t byteArrayLen = 32;
3203 errNo = OH_MediaKeySystem_GetConfigurationByteArray(mediaKeySystem, "testConfigurationByteArray", configByteArray,
3204 &byteArrayLen);
3205 EXPECT_NE(errNo, DRM_ERR_OK);
3206 DRM_Statistics statistics;
3207 errNo = OH_MediaKeySystem_GetStatistics(mediaKeySystem, &statistics);
3208 EXPECT_NE(errNo, DRM_ERR_OK);
3209 contentProtectionLevel = CONTENT_PROTECTION_LEVEL_UNKNOWN;
3210 errNo = OH_MediaKeySystem_GetMaxContentProtectionLevel(mediaKeySystem, &contentProtectionLevel);
3211 }
3212
3213 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_OH_MediaKeySystemDestroyAbNormal2_072, TestSize.Level0)
3214 {
3215 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3216 MediaKeySystem *mediaKeySystem = nullptr;
3217 MediaKeySession *mediaKeySession = nullptr;
3218 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
3219 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
3220 EXPECT_NE(mediaKeySystem, nullptr);
3221 EXPECT_EQ(errNo, DRM_ERR_OK);
3222 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
3223 EXPECT_NE(mediaKeySession, nullptr);
3224 EXPECT_EQ(errNo, DRM_ERR_OK);
3225 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
3226 EXPECT_EQ(errNo, DRM_ERR_OK);
3227 if (mediaKeySystem) {
3228 MediaKeySystemObject *systemObject = reinterpret_cast<MediaKeySystemObject *>(mediaKeySystem);
3229 systemObject->systemImpl_->~MediaKeySystemImpl();
3230 }
3231 DRM_CertificateStatus certStatus = CERT_STATUS_INVALID;
3232 errNo = OH_MediaKeySystem_GetCertificateStatus(mediaKeySystem, &certStatus);
3233 errNo = OH_MediaKeySystem_SetMediaKeySystemCallback(mediaKeySystem, &TestSystemEventCallBack);
3234 EXPECT_EQ(errNo, DRM_ERR_OK);
3235 contentProtectionLevel = CONTENT_PROTECTION_LEVEL_UNKNOWN;
3236 MediaKeySession *OH_MediaKeySession2 = nullptr;
3237 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &OH_MediaKeySession2);
3238 EXPECT_EQ(OH_MediaKeySession2, nullptr);
3239 EXPECT_NE(errNo, DRM_ERR_OK);
3240 DRM_OfflineMediakeyIdArray offlineMediaKeyIds;
3241 errNo = OH_MediaKeySystem_GetOfflineMediaKeyIds(mediaKeySystem, &offlineMediaKeyIds);
3242 DRM_OfflineMediaKeyStatus OfflineMediaKeyStatus = OFFLINE_MEDIA_KEY_STATUS_UNKNOWN;
3243 errNo = OH_MediaKeySystem_GetOfflineMediaKeyStatus(mediaKeySystem, (uint8_t *)&OfflineMediaKeyStatus, 1,
3244 &OfflineMediaKeyStatus);
3245 errNo = OH_MediaKeySystem_ClearOfflineMediaKeys(mediaKeySystem, (uint8_t *)&OfflineMediaKeyStatus, 1);
3246 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
3247 }
3248
3249 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_MediaKeySessionDestroyAbNormal_073, TestSize.Level0)
3250 {
3251 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3252 MediaKeySystem *mediaKeySystem = nullptr;
3253 MediaKeySession *mediaKeySession = nullptr;
3254 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
3255 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
3256 EXPECT_NE(mediaKeySystem, nullptr);
3257 EXPECT_EQ(errNo, DRM_ERR_OK);
3258 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
3259 EXPECT_NE(mediaKeySession, nullptr);
3260 EXPECT_EQ(errNo, DRM_ERR_OK);
3261 if (mediaKeySession) {
3262 MediaKeySessionObject *sessionObject = reinterpret_cast<MediaKeySessionObject *>(mediaKeySession);
3263 sessionObject->sessionImpl_->~MediaKeySessionImpl();
3264 }
3265 DRM_MediaKeyRequest mediaKeyRequest;
3266 DRM_MediaKeyRequestInfo info;
3267 unsigned char testData[139] = REQUESTINFODATA;
3268 memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo));
3269 info.initDataLen = sizeof(testData);
3270 info.type = MEDIA_KEY_TYPE_ONLINE;
3271 memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4"));
3272 memcpy_s(info.initData, sizeof(testData), testData, sizeof(testData));
3273 memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName"));
3274 memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue"));
3275 info.optionsCount = 1;
3276 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
3277 EXPECT_NE(errNo, DRM_ERR_OK);
3278 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
3279 EXPECT_EQ(errNo, DRM_ERR_OK);
3280 }
3281
3282 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_MediaKeySessionDestroyAbNormal2_074, TestSize.Level0)
3283 {
3284 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3285 MediaKeySystem *mediaKeySystem = nullptr;
3286 MediaKeySession *mediaKeySession = nullptr;
3287 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
3288 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
3289 EXPECT_NE(mediaKeySystem, nullptr);
3290 EXPECT_EQ(errNo, DRM_ERR_OK);
3291 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
3292 EXPECT_NE(mediaKeySession, nullptr);
3293 EXPECT_EQ(errNo, DRM_ERR_OK);
3294 if (mediaKeySession) {
3295 MediaKeySessionObject *sessionObject = reinterpret_cast<MediaKeySessionObject *>(mediaKeySession);
3296 sessionObject->sessionImpl_->~MediaKeySessionImpl();
3297 }
3298 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
3299 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
3300 unsigned char testKeySessionResponse[12288] = { 0 };
3301 int32_t testKeySessionResponseLen = 12288;
3302 errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
3303 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
3304 EXPECT_NE(errNo, DRM_ERR_OK);
3305 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
3306 EXPECT_EQ(errNo, DRM_ERR_OK);
3307 }
3308
3309 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_MediaKeySession_DestroyAbNormal3_075, TestSize.Level0)
3310 {
3311 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3312 MediaKeySystem *mediaKeySystem = nullptr;
3313 MediaKeySession *mediaKeySession = nullptr;
3314 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
3315 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
3316 EXPECT_NE(mediaKeySystem, nullptr);
3317 EXPECT_EQ(errNo, DRM_ERR_OK);
3318 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
3319 EXPECT_NE(mediaKeySession, nullptr);
3320 EXPECT_EQ(errNo, DRM_ERR_OK);
3321 if (mediaKeySession) {
3322 MediaKeySessionObject *sessionObject = reinterpret_cast<MediaKeySessionObject *>(mediaKeySession);
3323 sessionObject->sessionImpl_->~MediaKeySessionImpl();
3324 }
3325 DRM_MediaKeyStatus mediaKeyStatus;
3326 errNo = OH_MediaKeySession_CheckMediaKeyStatus(mediaKeySession, &mediaKeyStatus);
3327 EXPECT_NE(errNo, DRM_ERR_OK);
3328 errNo = OH_MediaKeySession_ClearMediaKeys(mediaKeySession);
3329 EXPECT_NE(errNo, DRM_ERR_OK);
3330 unsigned char releaseRequest[12288] = { 0 }; // 12288:request len
3331 int32_t releaseRequestLen = 12288; // 12288:request len
3332 errNo = OH_MediaKeySession_GenerateOfflineReleaseRequest(mediaKeySession, (uint8_t *)GetUuid(),
3333 11, releaseRequest, &releaseRequestLen); // 11:len
3334 EXPECT_NE(errNo, DRM_ERR_OK);
3335 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
3336 EXPECT_EQ(errNo, DRM_ERR_OK);
3337 }
3338
3339 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_MediaKeySessionDestroyAbNormal4_076, TestSize.Level0)
3340 {
3341 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3342 MediaKeySystem *mediaKeySystem = nullptr;
3343 MediaKeySession *mediaKeySession = nullptr;
3344 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
3345 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
3346 EXPECT_NE(mediaKeySystem, nullptr);
3347 EXPECT_EQ(errNo, DRM_ERR_OK);
3348 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
3349 EXPECT_NE(mediaKeySession, nullptr);
3350 EXPECT_EQ(errNo, DRM_ERR_OK);
3351 if (mediaKeySession) {
3352 MediaKeySessionObject *sessionObject = reinterpret_cast<MediaKeySessionObject *>(mediaKeySession);
3353 sessionObject->sessionImpl_->~MediaKeySessionImpl();
3354 }
3355 unsigned char testKeyReleaseResponse[50] = OFFRESPONSE;
3356 errNo = OH_MediaKeySession_ProcessOfflineReleaseResponse(mediaKeySession, (uint8_t *)GetUuid(),
3357 11, testKeyReleaseResponse, (int32_t)(sizeof(testKeyReleaseResponse))); // 11:len
3358 EXPECT_NE(errNo, DRM_ERR_OK);
3359 errNo = OH_MediaKeySession_RestoreOfflineMediaKeys(mediaKeySession, (unsigned char *)GetUuid(), 1);
3360 EXPECT_NE(errNo, DRM_ERR_OK);
3361 DRM_ContentProtectionLevel sessionContentProtectionLevel = CONTENT_PROTECTION_LEVEL_UNKNOWN;
3362 errNo = OH_MediaKeySession_GetContentProtectionLevel(mediaKeySession, &sessionContentProtectionLevel);
3363 EXPECT_NE(errNo, DRM_ERR_OK);
3364 bool requireSecureDecoder;
3365 errNo = OH_MediaKeySession_RequireSecureDecoderModule(mediaKeySession, "video/mp4", &requireSecureDecoder);
3366 EXPECT_NE(errNo, DRM_ERR_OK);
3367 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
3368 EXPECT_EQ(errNo, DRM_ERR_OK);
3369 }
3370
3371 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_SetCallbackNormal_077, TestSize.Level0)
3372 {
3373 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3374 MediaKeySystem *mediaKeySystem = nullptr;
3375 MediaKeySession *mediaKeySession = nullptr;
3376 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
3377 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
3378 EXPECT_NE(mediaKeySystem, nullptr);
3379 errNo = OH_MediaKeySystem_SetMediaKeySystemCallback(mediaKeySystem, &TestSystemEventCallBack);
3380 EXPECT_EQ(errNo, DRM_ERR_OK);
3381 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
3382 EXPECT_NE(mediaKeySession, nullptr);
3383 EXPECT_EQ(errNo, DRM_ERR_OK);
3384 MediaKeySession_Callback sessionCallback = { &TestSessoinEventCallBack, &TestSessoinKeyChangeCallBack };
3385 errNo = OH_MediaKeySession_SetMediaKeySessionCallback(mediaKeySession, &sessionCallback);
3386 EXPECT_EQ(errNo, DRM_ERR_OK);
3387 // mediakeysession
3388 DRM_MediaKeyRequest mediaKeyRequest;
3389 DRM_MediaKeyRequestInfo info;
3390 filldata(&info);
3391 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
3392 EXPECT_EQ(errNo, DRM_ERR_OK);
3393 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
3394 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
3395 unsigned char testKeySessionResponse[12288] = OFFRESPONSE;
3396 int32_t testKeySessionResponseLen = 12288;
3397 if (g_isWisePlay) {
3398 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data, (uint32_t)mediaKeyRequest.dataLen,
3399 testKeySessionResponse, &testKeySessionResponseLen, 10);
3400 EXPECT_EQ(rett, 0);} else {
3401 testKeySessionResponseLen = 50;
3402 }errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
3403 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
3404 EXPECT_EQ(errNo, DRM_ERR_OK);
3405 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
3406 EXPECT_EQ(errNo, DRM_ERR_OK);
3407 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
3408 EXPECT_EQ(errNo, DRM_ERR_OK);
3409 }
3410
3411 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_SetCallbackNormal2_078, TestSize.Level0)
3412 {
3413 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3414 MediaKeySystem *mediaKeySystem = nullptr;
3415 MediaKeySession *mediaKeySession = nullptr;
3416 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
3417 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
3418 EXPECT_NE(mediaKeySystem, nullptr);
3419 errNo = OH_MediaKeySystem_SetMediaKeySystemCallback(mediaKeySystem, &TestSystemEventCallBack);
3420 EXPECT_EQ(errNo, DRM_ERR_OK);
3421 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
3422 EXPECT_NE(mediaKeySession, nullptr);
3423 EXPECT_EQ(errNo, DRM_ERR_OK);
3424 MediaKeySession_Callback sessionCallback = { &TestSessoinEventCallBack, &TestSessoinKeyChangeCallBack };
3425 errNo = OH_MediaKeySession_SetMediaKeySessionCallback(mediaKeySession, &sessionCallback);
3426 EXPECT_EQ(errNo, DRM_ERR_OK);
3427 // mediakeysession
3428 DRM_MediaKeyRequest mediaKeyRequest;
3429 DRM_MediaKeyRequestInfo info;
3430 filldata(&info);
3431 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
3432 EXPECT_EQ(errNo, DRM_ERR_OK);
3433 unsigned char onlineMediaKeyId[64] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
3434 unsigned char testKeySessionResponse[2] = {0x07, 0x22};
3435 int32_t onlineMediaKeyIdLen = 64; // 64:OFFLINE_MEDIA_KEY_ID_LEN
3436 errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
3437 (int32_t)(sizeof(testKeySessionResponse)), onlineMediaKeyId, &onlineMediaKeyIdLen);
3438 EXPECT_NE(errNo, DRM_ERR_OK);
3439 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
3440 EXPECT_EQ(errNo, DRM_ERR_OK);
3441 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
3442 EXPECT_EQ(errNo, DRM_ERR_OK);
3443 }
3444
3445 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_ProcessMediaKeyResponseAbNormal_079, TestSize.Level0)
3446 {
3447 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3448 MediaKeySystem *mediaKeySystem = nullptr;
3449 MediaKeySession *mediaKeySession = nullptr;
3450 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
3451 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
3452 EXPECT_NE(mediaKeySystem, nullptr);
3453 EXPECT_EQ(errNo, DRM_ERR_OK);
3454 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
3455 EXPECT_NE(mediaKeySession, nullptr);
3456 EXPECT_EQ(errNo, DRM_ERR_OK);
3457 // mediakeysession
3458 DRM_MediaKeyRequest mediaKeyRequest;
3459 DRM_MediaKeyRequestInfo info;
3460 filldata(&info);
3461 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
3462 EXPECT_EQ(errNo, DRM_ERR_OK);
3463 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
3464 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
3465 unsigned char testKeySessionResponse[12288] = OFFRESPONSE;
3466 int32_t testKeySessionResponseLen = 12288;
3467 if (g_isWisePlay) {
3468 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data, (uint32_t)mediaKeyRequest.dataLen,
3469 testKeySessionResponse, &testKeySessionResponseLen, 10);
3470 EXPECT_EQ(rett, 0);
3471 } else {
3472 testKeySessionResponseLen = 50;
3473 }errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
3474 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
3475 EXPECT_EQ(errNo, DRM_ERR_OK);
3476 unsigned char releaseRequest[12288] = { 0 }; // 12288:request len
3477 int32_t releaseRequestLen = 12288; // 12288:request len
3478 errNo = OH_MediaKeySession_GenerateOfflineReleaseRequest(mediaKeySession, (uint8_t *)("onlineMediaKeyId"),
3479 2, releaseRequest, &releaseRequestLen); // 2:len
3480 EXPECT_EQ(errNo, DRM_ERR_OK);
3481 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
3482 EXPECT_EQ(errNo, DRM_ERR_OK);
3483 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
3484 EXPECT_EQ(errNo, DRM_ERR_OK);
3485 }
3486
3487 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_ProcessOfflineReleaseResponseAbNormal_080, TestSize.Level0)
3488 {
3489 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3490 MediaKeySystem *mediaKeySystem = nullptr;
3491 MediaKeySession *mediaKeySession = nullptr;
3492 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
3493 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
3494 EXPECT_NE(mediaKeySystem, nullptr);
3495 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
3496 // mediakeysession
3497 DRM_MediaKeyRequest mediaKeyRequest;
3498 DRM_MediaKeyRequestInfo info;
3499 filldata(&info);
3500 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
3501 EXPECT_EQ(errNo, DRM_ERR_OK);
3502 unsigned char onlineMediaKeyId[64] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
3503 int32_t onlineMediaKeyIdLen = 64; // 64:OFFLINE_MEDIA_KEY_ID_LEN
3504 int32_t KeySystemResponseLen = 12288;
3505 unsigned char KeySystemResponse[12288] = OFFRESPONSE;
3506 if (g_isWisePlay) {
3507 int rett = HttpPost(LICENSE_URL, mediaKeyRequest.data,
3508 (uint32_t)mediaKeyRequest.dataLen, KeySystemResponse, &KeySystemResponseLen, 10);
3509 EXPECT_EQ(rett, 0);
3510 } else {
3511 KeySystemResponseLen = 50;
3512 }
3513 errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, KeySystemResponse,
3514 KeySystemResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
3515 EXPECT_EQ(errNo, DRM_ERR_OK);
3516 unsigned char releaseRequest[12288] = { 0 }; // 12288:request len
3517 int32_t releaseRequestLen = 12288; // 12288:request len
3518 errNo = OH_MediaKeySession_GenerateOfflineReleaseRequest(mediaKeySession, onlineMediaKeyId, onlineMediaKeyIdLen,
3519 releaseRequest, &releaseRequestLen);
3520 EXPECT_EQ(errNo, DRM_ERR_OK);
3521 unsigned char testKeyReleaseResponse[2] = {0x33, 0x22};
3522 errNo = OH_MediaKeySession_ProcessOfflineReleaseResponse(mediaKeySession, onlineMediaKeyId, onlineMediaKeyIdLen,
3523 testKeyReleaseResponse, (int32_t)(sizeof(testKeyReleaseResponse)));
3524 EXPECT_EQ(errNo, DRM_ERR_OK);
3525 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
3526 EXPECT_EQ(errNo, DRM_ERR_OK);
3527 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
3528 }
3529
filltest(MediaKeySystem * mediaKeySystem,MediaKeySession * mediaKeySession)3530 static void filltest(MediaKeySystem *mediaKeySystem, MediaKeySession *mediaKeySession)
3531 {
3532 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3533 unsigned char onlineMediaKeyId[64] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
3534 int32_t onlineMediaKeyIdLen = 64; // 64:OFFLINE_MEDIA_KEY_ID_LEN
3535 errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, (uint8_t *)TESTKEYSESSIONRESPONSE,
3536 (int32_t)(sizeof(TESTKEYSESSIONRESPONSE)), onlineMediaKeyId, &onlineMediaKeyIdLen);
3537 unsigned char releaseRequest[12288] = { 0 }; // 12288:request len
3538 int32_t releaseRequestLen = 12288; // 12288:request len
3539 errNo = OH_MediaKeySession_GenerateOfflineReleaseRequest(mediaKeySession, onlineMediaKeyId, onlineMediaKeyIdLen,
3540 releaseRequest, &releaseRequestLen);
3541 EXPECT_EQ(errNo, DRM_ERR_OK);
3542 errNo = OH_MediaKeySession_ProcessOfflineReleaseResponse(mediaKeySession, onlineMediaKeyId, onlineMediaKeyIdLen,
3543 (uint8_t *)TESTKEYRELEASERESPONSE, (int32_t)(sizeof(TESTKEYRELEASERESPONSE)));
3544 EXPECT_EQ(errNo, DRM_ERR_OK);
3545 errNo = OH_MediaKeySession_RestoreOfflineMediaKeys(mediaKeySession, (unsigned char *)"onlineMediaKeyId", 1);
3546 EXPECT_NE(errNo, DRM_ERR_OK);
3547 }
3548 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_ClearMediaKeysAbNormal_081, TestSize.Level0)
3549 {
3550 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3551 MediaKeySystem *mediaKeySystem = nullptr;
3552 MediaKeySession *mediaKeySession = nullptr;
3553 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
3554 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
3555 EXPECT_NE(mediaKeySystem, nullptr);
3556 EXPECT_EQ(errNo, DRM_ERR_OK);
3557 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
3558 EXPECT_NE(mediaKeySession, nullptr);
3559 EXPECT_EQ(errNo, DRM_ERR_OK);
3560 errNo = OH_MediaKeySession_ClearMediaKeys(mediaKeySession);
3561 EXPECT_EQ(errNo, DRM_ERR_OK);
3562 // mediakeysession
3563 DRM_MediaKeyRequest mediaKeyRequest;
3564 DRM_MediaKeyRequestInfo info;
3565 filldata(&info);
3566 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
3567 EXPECT_EQ(errNo, DRM_ERR_OK);
3568 filltest(mediaKeySystem, mediaKeySession);
3569 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
3570 EXPECT_EQ(errNo, DRM_ERR_OK);
3571 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
3572 EXPECT_EQ(errNo, DRM_ERR_OK);
3573 sleep(1);
3574 }
3575
3576 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_CreateMediaKeySessionAbNormal_082, TestSize.Level0)
3577 {
3578 MediaKeySystem *mediaKeySystem = nullptr;
3579 Drm_ErrCode errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
3580 EXPECT_NE(mediaKeySystem, nullptr);
3581 EXPECT_EQ(errNo, DRM_ERR_OK);
3582 if (mediaKeySystem) {
3583 MediaKeySystemObject *systemObject = reinterpret_cast<MediaKeySystemObject *>(mediaKeySystem);
3584 IMediaKeySessionService::ContentProtectionLevel securityLevel =
3585 IMediaKeySessionService::CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
3586 OHOS::sptr<MediaKeySessionImpl> keySessionImpl = nullptr;
3587 systemObject->systemImpl_->~MediaKeySystemImpl();
3588 systemObject->systemImpl_->CreateMediaKeySession(securityLevel, &keySessionImpl);
3589 keySessionImpl = nullptr;
3590 MediaKeySystemCallback *allback = new MediaKeySystemCallback();
3591 allback->~MediaKeySystemCallback();
3592 OHOS::sptr<MediaKeySystemFactoryImpl> fatory = MediaKeySystemFactoryImpl::GetInstance();
3593 fatory->Init();
3594 }
3595 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
3596 mediaKeySystem = nullptr;
3597 EXPECT_NE(errNo, DRM_ERR_OK);
3598 MediaKeySystem *mediaKeySystem2 = nullptr;
3599 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem2);
3600 EXPECT_NE(mediaKeySystem2, nullptr);
3601 EXPECT_EQ(errNo, DRM_ERR_OK);
3602 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem2);
3603 mediaKeySystem2 = nullptr;
3604 EXPECT_EQ(errNo, DRM_ERR_OK);
3605 }
3606
3607 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_SessionImplAbNormal_083, TestSize.Level0)
3608 {
3609 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3610 MediaKeySystem *mediaKeySystem = nullptr;
3611 MediaKeySession *mediaKeySession = nullptr;
3612 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
3613 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
3614 EXPECT_NE(mediaKeySystem, nullptr);
3615 EXPECT_EQ(errNo, DRM_ERR_OK);
3616 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
3617 EXPECT_NE(mediaKeySession, nullptr);
3618 EXPECT_EQ(errNo, DRM_ERR_OK);
3619 MediaKeySession_Callback sessionCallback = { &TestSessoinEventCallBack, &TestSessoinKeyChangeCallBack };
3620 errNo = OH_MediaKeySession_SetMediaKeySessionCallback(mediaKeySession, &sessionCallback);
3621 EXPECT_EQ(errNo, DRM_ERR_OK);
3622 unsigned char onlineMediaKeyId[128] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
3623 int32_t onlineMediaKeyIdLen = 128; // 64:OFFLINE_MEDIA_KEY_ID_LEN
3624 unsigned char testKeySessionResponse[12288] = OFFRESPONSE;
3625 int32_t testKeySessionResponseLen = 50;
3626 errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
3627 (int32_t)testKeySessionResponseLen, onlineMediaKeyId, &onlineMediaKeyIdLen);
3628 if (mediaKeySession) {
3629 MediaKeySessionObject *sessionObject = reinterpret_cast<MediaKeySessionObject *>(mediaKeySession);
3630 MediaKeySessionServiceCallback *Object = new MediaKeySessionServiceCallback(sessionObject->sessionImpl_);
3631 std::map<std::vector<uint8_t>, MediaKeySessionKeyStatus> statusTable = { { { 0x01 },
3632 MEDIA_KEY_SESSION_KEY_STATUS_USABLE } };
3633 bool hasNewGoodLicense = false;
3634 Object->SendEventKeyChanged(statusTable, hasNewGoodLicense);
3635 }
3636 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
3637 EXPECT_EQ(errNo, DRM_ERR_OK);
3638 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
3639 mediaKeySystem = nullptr;
3640 EXPECT_EQ(errNo, DRM_ERR_OK);
3641 }
3642
killclearplay(MediaKeySystem * mediaKeySystem,MediaKeySession * mediaKeySession)3643 static void killclearplay(MediaKeySystem *mediaKeySystem, MediaKeySession *mediaKeySession)
3644 {
3645 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3646 std::vector<uint8_t> licenseIdVec = { 0x01 };
3647 std::vector<uint8_t> ReleaseRequest = { 0x01 };
3648 IMediaKeySessionService::ContentProtectionLevel securityLevel;
3649 system(GetDrmPlugin());
3650 if (mediaKeySession) {
3651 MediaKeySessionObject *sessionObject = reinterpret_cast<MediaKeySessionObject *>(mediaKeySession);
3652 uint32_t result = sessionObject->sessionImpl_->GenerateOfflineReleaseRequest(licenseIdVec, ReleaseRequest);
3653 EXPECT_NE(result, DRM_ERR_OK);
3654 result = sessionObject->sessionImpl_->ProcessOfflineReleaseResponse(licenseIdVec, ReleaseRequest);
3655 EXPECT_NE(result, DRM_ERR_OK);
3656 result = sessionObject->sessionImpl_->GetContentProtectionLevel(&securityLevel);
3657 EXPECT_NE(result, DRM_ERR_OK);
3658 std::map<std::string, std::string> licenseStatus2;
3659 result = sessionObject->sessionImpl_->CheckMediaKeyStatus(licenseStatus2);
3660 EXPECT_NE(result, DRM_ERR_OK);
3661 result = sessionObject->sessionImpl_->RestoreOfflineMediaKeys(licenseIdVec);
3662 EXPECT_NE(result, DRM_ERR_OK);
3663 result = sessionObject->sessionImpl_->ClearMediaKeys();
3664 EXPECT_NE(result, DRM_ERR_OK);
3665 std::string mimeType;
3666 bool status;
3667 result = sessionObject->sessionImpl_->RequireSecureDecoderModule(mimeType, &status);
3668 EXPECT_NE(result, DRM_ERR_OK);
3669 }
3670 errNo = OH_MediaKeySystem_SetMediaKeySystemCallback(mediaKeySystem, &TestSystemEventCallBack);
3671 EXPECT_EQ(errNo, DRM_ERR_OK);
3672 MediaKeySession_Callback sessionCallback = { &TestSessoinEventCallBack, &TestSessoinKeyChangeCallBack };
3673 errNo = OH_MediaKeySession_SetMediaKeySessionCallback(mediaKeySession, &sessionCallback);
3674 EXPECT_EQ(errNo, DRM_ERR_OK);
3675 }
3676
killclearplay2(MediaKeySystem * mediaKeySystem,MediaKeySession * mediaKeySession)3677 static void killclearplay2(MediaKeySystem *mediaKeySystem, MediaKeySession *mediaKeySession)
3678 {
3679 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3680 bool supported = true;
3681 supported = OH_MediaKeySystem_IsSupported(GetUuid());
3682 EXPECT_EQ(supported, true);
3683 supported = OH_MediaKeySystem_IsSupported2(GetUuid(), "video/mp4");
3684 supported = OH_MediaKeySystem_IsSupported3(GetUuid(), "video/mp4", CONTENT_PROTECTION_LEVEL_HW_CRYPTO);
3685
3686 errNo =
3687 OH_MediaKeySystem_SetConfigurationString(mediaKeySystem, "testConfigurationString", "testConfigurationString");
3688 EXPECT_NE(errNo, DRM_ERR_OK);
3689 char value[32];
3690 int32_t valueLen = 32;
3691 errNo = OH_MediaKeySystem_GetConfigurationString(mediaKeySystem, "testConfigurationString", value, valueLen);
3692 EXPECT_NE(errNo, DRM_ERR_OK);
3693 unsigned char testArray[5] = {1, 2, 3, 4, 5};
3694 errNo = OH_MediaKeySystem_SetConfigurationByteArray(mediaKeySystem, "testConfigurationByteArray", testArray,
3695 sizeof(testArray));
3696 EXPECT_NE(errNo, DRM_ERR_OK);
3697 unsigned char configByteArray[32];
3698 int32_t byteArrayLen = 32;
3699 errNo = OH_MediaKeySystem_GetConfigurationByteArray(mediaKeySystem, "testConfigurationByteArray", configByteArray,
3700 &byteArrayLen);
3701 EXPECT_NE(errNo, DRM_ERR_OK);
3702 DRM_Statistics statistics;
3703 errNo = OH_MediaKeySystem_GetStatistics(mediaKeySystem, &statistics);
3704 EXPECT_NE(errNo, DRM_ERR_OK);
3705 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_UNKNOWN;
3706 errNo = OH_MediaKeySystem_GetMaxContentProtectionLevel(mediaKeySystem, &contentProtectionLevel);
3707 EXPECT_NE(errNo, DRM_ERR_OK);
3708 }
3709
3710 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_SetCallbackWithObject_084, TestSize.Level0)
3711 {
3712 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3713 MediaKeySystem *mediaKeySystem = nullptr;
3714 MediaKeySession *mediaKeySession = nullptr;
3715 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
3716 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
3717 EXPECT_NE(mediaKeySystem, nullptr);
3718 errNo = OH_MediaKeySystem_SetMediaKeySystemCallback(mediaKeySystem, &TestSystemEventCallBack);
3719 EXPECT_EQ(errNo, DRM_ERR_OK);
3720 errNo = OH_MediaKeySystem_SetCallback(mediaKeySystem, &TestSystemEventCallBackWithObj);
3721 EXPECT_EQ(errNo, DRM_ERR_OK);
3722 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
3723 EXPECT_NE(mediaKeySession, nullptr);
3724 EXPECT_EQ(errNo, DRM_ERR_OK);
3725 MediaKeySession_Callback callback = { &TestSessoinEventCallBack, &TestSessoinKeyChangeCallBack };
3726 errNo = OH_MediaKeySession_SetMediaKeySessionCallback(mediaKeySession, &callback);
3727 EXPECT_EQ(errNo, DRM_ERR_OK);
3728 OH_MediaKeySession_Callback sessionCallback = { &TestSessoinEventCallBackWithObj,
3729 &TestSessoinKeyChangeCallBackWithObj };
3730 errNo = OH_MediaKeySession_SetCallback(mediaKeySession, &sessionCallback);
3731 EXPECT_EQ(errNo, DRM_ERR_OK);
3732 DRM_MediaKeyRequest mediaKeyRequest;
3733 DRM_MediaKeyRequestInfo info;
3734 filldata(&info);
3735 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest);
3736 EXPECT_EQ(errNo, DRM_ERR_OK);
3737 unsigned char onlineMediaKeyId[64] = { 0 }; // 64:OFFLINE_MEDIA_KEY_ID_LEN
3738 unsigned char testKeySessionResponse[2] = {0x07, 0x22};
3739 int32_t onlineMediaKeyIdLen = 64; // 64:OFFLINE_MEDIA_KEY_ID_LEN
3740 errNo = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, testKeySessionResponse,
3741 (int32_t)(sizeof(testKeySessionResponse)), onlineMediaKeyId, &onlineMediaKeyIdLen);
3742 EXPECT_NE(errNo, DRM_ERR_OK);
3743 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
3744 EXPECT_EQ(errNo, DRM_ERR_OK);
3745 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
3746 mediaKeySystem = nullptr;
3747 EXPECT_EQ(errNo, DRM_ERR_OK);
3748 }
3749
3750 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_KillClearPlayHostAbNormal1, TestSize.Level0)
3751 {
3752 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3753 MediaKeySystem *mediaKeySystem = nullptr;
3754 MediaKeySession *mediaKeySession = nullptr;
3755 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
3756 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
3757 EXPECT_NE(mediaKeySystem, nullptr);
3758 EXPECT_EQ(errNo, DRM_ERR_OK);
3759 unsigned char request[12288] = { 0 }; // 12288:request len
3760 int32_t requestLen = 12288; // 12288:request len
3761 char defaultUrl[2048] = { 0 }; // 2048:url len
3762 int32_t defaultUrlLen = 2048; // 2048:url len
3763 errNo = OH_MediaKeySystem_GenerateKeySystemRequest(mediaKeySystem, request, &requestLen, defaultUrl,
3764 defaultUrlLen);
3765 unsigned char KeySystemResponse[12288] = OFFRESPONSE;
3766 int32_t KeySystemResponseLen = 12288;
3767 if (g_isWisePlay) {
3768 int rett = HttpPost(PROVISION_URL, request, requestLen, KeySystemResponse, &KeySystemResponseLen, 10);
3769 EXPECT_EQ(rett, 0);
3770 errNo = OH_MediaKeySystem_ProcessKeySystemResponse(mediaKeySystem, KeySystemResponse, KeySystemResponseLen);
3771 EXPECT_NE(errNo, DRM_ERR_OK);
3772 } else {
3773 KeySystemResponseLen = 50;
3774 errNo = OH_MediaKeySystem_ProcessKeySystemResponse(mediaKeySystem, KeySystemResponse, KeySystemResponseLen);
3775 EXPECT_EQ(errNo, DRM_ERR_OK);
3776 }
3777 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
3778 EXPECT_NE(mediaKeySession, nullptr);
3779 EXPECT_EQ(errNo, DRM_ERR_OK);
3780 killclearplay(mediaKeySystem, mediaKeySession);
3781 sleep(5);
3782 killclearplay2(mediaKeySystem, mediaKeySession);
3783 requestLen = 12288; // 12288:request len
3784 errNo = OH_MediaKeySystem_GenerateKeySystemRequest(mediaKeySystem, request, &requestLen, defaultUrl,
3785 defaultUrlLen);
3786 EXPECT_NE(errNo, DRM_ERR_OK);
3787 errNo = OH_MediaKeySystem_ProcessKeySystemResponse(mediaKeySystem, KeySystemResponse, KeySystemResponseLen);
3788 EXPECT_NE(errNo, DRM_ERR_OK);
3789 DRM_CertificateStatus certStatus = CERT_STATUS_INVALID;
3790 errNo = OH_MediaKeySystem_GetCertificateStatus(mediaKeySystem, &certStatus);
3791 EXPECT_NE(errNo, DRM_ERR_OK);
3792 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
3793 EXPECT_NE(errNo, DRM_ERR_OK);
3794 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
3795 EXPECT_EQ(errNo, DRM_ERR_OK);
3796 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
3797 mediaKeySystem = nullptr;
3798 EXPECT_EQ(errNo, DRM_ERR_OK);
3799 sleep(5);
3800 }
3801
3802 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_Dump_01, TestSize.Level0)
3803 {
3804 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3805 MediaKeySystem *mediaKeySystem = nullptr;
3806 MediaKeySession *mediaKeySession = nullptr;
3807 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
3808 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
3809 EXPECT_NE(mediaKeySystem, nullptr);
3810 EXPECT_EQ(errNo, DRM_ERR_OK);
3811 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
3812 EXPECT_NE(mediaKeySession, nullptr);
3813 EXPECT_EQ(errNo, DRM_ERR_OK);
3814
3815 if (mediaKeySession) {
3816 MediaKeySessionObject *sessionObject = reinterpret_cast<MediaKeySessionObject *>(mediaKeySession);
3817 sptr<IMediaKeySessionService> SessionServiceProxy =
3818 sessionObject->sessionImpl_->GetMediaKeySessionServiceProxy();
3819 sptr<IMediaDecryptModuleService> decryptModule;
3820 SessionServiceProxy->GetMediaDecryptModule(decryptModule);
3821 MessageParcel data;
3822 IMediaDecryptModuleService::DrmBuffer srcBuffer;
3823 IMediaDecryptModuleService::DrmBuffer dstBuffer;
3824 bool secureDecodrtState = false;
3825 IMediaDecryptModuleService::CryptInfo cryptInfo;
3826 decryptModule->DecryptMediaData(secureDecodrtState, cryptInfo, srcBuffer, dstBuffer);
3827 system("hidumper -s 3012");
3828 decryptModule->Release();
3829 }
3830
3831 EXPECT_EQ(errNo, DRM_ERR_OK);
3832 errNo = OH_MediaKeySession_Destroy(mediaKeySession);
3833 EXPECT_EQ(errNo, DRM_ERR_OK);
3834 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
3835 EXPECT_EQ(errNo, DRM_ERR_OK);
3836 }
3837
3838 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_CreateMediaKeySystem_MAX_01, TestSize.Level0)
3839 {
3840 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3841 const uint32_t maxNum = 64;
3842 std::vector<MediaKeySystem *> systems(maxNum, nullptr);
3843 const char *name = GetUuid();
3844 for (uint i = 0; i < maxNum; i++) {
3845 errNo = OH_MediaKeySystem_Create(name, &systems[i]);
3846 EXPECT_EQ(errNo, DRM_ERR_OK);
3847 EXPECT_NE(systems[i], nullptr);
3848 }
3849
3850 MediaKeySystem *mediaKeySystem = nullptr;
3851 errNo = OH_MediaKeySystem_Create(name, &mediaKeySystem);
3852 EXPECT_EQ(errNo, DRM_ERR_MAX_SYSTEM_NUM_REACHED);
3853 EXPECT_EQ(mediaKeySystem, nullptr);
3854
3855 for (uint i = 0; i < maxNum; i++) {
3856 errNo = OH_MediaKeySystem_Destroy(systems[i]);
3857 systems[i] = nullptr;
3858 EXPECT_EQ(errNo, DRM_ERR_OK);
3859 }
3860 }
3861
3862 HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_CreateMediaKeySession_MAX_01, TestSize.Level0)
3863 {
3864 Drm_ErrCode errNo = DRM_ERR_UNKNOWN;
3865 const uint32_t maxNum = 64;
3866 std::vector<MediaKeySession *> sessions(maxNum, nullptr);
3867
3868 MediaKeySystem *mediaKeySystem = nullptr;
3869 errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem);
3870 EXPECT_NE(mediaKeySystem, nullptr);
3871 EXPECT_EQ(errNo, DRM_ERR_OK);
3872
3873 DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO;
3874 for (uint i = 0; i < maxNum; i++) {
3875 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &sessions[i]);
3876 EXPECT_EQ(errNo, DRM_ERR_OK);
3877 EXPECT_NE(sessions[i], nullptr);
3878 }
3879
3880 MediaKeySession *mediaKeySession = nullptr;
3881 errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession);
3882 EXPECT_EQ(errNo, DRM_ERR_MAX_SESSION_NUM_REACHED);
3883 EXPECT_EQ(mediaKeySession, nullptr);
3884
3885 for (uint i = 0; i < maxNum; i++) {
3886 errNo = OH_MediaKeySession_Destroy(sessions[i]);
3887 sessions[i] = nullptr;
3888 EXPECT_EQ(errNo, DRM_ERR_OK);
3889 }
3890
3891 errNo = OH_MediaKeySystem_Destroy(mediaKeySystem);
3892 EXPECT_EQ(errNo, DRM_ERR_OK);
3893 }
3894
3895 } // DrmStandard
3896 } // OHOS
3897