williamr@4
|
1 |
/*
|
williamr@4
|
2 |
* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
|
williamr@4
|
3 |
* All rights reserved.
|
williamr@4
|
4 |
* This component and the accompanying materials are made available
|
williamr@4
|
5 |
* under the terms of the License "Eclipse Public License v1.0"
|
williamr@4
|
6 |
* which accompanies this distribution, and is available
|
williamr@4
|
7 |
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
|
williamr@4
|
8 |
*
|
williamr@4
|
9 |
* Initial Contributors:
|
williamr@4
|
10 |
* Nokia Corporation - initial contribution.
|
williamr@4
|
11 |
*
|
williamr@4
|
12 |
* Contributors:
|
williamr@4
|
13 |
*
|
williamr@4
|
14 |
* Description:
|
williamr@4
|
15 |
* Types required to use the UPS server.
|
williamr@4
|
16 |
*
|
williamr@4
|
17 |
*/
|
williamr@4
|
18 |
|
williamr@4
|
19 |
|
williamr@4
|
20 |
/**
|
williamr@4
|
21 |
@file
|
williamr@4
|
22 |
@publishedAll
|
williamr@4
|
23 |
@released
|
williamr@4
|
24 |
*/
|
williamr@4
|
25 |
|
williamr@4
|
26 |
|
williamr@4
|
27 |
#ifndef UPSTYPES_H
|
williamr@4
|
28 |
#define UPSTYPES_H
|
williamr@4
|
29 |
#include <e32base.h>
|
williamr@4
|
30 |
|
williamr@4
|
31 |
#ifdef __WINS__
|
williamr@4
|
32 |
// Work around broken TRAP handling.......... See DEF108105
|
williamr@4
|
33 |
#undef TRAP_INSTRUMENTATION_END
|
williamr@4
|
34 |
#define TRAP_INSTRUMENTATION_END (void)User::Allocator()
|
williamr@4
|
35 |
#endif
|
williamr@4
|
36 |
|
williamr@4
|
37 |
class RWriteStream;
|
williamr@4
|
38 |
class RReadStream;
|
williamr@4
|
39 |
|
williamr@4
|
40 |
enum TUpsDecision
|
williamr@4
|
41 |
/**
|
williamr@4
|
42 |
Decisions which can be returned by the UPS server to the
|
williamr@4
|
43 |
system server.
|
williamr@4
|
44 |
*/
|
williamr@4
|
45 |
{
|
williamr@4
|
46 |
/**
|
williamr@4
|
47 |
The action can be performed. This response does not distinguish
|
williamr@4
|
48 |
between a one-shot or an always approval.
|
williamr@4
|
49 |
*/
|
williamr@4
|
50 |
EUpsDecYes,
|
williamr@4
|
51 |
/**
|
williamr@4
|
52 |
The action cannot be performed.
|
williamr@4
|
53 |
*/
|
williamr@4
|
54 |
EUpsDecNo,
|
williamr@4
|
55 |
/**
|
williamr@4
|
56 |
The action can be performed for a session, as defined by the
|
williamr@4
|
57 |
system server.
|
williamr@4
|
58 |
*/
|
williamr@4
|
59 |
EUpsDecSessionYes,
|
williamr@4
|
60 |
/**
|
williamr@4
|
61 |
The action can not be performed for a session, as defined by the
|
williamr@4
|
62 |
system server.
|
williamr@4
|
63 |
*/
|
williamr@4
|
64 |
EUpsDecSessionNo
|
williamr@4
|
65 |
|
williamr@4
|
66 |
};
|
williamr@4
|
67 |
|
williamr@4
|
68 |
/**
|
williamr@4
|
69 |
Convenience typedef wraps up an instance of TUpsDecision which
|
williamr@4
|
70 |
can be supplied to a server. Note the APIs themselves take TDes8&
|
williamr@4
|
71 |
arguments, not specifically references to an instance of this type.
|
williamr@4
|
72 |
*/
|
williamr@4
|
73 |
typedef TPckgBuf<TUpsDecision> TUpsDecisionPckgBuf;
|
williamr@4
|
74 |
|
williamr@4
|
75 |
/**
|
williamr@4
|
76 |
Uniquely identifies a service. UIDs should be reserved via Symbian Signed.
|
williamr@4
|
77 |
*/
|
williamr@4
|
78 |
typedef TUid TServiceId;
|
williamr@4
|
79 |
|
williamr@4
|
80 |
namespace UserPromptService
|
williamr@4
|
81 |
{
|
williamr@4
|
82 |
|
williamr@4
|
83 |
//Number of columns exist in a filter key
|
williamr@4
|
84 |
static const TUint8 KFilterKeysNumber = 0x0B;
|
williamr@4
|
85 |
|
williamr@4
|
86 |
/** Comparision types used in the querying of the decision database. */
|
williamr@4
|
87 |
//4 bytes on the right side are used to indicate whether a columns is set.
|
williamr@4
|
88 |
enum TComparisonOp
|
williamr@4
|
89 |
{
|
williamr@4
|
90 |
EEqual = 0x00010000,
|
williamr@4
|
91 |
ENotEqual = 0x00020000,
|
williamr@4
|
92 |
ELessThan = 0x00040000,
|
williamr@4
|
93 |
EGreaterThan = 0x00080000,
|
williamr@4
|
94 |
ELessThanOrEqual = 0x00100000,
|
williamr@4
|
95 |
EGreaterThanOrEqual = 0x00200000
|
williamr@4
|
96 |
};
|
williamr@4
|
97 |
|
williamr@4
|
98 |
NONSHARABLE_CLASS(CDecisionFilter):public CBase
|
williamr@4
|
99 |
/**
|
williamr@4
|
100 |
Stores the filter key values that used to query the database.
|
williamr@4
|
101 |
A filter object can be created in one phase by supplying all required parameters,
|
williamr@4
|
102 |
or an empty filter is first created and then required filter keys are set separately.
|
williamr@4
|
103 |
*/
|
williamr@4
|
104 |
{
|
williamr@4
|
105 |
friend class CDecisionDb;
|
williamr@4
|
106 |
friend class CDecisionDbW;
|
williamr@4
|
107 |
|
williamr@4
|
108 |
public:
|
williamr@4
|
109 |
IMPORT_C static CDecisionFilter *NewL ();
|
williamr@4
|
110 |
IMPORT_C static CDecisionFilter *NewLC();
|
williamr@4
|
111 |
IMPORT_C static CDecisionFilter *NewL (const TSecureId& aClientSid,const TUid& aEvaluatorId,const TUid& aServiceId,const TSecureId& aServerSid,
|
williamr@4
|
112 |
const TDesC8& aFingerprint,const TDesC8& aClientEntity,const TUint16& aVersion);
|
williamr@4
|
113 |
IMPORT_C static CDecisionFilter *NewLC(const TSecureId& aClientSid,const TUid& aEvaluatorId,const TUid& aServiceId,const TSecureId& aServerSid,
|
williamr@4
|
114 |
const TDesC8& aFingerprint,const TDesC8& aClientEntity,const TUint16& aVersion);
|
williamr@4
|
115 |
~CDecisionFilter();
|
williamr@4
|
116 |
|
williamr@4
|
117 |
IMPORT_C void SetClientSid(const TSecureId& aSid, const TComparisonOp aOp);
|
williamr@4
|
118 |
IMPORT_C void SetEvaluatorId(const TUid& aUid, const TComparisonOp aOp);
|
williamr@4
|
119 |
IMPORT_C void SetServiceId(const TUid& aUid, const TComparisonOp aOp);
|
williamr@4
|
120 |
IMPORT_C void SetServerSid(const TSecureId& aSid, const TComparisonOp aOp);
|
williamr@4
|
121 |
IMPORT_C void SetFingerprintL(const TDesC8& aFingerprint, const TComparisonOp aOp);
|
williamr@4
|
122 |
IMPORT_C void SetClientEntityL(const TDesC8& aClientEntity, const TComparisonOp aOp);
|
williamr@4
|
123 |
IMPORT_C void SetMajorPolicyVersion(const TUint16& aVersion, const TComparisonOp aOp);
|
williamr@4
|
124 |
IMPORT_C void SetRecordId(const TUint32& aId, const TComparisonOp aOp);
|
williamr@4
|
125 |
IMPORT_C void SetDescriptionL(const TDesC& aDescription, const TComparisonOp aOp);
|
williamr@4
|
126 |
IMPORT_C void SetResult(const TUint8& aResult, const TComparisonOp aOp);
|
williamr@4
|
127 |
IMPORT_C void SetEvaluatorInfo(const TUint32& aEvaluatorInfo, const TComparisonOp aOp);
|
williamr@4
|
128 |
|
williamr@4
|
129 |
IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
|
williamr@4
|
130 |
IMPORT_C void InternalizeL(RReadStream& aStream);
|
williamr@4
|
131 |
private:
|
williamr@4
|
132 |
CDecisionFilter();
|
williamr@4
|
133 |
CDecisionFilter(const TSecureId& aClientSid, const TUid& aEvaluatorId, const TUid& aServiceId, const TSecureId& aServerSid, const TUint16& aVersion);
|
williamr@4
|
134 |
|
williamr@4
|
135 |
void ConstructL(const TDesC8& aFingerprint, const TDesC8& aClientEntity);
|
williamr@4
|
136 |
void ValidateL();
|
williamr@4
|
137 |
|
williamr@4
|
138 |
private:
|
williamr@4
|
139 |
/**
|
williamr@4
|
140 |
Secure Id for client application
|
williamr@4
|
141 |
*/
|
williamr@4
|
142 |
TSecureId iClientSid;
|
williamr@4
|
143 |
/**
|
williamr@4
|
144 |
UID for the policy evaluator DLL
|
williamr@4
|
145 |
*/
|
williamr@4
|
146 |
TUid iEvaluatorId;
|
williamr@4
|
147 |
/**
|
williamr@4
|
148 |
UID for service
|
williamr@4
|
149 |
*/
|
williamr@4
|
150 |
TUid iServiceId;
|
williamr@4
|
151 |
/**
|
williamr@4
|
152 |
Secure Id for system server
|
williamr@4
|
153 |
*/
|
williamr@4
|
154 |
TSecureId iServerSid;
|
williamr@4
|
155 |
/**
|
williamr@4
|
156 |
Fingerprint.
|
williamr@4
|
157 |
NULL pointer if not specified.
|
williamr@4
|
158 |
*/
|
williamr@4
|
159 |
HBufC8* iFingerprint;
|
williamr@4
|
160 |
/**
|
williamr@4
|
161 |
Name of the entity within client
|
williamr@4
|
162 |
NULL pointer if not specified.
|
williamr@4
|
163 |
*/
|
williamr@4
|
164 |
HBufC8* iClientEntity;
|
williamr@4
|
165 |
/**
|
williamr@4
|
166 |
An array of flags which shows which attributes are set and what operator(=,!=,<,>, etc.) is assigned.
|
williamr@4
|
167 |
NULL pointer if not specified.
|
williamr@4
|
168 |
*/
|
williamr@4
|
169 |
TUint32 iSetFlag[KFilterKeysNumber];
|
williamr@4
|
170 |
/**
|
williamr@4
|
171 |
Major version of policy file.
|
williamr@4
|
172 |
*/
|
williamr@4
|
173 |
TUint16 iMajorPolicyVersion;
|
williamr@4
|
174 |
/**
|
williamr@4
|
175 |
Unique decision record Id.
|
williamr@4
|
176 |
*/
|
williamr@4
|
177 |
TUint32 iRecordId;
|
williamr@4
|
178 |
/**
|
williamr@4
|
179 |
A copy of description and/or opaque
|
williamr@4
|
180 |
*/
|
williamr@4
|
181 |
HBufC* iDescription;
|
williamr@4
|
182 |
/**
|
williamr@4
|
183 |
Whether the request should be approved
|
williamr@4
|
184 |
*/
|
williamr@4
|
185 |
TUint8 iResult;
|
williamr@4
|
186 |
/**
|
williamr@4
|
187 |
Policy evaluator specific data
|
williamr@4
|
188 |
*/
|
williamr@4
|
189 |
TUint32 iEvaluatorInfo;
|
williamr@4
|
190 |
};
|
williamr@4
|
191 |
|
williamr@4
|
192 |
|
williamr@4
|
193 |
NONSHARABLE_CLASS(CDecisionRecord):public CBase
|
williamr@4
|
194 |
/**
|
williamr@4
|
195 |
Stores all the field values in a decision database row. All member variables of the class
|
williamr@4
|
196 |
are constant and public. Therefore, the members are assigned during construction and then
|
williamr@4
|
197 |
they can be accessible directly, however, it is not possible to modify them.
|
williamr@4
|
198 |
*/
|
williamr@4
|
199 |
{
|
williamr@4
|
200 |
public:
|
williamr@4
|
201 |
IMPORT_C static CDecisionRecord *NewL(const TSecureId& aClientSid,const TUid& aEvaluatorId,const TUid& aServiceId,const TSecureId& aServerSid,const TDesC8& aFingerprint,
|
williamr@4
|
202 |
const TDesC8& aClientEntity,const TDesC& aDescription, const TUint8 aResult,const TUint16& aMajorPolicyVersion,
|
williamr@4
|
203 |
const TUint32 aEvaluatorInfo, const TUint32& aRecordId=0);
|
williamr@4
|
204 |
|
williamr@4
|
205 |
IMPORT_C static CDecisionRecord *NewLC(const TSecureId& aClientSid,const TUid& aEvaluatorId,const TUid& aServiceId,const TSecureId& aServerSid,const TDesC8& aFingerprint,
|
williamr@4
|
206 |
const TDesC8& aClientEntity,const TDesC& aDescription, const TUint8 aResult,const TUint16& aMajorPolicyVersion,
|
williamr@4
|
207 |
const TUint32 aEvaluatorInfo, const TUint32& aRecordId=0);
|
williamr@4
|
208 |
|
williamr@4
|
209 |
IMPORT_C static CDecisionRecord *NewLC();
|
williamr@4
|
210 |
~CDecisionRecord();
|
williamr@4
|
211 |
|
williamr@4
|
212 |
IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
|
williamr@4
|
213 |
IMPORT_C void InternalizeL(RReadStream& aStream);
|
williamr@4
|
214 |
|
williamr@4
|
215 |
private:
|
williamr@4
|
216 |
CDecisionRecord();
|
williamr@4
|
217 |
CDecisionRecord(const TSecureId& aClientSid,const TUid& aEvaluatorId,const TUid& aServiceId,const TSecureId& aServerSid,const TUint8 aResult,
|
williamr@4
|
218 |
const TUint16& aMajorPolicyVersion, const TUint32 aEvaluatorInfo, const TUint32& aRecordId);
|
williamr@4
|
219 |
|
williamr@4
|
220 |
void ConstructL(const TDesC8& aFingerprint,const TDesC8& aClientEntity,const TDesC& aDescription);
|
williamr@4
|
221 |
void ValidateL();
|
williamr@4
|
222 |
|
williamr@4
|
223 |
public:
|
williamr@4
|
224 |
/**
|
williamr@4
|
225 |
Secure Id of client application
|
williamr@4
|
226 |
*/
|
williamr@4
|
227 |
TSecureId iClientSid;
|
williamr@4
|
228 |
/**
|
williamr@4
|
229 |
UID for the policy evaluator DLL
|
williamr@4
|
230 |
*/
|
williamr@4
|
231 |
TUid iEvaluatorId;
|
williamr@4
|
232 |
/**
|
williamr@4
|
233 |
UID for service
|
williamr@4
|
234 |
*/
|
williamr@4
|
235 |
TUid iServiceId;
|
williamr@4
|
236 |
/**
|
williamr@4
|
237 |
Secure Id for system server
|
williamr@4
|
238 |
*/
|
williamr@4
|
239 |
TSecureId iServerSid;
|
williamr@4
|
240 |
/**
|
williamr@4
|
241 |
Fingerprint
|
williamr@4
|
242 |
*/
|
williamr@4
|
243 |
RBuf8 iFingerprint;
|
williamr@4
|
244 |
/**
|
williamr@4
|
245 |
Name of the entity within client
|
williamr@4
|
246 |
*/
|
williamr@4
|
247 |
RBuf8 iClientEntity;
|
williamr@4
|
248 |
/**
|
williamr@4
|
249 |
A copy of description and/or opaque
|
williamr@4
|
250 |
*/
|
williamr@4
|
251 |
RBuf iDescription;
|
williamr@4
|
252 |
/**
|
williamr@4
|
253 |
Whether the request should be approved
|
williamr@4
|
254 |
*/
|
williamr@4
|
255 |
TUint8 iResult;
|
williamr@4
|
256 |
/**
|
williamr@4
|
257 |
Major policy version which this decision record possesses to.
|
williamr@4
|
258 |
*/
|
williamr@4
|
259 |
TUint16 iMajorPolicyVersion;
|
williamr@4
|
260 |
/**
|
williamr@4
|
261 |
Unique decision record Id.
|
williamr@4
|
262 |
*/
|
williamr@4
|
263 |
TUint32 iRecordId;
|
williamr@4
|
264 |
/**
|
williamr@4
|
265 |
Policy evaluator specific data
|
williamr@4
|
266 |
*/
|
williamr@4
|
267 |
TUint32 iEvaluatorInfo;
|
williamr@4
|
268 |
};
|
williamr@4
|
269 |
|
williamr@4
|
270 |
} // End of UserPromptService namespace
|
williamr@4
|
271 |
|
williamr@4
|
272 |
|
williamr@4
|
273 |
#endif // #ifndef UPSTYPES_H
|
williamr@4
|
274 |
|