1 /* *****************************************************************
3 * Copyright 2016 Samsung Electronics All Rights Reserved.
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
19 * *****************************************************************/
20 #ifndef OC_CLOUD_PROVISIONING_H
21 #define OC_CLOUD_PROVISIONING_H
24 #include "securevirtualresourcetypes.h"
30 typedef void (*OCCloudResponseCB )(void* ctx, OCStackResult result, void* data);
32 typedef struct cloudAce cloudAce_t;
36 OicUuid_t subjectuuid;
39 OicSecRsrc_t *resources;
40 OicSecValidity_t *validities;
50 stringArray_t gidlist;
51 stringArray_t midlist;
55 stringArrayPair_t invite;
56 stringArrayPair_t invited;
60 * Certificate-Issue request function
62 * @param[in] ctx user-defined context
63 * @param[in] endPoint cloud host and port
64 * @param[in] callback result callback
65 * @return OCStackResult application result
67 OCStackResult OCCloudCertificateIssueRequest(void* ctx,
68 const OCDevAddr *endPoint,
69 OCCloudResponseCB callback);
72 * CRL GET request function
74 * @param[in] ctx user-defined context
75 * @param[in] endPoint cloud host and port
76 * @param[in] callback result callback
77 * @return OCStackResult application result
79 OCStackResult OCCloudGetCRL(void* ctx,
80 const OCDevAddr *endPoint,
81 OCCloudResponseCB callback);
84 * CRL POST request function (with Serial Numbers list to revoke)
86 * @param[in] ctx user-defined context
87 * @param[in] thisUpdate mandatory parameter thisUpdate
88 * @param[in] nextUpdate mandatory parameter nextUpdate
89 * @param[in] crl optional parameter crl
90 * @param[in] serialNumbers optional parameter serial numbers
91 * @param[in] endPoint cloud host and port
92 * @param[in] callback result callback
93 * @return OCStackResult application result
95 OCStackResult OCCloudPostCRL(void* ctx,
96 const char *thisUpdate,
97 const char *nextUpdate,
98 const OCByteString *crl,
99 const stringArray_t *serialNumbers,
100 const OCDevAddr *endPoint,
101 OCCloudResponseCB callback);
104 * ACL id retrieve by device id
106 * @param[in] ctx user-defined context
107 * @param[in] deviceId mandatory parameter device id
108 * @param[in] endPoint cloud host and port
109 * @param[in] callback result callback
110 * @return OCStackResult application result
112 OCStackResult OCCloudAclIdGetByDevice(void* ctx,
113 const char *deviceId,
114 const OCDevAddr *endPoint,
115 OCCloudResponseCB callback);
120 * @param[in] ctx user-defined context
121 * @param[in] ownerId mandatory parameter owner id
122 * @param[in] deviceId mandatory parameter device id
123 * @param[in] endPoint cloud host and port
124 * @param[in] callback result callback
125 * @return OCStackResult application result
127 OCStackResult OCCloudAclIdCreate(void* ctx,
129 const char *deviceId,
130 const OCDevAddr *endPoint,
131 OCCloudResponseCB callback);
136 * @param[in] ctx user-defined context
137 * @param[in] aclId mandatory parameter acl id
138 * @param[in] endPoint cloud host and port
139 * @param[in] callback result callback
140 * @return OCStackResult application result
142 OCStackResult OCCloudAclIdDelete(void* ctx,
144 const OCDevAddr *endPoint,
145 OCCloudResponseCB callback);
148 * ACL individual get info
150 * @param[in] ctx user-defined context
151 * @param[in] aclId mandatory parameter acl id
152 * @param[in] endPoint cloud host and port
153 * @param[in] callback result callback
154 * @return OCStackResult application result
156 OCStackResult OCCloudAclIndividualGetInfo(void* ctx,
158 const OCDevAddr *endPoint,
159 OCCloudResponseCB callback);
162 * ACL individual update ACE
164 * @param[in] ctx user-defined context
165 * @param[in] aclId mandatory parameter acl id
166 * @param[in] aces mandatory parameter aces
167 * @param[in] endPoint cloud host and port
168 * @param[in] callback result callback
169 * @return OCStackResult application result
171 OCStackResult OCCloudAclIndividualUpdateAce(void* ctx,
173 const cloudAce_t *aces,
174 const OCDevAddr *endPoint,
175 OCCloudResponseCB callback);
178 * ACL individual delete
180 * @param[in] ctx user-defined context
181 * @param[in] aclId mandatory parameter acl id
182 * @param[in] endPoint cloud host and port
183 * @param[in] callback result callback
184 * @return OCStackResult application result
186 OCStackResult OCCloudAclIndividualDelete(void* ctx,
188 const OCDevAddr *endPoint,
189 OCCloudResponseCB callback);
192 * ACL post group request function
194 * @param[in] ctx user-defined context
195 * @param[in] groupType mandatory parameter group type
196 * @param[in] groupMasterId optional parameter group master id
197 * @param[in] endPoint cloud host and port
198 * @param[in] callback result callback
199 * @return OCStackResult application result
201 OCStackResult OCCloudAclCreateGroup(void* ctx,
202 const char *groupType,
203 const char *groupMasterId,
204 const OCDevAddr *endPoint,
205 OCCloudResponseCB callback);
208 * ACL get group request function
210 * @param[in] ctx user-defined context
211 * @param[in] memberId mandatory parameter member id
212 * @param[in] endPoint cloud host and port
213 * @param[in] callback result callback
214 * @return OCStackResult application result
216 OCStackResult OCCloudAclFindMyGroup(void* ctx,
217 const char *memberId,
218 const OCDevAddr *endPoint,
219 OCCloudResponseCB callback);
222 * ACL delete group request function
224 * @param[in] ctx user-defined context
225 * @param[in] groupId mandatory parameter group id
226 * @param[in] groupMasterId optional parameter group master id
227 * @param[in] endPoint cloud host and port
228 * @param[in] callback result callback
229 * @return OCStackResult application result
231 OCStackResult OCCloudAclDeleteGroup(void* ctx,
233 const char *groupMasterId,
234 const OCDevAddr *endPoint,
235 OCCloudResponseCB callback);
238 * ACL join to invited group request function
240 * @param[in] ctx user-defined context
241 * @param[in] groupId mandatory parameter group id
242 * @param[in] endPoint cloud host and port
243 * @param[in] callback result callback
244 * @return OCStackResult application result
246 OCStackResult OCCloudAclJoinToInvitedGroup(void* ctx,
248 const OCDevAddr *endPoint,
249 OCCloudResponseCB callback);
252 * ACL observe group request function
254 * @param[in] ctx user-defined context
255 * @param[in] groupId mandatory parameter group id
256 * @param[in] endPoint cloud host and port
257 * @param[in] callback result callback
258 * @return OCStackResult application result
260 OCStackResult OCCloudAclObserveGroup(void* ctx,
262 const OCDevAddr *endPoint,
263 OCCloudResponseCB callback);
266 * ACL share device into group request function
268 * @param[in] ctx user-defined context
269 * @param[in] groupId mandatory parameter group id
270 * @param[in] memberIds mandatory parameter members list
271 * @param[in] deviceIds mandatory parameter devices list
272 * @param[in] endPoint cloud host and port
273 * @param[in] callback result callback
274 * @return OCStackResult application result
276 OCStackResult OCCloudAclShareDeviceIntoGroup(void* ctx,
278 const stringArray_t *memberIds,
279 const stringArray_t *deviceIds,
280 const OCDevAddr *endPoint,
281 OCCloudResponseCB callback);
284 * ACL delete device from group request function
286 * @param[in] ctx user-defined context
287 * @param[in] groupId mandatory parameter group id
288 * @param[in] memberIds mandatory parameter members list
289 * @param[in] deviceIds mandatory parameter devices list
290 * @param[in] endPoint cloud host and port
291 * @param[in] callback result callback
292 * @return OCStackResult application result
294 OCStackResult OCCloudAclDeleteDeviceFromGroup(void* ctx,
296 const stringArray_t *memberIds,
297 const stringArray_t *deviceIds,
298 const OCDevAddr *endPoint,
299 OCCloudResponseCB callback);
302 * ACL get group info request function
304 * @param[in] ctx user-defined context
305 * @param[in] groupId mandatory parameter group id
306 * @param[in] memberId optional parameter member id
307 * @param[in] endPoint cloud host and port
308 * @param[in] callback result callback
309 * @return OCStackResult application result
311 OCStackResult OCCloudAclGroupGetInfo(void* ctx,
313 const char *memberId,
314 const OCDevAddr *endPoint,
315 OCCloudResponseCB callback);
318 * ACL invite user to group request function
320 * @param[in] ctx user-defined context
321 * @param[in] userId optional parameter user id
322 * @param[in] groupIds mandatory parameter groups list
323 * @param[in] memberIds mandatory parameter members list
324 * @param[in] endPoint cloud host and port
325 * @param[in] callback result callback
326 * @return OCStackResult application result
328 OCStackResult OCCloudAclInviteUser(void* ctx,
330 const stringArray_t *groupIds,
331 const stringArray_t *memberIds,
332 const OCDevAddr *endPoint,
333 OCCloudResponseCB callback);
336 * ACL get invitation request function
338 * @param[in] ctx user-defined context
339 * @param[in] userId optional parameter user id
340 * @param[in] endPoint cloud host and port
341 * @param[in] callback result callback
342 * @return OCStackResult application result
344 OCStackResult OCCloudAclGetInvitation(void* ctx,
346 const OCDevAddr *endPoint,
347 OCCloudResponseCB callback);
350 * ACL delete invitation request function (by receiver)
352 * @param[in] ctx user-defined context
353 * @param[in] userId optional parameter user id
354 * @param[in] groupId mandatory parameter group id
355 * @param[in] endPoint cloud host and port
356 * @param[in] callback result callback
357 * @return OCStackResult application result
359 OCStackResult OCCloudAclDeleteInvitation(void* ctx,
362 const OCDevAddr *endPoint,
363 OCCloudResponseCB callback);
366 * ACL cancel invitation request function (by sender)
368 * @param[in] ctx user-defined context
369 * @param[in] userId optional parameter user id
370 * @param[in] groupId mandatory parameter group id
371 * @param[in] memberId mandatory parameter member id
372 * @param[in] endPoint cloud host and port
373 * @param[in] callback result callback
374 * @return OCStackResult application result
376 OCStackResult OCCloudAclCancelInvitation(void* ctx,
379 const char *memberId,
380 const OCDevAddr *endPoint,
381 OCCloudResponseCB callback);
384 * ACL check that given request can be applied to resource
386 * @param[in] ctx user-defined context
387 * @param[in] subjectId mandatory parameter subject id
388 * @param[in] deviceId mandatory parameter device id
389 * @param[in] method mandatory parameter method
390 * @param[in] uri mandatory parameter uri
391 * @param[in] endPoint cloud host and port
392 * @param[in] callback result callback
393 * @return OCStackResult application result
395 OCStackResult OCCloudAclPolicyCheck(void* ctx,
396 const char *subjectId,
397 const char *deviceId,
400 const OCDevAddr *endPoint,
401 OCCloudResponseCB callback);
405 #endif // __cplusplus
406 #endif //OC_CLOUD_PROVISIONING_H