• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2025 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 SECURITY_EVENT_CONFIG_H
17 #define SECURITY_EVENT_CONFIG_H
18 
19 #include <string>
20 #include <vector>
21 #include "parcel.h"
22 #include "security_event_info.h"
23 
24 namespace OHOS::Security::SecurityGuard {
25 class SecurityEventConfig : public Parcelable {
26 public:
27     SecurityEventConfig() = default;
SecurityEventConfig(const EventCfg & config)28     SecurityEventConfig(const EventCfg &config) : config_(config){};
29     ~SecurityEventConfig() override = default;
30 
GetEventConfig()31     EventCfg GetEventConfig() const
32     {
33         return config_;
34     };
35 
WriteInt64ToParcel(Parcel & parcel,int64_t value)36     bool WriteInt64ToParcel(Parcel &parcel, int64_t value) const
37     {
38         return parcel.WriteInt64(value);
39     }
40 
WriteUint32ToParcel(Parcel & parcel,uint32_t value)41     bool WriteUint32ToParcel(Parcel &parcel, uint32_t value) const
42     {
43         return parcel.WriteUint32(value);
44     }
45 
WriteInt32ToParcel(Parcel & parcel,int32_t value)46     bool WriteInt32ToParcel(Parcel &parcel, int32_t value) const
47     {
48         return parcel.WriteInt32(value);
49     }
50 
WriteStringToParcel(Parcel & parcel,const std::string & value)51     bool WriteStringToParcel(Parcel &parcel, const std::string &value) const
52     {
53         return parcel.WriteString(value);
54     }
55 
WriteStringArrayToParcel(Parcel & parcel,const std::vector<std::string> & array)56     bool WriteStringArrayToParcel(Parcel &parcel, const std::vector<std::string> &array) const
57     {
58         uint32_t size = array.size();
59         if (!WriteUint32ToParcel(parcel, size)) {
60             return false;
61         }
62         for (const auto &str : array) {
63             if (!WriteStringToParcel(parcel, str)) {
64                 return false;
65             }
66         }
67         return true;
68     }
69 
ReadInt64FromParcel(Parcel & parcel,int64_t & value)70     bool ReadInt64FromParcel(Parcel &parcel, int64_t &value) const
71     {
72         return parcel.ReadInt64(value);
73     }
74 
ReadUint32FromParcel(Parcel & parcel,uint32_t & value)75     bool ReadUint32FromParcel(Parcel &parcel, uint32_t &value) const
76     {
77         return parcel.ReadUint32(value);
78     }
79 
ReadInt32FromParcel(Parcel & parcel,int32_t & value)80     bool ReadInt32FromParcel(Parcel &parcel, int32_t &value) const
81     {
82         return parcel.ReadInt32(value);
83     }
84 
ReadStringFromParcel(Parcel & parcel,std::string & value)85     bool ReadStringFromParcel(Parcel &parcel, std::string &value) const
86     {
87         return parcel.ReadString(value);
88     }
89 
ReadStringArrayFromParcel(Parcel & parcel,std::vector<std::string> & array)90     bool ReadStringArrayFromParcel(Parcel &parcel, std::vector<std::string> &array) const
91     {
92         uint32_t size = 0;
93         if (!ReadUint32FromParcel(parcel, size)) {
94             return false;
95         }
96         for (uint32_t i = 0; i < size; i++) {
97             std::string str;
98             if (!ReadStringFromParcel(parcel, str)) {
99                 return false;
100             }
101             array.push_back(str);
102         }
103         return true;
104     }
105 
Marshalling(Parcel & parcel)106     bool Marshalling(Parcel &parcel) const override
107     {
108         return WriteInt64ToParcel(parcel, config_.eventId) &&
109             WriteStringToParcel(parcel, config_.eventName) &&
110             WriteUint32ToParcel(parcel, config_.version) &&
111             WriteUint32ToParcel(parcel, config_.eventType) &&
112             WriteUint32ToParcel(parcel, config_.collectOnStart) &&
113             WriteUint32ToParcel(parcel, config_.dataSensitivityLevel) &&
114             WriteUint32ToParcel(parcel, config_.discardEventWhiteList) &&
115             WriteUint32ToParcel(parcel, config_.storageRamNums) &&
116             WriteInt32ToParcel(parcel, config_.storageRomNums) &&
117             WriteUint32ToParcel(parcel, config_.storageTime) &&
118             WriteStringArrayToParcel(parcel, config_.owner) &&
119             WriteUint32ToParcel(parcel, config_.source) &&
120             WriteStringToParcel(parcel, config_.dbTable) &&
121             WriteStringToParcel(parcel, config_.prog) &&
122             WriteUint32ToParcel(parcel, config_.isBatchUpload);
123     }
124 
ReadFromParcel(Parcel & parcel)125     bool ReadFromParcel(Parcel &parcel)
126     {
127         return ReadInt64FromParcel(parcel, config_.eventId) &&
128             ReadStringFromParcel(parcel, config_.eventName) &&
129             ReadUint32FromParcel(parcel, config_.version) &&
130             ReadUint32FromParcel(parcel, config_.eventType) &&
131             ReadUint32FromParcel(parcel, config_.collectOnStart) &&
132             ReadUint32FromParcel(parcel, config_.dataSensitivityLevel) &&
133             ReadUint32FromParcel(parcel, config_.discardEventWhiteList) &&
134             ReadUint32FromParcel(parcel, config_.storageRamNums) &&
135             ReadUint32FromParcel(parcel, config_.storageRomNums) &&
136             ReadInt32FromParcel(parcel, config_.storageTime) &&
137             ReadStringArrayFromParcel(parcel, config_.owner) &&
138             ReadUint32FromParcel(parcel, config_.source) &&
139             ReadStringFromParcel(parcel, config_.dbTable) &&
140             ReadStringFromParcel(parcel, config_.prog) &&
141             ReadUint32FromParcel(parcel, config_.isBatchUpload);
142     }
143 
Unmarshalling(Parcel & parcel)144     static SecurityEventConfig *Unmarshalling(Parcel &parcel)
145     {
146         SecurityEventConfig *config = new (std::nothrow) SecurityEventConfig();
147         if (config != nullptr && !config->ReadFromParcel(parcel)) {
148             delete config;
149             config = nullptr;
150         }
151 
152         return config;
153     };
154 
155 private:
156     EventCfg config_{};
157 };
158 
159 }  // namespace OHOS::Security::SecurityGuard
160 
161 #endif  // SECURITY_EVENT_CONFIG_H
162