• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2020 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 __PARSEDATA_H__
17 #define __PARSEDATA_H__
18 
19 #include <stdint.h>
20 #include "base.h"
21 #include "mem_stat.h"
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26 
27 #define DEFINE_EMPTY_STRUCT_FUNC(d_name) \
28     void *parse_##d_name(const char *payload, enum json_object_data_type data_type) \
29     { \
30         (void)payload; \
31         (void)data_type; \
32         return NULL; \
33     } \
34     void free_##d_name(void *obj) \
35     { \
36         (void)obj; \
37     } \
38     char *make_##d_name(void *data) \
39     { \
40         (void)data; \
41         return "Current devices do not support this feature."; \
42     }
43 
44 
45 struct pass_through_data {
46     uint32_t message_code;
47     void *payload_data;
48 };
49 
50 uint32_t parse_header(const char *data);
51 
52 struct pass_through_data *parse_data(const char *data);
53 void free_data(struct pass_through_data *data);
54 
55 void *parse_payload(const char *payload, enum json_object_data_type data_type);
56 void free_payload(char *data, enum json_object_data_type data_type);
57 
58 /* pake request */
59 void *parse_pake_request(const char *payload, enum json_object_data_type data_type);
60 void free_pake_request(void *obj);
61 char *make_pake_request(void *data);
62 
63 /* pake response */
64 void *parse_pake_response(const char *payload, enum json_object_data_type data_type);
65 void free_pake_response(void *obj);
66 char *make_pake_response(void *data);
67 
68 /* pake client confirm */
69 void *parse_pake_client_confirm(const char *payload, enum json_object_data_type data_type);
70 void free_pake_client_confirm(void *obj);
71 char *make_pake_client_confirm(void *data);
72 
73 /* pake server confirm */
74 void *parse_pake_server_confirm(const char *payload, enum json_object_data_type data_type);
75 void free_pake_server_confirm(void *obj);
76 char *make_pake_server_confirm(void *data);
77 
78 /* sts auth start request */
79 void *parse_auth_start_request(const char *payload, enum json_object_data_type data_type);
80 void free_auth_start_request(void *obj);
81 char *make_auth_start_request(void *data);
82 
83 /* sts auth start response */
84 void *parse_auth_start_response(const char *payload, enum json_object_data_type data_type);
85 void free_auth_start_response(void *obj);
86 char *make_auth_start_response(void *data);
87 
88 /* sts auth ack request */
89 void *parse_auth_ack_request(const char *payload, enum json_object_data_type data_type);
90 void free_auth_ack_request(void *obj);
91 char *make_auth_ack_request(void *data);
92 
93 /* sts auth ack response */
94 void *parse_auth_ack_response(const char *payload, enum json_object_data_type data_type);
95 void free_auth_ack_response(void *obj);
96 char *make_auth_ack_response(void *data);
97 
98 /* add auth request */
99 void *parse_add_auth_info_request(const char *payload, enum json_object_data_type data_type);
100 void free_add_auth_info_request(void *obj);
101 char *make_add_auth_info_request(void *data);
102 
103 /* add auth response */
104 void *parse_add_auth_info_response(const char *payload, enum json_object_data_type data_type);
105 void free_add_auth_info_response(void *obj);
106 char *make_add_auth_info_response(void *data);
107 
108 /* add auth data */
109 void *parse_add_auth_info_data(const char *payload, enum json_object_data_type data_type);
110 void free_add_auth_info_data(void *obj);
111 char *make_add_auth_info_data(void *data);
112 
113 /* rmv auth request */
114 void *parse_rmv_auth_info_request(const char *payload, enum json_object_data_type data_type);
115 void free_rmv_auth_info_request(void *obj);
116 char *make_rmv_auth_info_request(void *data);
117 
118 /* rmv auth response */
119 void *parse_rmv_auth_info_response(const char *payload, enum json_object_data_type type);
120 void free_rmv_auth_info_response(void *obj);
121 char *make_rmv_auth_info_response(void *data);
122 
123 /* rmv auth data */
124 void *parse_rmv_auth_info_data(const char *payload, enum json_object_data_type data_type);
125 void free_rmv_auth_info_data(void *obj);
126 char *make_rmv_auth_info_data(void *data);
127 
128 /* exchange request */
129 void *parse_exchange_request(const char *payload, enum json_object_data_type data_type);
130 void free_exchange_request(void *obj);
131 char *make_exchange_request(void *data);
132 
133 /* exchange response */
134 void *parse_exchange_response(const char *payload, enum json_object_data_type data_type);
135 void free_exchange_response(void *obj);
136 char *make_exchange_response(void *data);
137 
138 /* exchange authdata */
139 void *parse_exchange_data(const char *payload, enum json_object_data_type data_type);
140 void free_exchange_data(void *obj);
141 char *make_exchange_data(void *data);
142 
143 /* sec_clone data */
144 void *sec_clone_parse_client_request(const char *payload, enum json_object_data_type data_type);
145 void sec_clone_free_client_request(void *obj);
146 char *sec_clone_make_srv_proof(void *data);
147 void *sec_clone_parse_client_ack(const char *payload, enum json_object_data_type data_type);
148 void sec_clone_free_client_ack(void *obj);
149 char *sec_clone_make_clone_ret(void *data);
150 void *sec_clone_parse_start_resp(const char *payload, enum json_object_data_type data_type);
151 void *sec_clone_parse_ack_resp(const char *payload, enum json_object_data_type data_type);
152 
153 /* inform message */
154 void *parse_inform_message(const char *payload, enum json_object_data_type data_type);
155 void free_inform_message(void *obj);
156 char *make_inform_message(void *data);
157 
158 /* improt data message */
159 void *parse_import_add_auth_data(const char *payload, enum json_object_data_type data_type);
160 void free_import_add_auth_data(void *obj);
161 
162 #define FIELD_ADD_TYPE        "addType"
163 #define FIELD_ADD_ID          "addId"
164 #define FIELD_ADD_KEY         "addKey"
165 #define FIELD_AUTH_DATA       "authData"
166 #define FIELD_AUTH_RETURN     "authReturn"
167 #define FIELD_AUTH_ID         "authId"
168 #define FIELD_AUTH_PK         "authPk"
169 #define FIELD_AUTH_FORM       "authForm"
170 #define FIELD_ADD_AUTH_INFO   "addAuthInfo"
171 #define FIELD_ADD_RETURN      "addReturn"
172 #define FIELD_CHALLENGE       "challenge"
173 #define FIELD_CURRENT_VERSION "currentVersion"
174 #define FIELD_EPK             "epk"
175 #define FIELD_EPK_LEN         "epkLen"
176 #define FIELD_EX_AUTH_INFO    "exAuthInfo"
177 #define FIELD_ERROR_CODE      "errorCode"
178 #define FIELD_KCF_DATA        "kcfData"
179 #define FIELD_KEY_LENGTH      "keyLength"
180 #define FIELD_KEY_TYPE        "keyType"
181 #define FIELD_MESSAGE         "message"
182 #define FIELD_MIN_VERSION     "minVersion"
183 #define FIELD_OPERATION_CODE  "operationCode"
184 #define FIELD_OWNER_ID        "ownerId"
185 #define FIELD_PERMISSION      "Permission"
186 #define FIELD_PAYLOAD         "payload"
187 #define FIELD_PUBLIC_KEY      "publicKey"
188 #define FIELD_PKG_NAME        "pkgName"
189 #define FIELD_PEER_AUTH_ID    "peerAuthId"
190 #define FIELD_PEER_USER_TYPE  "peerUserType"
191 #define FIELD_RMV_TYPE        "rmvType"
192 #define FIELD_RMV_ID          "rmvId"
193 #define FIELD_RMV_AUTH_INFO   "rmvAuthInfo"
194 #define FIELD_RMV_RETURN      "rmvReturn"
195 #define FIELD_SALT            "salt"
196 #define FIELD_SUPPORT_256_MOD "support256mod"
197 #define FIELD_SERVICE_TYPE    "serviceType"
198 #define FIELD_VERSION         "version"
199 
200 #ifdef __cplusplus
201 }
202 #endif
203 #endif /* __PARSEDATA_H__ */
204