security: Declare strict void function
[iotivity.git] / resource / csdk / security / include / internal / security_internals.h
1 //******************************************************************
2 //
3 //Copyright 2016 Samsung Electronics 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 #ifndef IOTVT_SRM_SECURITY_INTERNALS_H
21 #define IOTVT_SRM_SECURITY_INTERNALS_H
22
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26
27 OicSecAcl_t* CBORPayloadToAcl(const uint8_t *payload, const size_t size);
28
29 void DeleteACLList(OicSecAcl_t* acl);
30
31 /**
32  * This internal method is to retrieve the default ACL.
33  * If SVR database in persistent storage got corrupted or
34  * is not available for some reason, a default ACL is created
35  * which allows user to initiate ACL provisioning again.
36  */
37 OCStackResult  GetDefaultACL(OicSecAcl_t** defaultAcl);
38
39 /**
40  * This internal method is the entity handler for ACL resources and
41  * will handle REST request (GET/PUT/POST/DEL) for them.
42  */
43 OCEntityHandlerResult ACLEntityHandler(OCEntityHandlerFlag flag,
44             OCEntityHandlerRequest * ehRequest, void* callbackParameter);
45
46 OCStackResult SetDefaultACL(OicSecAcl_t *acl);
47
48 /**
49  * Converts CBOR payload to SVC.
50  *
51  * @param cborPayload is the svc payload cbor value that neds to be converted.
52  * @param size of the cborPayload. In case size is not known, it is 0.
53  * @param svc is the value that is initialized. It is NULL in case of error.
54  *
55  * @return ::OC_STACK_OK in case successful. ::OC_STACK_INVALID_PARAM if one of
56  * the passed parameter is NULL. ::OC_STACK_ERROR in case of error.
57  */
58 OCStackResult CBORPayloadToSVC(const uint8_t *cborPayload, size_t size, OicSecSvc_t **svc);
59
60 /**
61  * Deletes the passed initialized reference to @ref OicSecSvc_t.
62  *
63  * @param svc is the reference to be deleted.
64  */
65 void DeleteSVCList(OicSecSvc_t* svc);
66
67 /**
68  * Create PSTAT resource after default PSTAT initialization is done.
69  */
70 OCStackResult CreatePstatResource(void);
71
72 /**
73  * Create SP resource after default SP initialization is done.
74  */
75 OCStackResult CreateSpResource(void);
76
77 /**
78  * This internal method is the entity handler for sp resources
79  * to handle REST request (PUT/POST)
80  */
81 OCEntityHandlerResult SpEntityHandler(OCEntityHandlerFlag flag,
82                                       OCEntityHandlerRequest * ehRequest,
83                                       void* callbackParameter);
84
85 /**
86  * This internal method is the entity handler for PSTAT resources and
87  * will handle REST request (GET/PUT/POST/DEL) for them.
88  */
89 OCEntityHandlerResult PstatEntityHandler(OCEntityHandlerFlag flag,
90                                          OCEntityHandlerRequest * ehRequest);
91
92 /**
93  * Converts CBOR payload to AMACL.
94  *
95  * @param cborPayload is the amacl payload cbor value that neds to be converted.
96  * @param cborSize of the cborPayload. In case size is not known, it is 0.
97  * It should be NON-NULL.
98  * @param amacl is the value that is initialized. It is NULL in case of error.
99  */
100 OCStackResult CBORPayloadToAmacl(const uint8_t *cborPayload, size_t cborSize,
101                                  OicSecAmacl_t **amacl);
102
103 void DeleteAmaclList(OicSecAmacl_t *amacl);
104
105 /**
106  * This internal method is the entity handler for Cred resources
107  * to handle REST request (PUT/POST/DEL)
108  */
109 OCEntityHandlerResult CredEntityHandler(OCEntityHandlerFlag flag,
110                                         OCEntityHandlerRequest * ehRequest,
111                                         void* callbackParameter);
112
113 /**
114  * This internal method is used to create '/oic/sec/Cred' resource.
115  */
116 OCStackResult CreateCredResource(void);
117
118 /**
119  * This function converts from CBOR format into credential structure .
120  * Caller needs to invoke 'free' for allocated structure.
121  *
122  * @param cborPayload is the CBOR value that is assigned to the structure.
123  * @param size is the size of the CBOR.
124  * @param secCred is the pointer to instance of @ref OicSecCred_t structure that will be allocated.
125  * If it fails it will return NULL.
126  *
127  * @return ::OC_STACK_OK if conversion is successful, else ::OC_STACK_ERROR if unsuccessful.
128  */
129 OCStackResult CBORPayloadToCred(const uint8_t *cborPayload, size_t size,
130                                 OicSecCred_t **secCred, OicUuid_t **rownerId);
131
132 /**
133  * This internal method is used to create '/oic/sec/doxm' resource.
134  */
135 OCStackResult CreateDoxmResource(void);
136
137 /**
138  * This internal method is the entity handler for DOXM resources.
139  */
140 OCEntityHandlerResult DoxmEntityHandler(OCEntityHandlerFlag flag,
141                                         OCEntityHandlerRequest * ehRequest,
142                                         void* callbackParam);
143
144 #ifdef __cplusplus
145 }
146 #endif
147
148 #endif //IOTVT_SRM_SECURITY_INTERNALS_H