diff options
| author | Johan Hedberg <johan.hedberg@nokia.com> | 2008-06-06 11:28:57 +0000 | 
|---|---|---|
| committer | Johan Hedberg <johan.hedberg@nokia.com> | 2008-06-06 11:28:57 +0000 | 
| commit | 833b95efc8bda83851624b203991db196282335c (patch) | |
| tree | 91a36d9f9ab649b504685a018e88bc73ae0d4502 /hcid/dbus-security.c | |
| parent | 30877999b61e655ff7f4e804240098c4cd31831e (diff) | |
Further cleanup of authentication logic
Diffstat (limited to 'hcid/dbus-security.c')
| -rw-r--r-- | hcid/dbus-security.c | 170 | 
1 files changed, 0 insertions, 170 deletions
| diff --git a/hcid/dbus-security.c b/hcid/dbus-security.c index dfa2c711..840efca6 100644 --- a/hcid/dbus-security.c +++ b/hcid/dbus-security.c @@ -1022,176 +1022,6 @@ int handle_passkey_request_old(DBusConnection *conn, int dev,  	return call_passkey_agent(conn, agent, dev, adapter->path, sba, dba);  } -static DBusPendingCall *agent_confirm(const char *path, bdaddr_t *bda, -					struct passkey_agent *agent, -					const char *value) -{ -	DBusMessage *message; -	DBusPendingCall *call; -	char bda_str[18], *ptr = bda_str; - -	message = dbus_message_new_method_call(agent->name, agent->path, -					"org.bluez.PasskeyAgent", "Confirm"); -	if (message == NULL) { -		error("Couldn't allocate D-Bus message"); -		return NULL; -	} - -	ba2str(bda, bda_str); - -	dbus_message_append_args(message, -				DBUS_TYPE_STRING, &path, -				DBUS_TYPE_STRING, &ptr, -				DBUS_TYPE_STRING, &value, -				DBUS_TYPE_INVALID); - -	if (dbus_connection_send_with_reply(agent->conn, message, -					&call, REQUEST_TIMEOUT) == FALSE) { -		error("D-Bus send failed"); -		dbus_message_unref(message); -		return NULL; -	} - -	dbus_message_unref(message); -	return call; -} - -static void confirm_agent_reply(DBusPendingCall *call, void *user_data) -{ -	struct pending_agent_request *req = user_data; -	struct passkey_agent *agent = req->agent; -	pin_code_reply_cp pr; -	DBusMessage *message; -	DBusError err; -	int len; - -	/* steal_reply will always return non-NULL since the callback -	 * is only called after a reply has been received */ -	message = dbus_pending_call_steal_reply(call); - -	dbus_error_init(&err); -	if (dbus_set_error_from_message(&err, message)) { - -		error("Passkey agent replied with an error: %s, %s", -				err.name, err.message); - -		dbus_error_free(&err); -		goto fail; -	} - -	dbus_error_init(&err); -	if (!dbus_message_get_args(message, &err, DBUS_TYPE_INVALID)) { -		error("Wrong confirm reply signature: %s", err.message); -		dbus_error_free(&err); -		goto fail; -	} - -	len = strlen(req->pin); - -	set_pin_length(&req->sba, len); - -	memset(&pr, 0, sizeof(pr)); -	bacpy(&pr.bdaddr, &req->bda); -	memcpy(pr.pin_code, req->pin, len); -	pr.pin_len = len; -	hci_send_cmd(req->dev, OGF_LINK_CTL, -			OCF_PIN_CODE_REPLY, PIN_CODE_REPLY_CP_SIZE, &pr); - -	goto done; - -fail: -	hci_send_cmd(req->dev, OGF_LINK_CTL, -			OCF_PIN_CODE_NEG_REPLY, 6, &req->bda); - -done: -	if (message) -		dbus_message_unref(message); - -	agent->pending_requests = g_slist_remove(agent->pending_requests, req); -	dbus_pending_call_cancel(req->call); -	if (req->call) -		dbus_pending_call_unref(req->call); -	g_free(req->pin); -	g_free(req->path); -	g_free(req); - -	if (agent != default_agent) { -		agent->adapter->passkey_agents = g_slist_remove(agent->adapter->passkey_agents, -								agent); -		passkey_agent_free(agent); -	} -} - -static int call_confirm_agent(DBusConnection *conn, -				struct passkey_agent *agent, int dev, -				const char *path, bdaddr_t *sba, -				bdaddr_t *dba, const char *pin) -{ -	struct pending_agent_request *req; - -	if (!agent) { -		debug("call_passkey_agent(): no agent available"); -		goto send; -	} - -	debug("Calling PasskeyAgent.Confirm: name=%s, path=%s", -						agent->name, agent->path); - -	req = g_new0(struct pending_agent_request, 1); -	req->dev = dev; -	bacpy(&req->sba, sba); -	bacpy(&req->bda, dba); -	req->agent = agent; -	req->path = g_strdup(path); -	req->pin = g_strdup(pin); - -	req->call = agent_confirm(path, dba, agent, pin); -	if (!req->call) -		goto failed; - -	dbus_pending_call_set_notify(req->call, confirm_agent_reply, req, NULL); - -	agent->pending_requests = g_slist_append(agent->pending_requests, req); - -	return 0; - -failed: -	g_free(req->pin); -	g_free(req->path); -	g_free(req); - -send: -	hci_send_cmd(dev, OGF_LINK_CTL, OCF_PIN_CODE_NEG_REPLY, 6, dba); - -	return -1; -} - -int handle_confirm_request_old(DBusConnection *conn, int dev, -						struct adapter *adapter, -						bdaddr_t *sba, bdaddr_t *dba, -							const char *pin) -{ -	struct passkey_agent *agent = default_agent; -	GSList *l; -	char addr[18]; - -	ba2str(dba, addr); - -	for (l = adapter->passkey_agents; l != NULL; l = l->next) { -		struct passkey_agent *a = l->data; -		if (a != default_agent && -				g_slist_length(a->pending_requests) >= 1) -			continue; -		if (!strcmp(a->addr, addr)) { -			agent = a; -			break; -		} -	} - -	return call_confirm_agent(conn, agent, dev, adapter->path, -							sba, dba, pin); -} -  static void send_cancel_request(struct pending_agent_request *req)  {  	DBusMessage *message; | 
