Как узнать, зашифрована ли характеристика BLE или нет, не читая ее? - PullRequest
0 голосов
/ 29 января 2019

Итак, у меня есть 1 менеджер и 1 периферийное устройство.На периферийной стороне я послал характеристику со свойствами CBCharacteristicProperties.notifyEncryptionRequired и CBCharacteristicProperties.indicateEncryptionRequired, с этой строкой:

char = CBMutableCharacteristic(type: charId, properties: CBCharacteristicProperties(rawValue: 0b1100000000), value: nil, permissions: [CBAttributePermissions.readEncryptionRequired, CBAttributePermissions.writeEncryptionRequired])

, но когда я читаю на центральной стороне, это дает мне только

0b0000110000

Это означает свойства notify и indicate.Почему это не дает мне 0b1100000000?я что-то упускаю?

я пытаюсь проверить, зашифровано ли искомое значение или нет без сопряжения.

Когда я пытался прочитать значение, если оно зашифровано, мне нужно выполнить сопряжение.Появится диалог сопряжения.Поскольку появляется диалог сопряжения, я знаю, что он зашифрован.Я хочу знать, зашифрована ли характеристика или нет, не видя диалог.

1 Ответ

0 голосов
/ 04 февраля 2019

Я могу вам сказать, что однажды я видел запись службы в соединении nRF, которая прямо показала мне, что служба была зашифрована.Но я не знаю, как они это сделали.Стек позади него был BlueZ на Linux.Я думаю, что можно пометить его в служебной записи.

Более того, я могу сказать вам, что большинство устройств этого не делают.Я реализую прошивку на контроллере CSR гарнитуры.Стек на нем просто не предоставляет API для этого.Поскольку у меня есть прошивка, а также приложение под моим контролем, я могу сказать вам: с помощью этого чипа невозможно узнать, зашифрована ли характеристика или нет.
И, к сожалению, этот чип широко распространен.

...