1/*
2 * Copyright (c) 2024 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/**
17 * @addtogroup DlpPermissionApi
18 * @{
19 *
20 * @brief Provides the capability to access the data loss prevention (DLP) files.
21 *
22 * @since 13
23 */
24
25/**
26 * @file dlp_permission_api.h
27 *
28 * @brief Declares the APIs for accessing the data loss prevention (DLP) files.
29 *
30 * @library libohdlp_permission.so
31 * @kit DataProtectionKit
32 * @syscap SystemCapability.Security.DataLossPrevention
33 * @since 13
34 */
35
36#ifndef DLP_PERMISSION_API_H
37#define DLP_PERMISSION_API_H
38
39#include <stdbool.h>
40#include <stdint.h>
41
42#ifdef __cplusplus
43extern "C" {
44#endif
45
46/**
47 * @brief Enumerates the error codes.
48 *
49 * @since 13
50 */
51typedef enum {
52    /** @error The operation is successful. */
53    ERR_OH_SUCCESS = 0,
54    /** @error Invalid parameter value. */
55    ERR_OH_INVALID_PARAMETER = 19100001,
56    /** @error No permission to call this API, which is available only for DLP sandbox applications. */
57    ERR_OH_API_ONLY_FOR_SANDBOX = 19100006,
58    /** @error No permission to call this API, which is available only for non-DLP sandbox applications. */
59    ERR_OH_API_NOT_FOR_SANDBOX = 19100007,
60    /** @error The system ability works abnormally. */
61    ERR_OH_SYSTEM_SERVICE_EXCEPTION = 19100011,
62    /** @error Indicates the memory error. */
63    ERR_OH_OUT_OF_MEMORY = 19100012,
64    /** @error DisplayName missing in want. */
65    ERR_OH_APPLICATION_NOT_AUTHORIZED = 19100018
66} DLP_ErrCode;
67
68/**
69 * @brief Enumerates the access permissions for a DLP file.
70 *
71 * @since 13
72 */
73typedef enum {
74    /** No permission. */
75    NO_PERMISSION = 0,
76    /** Read-only. */
77    READ_ONLY = 1,
78    /** Edit. */
79    CONTENT_EDIT = 2,
80    /** Full control. */
81    FULL_CONTROL = 3
82} DLP_FileAccess;
83
84/**
85 * @brief Obtains the permission info of this DLP file.
86 *
87 * @param dlpFileAccess - Indicates the access permission for the DLP file.
88 * @param flags - Indicates the actions allowed for the DLP file.
89 * @return {@link DLP_ErrCode#ERR_OH_SUCCESS} 0 - If the operation is successful.
90 *         {@link DLP_ErrCode#ERR_OH_INVALID_PARAMETER} 19100001 - If the parameter value is invalid.
91 *         {@link DLP_ErrCode#ERR_OH_API_ONLY_FOR_SANDBOX} 19100006 - If no permission to
92 *             call this API, which is available only for DLP sandbox applications.
93 *         {@link DLP_ErrCode#ERR_OH_SYSTEM_SERVICE_EXCEPTION} 19100011 - If the system ability
94 *             works abnormally.
95 *         {@link DLP_ErrCode#ERR_OH_OUT_OF_MEMORY} 19100012 - If the memory error.
96 * @since 13
97 */
98DLP_ErrCode OH_DLP_GetDlpPermissionInfo(DLP_FileAccess *dlpFileAccess, uint32_t *flags);
99
100/**
101 * @brief Obtains the original file name from a DLP file name.
102 *        This method removes the DLP file name extension from the DLP file name.
103 *
104 * @param fileName - Indicates the DLP file name.
105 * @param originalFileName - Indicates the original file name obtained.
106 * @return {@link DLP_ErrCode#ERR_OH_SUCCESS} 0 - If the operation is successful.
107 *         {@link DLP_ErrCode#ERR_OH_INVALID_PARAMS} 19100001 - If the parameter value is invalid.
108 *         {@link DLP_ErrCode#ERR_OH_OUT_OF_MEMORY} 19100012 - If the memory error.
109 * @since 13
110 */
111DLP_ErrCode OH_DLP_GetOriginalFileName(const char *fileName, char **originalFileName);
112
113/**
114 * @brief Checks whether current application is in the DLP sandbox.
115 *
116 * @param isInSandbox - Indicates output parameter,
117 *                      {@code true} if current application is in a DLP sandbox, {@code false} otherwise.
118 * @return {@link DLP_ErrCode#ERR_OH_SUCCESS} 0 - If the operation is successful.
119 *         {@link DLP_ErrCode#ERR_OH_SYSTEM_SERVICE_EXCEPTION} 19100011 - If the system ability
120 *             works abnormally.
121 *         {@link DLP_ErrCode#ERR_OH_OUT_OF_MEMORY} 19100012 - If the memory error.
122 * @since 13
123 */
124DLP_ErrCode OH_DLP_IsInSandbox(bool *isInSandbox);
125
126/**
127 * @brief Sets sandbox application configuration.
128 *
129 * @param configInfo - Configuration of the sandbox application.
130 * @return {@link DLP_ErrCode#ERR_OH_SUCCESS} 0 - If the operation is successful.
131 *         {@link DLP_ErrCode#ERR_OH_INVALID_PARAMETER} 19100001 - If the parameter value is invalid.
132 *         {@link DLP_ErrCode#ERR_OH_API_NOT_FOR_SANDBOX} 19100007 - If no permission to
133 *             call this API, which is available only for non-DLP sandbox applications.
134 *         {@link DLP_ErrCode#ERR_OH_SYSTEM_SERVICE_EXCEPTION} 19100011 - If the system ability
135 *             works abnormally.
136 *         {@link DLP_ErrCode#ERR_OH_APPLICATION_NOT_AUTHORIZED} 19100018 - If not authorized application.
137 * @since 13
138 */
139DLP_ErrCode OH_DLP_SetSandboxAppConfig(const char *configInfo);
140
141/**
142 * @brief Obtains sandbox application configuration.
143 *
144 * @param configInfo - Configuration of the sandbox application.
145 * @return {@link DLP_ErrCode#ERR_OH_SUCCESS} 0 - If the operation is successful.
146 *         {@link DLP_ErrCode#ERR_OH_SYSTEM_SERVICE_EXCEPTION} 19100011 - If the system ability
147 *             works abnormally.
148 *         {@link DLP_ErrCode#ERR_OH_OUT_OF_MEMORY} 19100012 - If the memory error.
149 *         {@link DLP_ErrCode#ERR_OH_APPLICATION_NOT_AUTHORIZED} 19100018 - If not authorized application.
150 * @since 13
151 */
152DLP_ErrCode OH_DLP_GetSandboxAppConfig(char **configInfo);
153
154/**
155 * @brief Cleans sandbox application configuration.
156 *
157 * @return {@link DLP_ErrCode#ERR_OH_SUCCESS} 0 - If the operation is successful.
158 *         {@link DLP_ErrCode#ERR_OH_API_NOT_FOR_SANDBOX} 19100007 - If no permission to
159 *             call this API, which is available only for non-DLP sandbox applications.
160 *         {@link DLP_ErrCode#ERR_OH_SYSTEM_SERVICE_EXCEPTION} 19100011 - If the system ability
161 *             works abnormally.
162 *         {@link DLP_ErrCode#ERR_OH_APPLICATION_NOT_AUTHORIZED} 19100018 - If not authorized application.
163 * @since 13
164 */
165DLP_ErrCode OH_DLP_CleanSandboxAppConfig();
166
167#ifdef __cplusplus
168}
169#endif
170
171/** @} */
172#endif /* DLP_PERMISSION_API_H */