/*
* Hotspot 2.0 - OMA DM client
- * Copyright (c) 2013, Qualcomm Atheros, Inc.
+ * Copyright (c) 2013-2014, Qualcomm Atheros, Inc.
*
* This software may be distributed under the terms of the BSD license.
* See README for more details.
static xml_node_t * oma_dm_send_recv(struct hs20_osu_client *ctx,
const char *url, xml_node_t *syncml,
- const char *ext_hdr, const char *ca_fname,
+ const char *ext_hdr,
const char *username, const char *password,
const char *client_cert,
const char *client_key)
os_free(ctx->server_url);
ctx->server_url = os_strdup(url);
res = http_post(ctx->http, url, str, "application/vnd.syncml.dm+xml",
- ext_hdr, ca_fname, username, password,
+ ext_hdr, ctx->ca_fname, username, password,
client_cert, client_key, NULL);
os_free(str);
os_free(resp_uri);
}
-int cmd_oma_dm_prov(struct hs20_osu_client *ctx, const char *url,
- const char *ca_fname)
+int cmd_oma_dm_prov(struct hs20_osu_client *ctx, const char *url)
{
xml_node_t *syncml, *resp;
char *resp_uri = NULL;
while (syncml) {
resp = oma_dm_send_recv(ctx, resp_uri ? resp_uri : url,
- syncml, NULL, ca_fname, NULL, NULL,
- NULL, NULL);
+ syncml, NULL, NULL, NULL, NULL, NULL);
if (resp == NULL)
return -1;
}
-int cmd_oma_dm_sim_prov(struct hs20_osu_client *ctx, const char *url,
- const char *ca_fname)
+int cmd_oma_dm_sim_prov(struct hs20_osu_client *ctx, const char *url)
{
xml_node_t *syncml, *resp;
char *resp_uri = NULL;
while (syncml) {
resp = oma_dm_send_recv(ctx, resp_uri ? resp_uri : url,
- syncml, NULL, ca_fname, NULL, NULL,
- NULL, NULL);
+ syncml, NULL, NULL, NULL, NULL, NULL);
if (resp == NULL)
return -1;
void oma_dm_pol_upd(struct hs20_osu_client *ctx, const char *address,
- const char *pps_fname, const char *ca_fname,
+ const char *pps_fname,
const char *client_cert, const char *client_key,
const char *cred_username, const char *cred_password,
xml_node_t *pps)
while (syncml) {
resp = oma_dm_send_recv(ctx, resp_uri ? resp_uri : address,
- syncml, NULL, ca_fname, cred_username,
+ syncml, NULL, cred_username,
cred_password, client_cert, client_key);
if (resp == NULL)
return;
void oma_dm_sub_rem(struct hs20_osu_client *ctx, const char *address,
- const char *pps_fname, const char *ca_fname,
+ const char *pps_fname,
const char *client_cert, const char *client_key,
const char *cred_username, const char *cred_password,
xml_node_t *pps)
while (syncml) {
resp = oma_dm_send_recv(ctx, resp_uri ? resp_uri : address,
- syncml, NULL, ca_fname, cred_username,
+ syncml, NULL, cred_username,
cred_password, client_cert, client_key);
if (resp == NULL)
return;
/*
* Hotspot 2.0 OSU client
- * Copyright (c) 2012-2013, Qualcomm Atheros, Inc.
+ * Copyright (c) 2012-2014, Qualcomm Atheros, Inc.
*
* This software may be distributed under the terms of the BSD license.
* See README for more details.
static int osu_connect(struct hs20_osu_client *ctx, const char *bssid,
- const char *ssid, const char *url, const char *ca_fname,
+ const char *ssid, const char *url,
unsigned int methods, int no_prod_assoc,
const char *osu_nai)
{
ctx->no_reconnect = 1;
if (methods & 0x02)
- res = cmd_prov(ctx, url, ca_fname);
+ res = cmd_prov(ctx, url);
else if (methods & 0x01)
- res = cmd_oma_dm_prov(ctx, url, ca_fname);
+ res = cmd_oma_dm_prov(ctx, url);
wpa_printf(MSG_INFO, "Remove OSU network connection");
write_summary(ctx, "Remove OSU network connection");
static int cmd_osu_select(struct hs20_osu_client *ctx, const char *dir,
- int connect, const char *ca_fname, int no_prod_assoc,
+ int connect, int no_prod_assoc,
const char *friendly_name)
{
char fname[255];
if (connect == 2) {
if (last->methods & 0x02)
- ret = cmd_prov(ctx, last->url, ca_fname);
+ ret = cmd_prov(ctx, last->url);
else if (last->methods & 0x01)
- ret = cmd_oma_dm_prov(ctx, last->url, ca_fname);
+ ret = cmd_oma_dm_prov(ctx, last->url);
else
ret = -1;
} else if (connect)
ret = osu_connect(ctx, last->bssid, last->osu_ssid,
- last->url, ca_fname, last->methods,
+ last->url, last->methods,
no_prod_assoc, last->osu_nai);
} else
ret = -1;
}
-static int cmd_signup(struct hs20_osu_client *ctx, const char *ca_fname,
- int no_prod_assoc, const char *friendly_name)
+static int cmd_signup(struct hs20_osu_client *ctx, int no_prod_assoc,
+ const char *friendly_name)
{
char dir[255];
char fname[300], buf[400];
}
wpa_printf(MSG_INFO, "OSU provider fetch completed");
- return cmd_osu_select(ctx, fname, 1, ca_fname, no_prod_assoc,
- friendly_name);
+ return cmd_osu_select(ctx, fname, 1, no_prod_assoc, friendly_name);
}
char *client_key = NULL;
int spp;
- ctx->ca_fname = ca_fname;
-
wpa_printf(MSG_INFO, "Subscription remediation requested with Server URL: %s",
address);
return;
}
wpa_printf(MSG_INFO, "Using server trust root: %s", ca_fname);
+ ctx->ca_fname = ca_fname;
pps = node_from_file(ctx->xml, pps_fname);
if (pps == NULL) {
}
if (spp)
- spp_sub_rem(ctx, address, pps_fname, ca_fname,
+ spp_sub_rem(ctx, address, pps_fname,
client_cert, client_key,
cred_username, cred_password, pps);
else
- oma_dm_sub_rem(ctx, address, pps_fname, ca_fname,
+ oma_dm_sub_rem(ctx, address, pps_fname,
client_cert, client_key,
cred_username, cred_password, pps);
return -1;
}
wpa_printf(MSG_INFO, "Using server trust root: %s", ca_fname);
+ ctx->ca_fname = ca_fname;
pps = node_from_file(ctx->xml, pps_fname);
if (pps == NULL) {
}
if (spp)
- spp_pol_upd(ctx, address, pps_fname, ca_fname,
+ spp_pol_upd(ctx, address, pps_fname,
client_cert, client_key,
cred_username, cred_password, pps);
else
- oma_dm_pol_upd(ctx, address, pps_fname, ca_fname,
+ oma_dm_pol_upd(ctx, address, pps_fname,
client_cert, client_key,
cred_username, cred_password, pps);
usage();
exit(0);
}
- cmd_prov(&ctx, argv[optind + 1], argv[optind + 2]);
+ ctx.ca_fname = argv[optind + 2];
+ cmd_prov(&ctx, argv[optind + 1]);
} else if (strcmp(argv[optind], "sim_prov") == 0) {
if (argc - optind < 2) {
usage();
exit(0);
}
- cmd_sim_prov(&ctx, argv[optind + 1], argv[optind + 2]);
+ ctx.ca_fname = argv[optind + 2];
+ cmd_sim_prov(&ctx, argv[optind + 1]);
} else if (strcmp(argv[optind], "dl_osu_ca") == 0) {
if (argc - optind < 2) {
usage();
usage();
exit(0);
}
- cmd_osu_select(&ctx, argv[optind + 1], 2,
- argc > optind + 2 ? argv[optind + 2] : NULL,
- 1, NULL);
+ ctx.ca_fname = argc > optind + 2 ? argv[optind + 2] : NULL;
+ cmd_osu_select(&ctx, argv[optind + 1], 2, 1, NULL);
} else if (strcmp(argv[optind], "signup") == 0) {
- ret = cmd_signup(&ctx,
- argc > optind + 1 ? argv[optind + 1] : NULL,
- no_prod_assoc, friendly_name);
+ ctx.ca_fname = argc > optind + 1 ? argv[optind + 1] : NULL;
+ ret = cmd_signup(&ctx, no_prod_assoc, friendly_name);
} else if (strcmp(argv[optind], "set_pps") == 0) {
if (argc - optind < 2) {
usage();
usage();
exit(0);
}
- cmd_oma_dm_prov(&ctx, argv[optind + 1], argv[optind + 2]);
+ ctx.ca_fname = argv[optind + 2];
+ cmd_oma_dm_prov(&ctx, argv[optind + 1]);
} else if (strcmp(argv[optind], "oma_dm_sim_prov") == 0) {
if (argc - optind < 2) {
usage();
exit(0);
}
- if (cmd_oma_dm_sim_prov(&ctx, argv[optind + 1],
- argv[optind + 2]) < 0) {
+ ctx.ca_fname = argv[optind + 2];
+ if (cmd_oma_dm_sim_prov(&ctx, argv[optind + 1]) < 0) {
write_summary(&ctx, "Failed to complete OMA DM SIM provisioning");
return -1;
}
/*
* Hotspot 2.0 - OSU client
- * Copyright (c) 2013, Qualcomm Atheros, Inc.
+ * Copyright (c) 2013-2014, Qualcomm Atheros, Inc.
*
* This software may be distributed under the terms of the BSD license.
* See README for more details.
/* spp_client.c */
void spp_sub_rem(struct hs20_osu_client *ctx, const char *address,
- const char *pps_fname, const char *ca_fname,
+ 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 *ca_fname,
+ 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,
- const char *ca_fname);
-int cmd_sim_prov(struct hs20_osu_client *ctx, const char *url,
- const char *ca_fname);
+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,
- const char *ca_fname);
-int cmd_oma_dm_sim_prov(struct hs20_osu_client *ctx, const char *url,
- const char *ca_fname);
+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 *ca_fname,
+ 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 *ca_fname,
+ 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, const char *ca_fname);
+ 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,
/*
* Hotspot 2.0 SPP client
- * Copyright (c) 2012-2013, Qualcomm Atheros, Inc.
+ * Copyright (c) 2012-2014, Qualcomm Atheros, Inc.
*
* This software may be distributed under the terms of the BSD license.
* See README for more details.
void spp_sub_rem(struct hs20_osu_client *ctx, const char *address,
- const char *pps_fname, const char *ca_fname,
+ const char *pps_fname,
const char *client_cert, const char *client_key,
const char *cred_username, const char *cred_password,
xml_node_t *pps)
os_free(ctx->server_url);
ctx->server_url = os_strdup(address);
- if (soap_init_client(ctx->http, address, ca_fname,
+ if (soap_init_client(ctx->http, address, ctx->ca_fname,
cred_username, cred_password, client_cert,
client_key) == 0) {
spp_post_dev_data(ctx, SPP_SUBSCRIPTION_REMEDIATION,
void spp_pol_upd(struct hs20_osu_client *ctx, const char *address,
- const char *pps_fname, const char *ca_fname,
+ const char *pps_fname,
const char *client_cert, const char *client_key,
const char *cred_username, const char *cred_password,
xml_node_t *pps)
os_free(ctx->server_url);
ctx->server_url = os_strdup(address);
- if (soap_init_client(ctx->http, address, ca_fname, cred_username,
+ if (soap_init_client(ctx->http, address, ctx->ca_fname, cred_username,
cred_password, client_cert, client_key) == 0) {
spp_post_dev_data(ctx, SPP_POLICY_UPDATE, "Policy update",
pps_fname, pps);
}
-int cmd_prov(struct hs20_osu_client *ctx, const char *url,
- const char *ca_fname)
+int cmd_prov(struct hs20_osu_client *ctx, const char *url)
{
unlink("Cert/est_cert.der");
unlink("Cert/est_cert.pem");
- ctx->ca_fname = ca_fname;
-
if (url == NULL) {
wpa_printf(MSG_INFO, "Invalid prov command (missing URL)");
return -1;
os_free(ctx->server_url);
ctx->server_url = os_strdup(url);
- if (soap_init_client(ctx->http, url, ca_fname, NULL, NULL, NULL, NULL) <
- 0)
+ if (soap_init_client(ctx->http, url, ctx->ca_fname, NULL, NULL, NULL,
+ NULL) < 0)
return -1;
spp_post_dev_data(ctx, SPP_SUBSCRIPTION_REGISTRATION,
"Subscription registration", NULL, NULL);
}
-int cmd_sim_prov(struct hs20_osu_client *ctx, const char *url,
- const char *ca_fname)
+int cmd_sim_prov(struct hs20_osu_client *ctx, const char *url)
{
- ctx->ca_fname = ca_fname;
-
if (url == NULL) {
wpa_printf(MSG_INFO, "Invalid prov command (missing URL)");
return -1;
wpa_printf(MSG_INFO, "Could not get IP address for WLAN - try connection anyway");
}
- if (soap_init_client(ctx->http, url, ca_fname, NULL, NULL, NULL, NULL) <
- 0)
+ if (soap_init_client(ctx->http, url, ctx->ca_fname, NULL, NULL, NULL,
+ NULL) < 0)
return -1;
spp_post_dev_data(ctx, SPP_SUBSCRIPTION_REGISTRATION,
"Subscription provisioning", NULL, NULL);