hcsecd
—
control link keys and PIN codes for Bluetooth devices
hcsecd |
[-dh ] -f
configfile |
The hcsecd
daemon controls link keys and PIN codes for
Bluetooth devices. It opens a raw HCI socket and listens for
Link_Key_Request
,
PIN_Code_Request
and
Link_Key_Notification
HCI events.
Once a Link_Key_Request
or
PIN_Code_Request
HCI event is received, the daemon
scans the configuration file for a matching entry. The remote device BD_ADDR
is used as a key. If no matching entry was found, the default entry will be
used. If no default entry was found then it is assumed that no link key and
no PIN code exists. For any given entry, the link key takes precedence over
the PIN code. If a link key was not specified, the device must generate the
link key from the PIN code. If an entry was found and the link key (or PIN
code) exists, the Link_Key_Request_Reply
(or
PIN_Code_Request_Reply
) command will be sent back to
the device. Otherwise, the
Link_Key_Request_Negative_Reply
(or
PIN_Code_Request_Negative_Reply
) command will be
sent back to the device.
The hcsecd
daemon also handles HCI
Link_Key_Notification
events and caches link keys
created from the PIN codes in memory. To preserve link keys between restarts
the hcsecd
daemon dumps link keys for all entries in
the /var/db/hcsecd.keys link keys file. If it
exists, the link keys file gets processed by the
hcsecd
daemon after it processes its main
configuration file. The link keys file gets written every time the
hcsecd
daemon shuts down gracefully. It is possible
to force the hcsecd
daemon to re-read its main
configuration file and dump the link keys file by sending the
HUP
signal to the hcsecd
process. The user is expected to not modify the link keys file by hand.
The command line options are as follows:
-d
- Do not detach from the controlling terminal.
-f
configfile
- Specify the name of the configuration file. The default is
/etc/bluetooth/hcsecd.conf.
-h
- Display usage message and exit.
- /etc/bluetooth/hcsecd.conf
-
- /var/db/hcsecd.keys
-
- /var/run/hcsecd.pid
-
Currently there is no way to select the link key or the PIN code based on which
local device received the request. Everything is based on the remote device
BD_ADDR. An interface for external helpers to obtain link keys and PIN codes
is missing.