Merged the hostap_2.6 updates, and the Leap of Faith work, from the hostap_update...
[mech_eap.git] / libeap / hs20 / client / osu_client.h
diff --git a/libeap/hs20/client/osu_client.h b/libeap/hs20/client/osu_client.h
new file mode 100644 (file)
index 0000000..9a7059e
--- /dev/null
@@ -0,0 +1,118 @@
+/*
+ * Hotspot 2.0 - OSU client
+ * Copyright (c) 2013-2014, Qualcomm Atheros, Inc.
+ *
+ * This software may be distributed under the terms of the BSD license.
+ * See README for more details.
+ */
+
+#ifndef OSU_CLIENT_H
+#define OSU_CLIENT_H
+
+#define SPP_NS_URI "http://www.wi-fi.org/specifications/hotspot2dot0/v1.0/spp"
+
+#define URN_OMA_DM_DEVINFO "urn:oma:mo:oma-dm-devinfo:1.0"
+#define URN_OMA_DM_DEVDETAIL "urn:oma:mo:oma-dm-devdetail:1.0"
+#define URN_HS20_DEVDETAIL_EXT "urn:wfa:mo-ext:hotspot2dot0-devdetail-ext:1.0"
+#define URN_HS20_PPS "urn:wfa:mo:hotspot2dot0-perprovidersubscription:1.0"
+
+
+#define MAX_OSU_VALS 10
+
+struct osu_lang_text {
+       char lang[4];
+       char text[253];
+};
+
+struct hs20_osu_client {
+       struct xml_node_ctx *xml;
+       struct http_ctx *http;
+       int no_reconnect;
+       char pps_fname[300];
+       char *devid;
+       const char *result_file;
+       const char *summary_file;
+       const char *ifname;
+       const char *ca_fname;
+       int no_osu_cert_validation; /* for EST operations */
+       char *fqdn;
+       char *server_url;
+       struct osu_lang_text friendly_name[MAX_OSU_VALS];
+       size_t friendly_name_count;
+       size_t icon_count;
+       char icon_filename[MAX_OSU_VALS][256];
+       u8 icon_hash[MAX_OSU_VALS][32];
+       int pps_cred_set;
+       int pps_updated;
+       int client_cert_present;
+       char **server_dnsname;
+       size_t server_dnsname_count;
+#define WORKAROUND_OCSP_OPTIONAL 0x00000001
+       unsigned long int workarounds;
+};
+
+
+/* osu_client.c */
+
+void write_result(struct hs20_osu_client *ctx, const char *fmt, ...)
+       __attribute__ ((format (printf, 2, 3)));
+void write_summary(struct hs20_osu_client *ctx, const char *fmt, ...)
+       __attribute__ ((format (printf, 2, 3)));
+
+void debug_dump_node(struct hs20_osu_client *ctx, const char *title,
+                    xml_node_t *node);
+int osu_get_certificate(struct hs20_osu_client *ctx, xml_node_t *getcert);
+int hs20_add_pps_mo(struct hs20_osu_client *ctx, const char *uri,
+                   xml_node_t *add_mo, char *fname, size_t fname_len);
+void get_user_pw(struct hs20_osu_client *ctx, xml_node_t *pps,
+                const char *alt_loc, char **user, char **pw);
+int update_pps_file(struct hs20_osu_client *ctx, const char *pps_fname,
+                   xml_node_t *pps);
+void cmd_set_pps(struct hs20_osu_client *ctx, const char *pps_fname);
+
+
+/* spp_client.c */
+
+void spp_sub_rem(struct hs20_osu_client *ctx, const char *address,
+                const char *pps_fname,
+                const char *client_cert, const char *client_key,
+                const char *cred_username, const char *cred_password,
+                xml_node_t *pps);
+void spp_pol_upd(struct hs20_osu_client *ctx, const char *address,
+                const char *pps_fname,
+                const char *client_cert, const char *client_key,
+                const char *cred_username, const char *cred_password,
+                xml_node_t *pps);
+int cmd_prov(struct hs20_osu_client *ctx, const char *url);
+int cmd_sim_prov(struct hs20_osu_client *ctx, const char *url);
+
+
+/* oma_dm_client.c */
+
+int cmd_oma_dm_prov(struct hs20_osu_client *ctx, const char *url);
+int cmd_oma_dm_sim_prov(struct hs20_osu_client *ctx, const char *url);
+void oma_dm_sub_rem(struct hs20_osu_client *ctx, const char *address,
+                   const char *pps_fname,
+                   const char *client_cert, const char *client_key,
+                   const char *cred_username, const char *cred_password,
+                   xml_node_t *pps);
+void oma_dm_pol_upd(struct hs20_osu_client *ctx, const char *address,
+                   const char *pps_fname,
+                   const char *client_cert, const char *client_key,
+                   const char *cred_username, const char *cred_password,
+                   xml_node_t *pps);
+void cmd_oma_dm_sub_rem(struct hs20_osu_client *ctx, const char *address,
+                       const char *pps_fname);
+void cmd_oma_dm_add(struct hs20_osu_client *ctx, const char *pps_fname,
+                   const char *add_fname);
+void cmd_oma_dm_replace(struct hs20_osu_client *ctx, const char *pps_fname,
+                       const char *replace_fname);
+
+/* est.c */
+
+int est_load_cacerts(struct hs20_osu_client *ctx, const char *url);
+int est_build_csr(struct hs20_osu_client *ctx, const char *url);
+int est_simple_enroll(struct hs20_osu_client *ctx, const char *url,
+                     const char *user, const char *pw);
+
+#endif /* OSU_CLIENT_H */