xref: /aosp_15_r20/external/wpa_supplicant_8/src/utils/http-utils.h (revision 03f9172ca588f91df233974f4258bab95191f931)
1*03f9172cSAndroid Build Coastguard Worker /*
2*03f9172cSAndroid Build Coastguard Worker  * HTTP wrapper
3*03f9172cSAndroid Build Coastguard Worker  * Copyright (c) 2012-2013, Qualcomm Atheros, Inc.
4*03f9172cSAndroid Build Coastguard Worker  *
5*03f9172cSAndroid Build Coastguard Worker  * This software may be distributed under the terms of the BSD license.
6*03f9172cSAndroid Build Coastguard Worker  * See README for more details.
7*03f9172cSAndroid Build Coastguard Worker  */
8*03f9172cSAndroid Build Coastguard Worker 
9*03f9172cSAndroid Build Coastguard Worker #ifndef HTTP_UTILS_H
10*03f9172cSAndroid Build Coastguard Worker #define HTTP_UTILS_H
11*03f9172cSAndroid Build Coastguard Worker 
12*03f9172cSAndroid Build Coastguard Worker struct http_ctx;
13*03f9172cSAndroid Build Coastguard Worker 
14*03f9172cSAndroid Build Coastguard Worker struct http_othername {
15*03f9172cSAndroid Build Coastguard Worker 	char *oid;
16*03f9172cSAndroid Build Coastguard Worker 	u8 *data;
17*03f9172cSAndroid Build Coastguard Worker 	size_t len;
18*03f9172cSAndroid Build Coastguard Worker };
19*03f9172cSAndroid Build Coastguard Worker 
20*03f9172cSAndroid Build Coastguard Worker #define HTTP_MAX_CERT_LOGO_HASH 32
21*03f9172cSAndroid Build Coastguard Worker 
22*03f9172cSAndroid Build Coastguard Worker struct http_logo {
23*03f9172cSAndroid Build Coastguard Worker 	char *alg_oid;
24*03f9172cSAndroid Build Coastguard Worker 	u8 *hash;
25*03f9172cSAndroid Build Coastguard Worker 	size_t hash_len;
26*03f9172cSAndroid Build Coastguard Worker 	char *uri;
27*03f9172cSAndroid Build Coastguard Worker };
28*03f9172cSAndroid Build Coastguard Worker 
29*03f9172cSAndroid Build Coastguard Worker struct http_cert {
30*03f9172cSAndroid Build Coastguard Worker 	char **dnsname;
31*03f9172cSAndroid Build Coastguard Worker 	size_t num_dnsname;
32*03f9172cSAndroid Build Coastguard Worker 	struct http_othername *othername;
33*03f9172cSAndroid Build Coastguard Worker 	size_t num_othername;
34*03f9172cSAndroid Build Coastguard Worker 	struct http_logo *logo;
35*03f9172cSAndroid Build Coastguard Worker 	size_t num_logo;
36*03f9172cSAndroid Build Coastguard Worker 	const char *url;
37*03f9172cSAndroid Build Coastguard Worker };
38*03f9172cSAndroid Build Coastguard Worker 
39*03f9172cSAndroid Build Coastguard Worker int soap_init_client(struct http_ctx *ctx, const char *address,
40*03f9172cSAndroid Build Coastguard Worker 		     const char *ca_fname, const char *username,
41*03f9172cSAndroid Build Coastguard Worker 		     const char *password, const char *client_cert,
42*03f9172cSAndroid Build Coastguard Worker 		     const char *client_key);
43*03f9172cSAndroid Build Coastguard Worker int soap_reinit_client(struct http_ctx *ctx);
44*03f9172cSAndroid Build Coastguard Worker xml_node_t * soap_send_receive(struct http_ctx *ctx, xml_node_t *node);
45*03f9172cSAndroid Build Coastguard Worker 
46*03f9172cSAndroid Build Coastguard Worker struct http_ctx * http_init_ctx(void *upper_ctx, struct xml_node_ctx *xml_ctx);
47*03f9172cSAndroid Build Coastguard Worker void http_ocsp_set(struct http_ctx *ctx, int val);
48*03f9172cSAndroid Build Coastguard Worker void http_deinit_ctx(struct http_ctx *ctx);
49*03f9172cSAndroid Build Coastguard Worker 
50*03f9172cSAndroid Build Coastguard Worker int http_download_file(struct http_ctx *ctx, const char *url,
51*03f9172cSAndroid Build Coastguard Worker 		       const char *fname, const char *ca_fname);
52*03f9172cSAndroid Build Coastguard Worker char * http_post(struct http_ctx *ctx, const char *url, const char *data,
53*03f9172cSAndroid Build Coastguard Worker 		 const char *content_type, const char *ext_hdr,
54*03f9172cSAndroid Build Coastguard Worker 		 const char *ca_fname,
55*03f9172cSAndroid Build Coastguard Worker 		 const char *username, const char *password,
56*03f9172cSAndroid Build Coastguard Worker 		 const char *client_cert, const char *client_key,
57*03f9172cSAndroid Build Coastguard Worker 		 size_t *resp_len);
58*03f9172cSAndroid Build Coastguard Worker void http_set_cert_cb(struct http_ctx *ctx,
59*03f9172cSAndroid Build Coastguard Worker 		      int (*cb)(void *ctx, struct http_cert *cert),
60*03f9172cSAndroid Build Coastguard Worker 		      void *cb_ctx);
61*03f9172cSAndroid Build Coastguard Worker const char * http_get_err(struct http_ctx *ctx);
62*03f9172cSAndroid Build Coastguard Worker void http_parse_x509_certificate(struct http_ctx *ctx, const char *fname);
63*03f9172cSAndroid Build Coastguard Worker 
64*03f9172cSAndroid Build Coastguard Worker #endif /* HTTP_UTILS_H */
65