Imported Upstream version 1.0.0
[platform/upstream/iotivity.git] / resource / csdk / security / include / internal / aclresource.h
1 //******************************************************************
2 //
3 // Copyright 2015 Intel Mobile Communications GmbH All Rights Reserved.
4 //
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
6 //
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
10 //
11 //      http://www.apache.org/licenses/LICENSE-2.0
12 //
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.
18 //
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
20
21 #ifndef IOTVT_SRM_ACLR_H
22 #define IOTVT_SRM_ACLR_H
23
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27
28 /**
29  * Initialize ACL resource by loading data from persistent storage.
30  *
31  * @retval  OC_STACK_OK for Success, otherwise some error value
32  */
33 OCStackResult InitACLResource();
34
35 /**
36  * Perform cleanup for ACL resources.
37  *
38  * @retval  none
39  */
40 void DeInitACLResource();
41
42 /**
43  * This method is used by PolicyEngine to retrieve ACL for a Subject.
44  *
45  * @param subjectId ID of the subject for which ACL is required.
46  * @param savePtr is used internally by @ref GetACLResourceData to maintain index between
47  *                successive calls for same subjectId.
48  *
49  * @retval  reference to @ref OicSecAcl_t if ACL is found, else NULL
50  *
51  * @note On the first call to @ref GetACLResourceData, savePtr should point to NULL
52  */
53 const OicSecAcl_t* GetACLResourceData(const OicUuid_t* subjectId, OicSecAcl_t **savePtr);
54
55 /**
56  * This function converts ACL data into JSON format.
57  * Caller needs to invoke 'free' when done using
58  * returned string.
59  * @param acl  instance of OicSecAcl_t structure.
60  *
61  * @retval  pointer to ACL in json format.
62  */
63 char* BinToAclJSON(const OicSecAcl_t * acl);
64
65
66 /**
67  * This function deletes ACL data.
68  *
69  * @param acl  instance of OicSecAcl_t structure.
70  */
71 void DeleteACLList(OicSecAcl_t* acl);
72
73
74 /**
75  * This function installs a new ACL.
76  * @param newJsonStr JSON string representing a new ACL.
77  *
78  * @retval  OC_STACK_OK for Success, otherwise some error value
79  */
80 OCStackResult InstallNewACL(const char* newJsonStr);
81
82
83 #ifdef __cplusplus
84 }
85 #endif
86
87 #endif //IOTVT_SRM_ACLR_H
88
89