608adae5ba
These functions are similar to the base64url helpers but with the base64 (not url) alphabet. Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
57 lines
1.8 KiB
C
57 lines
1.8 KiB
C
/*
|
|
* JavaScript Object Notation (JSON) parser (RFC7159)
|
|
* Copyright (c) 2017, Qualcomm Atheros, Inc.
|
|
*
|
|
* This software may be distributed under the terms of the BSD license.
|
|
* See README for more details.
|
|
*/
|
|
|
|
#ifndef JSON_H
|
|
#define JSON_H
|
|
|
|
struct json_token {
|
|
enum json_type {
|
|
JSON_VALUE,
|
|
JSON_OBJECT,
|
|
JSON_ARRAY,
|
|
JSON_STRING,
|
|
JSON_NUMBER,
|
|
JSON_BOOLEAN,
|
|
JSON_NULL,
|
|
} type;
|
|
enum json_parsing_state {
|
|
JSON_EMPTY,
|
|
JSON_STARTED,
|
|
JSON_WAITING_VALUE,
|
|
JSON_COMPLETED,
|
|
} state;
|
|
char *name;
|
|
char *string;
|
|
int number;
|
|
struct json_token *parent, *child, *sibling;
|
|
};
|
|
|
|
void json_escape_string(char *txt, size_t maxlen, const char *data, size_t len);
|
|
struct json_token * json_parse(const char *data, size_t data_len);
|
|
void json_free(struct json_token *json);
|
|
struct json_token * json_get_member(struct json_token *json, const char *name);
|
|
struct wpabuf * json_get_member_base64url(struct json_token *json,
|
|
const char *name);
|
|
struct wpabuf * json_get_member_base64(struct json_token *json,
|
|
const char *name);
|
|
void json_print_tree(struct json_token *root, char *buf, size_t buflen);
|
|
void json_add_int(struct wpabuf *json, const char *name, int val);
|
|
void json_add_string(struct wpabuf *json, const char *name, const char *val);
|
|
int json_add_string_escape(struct wpabuf *json, const char *name,
|
|
const void *val, size_t len);
|
|
int json_add_base64url(struct wpabuf *json, const char *name, const void *val,
|
|
size_t len);
|
|
int json_add_base64(struct wpabuf *json, const char *name, const void *val,
|
|
size_t len);
|
|
void json_start_object(struct wpabuf *json, const char *name);
|
|
void json_end_object(struct wpabuf *json);
|
|
void json_start_array(struct wpabuf *json, const char *name);
|
|
void json_end_array(struct wpabuf *json);
|
|
void json_value_sep(struct wpabuf *json);
|
|
|
|
#endif /* JSON_H */
|