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