1 /*
2  * Copyright (c) 2022-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 /**
17  * @addtogroup AccessToken
18  * @{
19  *
20  * @brief Provides permission management interfaces.
21  *
22  * Provides tokenID-based application permission verification mechanism.
23  * When an application accesses sensitive data or APIs, this module can check
24  * whether the application has the corresponding permission. Allows applications
25  * to query their access token information or APL levcels based on token IDs.
26  *
27  * @since 7.0
28  * @version 7.0
29  */
30 
31 /**
32  * @file permission_state_change_info.h
33  *
34  * @brief Declares PermStateChangeInfo and PermStateChangeScope struct.
35  *
36  * @since 7.0
37  * @version 7.0
38  */
39 
40 #ifndef INTERFACES_INNER_KITS_PERMISSION_STATE_CHANGE_INFO_H
41 #define INTERFACES_INNER_KITS_PERMISSION_STATE_CHANGE_INFO_H
42 
43 #include <string>
44 #include <vector>
45 
46 #include "access_token.h"
47 
48 namespace OHOS {
49 namespace Security {
50 namespace AccessToken {
51 /** define tokenID list max size */
52 #define TOKENIDS_LIST_SIZE_MAX 1024
53 /** define permission list max size */
54 #define PERMS_LIST_SIZE_MAX 1024
55 
56 /**
57  * @brief Declares permission state change type
58  */
59 enum PermStateChangeType {
60     STATE_CHANGE_REVOKED = 0,
61     STATE_CHANGE_GRANTED = 1,
62 };
63 
64 /**
65  * @brief Declares permission state change info struct
66  */
67 struct PermStateChangeInfo {
68     /**
69      * permission state change type, for details about the valid values,
70      * see the definition of PermStateChangeType.
71      */
72     int32_t permStateChangeType;
73     AccessTokenID tokenID;
74     std::string permissionName;
75 };
76 
77 /**
78  * @brief Declares permission state change scope struct
79  */
80 struct PermStateChangeScope {
81     /**
82      * indicates which tokenID to listen the permission state change,
83      * empty means listen all tokenIDs in the device
84      */
85     std::vector<AccessTokenID> tokenIDs;
86     /**
87      * indicates which permission to listen the state change,
88      * empty means listen all permission state changes in the device
89      */
90     std::vector<std::string> permList;
91 };
92 } // namespace AccessToken
93 } // namespace Security
94 } // namespace OHOS
95 
96 #endif // INTERFACES_INNER_KITS_PERMISSION_STATE_CHANGE_INFO_H
97