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 }; 37 38 int soap_init_client(struct http_ctx *ctx, const char *address, 39 const char *ca_fname, const char *username, 40 const char *password, const char *client_cert, 41 const char *client_key); 42 int soap_reinit_client(struct http_ctx *ctx); 43 xml_node_t * soap_send_receive(struct http_ctx *ctx, xml_node_t *node); 44 45 struct http_ctx * http_init_ctx(void *upper_ctx, struct xml_node_ctx *xml_ctx); 46 void http_ocsp_set(struct http_ctx *ctx, int val); 47 void http_deinit_ctx(struct http_ctx *ctx); 48 49 int http_download_file(struct http_ctx *ctx, const char *url, 50 const char *fname, const char *ca_fname); 51 char * http_post(struct http_ctx *ctx, const char *url, const char *data, 52 const char *content_type, const char *ext_hdr, 53 const char *ca_fname, 54 const char *username, const char *password, 55 const char *client_cert, const char *client_key, 56 size_t *resp_len); 57 void http_set_cert_cb(struct http_ctx *ctx, 58 int (*cb)(void *ctx, struct http_cert *cert), 59 void *cb_ctx); 60 const char * http_get_err(struct http_ctx *ctx); 61 void http_parse_x509_certificate(struct http_ctx *ctx, const char *fname); 62 63 #endif /* HTTP_UTILS_H */ 64