Search code examples
androidbluetoothbluetooth-lowenergyandroid-bluetooth

Android Bluetooth Cross-Transport Key Derivation support on Android


Is Android officially supporting CTKD? From the BlueZ documentation:

Another improvement that LE SC brings is what’s called cross-transport key derivation. What this means is that when two dual-mode (supporting LE + BR/EDR) devices pair with each other, they only need to pair over either LE or BR/EDR to get the encryption keys for both transports in one go.

I haven't found any information in the official Android docs.


Solution

  • There is no documentation about it, but it is supported, take a look to:

    https://android.googlesource.com/platform/system/bt/+/refs/heads/master/gd/security/pairing_handler_le.cc#199

    I was able to trigger CTKD (BLE -> BR/EDR) connecting to GATT (BluetoothDevice::connectGatt) and when the connection state becomes STATE_CONNECTED then trigger the pairing request (BluetoothDevice::createBond). Then I got paired to BLE and CTKD generates the BR/EDR link key.