1 /*
2  * Copyright (c) 2023 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef OHOS_HDI_DRM_V1_0_IMEDIADECRYPTMODULE_H
17 #define OHOS_HDI_DRM_V1_0_IMEDIADECRYPTMODULE_H
18 
19 #include <stdint.h>
20 #include <hdf_base.h>
21 #include <hdi_base.h>
22 #include "drm/v1_0/media_key_system_types.h"
23 
24 #ifndef HDI_BUFF_MAX_SIZE
25 #define HDI_BUFF_MAX_SIZE (1024 * 200)
26 #endif
27 
28 #ifndef HDI_CHECK_VALUE_RETURN
29 #define HDI_CHECK_VALUE_RETURN(lv, compare, rv, ret) do { \
30     if ((lv) compare (rv)) { \
31         return ret; \
32     } \
33 } while (false)
34 #endif
35 
36 #ifndef HDI_CHECK_VALUE_RET_GOTO
37 #define HDI_CHECK_VALUE_RET_GOTO(lv, compare, rv, ret, value, table) do { \
38     if ((lv) compare (rv)) { \
39         ret = value; \
40         goto table; \
41     } \
42 } while (false)
43 #endif
44 
45 namespace OHOS {
46 namespace HDI {
47 namespace Drm {
48 namespace V1_0 {
49 using namespace OHOS;
50 using namespace OHOS::HDI;
51 
52 enum {
53     CMD_MEDIA_DECRYPT_MODULE_GET_VERSION = 0,
54     CMD_MEDIA_DECRYPT_MODULE_DECRYPT_MEDIA_DATA = 1,
55     CMD_MEDIA_DECRYPT_MODULE_RELEASE = 2,
56 };
57 
58 class IMediaDecryptModule : public HdiBase {
59 public:
60     DECLARE_HDI_DESCRIPTOR(u"ohos.hdi.drm.v1_0.IMediaDecryptModule");
61 
62     virtual ~IMediaDecryptModule() = default;
63 
64     virtual int32_t DecryptMediaData(bool secure, const OHOS::HDI::Drm::V1_0::CryptoInfo& cryptoInfo,
65          const OHOS::HDI::Drm::V1_0::DrmBuffer& srcBuffer, const OHOS::HDI::Drm::V1_0::DrmBuffer& destBuffer) = 0;
66 
67     virtual int32_t Release() = 0;
68 
GetVersion(uint32_t & majorVer,uint32_t & minorVer)69     virtual int32_t GetVersion(uint32_t& majorVer, uint32_t& minorVer)
70     {
71         majorVer = 1;
72         minorVer = 0;
73         return HDF_SUCCESS;
74     }
75 
IsProxy()76     virtual bool IsProxy()
77     {
78         return false;
79     }
80 
GetDesc()81     virtual const std::u16string GetDesc()
82     {
83         return metaDescriptor_;
84     }
85 };
86 } // V1_0
87 } // Drm
88 } // HDI
89 } // OHOS
90 
91 #endif // OHOS_HDI_DRM_V1_0_IMEDIADECRYPTMODULE_H