1e41f4b71Sopenharmony_ci# @ohos.multimedia.drm (Digital Rights Management)
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ciThe Digital Rights Management (DRM) framework provides APIs for you to develop digital rights management for your audio and video applications. You can call the DRM schemes (which exist as DRM plug-ins) provided by the system to implement the following features:
4e41f4b71Sopenharmony_ci
5e41f4b71Sopenharmony_ci* DRM certificate management: generates provision requests and processes responses to these requests. Such a request/response exchange occurs between an application and a provisioning server to retrieve a DRM certificate.
6e41f4b71Sopenharmony_ci* DRM media key management: generates media key requests, processes responses to these requests, and manages offline media keys. Such a request/response exchange occurs between an application and a license server to obtain or release a media key, which is used to decrypt DRM-protected content.
7e41f4b71Sopenharmony_ci* DRM authorization: authorizes access to DRM-protected content based on media keys.
8e41f4b71Sopenharmony_ci* DRM decryption: decrypts DRM-protected content.
9e41f4b71Sopenharmony_ci
10e41f4b71Sopenharmony_ci> **NOTE**
11e41f4b71Sopenharmony_ci> The initial APIs of this module are supported since API version 11. Newly added APIs will be marked with a superscript to indicate their earliest API version.
12e41f4b71Sopenharmony_ci
13e41f4b71Sopenharmony_ci## Modules to Import
14e41f4b71Sopenharmony_ci
15e41f4b71Sopenharmony_ci```ts
16e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
17e41f4b71Sopenharmony_ci```
18e41f4b71Sopenharmony_ci
19e41f4b71Sopenharmony_ci## DrmErrorCode
20e41f4b71Sopenharmony_ci
21e41f4b71Sopenharmony_ciEnumerates the DRM error codes.
22e41f4b71Sopenharmony_ci
23e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
24e41f4b71Sopenharmony_ci
25e41f4b71Sopenharmony_ci| Name                      | Value  | Description           |
26e41f4b71Sopenharmony_ci| ------------------------- | ---- | ------------    |
27e41f4b71Sopenharmony_ci| ERROR_UNKNOWN       | 24700101    | Unknown error.  |
28e41f4b71Sopenharmony_ci| MAX_SYSTEM_NUM_REACHED   | 24700103    | The number of **MediaKeySystem** instances reaches the upper limit (64).   |
29e41f4b71Sopenharmony_ci| MAX_SESSION_NUM_REACHED    | 24700104    | The number of **MediaKeySession** instances reaches the upper limit (64).    |
30e41f4b71Sopenharmony_ci| SERVICE_FATAL_ERROR  | 24700201    | DRM service error.    |
31e41f4b71Sopenharmony_ci
32e41f4b71Sopenharmony_ci## PreDefinedConfigName
33e41f4b71Sopenharmony_ci
34e41f4b71Sopenharmony_ciEnumerates the names of predefined configuration items.
35e41f4b71Sopenharmony_ci
36e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
37e41f4b71Sopenharmony_ci
38e41f4b71Sopenharmony_ci| Name                      | Value  | Description           |
39e41f4b71Sopenharmony_ci| ------------------------- | ---- | ------------    |
40e41f4b71Sopenharmony_ci| CONFIG_DEVICE_VENDOR        | 'vendor'    | Plug-in vendor name, which corresponds to the value of **vendor** in the return value of [getConfigurationString](#getconfigurationstring).  |
41e41f4b71Sopenharmony_ci| CONFIG_DEVICE_VERSION    | 'version'    | Plug-in version number, which corresponds to the value of **version** in the return value of [getConfigurationString](#getconfigurationstring).    |
42e41f4b71Sopenharmony_ci| CONFIG_DEVICE_DESCRIPTION     | 'description'    | Device descriptor, which corresponds to the value of **description** in the return value of [getConfigurationString](#getconfigurationstring).     |
43e41f4b71Sopenharmony_ci| CONFIG_DEVICE_ALGORITHMS   | 'algorithms'    | Supported algorithm names, which correspond to the value of **algorithms** in the return value of [getConfigurationString](#getconfigurationstring).    |
44e41f4b71Sopenharmony_ci| CONFIG_DEVICE_UNIQUE_ID    | 'deviceUniqueId'    | Unique device ID, which corresponds to the value of **deviceUniqueId** in the return value of [getConfigurationByteArray](#getconfigurationbytearray).    |
45e41f4b71Sopenharmony_ci| CONFIG_SESSION_MAX         | 'maxSessionNum'    | Maximum number of sessions supported by the device, which corresponds to the value of **maxSessionNum** in the return value of [getConfigurationString](#getconfigurationstring).    |
46e41f4b71Sopenharmony_ci| CONFIG_SESSION_CURRENT   | 'currentSessionNum'    | Number of existing sessions, which corresponds to the value of **currentSessionNum** in the return value of [getConfigurationString](#getconfigurationstring).    |
47e41f4b71Sopenharmony_ci
48e41f4b71Sopenharmony_ci## MediaKeyType
49e41f4b71Sopenharmony_ci
50e41f4b71Sopenharmony_ciEnumerates the types of media keys.
51e41f4b71Sopenharmony_ci
52e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
53e41f4b71Sopenharmony_ci
54e41f4b71Sopenharmony_ci| Name                      | Value  | Description           |
55e41f4b71Sopenharmony_ci| ------------------------- | ---- | ------------    |
56e41f4b71Sopenharmony_ci| MEDIA_KEY_TYPE_OFFLINE        | 0    | Offline.  |
57e41f4b71Sopenharmony_ci| MEDIA_KEY_TYPE_ONLINE   | 1    | Online.    |
58e41f4b71Sopenharmony_ci
59e41f4b71Sopenharmony_ci## OfflineMediaKeyStatus
60e41f4b71Sopenharmony_ci
61e41f4b71Sopenharmony_ciEnumerates the statuses of offline media keys.
62e41f4b71Sopenharmony_ci
63e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
64e41f4b71Sopenharmony_ci
65e41f4b71Sopenharmony_ci| Name                      | Value  | Description           |
66e41f4b71Sopenharmony_ci| ------------------------- | ---- | ------------    |
67e41f4b71Sopenharmony_ci| OFFLINE_MEDIA_KEY_STATUS_UNKNOWN        | 0    | Unknown status.  |
68e41f4b71Sopenharmony_ci| OFFLINE_MEDIA_KEY_STATUS_USABLE   | 1    | The media key is available.    |
69e41f4b71Sopenharmony_ci| OFFLINE_MEDIA_KEY_STATUS_INACTIVE     | 2    | The media key is inactive.      |
70e41f4b71Sopenharmony_ci
71e41f4b71Sopenharmony_ci## CertificateStatus
72e41f4b71Sopenharmony_ci
73e41f4b71Sopenharmony_ciEnumerates the statuses of DRM certificates.
74e41f4b71Sopenharmony_ci
75e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
76e41f4b71Sopenharmony_ci
77e41f4b71Sopenharmony_ci| Name                      | Value  | Description           |
78e41f4b71Sopenharmony_ci| ------------------------- | ---- | ------------    |
79e41f4b71Sopenharmony_ci| CERT_STATUS_PROVISIONED        | 0    | A DRM certificate has been installed on the device.  |
80e41f4b71Sopenharmony_ci| CERT_STATUS_NOT_PROVISIONED   | 1    | No DRM certificate is installed on the device.    |
81e41f4b71Sopenharmony_ci| CERT_STATUS_EXPIRED    | 2    | The DRM certificate has expired.      |
82e41f4b71Sopenharmony_ci| CERT_STATUS_INVALID  | 3    | The DRM certificate is invalid.    |
83e41f4b71Sopenharmony_ci| CERT_STATUS_UNAVAILABLE  | 4    | The DRM certificate is unavailable.    |
84e41f4b71Sopenharmony_ci
85e41f4b71Sopenharmony_ci## MediaKeyRequestType
86e41f4b71Sopenharmony_ci
87e41f4b71Sopenharmony_ciEnumerates the types of media key requests.
88e41f4b71Sopenharmony_ci
89e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12.
90e41f4b71Sopenharmony_ci
91e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
92e41f4b71Sopenharmony_ci
93e41f4b71Sopenharmony_ci| Name                      | Value  | Description           |
94e41f4b71Sopenharmony_ci| ------------------------- | ---- | ------------    |
95e41f4b71Sopenharmony_ci| MEDIA_KEY_REQUEST_TYPE_UNKNOWN        | 0    | Unknown type.  |
96e41f4b71Sopenharmony_ci| MEDIA_KEY_REQUEST_TYPE_INITIAL    | 1    | Initial request.    |
97e41f4b71Sopenharmony_ci| MEDIA_KEY_REQUEST_TYPE_RENEWAL     | 2    | Renewal request.      |
98e41f4b71Sopenharmony_ci| MEDIA_KEY_REQUEST_TYPE_RELEASE   | 3    | Release request.    |
99e41f4b71Sopenharmony_ci| MEDIA_KEY_REQUEST_TYPE_NONE    | 4    | None.    |
100e41f4b71Sopenharmony_ci| MEDIA_KEY_REQUEST_TYPE_UPDATE    | 5    | Update request.    |
101e41f4b71Sopenharmony_ci
102e41f4b71Sopenharmony_ci## ContentProtectionLevel
103e41f4b71Sopenharmony_ci
104e41f4b71Sopenharmony_ciEnumerates the content protection levels.
105e41f4b71Sopenharmony_ci
106e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12.
107e41f4b71Sopenharmony_ci
108e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
109e41f4b71Sopenharmony_ci
110e41f4b71Sopenharmony_ci| Name                      | Value  | Description           |
111e41f4b71Sopenharmony_ci| ------------------------- | ---- | ------------    |
112e41f4b71Sopenharmony_ci| CONTENT_PROTECTION_LEVEL_UNKNOWN        | 0    | Unknown content protection level.  |
113e41f4b71Sopenharmony_ci| CONTENT_PROTECTION_LEVEL_SW_CRYPTO   | 1    | Software content protection level.    |
114e41f4b71Sopenharmony_ci| CONTENT_PROTECTION_LEVEL_HW_CRYPTO    | 2    | Hardware content protection level.      |
115e41f4b71Sopenharmony_ci| CONTENT_PROTECTION_LEVEL_ENHANCED_HW  | 3    | Enhanced hardware content protection level.    |
116e41f4b71Sopenharmony_ci| CONTENT_PROTECTION_LEVEL_MAX  | 4    | Highest content protection level.    |
117e41f4b71Sopenharmony_ci
118e41f4b71Sopenharmony_ci## ProvisionRequest
119e41f4b71Sopenharmony_ci
120e41f4b71Sopenharmony_ciDescribes a provision request, which is used to request a DRM certificate from a provisioning server.
121e41f4b71Sopenharmony_ci
122e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
123e41f4b71Sopenharmony_ci
124e41f4b71Sopenharmony_ci| Name     | Type                          | Mandatory| Description        |
125e41f4b71Sopenharmony_ci| -------- | ----------------------------- |---- | ------------- |
126e41f4b71Sopenharmony_ci| data   | Uint8Array | Yes | Data carried in the provision request.     |
127e41f4b71Sopenharmony_ci| defaultURL     | string                 | Yes | URL of the provisioning server (which provisions DRM certificates).      |
128e41f4b71Sopenharmony_ci
129e41f4b71Sopenharmony_ci## OptionsData
130e41f4b71Sopenharmony_ci
131e41f4b71Sopenharmony_ciDescribes the optional data carried in a media key request.
132e41f4b71Sopenharmony_ci
133e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12.
134e41f4b71Sopenharmony_ci
135e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
136e41f4b71Sopenharmony_ci
137e41f4b71Sopenharmony_ci| Name     | Type                          | Mandatory| Description        |
138e41f4b71Sopenharmony_ci| -------- | ----------------------------- |---- | ------------- |
139e41f4b71Sopenharmony_ci| name   | string | Yes | Name of the optional data.     |
140e41f4b71Sopenharmony_ci| value     | string                 | Yes | Value of the optional data.      |
141e41f4b71Sopenharmony_ci
142e41f4b71Sopenharmony_ci## MediaKeyRequest
143e41f4b71Sopenharmony_ci
144e41f4b71Sopenharmony_ciDescribes a media key request.
145e41f4b71Sopenharmony_ci
146e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12.
147e41f4b71Sopenharmony_ci
148e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
149e41f4b71Sopenharmony_ci
150e41f4b71Sopenharmony_ci| Name     | Type                          | Mandatory| Description        |
151e41f4b71Sopenharmony_ci| -------- | ----------------------------- |---- | ------------- |
152e41f4b71Sopenharmony_ci| mediaKeyRequestType   | [MediaKeyRequestType](#mediakeyrequesttype) | Yes | Type of the media key request.     |
153e41f4b71Sopenharmony_ci| data     | Uint8Array                 | Yes | Data carried in the media key request.      |
154e41f4b71Sopenharmony_ci| defaultURL     | string                 | Yes | URL of the license server (which provisions media keys).      |
155e41f4b71Sopenharmony_ci
156e41f4b71Sopenharmony_ci## EventInfo
157e41f4b71Sopenharmony_ci
158e41f4b71Sopenharmony_ciDescribes the event information.
159e41f4b71Sopenharmony_ci
160e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12.
161e41f4b71Sopenharmony_ci
162e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
163e41f4b71Sopenharmony_ci
164e41f4b71Sopenharmony_ci| Name     | Type                          | Mandatory| Description        |
165e41f4b71Sopenharmony_ci| -------- | ----------------------------- |---- | ------------- |
166e41f4b71Sopenharmony_ci| info   | Uint8Array | Yes | Event information.     |
167e41f4b71Sopenharmony_ci| extraInfo     | string                 | Yes | Extended event information.      |
168e41f4b71Sopenharmony_ci
169e41f4b71Sopenharmony_ci## StatisticKeyValue
170e41f4b71Sopenharmony_ci
171e41f4b71Sopenharmony_ciDescribes the statistical information.
172e41f4b71Sopenharmony_ci
173e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
174e41f4b71Sopenharmony_ci
175e41f4b71Sopenharmony_ci| Name     | Type                          | Mandatory| Description        |
176e41f4b71Sopenharmony_ci| -------- | ----------------------------- |---- | ------------- |
177e41f4b71Sopenharmony_ci| name   | string | Yes | Name of the statistical item.     |
178e41f4b71Sopenharmony_ci| value     | string                 | Yes | Value of the statistical item.      |
179e41f4b71Sopenharmony_ci
180e41f4b71Sopenharmony_ci## MediaKeyStatus
181e41f4b71Sopenharmony_ci
182e41f4b71Sopenharmony_ciDescribes the media key status.
183e41f4b71Sopenharmony_ci
184e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12.
185e41f4b71Sopenharmony_ci
186e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
187e41f4b71Sopenharmony_ci
188e41f4b71Sopenharmony_ci| Name     | Type                          | Mandatory| Description        |
189e41f4b71Sopenharmony_ci| -------- | ----------------------------- |---- | ------------- |
190e41f4b71Sopenharmony_ci| name   | string | Yes | Name of the media key status (such as the media key expiration time and content protection level).     |
191e41f4b71Sopenharmony_ci| value     | string                 | Yes | Value of the media key status.      |
192e41f4b71Sopenharmony_ci
193e41f4b71Sopenharmony_ci## KeysInfo
194e41f4b71Sopenharmony_ci
195e41f4b71Sopenharmony_ciDescribes the information about media keys.
196e41f4b71Sopenharmony_ci
197e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12.
198e41f4b71Sopenharmony_ci
199e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
200e41f4b71Sopenharmony_ci
201e41f4b71Sopenharmony_ci| Name     | Type                          | Mandatory| Description        |
202e41f4b71Sopenharmony_ci| -------- | ----------------------------- |---- | ------------- |
203e41f4b71Sopenharmony_ci| keyId   | Uint8Array | Yes | Media key ID.     |
204e41f4b71Sopenharmony_ci| value     | string                 | Yes | Media key status.      |
205e41f4b71Sopenharmony_ci
206e41f4b71Sopenharmony_ci## MediaKeySystemInfo
207e41f4b71Sopenharmony_ci
208e41f4b71Sopenharmony_ciDescribes the DRM information, which is used to encrypt content.
209e41f4b71Sopenharmony_ci
210e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12.
211e41f4b71Sopenharmony_ci
212e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
213e41f4b71Sopenharmony_ci
214e41f4b71Sopenharmony_ci| Name     | Type                          | Mandatory| Description        |
215e41f4b71Sopenharmony_ci| -------- | ----------------------------- |---- | ------------- |
216e41f4b71Sopenharmony_ci| uuid   | string | Yes | UUID of the DRM content protection system.     |
217e41f4b71Sopenharmony_ci| pssh     | Uint8Array                 | Yes | Protection System Specific Header (PSSH) in the DRM information.      |
218e41f4b71Sopenharmony_ci
219e41f4b71Sopenharmony_ci## MediaKeySystemDescription<sup>12+</sup>
220e41f4b71Sopenharmony_ci
221e41f4b71Sopenharmony_ciDescribes the plug-in information.
222e41f4b71Sopenharmony_ci
223e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
224e41f4b71Sopenharmony_ci
225e41f4b71Sopenharmony_ci| Name     | Type                          | Mandatory| Description        |
226e41f4b71Sopenharmony_ci| -------- | ----------------------------- |---- | ------------- |
227e41f4b71Sopenharmony_ci| name   | string | Yes | Name of the plug-in.     |
228e41f4b71Sopenharmony_ci| uuid   | string | Yes | UUID of the plug-in.     |
229e41f4b71Sopenharmony_ci
230e41f4b71Sopenharmony_ci## drm.createMediaKeySystem
231e41f4b71Sopenharmony_ci
232e41f4b71Sopenharmony_cicreateMediaKeySystem(name: string): MediaKeySystem
233e41f4b71Sopenharmony_ci
234e41f4b71Sopenharmony_ciCreates a **MediaKeySystem** instance.
235e41f4b71Sopenharmony_ci
236e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
237e41f4b71Sopenharmony_ci
238e41f4b71Sopenharmony_ci**Parameters**
239e41f4b71Sopenharmony_ci
240e41f4b71Sopenharmony_ci| Name    | Type                                            | Mandatory| Description                          |
241e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- |
242e41f4b71Sopenharmony_ci| name  | string     | Yes  | DRM scheme name.                  |
243e41f4b71Sopenharmony_ci
244e41f4b71Sopenharmony_ci**Return value**
245e41f4b71Sopenharmony_ci
246e41f4b71Sopenharmony_ci| Type                                            | Description                          |
247e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
248e41f4b71Sopenharmony_ci| [MediaKeySystem](#mediakeysystem)           | **MediaKeySystem** instance.                  |
249e41f4b71Sopenharmony_ci
250e41f4b71Sopenharmony_ci**Error codes**
251e41f4b71Sopenharmony_ci
252e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md).
253e41f4b71Sopenharmony_ci
254e41f4b71Sopenharmony_ci| ID        | Error Message       |
255e41f4b71Sopenharmony_ci| --------------- | --------------- |
256e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Parameter verification failed.               |
257e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
258e41f4b71Sopenharmony_ci| 24700103                |  Meet max MediaKeySystem num limit                  |
259e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
260e41f4b71Sopenharmony_ci
261e41f4b71Sopenharmony_ci**Example**
262e41f4b71Sopenharmony_ci
263e41f4b71Sopenharmony_ci```ts
264e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
265e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
266e41f4b71Sopenharmony_citry {
267e41f4b71Sopenharmony_ci  let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
268e41f4b71Sopenharmony_ci} catch (err) {
269e41f4b71Sopenharmony_ci  let error = err as BusinessError;
270e41f4b71Sopenharmony_ci  console.error(`createMediaKeySystem ERROR: ${error}`);  
271e41f4b71Sopenharmony_ci}
272e41f4b71Sopenharmony_ci```
273e41f4b71Sopenharmony_ci
274e41f4b71Sopenharmony_ci## drm.isMediaKeySystemSupported
275e41f4b71Sopenharmony_ci
276e41f4b71Sopenharmony_ciisMediaKeySystemSupported(name: string): boolean
277e41f4b71Sopenharmony_ci
278e41f4b71Sopenharmony_ciChecks whether the device supports the specified DRM scheme.
279e41f4b71Sopenharmony_ci
280e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
281e41f4b71Sopenharmony_ci
282e41f4b71Sopenharmony_ci**Parameters**
283e41f4b71Sopenharmony_ci
284e41f4b71Sopenharmony_ci| Name    | Type                                            | Mandatory| Description                          |
285e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- |
286e41f4b71Sopenharmony_ci| name  | string     | Yes  | DRM scheme name.                  |
287e41f4b71Sopenharmony_ci
288e41f4b71Sopenharmony_ci**Return value**
289e41f4b71Sopenharmony_ci
290e41f4b71Sopenharmony_ci| Type                                            | Description                          |
291e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
292e41f4b71Sopenharmony_ci| boolean          | Returns **true** if the device supports the DRM scheme; returns **false** otherwise.                  |
293e41f4b71Sopenharmony_ci
294e41f4b71Sopenharmony_ci**Error codes**
295e41f4b71Sopenharmony_ci
296e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md).
297e41f4b71Sopenharmony_ci
298e41f4b71Sopenharmony_ci| ID        | Error Message       |
299e41f4b71Sopenharmony_ci| --------------- | --------------- |
300e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Parameter verification failed, the param name's length is zero or too big(exceeds 4096 Bytes).               |
301e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
302e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
303e41f4b71Sopenharmony_ci
304e41f4b71Sopenharmony_ci**Example**
305e41f4b71Sopenharmony_ci
306e41f4b71Sopenharmony_ci```ts
307e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
308e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
309e41f4b71Sopenharmony_ci
310e41f4b71Sopenharmony_citry {
311e41f4b71Sopenharmony_ci  let supported: boolean = drm.isMediaKeySystemSupported("com.clearplay.drm");
312e41f4b71Sopenharmony_ci  console.log("isMediaKeySystemSupported: ", supported);
313e41f4b71Sopenharmony_ci} catch (err) {
314e41f4b71Sopenharmony_ci  let error = err as BusinessError;
315e41f4b71Sopenharmony_ci  console.error(`isMediaKeySystemSupported ERROR: ${error}`);
316e41f4b71Sopenharmony_ci}
317e41f4b71Sopenharmony_ci```
318e41f4b71Sopenharmony_ci
319e41f4b71Sopenharmony_ci## drm.isMediaKeySystemSupported
320e41f4b71Sopenharmony_ci
321e41f4b71Sopenharmony_ciisMediaKeySystemSupported(name: string, mimeType: string): boolean
322e41f4b71Sopenharmony_ci
323e41f4b71Sopenharmony_ciChecks whether the device supports the combination of the DRM scheme and MIME type.
324e41f4b71Sopenharmony_ci
325e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
326e41f4b71Sopenharmony_ci
327e41f4b71Sopenharmony_ci**Parameters**
328e41f4b71Sopenharmony_ci
329e41f4b71Sopenharmony_ci| Name    | Type                                            | Mandatory| Description                          |
330e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- |
331e41f4b71Sopenharmony_ci| name  | string     | Yes  | DRM scheme name.                  |
332e41f4b71Sopenharmony_ci| mimeType  | string     | Yes  | MIME type, which is determined by the DRM scheme.                  |
333e41f4b71Sopenharmony_ci
334e41f4b71Sopenharmony_ci**Return value**
335e41f4b71Sopenharmony_ci
336e41f4b71Sopenharmony_ci| Type                                            | Description                          |
337e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
338e41f4b71Sopenharmony_ci| boolean          | Returns **true** if the device supports the combination; returns **false** otherwise.                  |
339e41f4b71Sopenharmony_ci
340e41f4b71Sopenharmony_ci**Error codes**
341e41f4b71Sopenharmony_ci
342e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md).
343e41f4b71Sopenharmony_ci
344e41f4b71Sopenharmony_ci| ID        | Error Message       |
345e41f4b71Sopenharmony_ci| --------------- | --------------- |
346e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed.                |
347e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
348e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
349e41f4b71Sopenharmony_ci
350e41f4b71Sopenharmony_ci**Example**
351e41f4b71Sopenharmony_ci
352e41f4b71Sopenharmony_ci```ts
353e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
354e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
355e41f4b71Sopenharmony_ci
356e41f4b71Sopenharmony_citry {
357e41f4b71Sopenharmony_ci  let supported: boolean = drm.isMediaKeySystemSupported("com.clearplay.drm", "video/avc");
358e41f4b71Sopenharmony_ci  console.log("isMediaKeySystemSupported: ", supported);
359e41f4b71Sopenharmony_ci} catch (err) {
360e41f4b71Sopenharmony_ci  let error = err as BusinessError;
361e41f4b71Sopenharmony_ci  console.error(`isMediaKeySystemSupported ERROR: ${error}`);
362e41f4b71Sopenharmony_ci}
363e41f4b71Sopenharmony_ci```
364e41f4b71Sopenharmony_ci
365e41f4b71Sopenharmony_ci## drm.isMediaKeySystemSupported
366e41f4b71Sopenharmony_ci
367e41f4b71Sopenharmony_ciisMediaKeySystemSupported(name: string, mimeType: string, level: ContentProtectionLevel): boolean
368e41f4b71Sopenharmony_ci
369e41f4b71Sopenharmony_ciChecks whether the device supports the combination of the DRM scheme, MIME type, and content protection level.
370e41f4b71Sopenharmony_ci
371e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
372e41f4b71Sopenharmony_ci
373e41f4b71Sopenharmony_ci**Parameters**
374e41f4b71Sopenharmony_ci
375e41f4b71Sopenharmony_ci| Name    | Type                                            | Mandatory| Description                          |
376e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- |
377e41f4b71Sopenharmony_ci| name  | string     | Yes  | DRM scheme name.                  |
378e41f4b71Sopenharmony_ci| mimeType  | string     | Yes  | MIME type, which is determined by the DRM scheme.                  |
379e41f4b71Sopenharmony_ci| level  | [ContentProtectionLevel](#contentprotectionlevel)     | Yes  | Content protection level.                  |
380e41f4b71Sopenharmony_ci
381e41f4b71Sopenharmony_ci**Return value**
382e41f4b71Sopenharmony_ci
383e41f4b71Sopenharmony_ci| Type                                            | Description                          |
384e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
385e41f4b71Sopenharmony_ci| boolean          | Returns **true** if the device supports the combination; returns **false** otherwise.                  |
386e41f4b71Sopenharmony_ci
387e41f4b71Sopenharmony_ci**Error codes**
388e41f4b71Sopenharmony_ci
389e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md).
390e41f4b71Sopenharmony_ci
391e41f4b71Sopenharmony_ci| ID        | Error Message       |
392e41f4b71Sopenharmony_ci| --------------- | --------------- |
393e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed.               |
394e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
395e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
396e41f4b71Sopenharmony_ci
397e41f4b71Sopenharmony_ci**Example**
398e41f4b71Sopenharmony_ci
399e41f4b71Sopenharmony_ci```ts
400e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
401e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
402e41f4b71Sopenharmony_ci
403e41f4b71Sopenharmony_citry {
404e41f4b71Sopenharmony_ci  let supported: boolean = drm.isMediaKeySystemSupported("com.clearplay.drm", "video/avc", drm.ContentProtectionLevel.CONTENT_PROTECTION_LEVEL_SW_CRYPTO);
405e41f4b71Sopenharmony_ci  console.log("isMediaKeySystemSupported: ", supported);
406e41f4b71Sopenharmony_ci} catch (err) {
407e41f4b71Sopenharmony_ci  let error = err as BusinessError;
408e41f4b71Sopenharmony_ci  console.error(`isMediaKeySystemSupported ERROR: ${error}`);
409e41f4b71Sopenharmony_ci}
410e41f4b71Sopenharmony_ci```
411e41f4b71Sopenharmony_ci
412e41f4b71Sopenharmony_ci## drm.getMediaKeySystemUuid<sup>12+</sup>
413e41f4b71Sopenharmony_ci
414e41f4b71Sopenharmony_cigetMediaKeySystemUuid(name: string): string;
415e41f4b71Sopenharmony_ci
416e41f4b71Sopenharmony_ciObtains the UUID of the DRM content protection system supported by the specified DRM scheme.
417e41f4b71Sopenharmony_ci
418e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
419e41f4b71Sopenharmony_ci
420e41f4b71Sopenharmony_ci**Parameters**
421e41f4b71Sopenharmony_ci
422e41f4b71Sopenharmony_ci| Name    | Type                                            | Mandatory| Description                          |
423e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- |
424e41f4b71Sopenharmony_ci| name  | string     | Yes  | DRM scheme name.                  |
425e41f4b71Sopenharmony_ci
426e41f4b71Sopenharmony_ci**Return value**
427e41f4b71Sopenharmony_ci
428e41f4b71Sopenharmony_ci| Type                                            | Description                          |
429e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
430e41f4b71Sopenharmony_ci| uuid  | string     | Yes  | UUID of the DRM content protection system.                  |
431e41f4b71Sopenharmony_ci
432e41f4b71Sopenharmony_ci**Error codes**
433e41f4b71Sopenharmony_ci
434e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md).
435e41f4b71Sopenharmony_ci
436e41f4b71Sopenharmony_ci| ID        | Error Message       |
437e41f4b71Sopenharmony_ci| --------------- | --------------- |
438e41f4b71Sopenharmony_ci| 401                |  The parameter check failed.Possibly because: 1.Mandatory parameters are left unspecified. 2.Parameter verification failed.                |
439e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
440e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
441e41f4b71Sopenharmony_ci
442e41f4b71Sopenharmony_ci**Example**
443e41f4b71Sopenharmony_ci
444e41f4b71Sopenharmony_ci```ts
445e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
446e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
447e41f4b71Sopenharmony_citry {
448e41f4b71Sopenharmony_ci  let uuid: String = drm.getMediaKeySystemUuid("com.clearplay.drm");
449e41f4b71Sopenharmony_ci  console.log("getMediaKeySystemUuid: ", uuid);
450e41f4b71Sopenharmony_ci} catch (err) {
451e41f4b71Sopenharmony_ci  let error = err as BusinessError;
452e41f4b71Sopenharmony_ci  console.error(`getMediaKeySystemUuid ERROR: ${error}`);  
453e41f4b71Sopenharmony_ci}
454e41f4b71Sopenharmony_ci```
455e41f4b71Sopenharmony_ci
456e41f4b71Sopenharmony_ci## drm.getMediaKeySystems<sup>12+</sup>
457e41f4b71Sopenharmony_ci
458e41f4b71Sopenharmony_cigetMediaKeySystems(): MediaKeySystemDescription[]
459e41f4b71Sopenharmony_ci
460e41f4b71Sopenharmony_ciObtains the list of plug-ins supported by the device.
461e41f4b71Sopenharmony_ci
462e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
463e41f4b71Sopenharmony_ci
464e41f4b71Sopenharmony_ci**Return value**
465e41f4b71Sopenharmony_ci
466e41f4b71Sopenharmony_ci| Type                                            | Description                          |
467e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
468e41f4b71Sopenharmony_ci| [MediaKeySystemDescription[]](#mediakeysystemdescription12)           | Array of the supported plug-ins.                  |
469e41f4b71Sopenharmony_ci
470e41f4b71Sopenharmony_ci**Error codes**
471e41f4b71Sopenharmony_ci
472e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md).
473e41f4b71Sopenharmony_ci
474e41f4b71Sopenharmony_ci| ID        | Error Message       |
475e41f4b71Sopenharmony_ci| --------------- | --------------- |
476e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
477e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
478e41f4b71Sopenharmony_ci
479e41f4b71Sopenharmony_ci**Example**
480e41f4b71Sopenharmony_ci
481e41f4b71Sopenharmony_ci```ts
482e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
483e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
484e41f4b71Sopenharmony_citry {
485e41f4b71Sopenharmony_ci  let description: drm.MediaKeySystemDescription[] = drm.getMediaKeySystems();
486e41f4b71Sopenharmony_ci} catch (err) {
487e41f4b71Sopenharmony_ci  let error = err as BusinessError;
488e41f4b71Sopenharmony_ci  console.error(`getMediaKeySystems ERROR: ${error}`);  
489e41f4b71Sopenharmony_ci}
490e41f4b71Sopenharmony_ci```
491e41f4b71Sopenharmony_ci
492e41f4b71Sopenharmony_ci## MediaKeySystem
493e41f4b71Sopenharmony_ciImplements **MediaKeySystem** instance management. Specifically, it provides APIs to request and process DRM certificates, creates session, manages offline media key, obtain DRM statistical information, and obtain device configuration information. Before calling any API in **MediaKeySystem**, you must use [createMediaKeySystem](#drmcreatemediakeysystem) to create a **MediaKeySystem** instance.
494e41f4b71Sopenharmony_ci
495e41f4b71Sopenharmony_ci### setConfigurationString
496e41f4b71Sopenharmony_ci
497e41f4b71Sopenharmony_cisetConfigurationString(configName: string, value: string): void
498e41f4b71Sopenharmony_ci
499e41f4b71Sopenharmony_ciSets a configuration item in the form of a string.
500e41f4b71Sopenharmony_ci
501e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
502e41f4b71Sopenharmony_ci
503e41f4b71Sopenharmony_ci**Parameters**
504e41f4b71Sopenharmony_ci
505e41f4b71Sopenharmony_ci| Name    | Type                                            | Mandatory| Description                          |
506e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- |
507e41f4b71Sopenharmony_ci| configName  | string     | Yes  | Name of the configuration item. For details about available options, see [PreDefinedConfigName](#predefinedconfigname).                  |
508e41f4b71Sopenharmony_ci| value  | string     | Yes  | Value of the configuration item.                  |
509e41f4b71Sopenharmony_ci
510e41f4b71Sopenharmony_ci**Error codes**
511e41f4b71Sopenharmony_ci
512e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md).
513e41f4b71Sopenharmony_ci
514e41f4b71Sopenharmony_ci| ID        | Error Message       |
515e41f4b71Sopenharmony_ci| --------------- | --------------- |
516e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed.|
517e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
518e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
519e41f4b71Sopenharmony_ci
520e41f4b71Sopenharmony_ci**Example**
521e41f4b71Sopenharmony_ci
522e41f4b71Sopenharmony_ci```ts
523e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
524e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
525e41f4b71Sopenharmony_ci
526e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
527e41f4b71Sopenharmony_citry {
528e41f4b71Sopenharmony_ci  mediaKeySystem.setConfigurationString("stringConfigName", "stringConfigValue"); // Ensure that stringConfigName is configurable.
529e41f4b71Sopenharmony_ci} catch (err) {
530e41f4b71Sopenharmony_ci  let error = err as BusinessError;
531e41f4b71Sopenharmony_ci  console.error(`setConfigurationString ERROR: ${error}`);
532e41f4b71Sopenharmony_ci}
533e41f4b71Sopenharmony_ci```
534e41f4b71Sopenharmony_ci
535e41f4b71Sopenharmony_ci### getConfigurationString
536e41f4b71Sopenharmony_ci
537e41f4b71Sopenharmony_cigetConfigurationString(configName: string): string
538e41f4b71Sopenharmony_ci
539e41f4b71Sopenharmony_ciObtains the value of a configuration item in the form of a string.
540e41f4b71Sopenharmony_ci
541e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
542e41f4b71Sopenharmony_ci
543e41f4b71Sopenharmony_ci**Parameters**
544e41f4b71Sopenharmony_ci
545e41f4b71Sopenharmony_ci| Name    | Type                                            | Mandatory| Description                          |
546e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- |
547e41f4b71Sopenharmony_ci| configName  | string     | Yes  | Name of the configuration item, which is determined by the DRM scheme on the device. For details about available options, see [PreDefinedConfigName](#predefinedconfigname).                  |
548e41f4b71Sopenharmony_ci
549e41f4b71Sopenharmony_ci**Return value**
550e41f4b71Sopenharmony_ci
551e41f4b71Sopenharmony_ci| Type                                            | Description                          |
552e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
553e41f4b71Sopenharmony_ci| string          | Value of the configuration item in the form of a string.                  |
554e41f4b71Sopenharmony_ci
555e41f4b71Sopenharmony_ci**Error codes**
556e41f4b71Sopenharmony_ci
557e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md).
558e41f4b71Sopenharmony_ci
559e41f4b71Sopenharmony_ci| ID        | Error Message       |
560e41f4b71Sopenharmony_ci| --------------- | --------------- |
561e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Parameter verification failed, the param's length is zero or too big(exceeds 4096 Bytes).                              |
562e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
563e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
564e41f4b71Sopenharmony_ci
565e41f4b71Sopenharmony_ci**Example**
566e41f4b71Sopenharmony_ci
567e41f4b71Sopenharmony_ci```ts
568e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
569e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
570e41f4b71Sopenharmony_ci
571e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
572e41f4b71Sopenharmony_citry {
573e41f4b71Sopenharmony_ci  let configValue: string = mediaKeySystem.getConfigurationString("vendor");
574e41f4b71Sopenharmony_ci} catch (err) {
575e41f4b71Sopenharmony_ci  let error = err as BusinessError;
576e41f4b71Sopenharmony_ci  console.error(`getConfigurationString ERROR: ${error}`);  
577e41f4b71Sopenharmony_ci}
578e41f4b71Sopenharmony_ci```
579e41f4b71Sopenharmony_ci
580e41f4b71Sopenharmony_ci### setConfigurationByteArray
581e41f4b71Sopenharmony_ci
582e41f4b71Sopenharmony_cisetConfigurationByteArray(configName: string, value: Uint8Array): void
583e41f4b71Sopenharmony_ci
584e41f4b71Sopenharmony_ciSets a configuration item in the form of a byte array.
585e41f4b71Sopenharmony_ci
586e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
587e41f4b71Sopenharmony_ci
588e41f4b71Sopenharmony_ci**Parameters**
589e41f4b71Sopenharmony_ci
590e41f4b71Sopenharmony_ci| Name    | Type                                            | Mandatory| Description                          |
591e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- |
592e41f4b71Sopenharmony_ci| configName  | string     | Yes  | Name of the configuration item, which is determined by the DRM scheme on the device. For details about available options, see [PreDefinedConfigName](#predefinedconfigname).                  |
593e41f4b71Sopenharmony_ci| value  | Uint8Array     | Yes  | Value of the configuration item in the form of an array.                  |
594e41f4b71Sopenharmony_ci
595e41f4b71Sopenharmony_ci**Error codes**
596e41f4b71Sopenharmony_ci
597e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md).
598e41f4b71Sopenharmony_ci
599e41f4b71Sopenharmony_ci| ID        | Error Message       |
600e41f4b71Sopenharmony_ci| --------------- | --------------- |
601e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed.               |
602e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors.                  |
603e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died.                  |
604e41f4b71Sopenharmony_ci
605e41f4b71Sopenharmony_ci**Example**
606e41f4b71Sopenharmony_ci
607e41f4b71Sopenharmony_ci```ts
608e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
609e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
610e41f4b71Sopenharmony_ci
611e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
612e41f4b71Sopenharmony_ci// Set configValue based on project requirements.
613e41f4b71Sopenharmony_cilet configValue: Uint8Array = new Uint8Array([0x00, 0x00, 0x00, 0x00]);
614e41f4b71Sopenharmony_citry {
615e41f4b71Sopenharmony_ci  // Ensure that byteArrayConfigName of the current DRM scheme is configurable.
616e41f4b71Sopenharmony_ci  mediaKeySystem.setConfigurationByteArray("byteArrayConfigName", configValue);
617e41f4b71Sopenharmony_ci} catch (err) {
618e41f4b71Sopenharmony_ci  let error = err as BusinessError;
619e41f4b71Sopenharmony_ci  console.error(`setConfigurationByteArray ERROR: ${error}`);  
620e41f4b71Sopenharmony_ci}
621e41f4b71Sopenharmony_ci```
622e41f4b71Sopenharmony_ci
623e41f4b71Sopenharmony_ci### getConfigurationByteArray
624e41f4b71Sopenharmony_ci
625e41f4b71Sopenharmony_cigetConfigurationByteArray(configName: string): Uint8Array
626e41f4b71Sopenharmony_ci
627e41f4b71Sopenharmony_ciObtains the value of a configuration item in the form of a byte array.
628e41f4b71Sopenharmony_ci
629e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
630e41f4b71Sopenharmony_ci
631e41f4b71Sopenharmony_ci**Parameters**
632e41f4b71Sopenharmony_ci
633e41f4b71Sopenharmony_ci| Name    | Type                                            | Mandatory| Description                          |
634e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- |
635e41f4b71Sopenharmony_ci| configName  | string     | Yes  | Name of the configuration item, which is determined by the DRM scheme on the device. For details about available options, see [PreDefinedConfigName](#predefinedconfigname).                  |
636e41f4b71Sopenharmony_ci
637e41f4b71Sopenharmony_ci**Return value**
638e41f4b71Sopenharmony_ci
639e41f4b71Sopenharmony_ci| Type                                            | Description                          |
640e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
641e41f4b71Sopenharmony_ci| Uint8Array          | Value of the configuration item in the form of an array.                  |
642e41f4b71Sopenharmony_ci
643e41f4b71Sopenharmony_ci**Error codes**
644e41f4b71Sopenharmony_ci
645e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md).
646e41f4b71Sopenharmony_ci
647e41f4b71Sopenharmony_ci| ID        | Error Message       |
648e41f4b71Sopenharmony_ci| --------------- | --------------- |
649e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Parameter verification failed.        |
650e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
651e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
652e41f4b71Sopenharmony_ci
653e41f4b71Sopenharmony_ci**Example**
654e41f4b71Sopenharmony_ci
655e41f4b71Sopenharmony_ci```ts
656e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
657e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
658e41f4b71Sopenharmony_ci
659e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
660e41f4b71Sopenharmony_citry {
661e41f4b71Sopenharmony_ci  let configValue: Uint8Array = mediaKeySystem.getConfigurationByteArray("deviceUniqueId"); // Ensure that deviceUniqueId exists.
662e41f4b71Sopenharmony_ci} catch (err) {
663e41f4b71Sopenharmony_ci  let error = err as BusinessError;
664e41f4b71Sopenharmony_ci  console.error(`getConfigurationByteArray ERROR: ${error}`);  
665e41f4b71Sopenharmony_ci}
666e41f4b71Sopenharmony_ci```
667e41f4b71Sopenharmony_ci
668e41f4b71Sopenharmony_ci### getStatistics
669e41f4b71Sopenharmony_ci
670e41f4b71Sopenharmony_cigetStatistics(): StatisticKeyValue[]
671e41f4b71Sopenharmony_ci
672e41f4b71Sopenharmony_ciObtains the statistical information, including the number of current sessions, plug-in version, maximum decryption duration for each session, number of decryption times, and number of decryption failures.
673e41f4b71Sopenharmony_ci
674e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
675e41f4b71Sopenharmony_ci
676e41f4b71Sopenharmony_ci**Return value**
677e41f4b71Sopenharmony_ci
678e41f4b71Sopenharmony_ci| Type                                            | Description                          |
679e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
680e41f4b71Sopenharmony_ci| [StatisticKeyValue[]](#statistickeyvalue)          | Statistical information.                  |
681e41f4b71Sopenharmony_ci
682e41f4b71Sopenharmony_ci**Error codes**
683e41f4b71Sopenharmony_ci
684e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md).
685e41f4b71Sopenharmony_ci
686e41f4b71Sopenharmony_ci| ID        | Error Message       |
687e41f4b71Sopenharmony_ci| --------------- | --------------- |
688e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
689e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
690e41f4b71Sopenharmony_ci
691e41f4b71Sopenharmony_ci**Example**
692e41f4b71Sopenharmony_ci
693e41f4b71Sopenharmony_ci```ts
694e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
695e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
696e41f4b71Sopenharmony_ci
697e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
698e41f4b71Sopenharmony_citry {
699e41f4b71Sopenharmony_ci  let statisticKeyValue: drm.StatisticKeyValue[] = mediaKeySystem.getStatistics();
700e41f4b71Sopenharmony_ci} catch (err) {
701e41f4b71Sopenharmony_ci  let error = err as BusinessError;
702e41f4b71Sopenharmony_ci  console.error(`getConfigurationByteArray ERROR: ${error}`);
703e41f4b71Sopenharmony_ci}
704e41f4b71Sopenharmony_ci```
705e41f4b71Sopenharmony_ci
706e41f4b71Sopenharmony_ci### getMaxContentProtectionLevel
707e41f4b71Sopenharmony_ci
708e41f4b71Sopenharmony_cigetMaxContentProtectionLevel(): ContentProtectionLevel
709e41f4b71Sopenharmony_ci
710e41f4b71Sopenharmony_ciObtains the maximum content protection level supported by the current DRM scheme.
711e41f4b71Sopenharmony_ci
712e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
713e41f4b71Sopenharmony_ci
714e41f4b71Sopenharmony_ci**Return value**
715e41f4b71Sopenharmony_ci
716e41f4b71Sopenharmony_ci| Type                                            | Description                          |
717e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
718e41f4b71Sopenharmony_ci| [ContentProtectionLevel](#contentprotectionlevel)          | Maximum content protection level.                  |
719e41f4b71Sopenharmony_ci
720e41f4b71Sopenharmony_ci**Error codes**
721e41f4b71Sopenharmony_ci
722e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md).
723e41f4b71Sopenharmony_ci
724e41f4b71Sopenharmony_ci| ID        | Error Message       |
725e41f4b71Sopenharmony_ci| --------------- | --------------- |
726e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
727e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
728e41f4b71Sopenharmony_ci
729e41f4b71Sopenharmony_ci**Example**
730e41f4b71Sopenharmony_ci
731e41f4b71Sopenharmony_ci```ts
732e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
733e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
734e41f4b71Sopenharmony_ci
735e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
736e41f4b71Sopenharmony_citry {
737e41f4b71Sopenharmony_ci  let maxLevel: drm.ContentProtectionLevel = mediaKeySystem.getMaxContentProtectionLevel();
738e41f4b71Sopenharmony_ci} catch (err) {
739e41f4b71Sopenharmony_ci  let error = err as BusinessError;
740e41f4b71Sopenharmony_ci  console.error(`getConfigurationByteArray ERROR: ${error}`);
741e41f4b71Sopenharmony_ci}
742e41f4b71Sopenharmony_ci```
743e41f4b71Sopenharmony_ci
744e41f4b71Sopenharmony_ci### generateKeySystemRequest
745e41f4b71Sopenharmony_ci
746e41f4b71Sopenharmony_cigenerateKeySystemRequest(): Promise<ProvisionRequest\>
747e41f4b71Sopenharmony_ci
748e41f4b71Sopenharmony_ciGenerates a provision request.
749e41f4b71Sopenharmony_ci
750e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
751e41f4b71Sopenharmony_ci
752e41f4b71Sopenharmony_ci**Return value**
753e41f4b71Sopenharmony_ci
754e41f4b71Sopenharmony_ci| Type                                            | Description                          |
755e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
756e41f4b71Sopenharmony_ci| Promise<[ProvisionRequest](#provisionrequest)\>          | Promise used to return the provision request obtained. If a DRM certificate already exists on the device, a failure message is returned.  |
757e41f4b71Sopenharmony_ci
758e41f4b71Sopenharmony_ci**Error codes**
759e41f4b71Sopenharmony_ci
760e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md).
761e41f4b71Sopenharmony_ci
762e41f4b71Sopenharmony_ci| ID        | Error Message       |
763e41f4b71Sopenharmony_ci| --------------- | --------------- |
764e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
765e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
766e41f4b71Sopenharmony_ci
767e41f4b71Sopenharmony_ci**Example**
768e41f4b71Sopenharmony_ci
769e41f4b71Sopenharmony_ci```ts
770e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
771e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
772e41f4b71Sopenharmony_ci
773e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
774e41f4b71Sopenharmony_ci// Do not call this API if a DRM certificate already exists on the device.
775e41f4b71Sopenharmony_cimediaKeySystem.generateKeySystemRequest().then((ProvisionRequest: drm.ProvisionRequest) => {
776e41f4b71Sopenharmony_ci  console.log("generateKeySystemRequest");
777e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
778e41f4b71Sopenharmony_ci  console.error(`generateKeySystemRequest: ERROR: ${err}`);
779e41f4b71Sopenharmony_ci});
780e41f4b71Sopenharmony_ci```
781e41f4b71Sopenharmony_ci
782e41f4b71Sopenharmony_ci### processKeySystemResponse
783e41f4b71Sopenharmony_ci
784e41f4b71Sopenharmony_ciprocessKeySystemResponse(response: Uint8Array): Promise<void\>
785e41f4b71Sopenharmony_ci
786e41f4b71Sopenharmony_ciProcesses a provision response.
787e41f4b71Sopenharmony_ci
788e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
789e41f4b71Sopenharmony_ci
790e41f4b71Sopenharmony_ci**Parameters**
791e41f4b71Sopenharmony_ci
792e41f4b71Sopenharmony_ci| Name    | Type                                            | Mandatory| Description                          |
793e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- |
794e41f4b71Sopenharmony_ci| response  | Uint8Array     | Yes  | Provision response.                  |
795e41f4b71Sopenharmony_ci
796e41f4b71Sopenharmony_ci**Return value**
797e41f4b71Sopenharmony_ci
798e41f4b71Sopenharmony_ci| Type                                            | Description                          |
799e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
800e41f4b71Sopenharmony_ci| Promise<void\>          | Promise                  |
801e41f4b71Sopenharmony_ci
802e41f4b71Sopenharmony_ci**Error codes**
803e41f4b71Sopenharmony_ci
804e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md).
805e41f4b71Sopenharmony_ci
806e41f4b71Sopenharmony_ci| ID        | Error Message       |
807e41f4b71Sopenharmony_ci| --------------- | --------------- |
808e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed.         |
809e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
810e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
811e41f4b71Sopenharmony_ci
812e41f4b71Sopenharmony_ci**Example**
813e41f4b71Sopenharmony_ci
814e41f4b71Sopenharmony_ci```ts
815e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
816e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
817e41f4b71Sopenharmony_ci
818e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
819e41f4b71Sopenharmony_ci// keySystemResponse is the response obtained from the DRM service. Pass in the actual data obtained.
820e41f4b71Sopenharmony_cilet keySystemResponse = new Uint8Array([0x00, 0x00, 0x00, 0x00]);
821e41f4b71Sopenharmony_cimediaKeySystem.processKeySystemResponse(keySystemResponse).then(() => {
822e41f4b71Sopenharmony_ci  console.log("processKeySystemResponse");
823e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
824e41f4b71Sopenharmony_ci  console.error(`processKeySystemResponse: ERROR: ${err}`);
825e41f4b71Sopenharmony_ci});
826e41f4b71Sopenharmony_ci```
827e41f4b71Sopenharmony_ci
828e41f4b71Sopenharmony_ci### getCertificateStatus
829e41f4b71Sopenharmony_ci
830e41f4b71Sopenharmony_cigetCertificateStatus():CertificateStatus
831e41f4b71Sopenharmony_ci
832e41f4b71Sopenharmony_ciObtains the status of the DRM certificate.
833e41f4b71Sopenharmony_ci
834e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
835e41f4b71Sopenharmony_ci
836e41f4b71Sopenharmony_ci**Return value**
837e41f4b71Sopenharmony_ci
838e41f4b71Sopenharmony_ci| Type                                            | Description                          |
839e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
840e41f4b71Sopenharmony_ci| [CertificateStatus](#certificatestatus)          | Certificate status.                  |
841e41f4b71Sopenharmony_ci
842e41f4b71Sopenharmony_ci**Error codes**
843e41f4b71Sopenharmony_ci
844e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md).
845e41f4b71Sopenharmony_ci
846e41f4b71Sopenharmony_ci| ID        | Error Message       |
847e41f4b71Sopenharmony_ci| --------------- | --------------- |
848e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
849e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
850e41f4b71Sopenharmony_ci
851e41f4b71Sopenharmony_ci**Example**
852e41f4b71Sopenharmony_ci
853e41f4b71Sopenharmony_ci```ts
854e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
855e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
856e41f4b71Sopenharmony_ci
857e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
858e41f4b71Sopenharmony_citry {
859e41f4b71Sopenharmony_ci  let certificateStatus: drm.CertificateStatus = mediaKeySystem.getCertificateStatus();
860e41f4b71Sopenharmony_ci} catch (err) {
861e41f4b71Sopenharmony_ci  let error = err as BusinessError;
862e41f4b71Sopenharmony_ci  console.error(`getCertificateStatus ERROR: ${error}`);
863e41f4b71Sopenharmony_ci}
864e41f4b71Sopenharmony_ci```
865e41f4b71Sopenharmony_ci
866e41f4b71Sopenharmony_ci### on('keySystemRequired')
867e41f4b71Sopenharmony_ci
868e41f4b71Sopenharmony_cion(type: 'keySystemRequired', callback: (eventInfo: EventInfo) => void): void
869e41f4b71Sopenharmony_ci
870e41f4b71Sopenharmony_ciSubscribes to events indicating that the application requests a DRM certificate.
871e41f4b71Sopenharmony_ci
872e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
873e41f4b71Sopenharmony_ci
874e41f4b71Sopenharmony_ci**Parameters**
875e41f4b71Sopenharmony_ci
876e41f4b71Sopenharmony_ci| Name     | Type                 | Mandatory| Description                                 |
877e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- |
878e41f4b71Sopenharmony_ci| type     | string               | Yes  | Event type. The event can be listened for when a **MediaKeySystem** instance is created. This event is triggered when the application requires a DRM certificate.|
879e41f4b71Sopenharmony_ci| callback | Callback\<[EventInfo](#eventinfo)\> | Yes  | Callback used to return the event information. If this event callback is returned, a DRM certificate must be requested.                |
880e41f4b71Sopenharmony_ci
881e41f4b71Sopenharmony_ci**Error codes**
882e41f4b71Sopenharmony_ci
883e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md).
884e41f4b71Sopenharmony_ci
885e41f4b71Sopenharmony_ci| ID        | Error Message       |
886e41f4b71Sopenharmony_ci| --------------- | --------------- |
887e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.               |
888e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
889e41f4b71Sopenharmony_ci
890e41f4b71Sopenharmony_ci**Example**
891e41f4b71Sopenharmony_ci
892e41f4b71Sopenharmony_ci```ts
893e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
894e41f4b71Sopenharmony_ci
895e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
896e41f4b71Sopenharmony_cimediaKeySystem.on('keySystemRequired', (eventInfo: drm.EventInfo) => {
897e41f4b71Sopenharmony_ci  console.log('keySystemRequired ' + 'extra: ' + eventInfo.extraInfo + 'data: ' + eventInfo.info);
898e41f4b71Sopenharmony_ci});
899e41f4b71Sopenharmony_ci```
900e41f4b71Sopenharmony_ci
901e41f4b71Sopenharmony_ci### off('keySystemRequired')
902e41f4b71Sopenharmony_ci
903e41f4b71Sopenharmony_cioff(type: 'keySystemRequired', callback?: (eventInfo: EventInfo) => void): void
904e41f4b71Sopenharmony_ci
905e41f4b71Sopenharmony_ciUnsubscribes from events indicating that the application requests a DRM certificate.
906e41f4b71Sopenharmony_ci
907e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
908e41f4b71Sopenharmony_ci
909e41f4b71Sopenharmony_ci**Parameters**
910e41f4b71Sopenharmony_ci
911e41f4b71Sopenharmony_ci| Name     | Type                 | Mandatory| Description                                 |
912e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- |
913e41f4b71Sopenharmony_ci| type     | string               | Yes  | Event type. The event can be listened for when a **MediaKeySystem** instance is created.|
914e41f4b71Sopenharmony_ci| callback | Callback\<[EventInfo](#eventinfo)\> | No  | Callback used to return the event information.                 |
915e41f4b71Sopenharmony_ci
916e41f4b71Sopenharmony_ci**Error codes**
917e41f4b71Sopenharmony_ci
918e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md).
919e41f4b71Sopenharmony_ci
920e41f4b71Sopenharmony_ci| ID        | Error Message       |
921e41f4b71Sopenharmony_ci| --------------- | --------------- |
922e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.               |
923e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
924e41f4b71Sopenharmony_ci
925e41f4b71Sopenharmony_ci**Example**
926e41f4b71Sopenharmony_ci
927e41f4b71Sopenharmony_ci```ts
928e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
929e41f4b71Sopenharmony_cimediaKeySystem.off('keySystemRequired');
930e41f4b71Sopenharmony_ci```
931e41f4b71Sopenharmony_ci
932e41f4b71Sopenharmony_ci### createMediaKeySession
933e41f4b71Sopenharmony_ci
934e41f4b71Sopenharmony_cicreateMediaKeySession(level: ContentProtectionLevel): MediaKeySession
935e41f4b71Sopenharmony_ci
936e41f4b71Sopenharmony_ciCreates a **MediaKeySession** instance with the specified content protection level.
937e41f4b71Sopenharmony_ci
938e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
939e41f4b71Sopenharmony_ci
940e41f4b71Sopenharmony_ci**Parameters**
941e41f4b71Sopenharmony_ci
942e41f4b71Sopenharmony_ci| Name    | Type                                            | Mandatory| Description                          |
943e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- |
944e41f4b71Sopenharmony_ci| level  | [ContentProtectionLevel](#contentprotectionlevel)     | Yes  | Content protection level.                  |
945e41f4b71Sopenharmony_ci
946e41f4b71Sopenharmony_ci**Return value**
947e41f4b71Sopenharmony_ci
948e41f4b71Sopenharmony_ci| Type                                            | Description                          |
949e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
950e41f4b71Sopenharmony_ci| [MediaKeySession](#mediakeysession)          | **MediaKeySession** instance.                  |
951e41f4b71Sopenharmony_ci
952e41f4b71Sopenharmony_ci**Error codes**
953e41f4b71Sopenharmony_ci
954e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md).
955e41f4b71Sopenharmony_ci
956e41f4b71Sopenharmony_ci| ID        | Error Message       |
957e41f4b71Sopenharmony_ci| --------------- | --------------- |
958e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.The param level exceeds reasonable range, please use value in ContentProtectionLevel.          |
959e41f4b71Sopenharmony_ci| 24700101                 |  All unknown errors                  |
960e41f4b71Sopenharmony_ci| 24700104                 |  Meet max MediaKeySession num limit                  |
961e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
962e41f4b71Sopenharmony_ci
963e41f4b71Sopenharmony_ci**Example**
964e41f4b71Sopenharmony_ci
965e41f4b71Sopenharmony_ci```ts
966e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
967e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
968e41f4b71Sopenharmony_ci
969e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
970e41f4b71Sopenharmony_citry {
971e41f4b71Sopenharmony_ci  let mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession(drm.ContentProtectionLevel.CONTENT_PROTECTION_LEVEL_SW_CRYPTO);
972e41f4b71Sopenharmony_ci} catch (err) {
973e41f4b71Sopenharmony_ci  let error = err as BusinessError;
974e41f4b71Sopenharmony_ci  console.error(`createMediaKeySession ERROR: ${error}`);
975e41f4b71Sopenharmony_ci}
976e41f4b71Sopenharmony_ci```
977e41f4b71Sopenharmony_ci
978e41f4b71Sopenharmony_ci### createMediaKeySession
979e41f4b71Sopenharmony_ci
980e41f4b71Sopenharmony_cicreateMediaKeySession(): MediaKeySession
981e41f4b71Sopenharmony_ci
982e41f4b71Sopenharmony_ciCreates a **MediaKeySession** instance with the default content protection level of the DRM scheme.
983e41f4b71Sopenharmony_ci
984e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
985e41f4b71Sopenharmony_ci
986e41f4b71Sopenharmony_ci**Return value**
987e41f4b71Sopenharmony_ci
988e41f4b71Sopenharmony_ci| Type                                            | Description                          |
989e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
990e41f4b71Sopenharmony_ci| [MediaKeySession](#mediakeysession)          | **MediaKeySession** instance.                  |
991e41f4b71Sopenharmony_ci
992e41f4b71Sopenharmony_ci**Error codes**
993e41f4b71Sopenharmony_ci
994e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md).
995e41f4b71Sopenharmony_ci
996e41f4b71Sopenharmony_ci| ID        | Error Message       |
997e41f4b71Sopenharmony_ci| --------------- | --------------- |
998e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
999e41f4b71Sopenharmony_ci| 24700104                 |  Meet max MediaKeySession num limit                  |
1000e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
1001e41f4b71Sopenharmony_ci
1002e41f4b71Sopenharmony_ci**Example**
1003e41f4b71Sopenharmony_ci
1004e41f4b71Sopenharmony_ci```ts
1005e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1006e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1007e41f4b71Sopenharmony_ci
1008e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1009e41f4b71Sopenharmony_citry {
1010e41f4b71Sopenharmony_ci  let mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
1011e41f4b71Sopenharmony_ci} catch (err) {
1012e41f4b71Sopenharmony_ci  let error = err as BusinessError;
1013e41f4b71Sopenharmony_ci  console.error(`createMediaKeySession ERROR: ${error}`);
1014e41f4b71Sopenharmony_ci}
1015e41f4b71Sopenharmony_ci```
1016e41f4b71Sopenharmony_ci
1017e41f4b71Sopenharmony_ci### getOfflineMediaKeyIds
1018e41f4b71Sopenharmony_ci
1019e41f4b71Sopenharmony_cigetOfflineMediaKeyIds(): Uint8Array[]
1020e41f4b71Sopenharmony_ci
1021e41f4b71Sopenharmony_ciObtains the IDs of offline media keys.
1022e41f4b71Sopenharmony_ci
1023e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
1024e41f4b71Sopenharmony_ci
1025e41f4b71Sopenharmony_ci
1026e41f4b71Sopenharmony_ci**Return value**
1027e41f4b71Sopenharmony_ci
1028e41f4b71Sopenharmony_ci| Type                                            | Description                          |
1029e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
1030e41f4b71Sopenharmony_ci| Uint8Array[]          | Array holding the IDs of offline media keys.                  |
1031e41f4b71Sopenharmony_ci
1032e41f4b71Sopenharmony_ci**Error codes**
1033e41f4b71Sopenharmony_ci
1034e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md).
1035e41f4b71Sopenharmony_ci
1036e41f4b71Sopenharmony_ci| ID        | Error Message       |
1037e41f4b71Sopenharmony_ci| --------------- | --------------- |
1038e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1039e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
1040e41f4b71Sopenharmony_ci
1041e41f4b71Sopenharmony_ci**Example**
1042e41f4b71Sopenharmony_ci
1043e41f4b71Sopenharmony_ci```ts
1044e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1045e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1046e41f4b71Sopenharmony_ci
1047e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1048e41f4b71Sopenharmony_citry {
1049e41f4b71Sopenharmony_ci  let offlineMediaKeyIds: Uint8Array[] = mediaKeySystem.getOfflineMediaKeyIds();
1050e41f4b71Sopenharmony_ci} catch (err) {
1051e41f4b71Sopenharmony_ci  let error = err as BusinessError;
1052e41f4b71Sopenharmony_ci  console.error(`getOfflineMediaKeyIds ERROR: ${error}`);
1053e41f4b71Sopenharmony_ci}
1054e41f4b71Sopenharmony_ci```
1055e41f4b71Sopenharmony_ci
1056e41f4b71Sopenharmony_ci### getOfflineMediaKeyStatus
1057e41f4b71Sopenharmony_ci
1058e41f4b71Sopenharmony_cigetOfflineMediaKeyStatus(mediaKeyId: Uint8Array): OfflineMediaKeyStatus
1059e41f4b71Sopenharmony_ci
1060e41f4b71Sopenharmony_ciObtains the status of offline media keys with the specified IDs.
1061e41f4b71Sopenharmony_ci
1062e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
1063e41f4b71Sopenharmony_ci
1064e41f4b71Sopenharmony_ci**Parameters**
1065e41f4b71Sopenharmony_ci
1066e41f4b71Sopenharmony_ci| Name    | Type                                            | Mandatory| Description                          |
1067e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- |
1068e41f4b71Sopenharmony_ci| mediaKeyId | Uint8Array     | Yes  | Array holding the IDs of offline media keys.                  |
1069e41f4b71Sopenharmony_ci
1070e41f4b71Sopenharmony_ci**Return value**
1071e41f4b71Sopenharmony_ci
1072e41f4b71Sopenharmony_ci| Type                                            | Description                          |
1073e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
1074e41f4b71Sopenharmony_ci| [OfflineMediaKeyStatus](#offlinemediakeystatus)          | Status of the offline media keys.                  |
1075e41f4b71Sopenharmony_ci
1076e41f4b71Sopenharmony_ci**Error codes**
1077e41f4b71Sopenharmony_ci
1078e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md).
1079e41f4b71Sopenharmony_ci
1080e41f4b71Sopenharmony_ci| ID        | Error Message       |
1081e41f4b71Sopenharmony_ci| --------------- | --------------- |
1082e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed.            |
1083e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1084e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
1085e41f4b71Sopenharmony_ci
1086e41f4b71Sopenharmony_ci**Example**
1087e41f4b71Sopenharmony_ci
1088e41f4b71Sopenharmony_ci```ts
1089e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1090e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1091e41f4b71Sopenharmony_ci
1092e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1093e41f4b71Sopenharmony_ci// mediaKeyId is the return value of processMediaKeyResponse or getOfflineMediaKeyIds. Pass in the actual data returned.
1094e41f4b71Sopenharmony_cilet mediaKeyId = new Uint8Array([0x00, 0x00, 0x00, 0x00]);
1095e41f4b71Sopenharmony_citry {
1096e41f4b71Sopenharmony_ci  let configValue: drm.OfflineMediaKeyStatus = mediaKeySystem.getOfflineMediaKeyStatus(mediaKeyId);
1097e41f4b71Sopenharmony_ci} catch (err) {
1098e41f4b71Sopenharmony_ci  let error = err as BusinessError;
1099e41f4b71Sopenharmony_ci  console.error(`getOfflineMediaKeyStatus ERROR: ${error}`);
1100e41f4b71Sopenharmony_ci}
1101e41f4b71Sopenharmony_ci```
1102e41f4b71Sopenharmony_ci
1103e41f4b71Sopenharmony_ci### clearOfflineMediaKeys
1104e41f4b71Sopenharmony_ci
1105e41f4b71Sopenharmony_ciclearOfflineMediaKeys(mediaKeyId: Uint8Array): void
1106e41f4b71Sopenharmony_ci
1107e41f4b71Sopenharmony_ciClears offline media keys by ID.
1108e41f4b71Sopenharmony_ci
1109e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
1110e41f4b71Sopenharmony_ci
1111e41f4b71Sopenharmony_ci**Parameters**
1112e41f4b71Sopenharmony_ci
1113e41f4b71Sopenharmony_ci| Name    | Type                                            | Mandatory| Description                          |
1114e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- |
1115e41f4b71Sopenharmony_ci| mediaKeyId  | Uint8Array     | Yes  | Array holding the IDs of offline media keys.           |
1116e41f4b71Sopenharmony_ci
1117e41f4b71Sopenharmony_ci**Error codes**
1118e41f4b71Sopenharmony_ci
1119e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md).
1120e41f4b71Sopenharmony_ci
1121e41f4b71Sopenharmony_ci| ID        | Error Message       |
1122e41f4b71Sopenharmony_ci| --------------- | --------------- |
1123e41f4b71Sopenharmony_ci| 401                |  The parameter check failed.Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.           |
1124e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1125e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
1126e41f4b71Sopenharmony_ci
1127e41f4b71Sopenharmony_ci**Example**
1128e41f4b71Sopenharmony_ci
1129e41f4b71Sopenharmony_ci```ts
1130e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1131e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1132e41f4b71Sopenharmony_ci
1133e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1134e41f4b71Sopenharmony_ci// mediaKeyId is the return value of processMediaKeyResponse or getOfflineMediaKeyIds. Pass in the actual data returned.
1135e41f4b71Sopenharmony_cilet mediaKeyId = new Uint8Array([0x00, 0x00, 0x00, 0x00]);
1136e41f4b71Sopenharmony_citry {
1137e41f4b71Sopenharmony_ci  mediaKeySystem.clearOfflineMediaKeys(mediaKeyId);
1138e41f4b71Sopenharmony_ci} catch (err) {
1139e41f4b71Sopenharmony_ci  let error = err as BusinessError;
1140e41f4b71Sopenharmony_ci  console.error(`clearOfflineMediaKeys ERROR: ${error}`);
1141e41f4b71Sopenharmony_ci}
1142e41f4b71Sopenharmony_ci```
1143e41f4b71Sopenharmony_ci
1144e41f4b71Sopenharmony_ci### destroy
1145e41f4b71Sopenharmony_ci
1146e41f4b71Sopenharmony_cidestroy(): void
1147e41f4b71Sopenharmony_ci
1148e41f4b71Sopenharmony_ciDestroys this **MediaKeySystem** instance.
1149e41f4b71Sopenharmony_ci
1150e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
1151e41f4b71Sopenharmony_ci
1152e41f4b71Sopenharmony_ci**Error codes**
1153e41f4b71Sopenharmony_ci
1154e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md).
1155e41f4b71Sopenharmony_ci
1156e41f4b71Sopenharmony_ci| ID        | Error Message       |
1157e41f4b71Sopenharmony_ci| --------------- | --------------- |
1158e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1159e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
1160e41f4b71Sopenharmony_ci
1161e41f4b71Sopenharmony_ci**Example**
1162e41f4b71Sopenharmony_ci
1163e41f4b71Sopenharmony_ci```ts
1164e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1165e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1166e41f4b71Sopenharmony_ci
1167e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1168e41f4b71Sopenharmony_citry {
1169e41f4b71Sopenharmony_ci  mediaKeySystem.destroy();
1170e41f4b71Sopenharmony_ci} catch (err) {
1171e41f4b71Sopenharmony_ci  let error = err as BusinessError;
1172e41f4b71Sopenharmony_ci  console.error(`mediaKeySystem destroy ERROR: ${error}`);
1173e41f4b71Sopenharmony_ci}
1174e41f4b71Sopenharmony_ci```
1175e41f4b71Sopenharmony_ci
1176e41f4b71Sopenharmony_ci## MediaKeySession
1177e41f4b71Sopenharmony_ciImplements media key management. Before calling any API in **MediaKeySession**, you must use [createMediaKeySession](#createmediakeysession) to create a **MediaKeySession** instance.
1178e41f4b71Sopenharmony_ci
1179e41f4b71Sopenharmony_ci### generateMediaKeyRequest
1180e41f4b71Sopenharmony_ci
1181e41f4b71Sopenharmony_cigenerateMediaKeyRequest(mimeType: string, initData: Uint8Array, mediaKeyType: number, options?: OptionsData[]): Promise<MediaKeyRequest\>
1182e41f4b71Sopenharmony_ci
1183e41f4b71Sopenharmony_ciGenerates a media key request.
1184e41f4b71Sopenharmony_ci
1185e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12.
1186e41f4b71Sopenharmony_ci
1187e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
1188e41f4b71Sopenharmony_ci
1189e41f4b71Sopenharmony_ci**Parameters**
1190e41f4b71Sopenharmony_ci
1191e41f4b71Sopenharmony_ci| Name    | Type                                            | Mandatory| Description                          |
1192e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- |
1193e41f4b71Sopenharmony_ci| mimeType  | string     | Yes  | MIME type, which is determined by the DRM scheme.                  |
1194e41f4b71Sopenharmony_ci| initData  | Uint8Array     | Yes  | Initial data.                  |
1195e41f4b71Sopenharmony_ci| mediaKeyType| number     | Yes  | Type of the media key.                  | The value **0** means an online media key, and **1** means an offline media key.|
1196e41f4b71Sopenharmony_ci| options  | [OptionsData[]](#optionsdata)     | No  | Optional data.                  |
1197e41f4b71Sopenharmony_ci
1198e41f4b71Sopenharmony_ci**Return value**
1199e41f4b71Sopenharmony_ci
1200e41f4b71Sopenharmony_ci| Type                                            | Description                          |
1201e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
1202e41f4b71Sopenharmony_ci| Promise<[MediaKeyRequest](#mediakeyrequest)\>          | Promise used to return the media key request generated.                  |
1203e41f4b71Sopenharmony_ci
1204e41f4b71Sopenharmony_ci**Error codes**
1205e41f4b71Sopenharmony_ci
1206e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md).
1207e41f4b71Sopenharmony_ci
1208e41f4b71Sopenharmony_ci| ID        | Error Message       |
1209e41f4b71Sopenharmony_ci| --------------- | --------------- |
1210e41f4b71Sopenharmony_ci| 401                | The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed.              |
1211e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1212e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
1213e41f4b71Sopenharmony_ci
1214e41f4b71Sopenharmony_ci**Example**
1215e41f4b71Sopenharmony_ci
1216e41f4b71Sopenharmony_ci```ts
1217e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1218e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1219e41f4b71Sopenharmony_ci
1220e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1221e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
1222e41f4b71Sopenharmony_ci// PSSH data is the descriptive header of the copyright protection system and is encapsulated in encrypted streams. Specifically, in MP4 file, the PSSH data is found within the PSSH box; for DASH streams, the PSSH data is located in the MPD and MP4 PSSH box; for HLS+TS streams, the PSSH data is located in the M3U8 file and each TS segment. Pass in the actual value.
1223e41f4b71Sopenharmony_cilet uint8pssh = new Uint8Array([0x00, 0x00, 0x00, 0x00]);
1224e41f4b71Sopenharmony_cimediaKeySession.generateMediaKeyRequest("video/avc", uint8pssh, drm.MediaKeyType.MEDIA_KEY_TYPE_ONLINE).then((mediaKeyRequest: drm.MediaKeyRequest) =>{
1225e41f4b71Sopenharmony_ci  console.log('generateMediaKeyRequest' + mediaKeyRequest);
1226e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
1227e41f4b71Sopenharmony_ci  console.error(`generateMediaKeyRequest: ERROR: ${err}`);
1228e41f4b71Sopenharmony_ci});
1229e41f4b71Sopenharmony_ci```
1230e41f4b71Sopenharmony_ci
1231e41f4b71Sopenharmony_ci### processMediaKeyResponse
1232e41f4b71Sopenharmony_ci
1233e41f4b71Sopenharmony_ciprocessMediaKeyResponse(response: Uint8Array): Promise<Uint8Array\>
1234e41f4b71Sopenharmony_ci
1235e41f4b71Sopenharmony_ciProcesses a media key response.
1236e41f4b71Sopenharmony_ci
1237e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12.
1238e41f4b71Sopenharmony_ci
1239e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
1240e41f4b71Sopenharmony_ci
1241e41f4b71Sopenharmony_ci**Parameters**
1242e41f4b71Sopenharmony_ci
1243e41f4b71Sopenharmony_ci| Name    | Type                                            | Mandatory| Description                          |
1244e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- |
1245e41f4b71Sopenharmony_ci| response  | Uint8Array     | Yes  | Media key response.                  |
1246e41f4b71Sopenharmony_ci
1247e41f4b71Sopenharmony_ci**Return value**
1248e41f4b71Sopenharmony_ci
1249e41f4b71Sopenharmony_ci| Type                                            | Description                          |
1250e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
1251e41f4b71Sopenharmony_ci| Promise<Uint8Array\>          | Promise used to return the media key IDs.                  |
1252e41f4b71Sopenharmony_ci
1253e41f4b71Sopenharmony_ci**Error codes**
1254e41f4b71Sopenharmony_ci
1255e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md).
1256e41f4b71Sopenharmony_ci
1257e41f4b71Sopenharmony_ci| ID        | Error Message       |
1258e41f4b71Sopenharmony_ci| --------------- | --------------- |
1259e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed.            |
1260e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1261e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
1262e41f4b71Sopenharmony_ci
1263e41f4b71Sopenharmony_ci**Example**
1264e41f4b71Sopenharmony_ci
1265e41f4b71Sopenharmony_ci```ts
1266e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1267e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1268e41f4b71Sopenharmony_ci
1269e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1270e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
1271e41f4b71Sopenharmony_ci// mediaKeyResponse is obtained from the DRM service. Pass in the actual value obtained.
1272e41f4b71Sopenharmony_cilet mediaKeyResponse = new Uint8Array([0x00, 0x00, 0x00, 0x00]);
1273e41f4b71Sopenharmony_cimediaKeySession.processMediaKeyResponse(mediaKeyResponse).then((mediaKeyId: Uint8Array) => {
1274e41f4b71Sopenharmony_ci  console.log('processMediaKeyResponse:' + mediaKeyId);
1275e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
1276e41f4b71Sopenharmony_ci  console.error(`processMediaKeyResponse: ERROR: ${err}`);
1277e41f4b71Sopenharmony_ci});
1278e41f4b71Sopenharmony_ci```
1279e41f4b71Sopenharmony_ci
1280e41f4b71Sopenharmony_ci### checkMediaKeyStatus
1281e41f4b71Sopenharmony_ci
1282e41f4b71Sopenharmony_ci checkMediaKeyStatus(): MediaKeyStatus[]
1283e41f4b71Sopenharmony_ci
1284e41f4b71Sopenharmony_ciChecks the status of the media keys in use.
1285e41f4b71Sopenharmony_ci
1286e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12.
1287e41f4b71Sopenharmony_ci
1288e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
1289e41f4b71Sopenharmony_ci
1290e41f4b71Sopenharmony_ci**Return value**
1291e41f4b71Sopenharmony_ci
1292e41f4b71Sopenharmony_ci| Type                                            | Description                          |
1293e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
1294e41f4b71Sopenharmony_ci| [MediaKeyStatus[]](#mediakeystatus)          | Media key status.                  |
1295e41f4b71Sopenharmony_ci
1296e41f4b71Sopenharmony_ci**Error codes**
1297e41f4b71Sopenharmony_ci
1298e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md).
1299e41f4b71Sopenharmony_ci
1300e41f4b71Sopenharmony_ci| ID        | Error Message       |
1301e41f4b71Sopenharmony_ci| --------------- | --------------- |
1302e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1303e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
1304e41f4b71Sopenharmony_ci
1305e41f4b71Sopenharmony_ci**Example**
1306e41f4b71Sopenharmony_ci
1307e41f4b71Sopenharmony_ci```ts
1308e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1309e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1310e41f4b71Sopenharmony_ci
1311e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1312e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
1313e41f4b71Sopenharmony_citry {
1314e41f4b71Sopenharmony_ci  let keyStatus: drm.MediaKeyStatus[] =  mediaKeySession.checkMediaKeyStatus();
1315e41f4b71Sopenharmony_ci} catch (err) {
1316e41f4b71Sopenharmony_ci  let error = err as BusinessError;
1317e41f4b71Sopenharmony_ci  console.error(`checkMediaKeyStatus ERROR: ${error}`);
1318e41f4b71Sopenharmony_ci}
1319e41f4b71Sopenharmony_ci```
1320e41f4b71Sopenharmony_ci
1321e41f4b71Sopenharmony_ci### clearMediaKeys
1322e41f4b71Sopenharmony_ci
1323e41f4b71Sopenharmony_ciclearMediaKeys(): void
1324e41f4b71Sopenharmony_ci
1325e41f4b71Sopenharmony_ciClears the media keys in use.
1326e41f4b71Sopenharmony_ci
1327e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12.
1328e41f4b71Sopenharmony_ci
1329e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
1330e41f4b71Sopenharmony_ci
1331e41f4b71Sopenharmony_ci**Error codes**
1332e41f4b71Sopenharmony_ci
1333e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md).
1334e41f4b71Sopenharmony_ci
1335e41f4b71Sopenharmony_ci| ID        | Error Message       |
1336e41f4b71Sopenharmony_ci| --------------- | --------------- |
1337e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1338e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
1339e41f4b71Sopenharmony_ci
1340e41f4b71Sopenharmony_ci**Example**
1341e41f4b71Sopenharmony_ci
1342e41f4b71Sopenharmony_ci```ts
1343e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1344e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1345e41f4b71Sopenharmony_ci
1346e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1347e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
1348e41f4b71Sopenharmony_ci// mediaKeyResponse is obtained from the DRM service. Pass in the actual value obtained.
1349e41f4b71Sopenharmony_cilet mediaKeyResponse = new Uint8Array([0x00, 0x00, 0x00, 0x00]);
1350e41f4b71Sopenharmony_cimediaKeySession.processMediaKeyResponse(mediaKeyResponse).then((mediaKeyId: Uint8Array) => {
1351e41f4b71Sopenharmony_ci  console.log('processMediaKeyResponse:' + mediaKeyId);
1352e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
1353e41f4b71Sopenharmony_ci  console.error(`processMediaKeyResponse: ERROR: ${err}`);
1354e41f4b71Sopenharmony_ci});
1355e41f4b71Sopenharmony_citry {
1356e41f4b71Sopenharmony_ci  mediaKeySession.clearMediaKeys();
1357e41f4b71Sopenharmony_ci} catch (err) {
1358e41f4b71Sopenharmony_ci  let error = err as BusinessError;
1359e41f4b71Sopenharmony_ci  console.error(`clearMediaKeys ERROR: ${error}`);
1360e41f4b71Sopenharmony_ci}
1361e41f4b71Sopenharmony_ci```
1362e41f4b71Sopenharmony_ci
1363e41f4b71Sopenharmony_ci### generateOfflineReleaseRequest
1364e41f4b71Sopenharmony_ci
1365e41f4b71Sopenharmony_cigenerateOfflineReleaseRequest(mediaKeyId: Uint8Array): Promise<Uint8Array\>
1366e41f4b71Sopenharmony_ci
1367e41f4b71Sopenharmony_ciGenerates a request to release offline media keys.
1368e41f4b71Sopenharmony_ci
1369e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12.
1370e41f4b71Sopenharmony_ci
1371e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
1372e41f4b71Sopenharmony_ci
1373e41f4b71Sopenharmony_ci**Parameters**
1374e41f4b71Sopenharmony_ci
1375e41f4b71Sopenharmony_ci| Name    | Type                                            | Mandatory| Description                          |
1376e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- |
1377e41f4b71Sopenharmony_ci| mediaKeyId  | Uint8Array    | Yes  | Array holding the IDs of offline media keys.                  |
1378e41f4b71Sopenharmony_ci
1379e41f4b71Sopenharmony_ci**Return value**
1380e41f4b71Sopenharmony_ci
1381e41f4b71Sopenharmony_ci| Type                                            | Description                          |
1382e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
1383e41f4b71Sopenharmony_ci| Promise<Uint8Array\>          | Promise used to return the request generated.                  |
1384e41f4b71Sopenharmony_ci
1385e41f4b71Sopenharmony_ci**Error codes**
1386e41f4b71Sopenharmony_ci
1387e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md).
1388e41f4b71Sopenharmony_ci
1389e41f4b71Sopenharmony_ci| ID        | Error Message       |
1390e41f4b71Sopenharmony_ci| --------------- | --------------- |
1391e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed.         |
1392e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1393e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
1394e41f4b71Sopenharmony_ci
1395e41f4b71Sopenharmony_ci**Example**
1396e41f4b71Sopenharmony_ci
1397e41f4b71Sopenharmony_ci```ts
1398e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1399e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1400e41f4b71Sopenharmony_ci
1401e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1402e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
1403e41f4b71Sopenharmony_ci// mediaKeyId is the return value of processMediaKeyResponse or getOfflineMediaKeyIds. Pass in the actual data returned.
1404e41f4b71Sopenharmony_cilet mediaKeyId = new Uint8Array([0x00, 0x00, 0x00, 0x00]);
1405e41f4b71Sopenharmony_cimediaKeySession.generateOfflineReleaseRequest(mediaKeyId).then((offlineReleaseRequest: Uint8Array) => {
1406e41f4b71Sopenharmony_ci  console.log('generateOfflineReleaseRequest:' + offlineReleaseRequest);
1407e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
1408e41f4b71Sopenharmony_ci  console.error(`generateOfflineReleaseRequest: ERROR: ${err}`);
1409e41f4b71Sopenharmony_ci});
1410e41f4b71Sopenharmony_ci```
1411e41f4b71Sopenharmony_ci
1412e41f4b71Sopenharmony_ci### processOfflineReleaseResponse
1413e41f4b71Sopenharmony_ci
1414e41f4b71Sopenharmony_ciprocessOfflineReleaseResponse(mediaKeyId: Uint8Array, response: Uint8Array): Promise<void\>
1415e41f4b71Sopenharmony_ci
1416e41f4b71Sopenharmony_ciProcesses a response to a request for releasing offline media keys.
1417e41f4b71Sopenharmony_ci
1418e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12.
1419e41f4b71Sopenharmony_ci
1420e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
1421e41f4b71Sopenharmony_ci
1422e41f4b71Sopenharmony_ci**Parameters**
1423e41f4b71Sopenharmony_ci
1424e41f4b71Sopenharmony_ci| Name    | Type                                            | Mandatory| Description                          |
1425e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- |
1426e41f4b71Sopenharmony_ci| mediaKeyId  | Uint8Array     | Yes  | Array holding the IDs of offline media keys.                  |
1427e41f4b71Sopenharmony_ci| response  | Uint8Array     | Yes  | Response to the request for releasing offline media keys.                  |
1428e41f4b71Sopenharmony_ci
1429e41f4b71Sopenharmony_ci**Return value**
1430e41f4b71Sopenharmony_ci
1431e41f4b71Sopenharmony_ci| Type                                            | Description                          |
1432e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
1433e41f4b71Sopenharmony_ci| Promise<void\>          | Promise                  |
1434e41f4b71Sopenharmony_ci
1435e41f4b71Sopenharmony_ci**Error codes**
1436e41f4b71Sopenharmony_ci
1437e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md).
1438e41f4b71Sopenharmony_ci
1439e41f4b71Sopenharmony_ci| ID        | Error Message       |
1440e41f4b71Sopenharmony_ci| --------------- | --------------- |
1441e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed.            |
1442e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1443e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
1444e41f4b71Sopenharmony_ci
1445e41f4b71Sopenharmony_ci**Example**
1446e41f4b71Sopenharmony_ci
1447e41f4b71Sopenharmony_ci```ts
1448e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1449e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1450e41f4b71Sopenharmony_ci
1451e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1452e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
1453e41f4b71Sopenharmony_ci// mediaKeyId is the return value of processMediaKeyResponse or getOfflineMediaKeyIds. Apply for memory based on the actual length.
1454e41f4b71Sopenharmony_cilet mediaKeyId = new Uint8Array([0x00, 0x00, 0x00, 0x00]);
1455e41f4b71Sopenharmony_cimediaKeySession.generateOfflineReleaseRequest(mediaKeyId).then((offlineReleaseRequest: Uint8Array) => {
1456e41f4b71Sopenharmony_ci  console.log('generateOfflineReleaseRequest:' + offlineReleaseRequest);
1457e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
1458e41f4b71Sopenharmony_ci  console.error(`generateOfflineReleaseRequest: ERROR: ${err}`);
1459e41f4b71Sopenharmony_ci});
1460e41f4b71Sopenharmony_ci// offlineReleaseResponse is obtained from the DRM service. Apply for memory based on the actual length.
1461e41f4b71Sopenharmony_cilet offlineReleaseResponse = new Uint8Array([0x00, 0x00, 0x00, 0x00]);
1462e41f4b71Sopenharmony_cimediaKeySession.processOfflineReleaseResponse(mediaKeyId, offlineReleaseResponse).then(() => {
1463e41f4b71Sopenharmony_ci  console.log('processOfflineReleaseResponse');
1464e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
1465e41f4b71Sopenharmony_ci  console.error(`processOfflineReleaseResponse: ERROR: ${err}`);
1466e41f4b71Sopenharmony_ci});
1467e41f4b71Sopenharmony_ci```
1468e41f4b71Sopenharmony_ci
1469e41f4b71Sopenharmony_ci### restoreOfflineMediaKeys
1470e41f4b71Sopenharmony_ci
1471e41f4b71Sopenharmony_cirestoreOfflineMediaKeys(mediaKeyId: Uint8Array): Promise<void\>
1472e41f4b71Sopenharmony_ci
1473e41f4b71Sopenharmony_ciRestores offline media keys.
1474e41f4b71Sopenharmony_ci
1475e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12.
1476e41f4b71Sopenharmony_ci
1477e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
1478e41f4b71Sopenharmony_ci
1479e41f4b71Sopenharmony_ci**Parameters**
1480e41f4b71Sopenharmony_ci
1481e41f4b71Sopenharmony_ci| Name    | Type                                            | Mandatory| Description                          |
1482e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- |
1483e41f4b71Sopenharmony_ci| mediaKeyId  | Uint8Array     | Yes  | Array holding the IDs of offline media keys.                  |
1484e41f4b71Sopenharmony_ci
1485e41f4b71Sopenharmony_ci**Return value**
1486e41f4b71Sopenharmony_ci
1487e41f4b71Sopenharmony_ci| Type                                            | Description                          |
1488e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
1489e41f4b71Sopenharmony_ci| Promise<void\>          | Promise                  |
1490e41f4b71Sopenharmony_ci
1491e41f4b71Sopenharmony_ci**Error codes**
1492e41f4b71Sopenharmony_ci
1493e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md).
1494e41f4b71Sopenharmony_ci
1495e41f4b71Sopenharmony_ci| ID        | Error Message       |
1496e41f4b71Sopenharmony_ci| --------------- | --------------- |
1497e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed.              |
1498e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1499e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
1500e41f4b71Sopenharmony_ci
1501e41f4b71Sopenharmony_ci**Example**
1502e41f4b71Sopenharmony_ci
1503e41f4b71Sopenharmony_ci```ts
1504e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1505e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1506e41f4b71Sopenharmony_ci
1507e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1508e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
1509e41f4b71Sopenharmony_ci// mediaKeyId is the return value of processMediaKeyResponse or getOfflineMediaKeyIds. Pass in the actual data returned.
1510e41f4b71Sopenharmony_cilet mediaKeyId = new Uint8Array([0x00, 0x00, 0x00, 0x00]);
1511e41f4b71Sopenharmony_cimediaKeySession.restoreOfflineMediaKeys(mediaKeyId).then(() => {
1512e41f4b71Sopenharmony_ci  console.log("restoreOfflineMediaKeys");
1513e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
1514e41f4b71Sopenharmony_ci  console.error(`restoreOfflineMediaKeys: ERROR: ${err}`);
1515e41f4b71Sopenharmony_ci});
1516e41f4b71Sopenharmony_ci```
1517e41f4b71Sopenharmony_ci
1518e41f4b71Sopenharmony_ci### getContentProtectionLevel
1519e41f4b71Sopenharmony_ci
1520e41f4b71Sopenharmony_cigetContentProtectionLevel(): ContentProtectionLevel
1521e41f4b71Sopenharmony_ci
1522e41f4b71Sopenharmony_ciObtains the content protection level of this media key session.
1523e41f4b71Sopenharmony_ci
1524e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12.
1525e41f4b71Sopenharmony_ci
1526e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
1527e41f4b71Sopenharmony_ci
1528e41f4b71Sopenharmony_ci**Return value**
1529e41f4b71Sopenharmony_ci
1530e41f4b71Sopenharmony_ci| Type                                            | Description                          |
1531e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
1532e41f4b71Sopenharmony_ci| [ContentProtectionLevel](#contentprotectionlevel)          | Content protection level.                  |
1533e41f4b71Sopenharmony_ci
1534e41f4b71Sopenharmony_ci**Error codes**
1535e41f4b71Sopenharmony_ci
1536e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md).
1537e41f4b71Sopenharmony_ci
1538e41f4b71Sopenharmony_ci| ID        | Error Message       |
1539e41f4b71Sopenharmony_ci| --------------- | --------------- |
1540e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1541e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
1542e41f4b71Sopenharmony_ci
1543e41f4b71Sopenharmony_ci**Example**
1544e41f4b71Sopenharmony_ci
1545e41f4b71Sopenharmony_ci```ts
1546e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1547e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1548e41f4b71Sopenharmony_ci
1549e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1550e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
1551e41f4b71Sopenharmony_citry {
1552e41f4b71Sopenharmony_ci  let contentProtectionLevel: drm.ContentProtectionLevel = mediaKeySession.getContentProtectionLevel();
1553e41f4b71Sopenharmony_ci} catch (err) {
1554e41f4b71Sopenharmony_ci  let error = err as BusinessError;
1555e41f4b71Sopenharmony_ci  console.error(`getContentProtectionLevel ERROR: ${error}`);
1556e41f4b71Sopenharmony_ci}
1557e41f4b71Sopenharmony_ci```
1558e41f4b71Sopenharmony_ci
1559e41f4b71Sopenharmony_ci### requireSecureDecoderModule
1560e41f4b71Sopenharmony_ci
1561e41f4b71Sopenharmony_cirequireSecureDecoderModule(mimeType: string): boolean
1562e41f4b71Sopenharmony_ci
1563e41f4b71Sopenharmony_ciChecks whether secure decoding is required.
1564e41f4b71Sopenharmony_ci
1565e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12.
1566e41f4b71Sopenharmony_ci
1567e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
1568e41f4b71Sopenharmony_ci
1569e41f4b71Sopenharmony_ci**Parameters**
1570e41f4b71Sopenharmony_ci
1571e41f4b71Sopenharmony_ci| Name    | Type                                            | Mandatory| Description                          |
1572e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- |
1573e41f4b71Sopenharmony_ci| mimeType  | string     | Yes  | MIME type, which is determined by the DRM scheme.                  |
1574e41f4b71Sopenharmony_ci
1575e41f4b71Sopenharmony_ci**Return value**
1576e41f4b71Sopenharmony_ci
1577e41f4b71Sopenharmony_ci| Type                                            | Description                          |
1578e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
1579e41f4b71Sopenharmony_ci| boolean          | Whether secure decoding is required. The value **true** means that secure decoding is required, and **false** means the opposite.                  |
1580e41f4b71Sopenharmony_ci
1581e41f4b71Sopenharmony_ci**Error codes**
1582e41f4b71Sopenharmony_ci
1583e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md).
1584e41f4b71Sopenharmony_ci
1585e41f4b71Sopenharmony_ci| ID        | Error Message       |
1586e41f4b71Sopenharmony_ci| --------------- | --------------- |
1587e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed.      |
1588e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1589e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
1590e41f4b71Sopenharmony_ci
1591e41f4b71Sopenharmony_ci**Example**
1592e41f4b71Sopenharmony_ci
1593e41f4b71Sopenharmony_ci```ts
1594e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1595e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1596e41f4b71Sopenharmony_ci
1597e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1598e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
1599e41f4b71Sopenharmony_citry {
1600e41f4b71Sopenharmony_ci  let status: boolean = mediaKeySession.requireSecureDecoderModule("video/avc");
1601e41f4b71Sopenharmony_ci} catch (err) {
1602e41f4b71Sopenharmony_ci  let error = err as BusinessError;
1603e41f4b71Sopenharmony_ci  console.error(`requireSecureDecoderModule ERROR: ${error}`);
1604e41f4b71Sopenharmony_ci} 
1605e41f4b71Sopenharmony_ci```
1606e41f4b71Sopenharmony_ci
1607e41f4b71Sopenharmony_ci### on('keyRequired')
1608e41f4b71Sopenharmony_ci
1609e41f4b71Sopenharmony_cion(type: 'keyRequired', callback: (eventInfo: EventInfo) => void): void
1610e41f4b71Sopenharmony_ci
1611e41f4b71Sopenharmony_ciSubscribes to events indicating that the application requests a media key.
1612e41f4b71Sopenharmony_ci
1613e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12.
1614e41f4b71Sopenharmony_ci
1615e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
1616e41f4b71Sopenharmony_ci
1617e41f4b71Sopenharmony_ci**Parameters**
1618e41f4b71Sopenharmony_ci
1619e41f4b71Sopenharmony_ci| Name     | Type                 | Mandatory| Description                                 |
1620e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- |
1621e41f4b71Sopenharmony_ci| type     | string               | Yes  | Event type. The value is fixed at **'keyRequired'**. This event is triggered when the application requires a media key.|
1622e41f4b71Sopenharmony_ci| callback | Callback\<[EventInfo](#eventinfo)\> | Yes  | Callback used to return the event information.                |
1623e41f4b71Sopenharmony_ci
1624e41f4b71Sopenharmony_ci**Error codes**
1625e41f4b71Sopenharmony_ci
1626e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md).
1627e41f4b71Sopenharmony_ci
1628e41f4b71Sopenharmony_ci| ID        | Error Message       |
1629e41f4b71Sopenharmony_ci| --------------- | --------------- |
1630e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed.         |
1631e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1632e41f4b71Sopenharmony_ci
1633e41f4b71Sopenharmony_ci**Example**
1634e41f4b71Sopenharmony_ci
1635e41f4b71Sopenharmony_ci```ts
1636e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1637e41f4b71Sopenharmony_ci
1638e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1639e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
1640e41f4b71Sopenharmony_cimediaKeySession.on('keyRequired', (eventInfo: drm.EventInfo) => {
1641e41f4b71Sopenharmony_ci  console.log('keyRequired ' + 'extra: ' + eventInfo.extraInfo + 'data: ' + eventInfo.info);
1642e41f4b71Sopenharmony_ci});
1643e41f4b71Sopenharmony_ci```
1644e41f4b71Sopenharmony_ci
1645e41f4b71Sopenharmony_ci### off('keyRequired')
1646e41f4b71Sopenharmony_ci
1647e41f4b71Sopenharmony_cioff(type: 'keyRequired', callback?: (eventInfo: EventInfo) => void): void
1648e41f4b71Sopenharmony_ci
1649e41f4b71Sopenharmony_ciUnsubscribes from events indicating that the application requests a media key.
1650e41f4b71Sopenharmony_ci
1651e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12.
1652e41f4b71Sopenharmony_ci
1653e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
1654e41f4b71Sopenharmony_ci
1655e41f4b71Sopenharmony_ci**Parameters**
1656e41f4b71Sopenharmony_ci
1657e41f4b71Sopenharmony_ci| Name     | Type                 | Mandatory| Description                                 |
1658e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- |
1659e41f4b71Sopenharmony_ci| type     | string               | Yes  | Event type. The value is fixed at **'keyRequired'**.|
1660e41f4b71Sopenharmony_ci| callback | Callback\<[EventInfo](#eventinfo)\> | No  | Callback used to return the event information.                 |
1661e41f4b71Sopenharmony_ci
1662e41f4b71Sopenharmony_ci**Error codes**
1663e41f4b71Sopenharmony_ci
1664e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md).
1665e41f4b71Sopenharmony_ci
1666e41f4b71Sopenharmony_ci| ID        | Error Message       |
1667e41f4b71Sopenharmony_ci| --------------- | --------------- |
1668e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed.             |
1669e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1670e41f4b71Sopenharmony_ci
1671e41f4b71Sopenharmony_ci**Example**
1672e41f4b71Sopenharmony_ci
1673e41f4b71Sopenharmony_ci```ts
1674e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1675e41f4b71Sopenharmony_ci
1676e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1677e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
1678e41f4b71Sopenharmony_cimediaKeySession.off('keyRequired');
1679e41f4b71Sopenharmony_ci```
1680e41f4b71Sopenharmony_ci
1681e41f4b71Sopenharmony_ci### on('keyExpired')
1682e41f4b71Sopenharmony_ci
1683e41f4b71Sopenharmony_cion(type: 'keyExpired', callback: (eventInfo: EventInfo) => void): void
1684e41f4b71Sopenharmony_ci
1685e41f4b71Sopenharmony_ciSubscribes to events indicating that a media key expires.
1686e41f4b71Sopenharmony_ci
1687e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12.
1688e41f4b71Sopenharmony_ci
1689e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
1690e41f4b71Sopenharmony_ci
1691e41f4b71Sopenharmony_ci**Parameters**
1692e41f4b71Sopenharmony_ci
1693e41f4b71Sopenharmony_ci| Name     | Type                 | Mandatory| Description                                 |
1694e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- |
1695e41f4b71Sopenharmony_ci| type     | string               | Yes  | Event type. The value is fixed at **'keyExpired'**. This event is triggered when a media key expires.|
1696e41f4b71Sopenharmony_ci| callback | Callback\<[EventInfo](#eventinfo)\> | Yes  | Callback used to return the event information.                |
1697e41f4b71Sopenharmony_ci
1698e41f4b71Sopenharmony_ci**Error codes**
1699e41f4b71Sopenharmony_ci
1700e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md).
1701e41f4b71Sopenharmony_ci
1702e41f4b71Sopenharmony_ci| ID        | Error Message       |
1703e41f4b71Sopenharmony_ci| --------------- | --------------- |
1704e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed.          |
1705e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1706e41f4b71Sopenharmony_ci
1707e41f4b71Sopenharmony_ci**Example**
1708e41f4b71Sopenharmony_ci
1709e41f4b71Sopenharmony_ci```ts
1710e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1711e41f4b71Sopenharmony_ci
1712e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1713e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
1714e41f4b71Sopenharmony_cimediaKeySession.on('keyExpired', (eventInfo: drm.EventInfo) => {
1715e41f4b71Sopenharmony_ci  console.log('keyExpired ' + 'extra: ' + eventInfo.extraInfo + 'data: ' + eventInfo.info);
1716e41f4b71Sopenharmony_ci});
1717e41f4b71Sopenharmony_ci```
1718e41f4b71Sopenharmony_ci
1719e41f4b71Sopenharmony_ci### off('keyExpired')
1720e41f4b71Sopenharmony_ci
1721e41f4b71Sopenharmony_cioff(type: 'keyExpired', callback?: (eventInfo: EventInfo) => void): void
1722e41f4b71Sopenharmony_ci
1723e41f4b71Sopenharmony_ciUnsubscribes from events indicating that a media key expires.
1724e41f4b71Sopenharmony_ci
1725e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12.
1726e41f4b71Sopenharmony_ci
1727e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
1728e41f4b71Sopenharmony_ci
1729e41f4b71Sopenharmony_ci**Parameters**
1730e41f4b71Sopenharmony_ci
1731e41f4b71Sopenharmony_ci| Name     | Type                 | Mandatory| Description                                 |
1732e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- |
1733e41f4b71Sopenharmony_ci| type     | string               | Yes  | Event type. The value is fixed at **'keyExpired'**.|
1734e41f4b71Sopenharmony_ci| callback | Callback\<[EventInfo](#eventinfo)\> | No  | Callback used to return the event information.                 |
1735e41f4b71Sopenharmony_ci
1736e41f4b71Sopenharmony_ci**Error codes**
1737e41f4b71Sopenharmony_ci
1738e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md).
1739e41f4b71Sopenharmony_ci
1740e41f4b71Sopenharmony_ci| ID        | Error Message       |
1741e41f4b71Sopenharmony_ci| --------------- | --------------- |
1742e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed.            |
1743e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1744e41f4b71Sopenharmony_ci
1745e41f4b71Sopenharmony_ci**Example**
1746e41f4b71Sopenharmony_ci
1747e41f4b71Sopenharmony_ci```ts
1748e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1749e41f4b71Sopenharmony_ci
1750e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1751e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
1752e41f4b71Sopenharmony_cimediaKeySession.off('keyExpired');
1753e41f4b71Sopenharmony_ci```
1754e41f4b71Sopenharmony_ci
1755e41f4b71Sopenharmony_ci### on('vendorDefined')
1756e41f4b71Sopenharmony_ci
1757e41f4b71Sopenharmony_cion(type: 'vendorDefined', callback: (eventInfo: EventInfo) => void): void
1758e41f4b71Sopenharmony_ci
1759e41f4b71Sopenharmony_ciSubscribes to vendor-defined events.
1760e41f4b71Sopenharmony_ci
1761e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12.
1762e41f4b71Sopenharmony_ci
1763e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
1764e41f4b71Sopenharmony_ci
1765e41f4b71Sopenharmony_ci**Parameters**
1766e41f4b71Sopenharmony_ci
1767e41f4b71Sopenharmony_ci| Name     | Type                 | Mandatory| Description                                 |
1768e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- |
1769e41f4b71Sopenharmony_ci| type     | string               | Yes  | Event type. The value is fixed at **'vendorDefined'**. This event is triggered when a vendor-defined event occurs.|
1770e41f4b71Sopenharmony_ci| callback | Callback\<[EventInfo](#eventinfo)\> | Yes  | Callback used to return the event information.                |
1771e41f4b71Sopenharmony_ci
1772e41f4b71Sopenharmony_ci**Error codes**
1773e41f4b71Sopenharmony_ci
1774e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md).
1775e41f4b71Sopenharmony_ci
1776e41f4b71Sopenharmony_ci| ID        | Error Message       |
1777e41f4b71Sopenharmony_ci| --------------- | --------------- |
1778e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed.              |
1779e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1780e41f4b71Sopenharmony_ci
1781e41f4b71Sopenharmony_ci**Example**
1782e41f4b71Sopenharmony_ci
1783e41f4b71Sopenharmony_ci```ts
1784e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1785e41f4b71Sopenharmony_ci
1786e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1787e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
1788e41f4b71Sopenharmony_cimediaKeySession.on('vendorDefined', (eventInfo: drm.EventInfo) => {
1789e41f4b71Sopenharmony_ci  console.log('vendorDefined ' + 'extra: ' + eventInfo.extraInfo + 'data: ' + eventInfo.info);
1790e41f4b71Sopenharmony_ci});
1791e41f4b71Sopenharmony_ci```
1792e41f4b71Sopenharmony_ci
1793e41f4b71Sopenharmony_ci### off('vendorDefined')
1794e41f4b71Sopenharmony_ci
1795e41f4b71Sopenharmony_cioff(type: 'vendorDefined', callback?: (eventInfo: EventInfo) => void): void
1796e41f4b71Sopenharmony_ci
1797e41f4b71Sopenharmony_ciUnsubscribes from vendor-defined events.
1798e41f4b71Sopenharmony_ci
1799e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12.
1800e41f4b71Sopenharmony_ci
1801e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
1802e41f4b71Sopenharmony_ci
1803e41f4b71Sopenharmony_ci**Parameters**
1804e41f4b71Sopenharmony_ci
1805e41f4b71Sopenharmony_ci| Name     | Type                 | Mandatory| Description                                 |
1806e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- |
1807e41f4b71Sopenharmony_ci| type     | string               | Yes  | Event type. The value is fixed at **'vendorDefined'**.|
1808e41f4b71Sopenharmony_ci| callback | Callback\<[EventInfo](#eventinfo)\> | No  | Callback used to return the event information.                 |
1809e41f4b71Sopenharmony_ci
1810e41f4b71Sopenharmony_ci**Error codes**
1811e41f4b71Sopenharmony_ci
1812e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md).
1813e41f4b71Sopenharmony_ci
1814e41f4b71Sopenharmony_ci| ID        | Error Message       |
1815e41f4b71Sopenharmony_ci| --------------- | --------------- |
1816e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed.      |
1817e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1818e41f4b71Sopenharmony_ci
1819e41f4b71Sopenharmony_ci**Example**
1820e41f4b71Sopenharmony_ci
1821e41f4b71Sopenharmony_ci```ts
1822e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1823e41f4b71Sopenharmony_ci
1824e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1825e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
1826e41f4b71Sopenharmony_cimediaKeySession.off('vendorDefined');
1827e41f4b71Sopenharmony_ci```
1828e41f4b71Sopenharmony_ci
1829e41f4b71Sopenharmony_ci### on('expirationUpdate')
1830e41f4b71Sopenharmony_ci
1831e41f4b71Sopenharmony_cion(type: 'expirationUpdate', callback: (eventInfo: EventInfo) => void): void
1832e41f4b71Sopenharmony_ci
1833e41f4b71Sopenharmony_ciSubscribes to events indicating that a media key updates on expiry.
1834e41f4b71Sopenharmony_ci
1835e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12.
1836e41f4b71Sopenharmony_ci
1837e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
1838e41f4b71Sopenharmony_ci
1839e41f4b71Sopenharmony_ci**Parameters**
1840e41f4b71Sopenharmony_ci
1841e41f4b71Sopenharmony_ci| Name     | Type                 | Mandatory| Description                                 |
1842e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- |
1843e41f4b71Sopenharmony_ci| type     | string               | Yes  | Event type. The value is fixed at **'expirationUpdate'**. This event is triggered when a media key updates on expiry.|
1844e41f4b71Sopenharmony_ci| callback | Callback\<[EventInfo](#eventinfo)\> | Yes  | Callback used to return the event information.                |
1845e41f4b71Sopenharmony_ci
1846e41f4b71Sopenharmony_ci**Error codes**
1847e41f4b71Sopenharmony_ci
1848e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md).
1849e41f4b71Sopenharmony_ci
1850e41f4b71Sopenharmony_ci| ID        | Error Message       |
1851e41f4b71Sopenharmony_ci| --------------- | --------------- |
1852e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed.        |
1853e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1854e41f4b71Sopenharmony_ci
1855e41f4b71Sopenharmony_ci**Example**
1856e41f4b71Sopenharmony_ci
1857e41f4b71Sopenharmony_ci```ts
1858e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1859e41f4b71Sopenharmony_ci
1860e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1861e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
1862e41f4b71Sopenharmony_cimediaKeySession.on('expirationUpdate', (eventInfo: drm.EventInfo) => {
1863e41f4b71Sopenharmony_ci  console.log('expirationUpdate ' + 'extra: ' + eventInfo.extraInfo + 'data: ' + eventInfo.info);
1864e41f4b71Sopenharmony_ci});
1865e41f4b71Sopenharmony_ci```
1866e41f4b71Sopenharmony_ci
1867e41f4b71Sopenharmony_ci### off('expirationUpdate')
1868e41f4b71Sopenharmony_ci
1869e41f4b71Sopenharmony_cioff(type: 'expirationUpdate', callback?: (eventInfo: EventInfo) => void): void
1870e41f4b71Sopenharmony_ci
1871e41f4b71Sopenharmony_ciUnsubscribes from events indicating that a media key updates on expiry. 
1872e41f4b71Sopenharmony_ci
1873e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12.
1874e41f4b71Sopenharmony_ci
1875e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
1876e41f4b71Sopenharmony_ci
1877e41f4b71Sopenharmony_ci**Parameters**
1878e41f4b71Sopenharmony_ci
1879e41f4b71Sopenharmony_ci| Name     | Type                 | Mandatory| Description                                 |
1880e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- |
1881e41f4b71Sopenharmony_ci| type     | string               | Yes  | Event type. The value is fixed at **'expirationUpdate'**.|
1882e41f4b71Sopenharmony_ci| callback | Callback\<[EventInfo](#eventinfo)\> | No  | Callback used to return the event information.                 |
1883e41f4b71Sopenharmony_ci
1884e41f4b71Sopenharmony_ci**Error codes**
1885e41f4b71Sopenharmony_ci
1886e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md).
1887e41f4b71Sopenharmony_ci
1888e41f4b71Sopenharmony_ci| ID        | Error Message       |
1889e41f4b71Sopenharmony_ci| --------------- | --------------- |
1890e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed.       |
1891e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1892e41f4b71Sopenharmony_ci
1893e41f4b71Sopenharmony_ci**Example**
1894e41f4b71Sopenharmony_ci
1895e41f4b71Sopenharmony_ci```ts
1896e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1897e41f4b71Sopenharmony_ci
1898e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1899e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
1900e41f4b71Sopenharmony_cimediaKeySession.off('expirationUpdate');
1901e41f4b71Sopenharmony_ci```
1902e41f4b71Sopenharmony_ci
1903e41f4b71Sopenharmony_ci### on('keysChange')
1904e41f4b71Sopenharmony_ci
1905e41f4b71Sopenharmony_cion(type: 'keysChange', callback: (keyInfo: KeysInfo[], newKeyAvailable: boolean) => void): void
1906e41f4b71Sopenharmony_ci
1907e41f4b71Sopenharmony_ciSubscribes to events indicating that a media key changes.
1908e41f4b71Sopenharmony_ci
1909e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12.
1910e41f4b71Sopenharmony_ci
1911e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
1912e41f4b71Sopenharmony_ci
1913e41f4b71Sopenharmony_ci**Parameters**
1914e41f4b71Sopenharmony_ci
1915e41f4b71Sopenharmony_ci| Name     | Type                 | Mandatory| Description                                 |
1916e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- |
1917e41f4b71Sopenharmony_ci| type     | string               | Yes  | Event type. The value is fixed at **'keysChange'**. This event is triggered when a media key changes.|
1918e41f4b71Sopenharmony_ci| callback | Callback\<[KeysInfo[]](#keysinfo), boolean\> | Yes  | Callback used to return the event information, including the lists of key IDs, statuses, and availability.                |
1919e41f4b71Sopenharmony_ci
1920e41f4b71Sopenharmony_ci**Error codes**
1921e41f4b71Sopenharmony_ci
1922e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md).
1923e41f4b71Sopenharmony_ci
1924e41f4b71Sopenharmony_ci| ID        | Error Message       |
1925e41f4b71Sopenharmony_ci| --------------- | --------------- |
1926e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed.             |
1927e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1928e41f4b71Sopenharmony_ci
1929e41f4b71Sopenharmony_ci**Example**
1930e41f4b71Sopenharmony_ci
1931e41f4b71Sopenharmony_ci```ts
1932e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1933e41f4b71Sopenharmony_ci
1934e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1935e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
1936e41f4b71Sopenharmony_cimediaKeySession.on('keysChange', (keyInfo: drm.KeysInfo[], newKeyAvailable: boolean) => {
1937e41f4b71Sopenharmony_ci  for (let i = 0; i < keyInfo.length; i++) {
1938e41f4b71Sopenharmony_ci    console.log('keysChange' + 'keyId:' + keyInfo[i].keyId + ' data:' + keyInfo[i].value);
1939e41f4b71Sopenharmony_ci  }
1940e41f4b71Sopenharmony_ci});
1941e41f4b71Sopenharmony_ci```
1942e41f4b71Sopenharmony_ci
1943e41f4b71Sopenharmony_ci### off('keysChange')
1944e41f4b71Sopenharmony_ci
1945e41f4b71Sopenharmony_cioff(type: 'keysChange', callback?: (keyInfo: KeysInfo[], newKeyAvailable: boolean) => void): void
1946e41f4b71Sopenharmony_ci
1947e41f4b71Sopenharmony_ciUnsubscribes from events indicating that a media key changes.
1948e41f4b71Sopenharmony_ci
1949e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12.
1950e41f4b71Sopenharmony_ci
1951e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
1952e41f4b71Sopenharmony_ci
1953e41f4b71Sopenharmony_ci**Parameters**
1954e41f4b71Sopenharmony_ci
1955e41f4b71Sopenharmony_ci| Name     | Type                 | Mandatory| Description                                 |
1956e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- |
1957e41f4b71Sopenharmony_ci| type     | string               | Yes  | Event type. The value is fixed at **'keysChange'**.|
1958e41f4b71Sopenharmony_ci| callback | Callback\<[KeysInfo[]](#keysinfo), boolean\> | No  | Callback used to return the event information, including the lists of key IDs, statuses, and availability.               |
1959e41f4b71Sopenharmony_ci
1960e41f4b71Sopenharmony_ci**Error codes**
1961e41f4b71Sopenharmony_ci
1962e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md).
1963e41f4b71Sopenharmony_ci
1964e41f4b71Sopenharmony_ci| ID        | Error Message       |
1965e41f4b71Sopenharmony_ci| --------------- | --------------- |
1966e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed.            |
1967e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1968e41f4b71Sopenharmony_ci
1969e41f4b71Sopenharmony_ci**Example**
1970e41f4b71Sopenharmony_ci
1971e41f4b71Sopenharmony_ci```ts
1972e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1973e41f4b71Sopenharmony_ci
1974e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1975e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
1976e41f4b71Sopenharmony_cimediaKeySession.off('keysChange');
1977e41f4b71Sopenharmony_ci```
1978e41f4b71Sopenharmony_ci
1979e41f4b71Sopenharmony_ci### destroy
1980e41f4b71Sopenharmony_ci
1981e41f4b71Sopenharmony_cidestroy(): void
1982e41f4b71Sopenharmony_ci
1983e41f4b71Sopenharmony_ciDestroys this **MediaKeySession** instance.
1984e41f4b71Sopenharmony_ci
1985e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12.
1986e41f4b71Sopenharmony_ci
1987e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core
1988e41f4b71Sopenharmony_ci
1989e41f4b71Sopenharmony_ci**Error codes**
1990e41f4b71Sopenharmony_ci
1991e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md).
1992e41f4b71Sopenharmony_ci
1993e41f4b71Sopenharmony_ci| ID        | Error Message       |
1994e41f4b71Sopenharmony_ci| --------------- | --------------- |
1995e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1996e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
1997e41f4b71Sopenharmony_ci
1998e41f4b71Sopenharmony_ci**Example**
1999e41f4b71Sopenharmony_ci
2000e41f4b71Sopenharmony_ci```ts
2001e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
2002e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
2003e41f4b71Sopenharmony_ci
2004e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
2005e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
2006e41f4b71Sopenharmony_citry {
2007e41f4b71Sopenharmony_ci  mediaKeySession.destroy();
2008e41f4b71Sopenharmony_ci} catch (err) {
2009e41f4b71Sopenharmony_ci  let error = err as BusinessError;
2010e41f4b71Sopenharmony_ci  console.error(`mediaKeySession destroy ERROR: ${error}`);
2011e41f4b71Sopenharmony_ci}
2012e41f4b71Sopenharmony_ci
2013e41f4b71Sopenharmony_ci```
2014