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 Privacy 18 * @{ 19 * 20 * @brief Provides sensitive data access management. 21 * 22 * @since 8.0 23 * @version 8.0 24 */ 25 26 /** 27 * @file permission_used_result.h 28 * 29 * @brief Declares structs. 30 * 31 * @since 8.0 32 * @version 8.0 33 */ 34 35 #ifndef PERMISSION_USED_RESPONSE_H 36 #define PERMISSION_USED_RESPONSE_H 37 38 #include <string> 39 #include <vector> 40 #include "access_token.h" 41 #include "active_change_response_info.h" 42 #include "permission_used_type.h" 43 44 namespace OHOS { 45 namespace Security { 46 namespace AccessToken { 47 /** 48 * @brief Record used detail struct 49 */ 50 struct UsedRecordDetail { 51 /** 52 * permission active state, for details about the valid values, 53 * see the definition of ActiveChangeType in 54 * the active_change_response_info.h file. 55 */ 56 int32_t status = 0; 57 /** 58 * permission lockscreen state, for details about the valid values, 59 * see the definition of ActiveChangeType in 60 * the active_change_response_info.h file. 61 */ 62 int32_t lockScreenStatus = LockScreenStatusChangeType::PERM_ACTIVE_IN_UNLOCKED; 63 /** permission active state change timestamp */ 64 int64_t timestamp = 0L; 65 /** permission active state remain times */ 66 int64_t accessDuration = 0L; 67 /** The value of successCount or failCount passed in to addPermissionUsedRecord */ 68 int32_t count = 0; 69 /** permission used type */ 70 PermissionUsedType type; 71 }; 72 73 /** 74 * @brief Permission used record struct 75 */ 76 struct PermissionUsedRecord { 77 /** permission name */ 78 std::string permissionName; 79 /** permission access count */ 80 int32_t accessCount = 0; 81 /** permission reject count */ 82 int32_t rejectCount = 0; 83 /** permission last access timestamp */ 84 int64_t lastAccessTime = 0L; 85 /** permission last reject timestamp */ 86 int64_t lastRejectTime = 0L; 87 /** permission last access remain time */ 88 int64_t lastAccessDuration = 0L; 89 /** UsedRecordDetail list */ 90 std::vector<UsedRecordDetail> accessRecords; 91 /** UsedRecordDetail list */ 92 std::vector<UsedRecordDetail> rejectRecords; 93 }; 94 95 /** 96 * @brief Bundle used record struct 97 */ 98 struct BundleUsedRecord { 99 /** token id */ 100 AccessTokenID tokenId; 101 /** is remote token */ 102 bool isRemote; 103 /** device id */ 104 std::string deviceId; 105 /** bundle name */ 106 std::string bundleName; 107 /** PermissionUsedRecord list */ 108 std::vector<PermissionUsedRecord> permissionRecords; 109 }; 110 111 /** 112 * @brief Permission used result struct 113 */ 114 struct PermissionUsedResult { 115 /** begin timestamp */ 116 int64_t beginTimeMillis = 0L; 117 /** end timestamp */ 118 int64_t endTimeMillis = 0L; 119 /** BundleUsedRecord list */ 120 std::vector<BundleUsedRecord> bundleRecords; 121 }; 122 } // namespace AccessToken 123 } // namespace Security 124 } // namespace OHOS 125 #endif // PERMISSION_USED_RESPONSE_H 126