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