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