示例#1
0
文件: eap_gpsk.c 项目: Adrellias/mana
static void * eap_gpsk_init(struct eap_sm *sm)
{
	struct eap_gpsk_data *data;
	const u8 *identity, *password;
	size_t identity_len, password_len;
	const char *phase1;

	password = eap_get_config_password(sm, &password_len);
	if (password == NULL) {
		wpa_printf(MSG_INFO, "EAP-GPSK: No key (password) configured");
		return NULL;
	}

	data = os_zalloc(sizeof(*data));
	if (data == NULL)
		return NULL;
	data->state = GPSK_1;

	identity = eap_get_config_identity(sm, &identity_len);
	if (identity) {
		data->id_peer = os_malloc(identity_len);
		if (data->id_peer == NULL) {
			eap_gpsk_deinit(sm, data);
			return NULL;
		}
		os_memcpy(data->id_peer, identity, identity_len);
		data->id_peer_len = identity_len;
	}

	phase1 = eap_get_config_phase1(sm);
	if (phase1) {
		const char *pos;

		pos = os_strstr(phase1, "cipher=");
		if (pos) {
			data->forced_cipher = atoi(pos + 7);
			wpa_printf(MSG_DEBUG, "EAP-GPSK: Forced cipher %u",
				   data->forced_cipher);
		}
	}

	data->psk = os_malloc(password_len);
	if (data->psk == NULL) {
		eap_gpsk_deinit(sm, data);
		return NULL;
	}
	os_memcpy(data->psk, password, password_len);
	data->psk_len = password_len;

	return data;
}
示例#2
0
文件: eap_gpsk.c 项目: AxelLin/Drv
static void * eap_gpsk_init(struct eap_sm *sm)
{
	struct wpa_ssid *config = eap_get_config(sm);
	struct eap_gpsk_data *data;

	if (config == NULL) {
		wpa_printf(MSG_INFO, "EAP-GPSK: No configuration found");
		return NULL;
	}

	if (config->eappsk == NULL) {
		wpa_printf(MSG_INFO, "EAP-GPSK: No key (eappsk) configured");
		return NULL;
	}

	data = os_zalloc(sizeof(*data));
	if (data == NULL)
		return NULL;
	data->state = GPSK_1;

	if (config->nai) {
		data->id_client = os_malloc(config->nai_len);
		if (data->id_client == NULL) {
			eap_gpsk_deinit(sm, data);
			return NULL;
		}
		os_memcpy(data->id_client, config->nai, config->nai_len);
		data->id_client_len = config->nai_len;
	}

	data->psk = os_malloc(config->eappsk_len);
	if (data->psk == NULL) {
		eap_gpsk_deinit(sm, data);
		return NULL;
	}
	os_memcpy(data->psk, config->eappsk, config->eappsk_len);
	data->psk_len = config->eappsk_len;

	return data;
}
示例#3
0
static void * eap_gpsk_init(struct eap_sm *sm)
{
    struct eap_gpsk_data *data;
    const u8 *identity, *password;
    size_t identity_len, password_len;

    password = eap_get_config_password(sm, &password_len);
    if (password == NULL) {
        wpa_printf(MSG_INFO, "EAP-GPSK: No key (password) configured");
        return NULL;
    }

    data = os_zalloc(sizeof(*data));
    if (data == NULL)
        return NULL;
    data->state = GPSK_1;

    identity = eap_get_config_identity(sm, &identity_len);
    if (identity) {
        data->id_peer = os_malloc(identity_len);
        if (data->id_peer == NULL) {
            eap_gpsk_deinit(sm, data);
            return NULL;
        }
        os_memcpy(data->id_peer, identity, identity_len);
        data->id_peer_len = identity_len;
    }

    data->psk = os_malloc(password_len);
    if (data->psk == NULL) {
        eap_gpsk_deinit(sm, data);
        return NULL;
    }
    os_memcpy(data->psk, password, password_len);
    data->psk_len = password_len;

    return data;
}