Espruino:Справочник по API/Класс NRF/setSecurity(): различия между версиями
Myagkij (обсуждение | вклад) (Новая страница: «{{Espruino/Панель перехода}} {{Перевод от Сubewriter}} {{Myagkij-редактор}} =<ref>[ www.espruino.com - ]</ref>= ==Синтакс...») |
Myagkij (обсуждение | вклад) Нет описания правки |
||
Строка 3: | Строка 3: | ||
{{Myagkij-редактор}} | {{Myagkij-редактор}} | ||
=<ref>[ www.espruino.com - ]</ref>= | =Функция NRF.setSecurity()<ref>[https://www.espruino.com/Reference#t_l_NRF_setSecurity www.espruino.com - NRF.setSecurity]</ref>= | ||
==Синтаксис== | ==Синтаксис== | ||
<syntaxhighlight lang="javascript" enclose="div"> | <syntaxhighlight lang="javascript" enclose="div"> | ||
NRF.setSecurity(options) | |||
</syntaxhighlight> | </syntaxhighlight> | ||
==Параметры== | ==Параметры== | ||
* '''options''' – объект, содержащий настройки безопасности (см. ниже) | |||
==Возвращаемое значение== | ==Возвращаемое значение== | ||
Строка 21: | Строка 21: | ||
==Описание== | ==Описание== | ||
Задает настройки безопасности, которые используются при подключении/сопряжении. Они применяются и в режиме центрального, и в режиме периферийного устройства. | |||
<syntaxhighlight lang="javascript" enclose="div"> | |||
NRF.setSecurity({ | |||
display : bool // здесь задается, будет ли пароль, | |||
// отправленный в событии `BluetoothDevice.passkey` | |||
// показан на дисплее устройства | |||
// (значение по умолчанию – «false») | |||
keyboard : bool // здесь задается, можно ли на этом устройстве | |||
// ввести пароль, запрошенный с помощью события | |||
// `BluetoothDevice.passkeyRequest` | |||
// (значение по умолчанию – «false») | |||
bond : bool // выполнять ли сопряжение (по умолчанию «true») | |||
mitm : bool // защиты от атаки посредника (по умолчанию «false») | |||
lesc : bool // используется ли LE Secure Connections | |||
// (по умолчанию «false») | |||
passkey : // 6-циферный пароль (по умолчанию "") | |||
oob : [0..15] // если эта настройка будет задана, это включит | |||
// внеполосное (out-of-band или OOB) сопряжение, | |||
// где будет использован заданный здесь 16-байтный код | |||
}); | |||
</syntaxhighlight> | |||
'''Примечание:''' Некоторые комбинации аргументов могут выдать ошибку. Например, нельзя задать пароль и при этом не задать display:1. Настройку display:1 можно задать и не имея, собственно, самого дисплея – пользователю просто нужно знать ваш пароль. | |||
Например, запросить сопряжение и задать пароль можно вот так: | |||
<syntaxhighlight lang="javascript" enclose="div"> | |||
NRF.setSecurity({passkey:"123456", mitm:1, display:1}); | |||
</syntaxhighlight> | |||
Хотя большинство устройств на этом этапе запрашивают пароль для сопряжения, вы по-прежнему можете подключиться к устройству и без него (например, при помощи приложения nRF Connect). | |||
С помощью пароля можно защитить все характеристики, заданные с помощью функции NRF.setServices(). Например, код ниже потребует ввести пароль 123456 перед чтением характеристики 9d020002-bf5f-1d1a-b52a-fe52091d5b12. | |||
<syntaxhighlight lang="javascript" enclose="div"> | |||
NRF.setSecurity({passkey:"123456", mitm:1, display:1}); | |||
NRF.setServices({ | |||
"9d020001-bf5f-1d1a-b52a-fe52091d5b12" : { | |||
"9d020002-bf5f-1d1a-b52a-fe52091d5b12" : { | |||
// можно прочесть всегда: | |||
value : "Не секрет" | |||
}, | |||
"9d020003-bf5f-1d1a-b52a-fe52091d5b12" : { | |||
// можно прочесть только после сопряжения: | |||
value : "Секрет", | |||
readable : true, | |||
security: { | |||
read: { | |||
mitm: true, | |||
encrypted: true | |||
} | |||
} | |||
}, | |||
"9d020004-bf5f-1d1a-b52a-fe52091d5b12" : { | |||
// можно прочесть всегда, | |||
// записать можно только после сопряжения: | |||
value : "Можно прочесть", | |||
readable : true, | |||
writable : true, | |||
onWrite : function(evt) { | |||
console.log("Данные записаны ", evt.data); | |||
}, | |||
security: { | |||
write: { | |||
mitm: true, | |||
encrypted: true | |||
} | |||
} | |||
} | |||
} | |||
}); | |||
</syntaxhighlight> | |||
'''Примечание:''' Если заданы настройки passkey и oob, в сервисе Nordic UART (если он включен) будет автоматически включено шифрование. В противном случае он будет открыт. | |||
'''Примечание:''' Эта функция доступна только для NRF52-устройств (вроде Puck.js, Pixl.js, Bangle.js и MDBT42Q). | |||
== Примеры == | == Примеры == |
Версия от 17:30, 7 февраля 2021
Функция NRF.setSecurity()[1]
Синтаксис
NRF.setSecurity(options)
Параметры
- options – объект, содержащий настройки безопасности (см. ниже)
Возвращаемое значение
Описание
Задает настройки безопасности, которые используются при подключении/сопряжении. Они применяются и в режиме центрального, и в режиме периферийного устройства.
NRF.setSecurity({
display : bool // здесь задается, будет ли пароль,
// отправленный в событии `BluetoothDevice.passkey`
// показан на дисплее устройства
// (значение по умолчанию – «false»)
keyboard : bool // здесь задается, можно ли на этом устройстве
// ввести пароль, запрошенный с помощью события
// `BluetoothDevice.passkeyRequest`
// (значение по умолчанию – «false»)
bond : bool // выполнять ли сопряжение (по умолчанию «true»)
mitm : bool // защиты от атаки посредника (по умолчанию «false»)
lesc : bool // используется ли LE Secure Connections
// (по умолчанию «false»)
passkey : // 6-циферный пароль (по умолчанию "")
oob : [0..15] // если эта настройка будет задана, это включит
// внеполосное (out-of-band или OOB) сопряжение,
// где будет использован заданный здесь 16-байтный код
});
Примечание: Некоторые комбинации аргументов могут выдать ошибку. Например, нельзя задать пароль и при этом не задать display:1. Настройку display:1 можно задать и не имея, собственно, самого дисплея – пользователю просто нужно знать ваш пароль.
Например, запросить сопряжение и задать пароль можно вот так:
NRF.setSecurity({passkey:"123456", mitm:1, display:1});
Хотя большинство устройств на этом этапе запрашивают пароль для сопряжения, вы по-прежнему можете подключиться к устройству и без него (например, при помощи приложения nRF Connect).
С помощью пароля можно защитить все характеристики, заданные с помощью функции NRF.setServices(). Например, код ниже потребует ввести пароль 123456 перед чтением характеристики 9d020002-bf5f-1d1a-b52a-fe52091d5b12.
NRF.setSecurity({passkey:"123456", mitm:1, display:1});
NRF.setServices({
"9d020001-bf5f-1d1a-b52a-fe52091d5b12" : {
"9d020002-bf5f-1d1a-b52a-fe52091d5b12" : {
// можно прочесть всегда:
value : "Не секрет"
},
"9d020003-bf5f-1d1a-b52a-fe52091d5b12" : {
// можно прочесть только после сопряжения:
value : "Секрет",
readable : true,
security: {
read: {
mitm: true,
encrypted: true
}
}
},
"9d020004-bf5f-1d1a-b52a-fe52091d5b12" : {
// можно прочесть всегда,
// записать можно только после сопряжения:
value : "Можно прочесть",
readable : true,
writable : true,
onWrite : function(evt) {
console.log("Данные записаны ", evt.data);
},
security: {
write: {
mitm: true,
encrypted: true
}
}
}
}
});
Примечание: Если заданы настройки passkey и oob, в сервисе Nordic UART (если он включен) будет автоматически включено шифрование. В противном случае он будет открыт.
Примечание: Эта функция доступна только для NRF52-устройств (вроде Puck.js, Pixl.js, Bangle.js и MDBT42Q).
Примеры
См.также
Внешние ссылки