* [Bluez-users] Enabling authentication and encryption in C
@ 2006-07-27 11:09 Ståle Andreas Kleppe
2006-07-28 19:25 ` Marcel Holtmann
0 siblings, 1 reply; 2+ messages in thread
From: Ståle Andreas Kleppe @ 2006-07-27 11:09 UTC (permalink / raw)
To: bluez-users
Hi,
I'm working on my master thesis about Bluetooth security, and are going =
to test the security and possibly implement some improvements. I program =
in C, and am currently trying to enable authentication and encryption =
through some function calls in hci_lib.h, namly hci_authenticate_link =
and hci_encrypt_link respectively. Below is a part of my code.
int main(void) {
struct hci_conn_info_req *cr;
struct sockaddr_rc resciever =3D { 0 };
struct sockaddr_rc local =3D { 0 };
uint16_t handle;
int s, status, dd;
char destination[17] =3D "00:09:DD:60:02:45";
resciever.rc_family =3D AF_BLUETOOTH;
resciever.rc_channel =3D (uint8_t) 1;
str2ba( destination, &resciever.rc_bdaddr );
local.rc_family =3D AF_BLUETOOTH;
local.rc_channel =3D (uint8_t) 1;
//lokal_addr.rc_bdaddr =3D *BDADDR_ANY;
str2ba("00:14:A4:D4:0F:A1", &local.rc_bdaddr);
=
dd =3D hci_open_dev(hci_get_route(&local.rc_bdaddr));
cr =3D (struct hci_conn_info_req*) malloc(sizeof(struct =
hci_conn_info_req));
ioctl(dd, HCIGETCONNINFO, (unsigned long) cr);
handle =3D cr->conn_info->handle;
status =3D hci_authenticate_link(dd, handle, 0);
printf("status: %d\n", status);
status =3D hci_encrypt_link(dd, handle, (uint8_t)1, 0);
printf("status: %d\n", status);
....
.... }
Both calls always return -1, and things obviously aren't going as =
expected. I've managed to digg down through several function calls:
hci_authenticate_link -> hci_send_req -> hci_send_cmd -> writev.
writev returns -1 as well and sets the error code variable 'errno' to 77 =
(EBADFD, defined in asm/errno.h and means 'File descriptor in bad state').
I'm not sure what this means.
Thoughts?
Any help will be appreciated!
Regards
St=E5le
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=3Djoin.php&p=3Dsourceforge&CID=3DDE=
VDEV
_______________________________________________
Bluez-users mailing list
Bluez-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bluez-users
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [Bluez-users] Enabling authentication and encryption in C
2006-07-27 11:09 [Bluez-users] Enabling authentication and encryption in C Ståle Andreas Kleppe
@ 2006-07-28 19:25 ` Marcel Holtmann
0 siblings, 0 replies; 2+ messages in thread
From: Marcel Holtmann @ 2006-07-28 19:25 UTC (permalink / raw)
To: BlueZ users
Hi Stale,
> I'm working on my master thesis about Bluetooth security, and are going
> to test the security and possibly implement some improvements. I program
> in C, and am currently trying to enable authentication and encryption
> through some function calls in hci_lib.h, namly hci_authenticate_link
> and hci_encrypt_link respectively. Below is a part of my code.
>
> int main(void) {
> struct hci_conn_info_req *cr;
> struct sockaddr_rc resciever = { 0 };
> struct sockaddr_rc local = { 0 };
> uint16_t handle;
> int s, status, dd;
>
> char destination[17] = "00:09:DD:60:02:45";
>
> resciever.rc_family = AF_BLUETOOTH;
> resciever.rc_channel = (uint8_t) 1;
> str2ba( destination, &resciever.rc_bdaddr );
>
> local.rc_family = AF_BLUETOOTH;
> local.rc_channel = (uint8_t) 1;
> //lokal_addr.rc_bdaddr = *BDADDR_ANY;
> str2ba("00:14:A4:D4:0F:A1", &local.rc_bdaddr);
>
> dd = hci_open_dev(hci_get_route(&local.rc_bdaddr));
> cr = (struct hci_conn_info_req*) malloc(sizeof(struct
> hci_conn_info_req));
> ioctl(dd, HCIGETCONNINFO, (unsigned long) cr);
> handle = cr->conn_info->handle;
>
> status = hci_authenticate_link(dd, handle, 0);
> printf("status: %d\n", status);
> status = hci_encrypt_link(dd, handle, (uint8_t)1, 0);
> printf("status: %d\n", status);
> ....
> .... }
>
> Both calls always return -1, and things obviously aren't going as
> expected. I've managed to digg down through several function calls:
> hci_authenticate_link -> hci_send_req -> hci_send_cmd -> writev.
> writev returns -1 as well and sets the error code variable 'errno' to 77
> (EBADFD, defined in asm/errno.h and means 'File descriptor in bad state').
> I'm not sure what this means.
run "hcidump -X -V" and see if they really got sent. And take a look at
hidd, because this daemon already implements this.
Regards
Marcel
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Bluez-users mailing list
Bluez-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bluez-users
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2006-07-28 19:25 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-07-27 11:09 [Bluez-users] Enabling authentication and encryption in C Ståle Andreas Kleppe
2006-07-28 19:25 ` Marcel Holtmann
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).