Bezpieczne BLE
Ten moduł zawiera funkcje sterujące komunikacją BLE (TLS przez BLE).
Podsumowanie
Ten moduł zawiera funkcje, które wdrażają komunikację TCAT.
Funkcje w tym module są dostępne, gdy włączona jest funkcja BLE Secure API (OPENTHREAD_CONFIG_BLE_TCAT_ENABLE).
Funkcje z tego modułu są dostępne, gdy włączona jest funkcja TCAT (OPENTHREAD_CONFIG_BLE_TCAT_ENABLE).
Wyliczenia |
|
|---|---|
otTcatApplicationProtocol{
|
enum | typ wyliczeniowy Reprezentuje protokół aplikacji TCAT. |
otTcatCommandClass{
|
enum | typ wyliczeniowy Reprezentuje klasę poleceń TCAT. |
otTcatStatusCode{
|
enum | typ wyliczeniowy Reprezentuje kod stanu TCAT. |
Definicje typów |
|
|---|---|
otHandleBleSecureConnect)(otInstance *aInstance, bool aConnected, bool aBleConnectionOpen, void *aContext)
|
typedefvoid(*
Wskaźnik do wywołania po zmianie stanu bezpiecznego połączenia. |
otHandleBleSecureReceive
|
typedef Wskaźnik wywoływany po odebraniu danych przez bezpieczne połączenie TLS BLE. |
otHandleTcatApplicationDataReceive)(otInstance *aInstance, const otMessage *aMessage, int32_t aOffset, otTcatApplicationProtocol aTcatApplicationProtocol, const char *aServiceName, void *aContext)
|
typedefvoid(*
Wskaźnik do wywołania, gdy dane aplikacji zostały odebrane przez połączenie TLS TCAT. |
otHandleTcatJoin)(otError aError, void *aContext)
|
typedefvoid(*
Wskaźnik wywołujący, aby powiadomić o zakończeniu operacji złączenia. |
otTcatApplicationProtocol
|
typedef Reprezentuje protokół aplikacji TCAT. |
otTcatCommandClass
|
typedefenum otTcatCommandClass
Reprezentuje klasę poleceń TCAT. |
otTcatStatusCode
|
typedefenum otTcatStatusCode
Reprezentuje kod stanu TCAT. |
otTcatVendorInfo
|
typedefstruct otTcatVendorInfo
Ta struktura zawiera informacje o dostawcy TCAT. |
Funkcje |
|
|---|---|
otBleSecureConnect(otInstance *aInstance)
|
Inicjuje sesję TLS z peerem przy użyciu otwartego połączenia BLE.
|
otBleSecureDisconnect(otInstance *aInstance)
|
void
Zatrzymuje połączenia BLE i TLS.
|
otBleSecureFlush(otInstance *aInstance)
|
Opróżni bufor wysyłania.
|
otBleSecureGetPeerCertificateBase64(otInstance *aInstance, unsigned char *aPeerCert, size_t *aCertLength)
|
Zwraca certyfikat peer-x509 zakodowany w standardzie base64.
|
otBleSecureGetPeerSubjectAttributeByOid(otInstance *aInstance, const char *aOid, size_t aOidLength, uint8_t *aAttributeBuffer, size_t *aAttributeLength, int *aAsn1Type)
|
Zwraca wartość atrybutu identyfikowaną przez jego OID od podmiotu certyfikatu x509 dla peera.
|
otBleSecureGetThreadAttributeFromOwnCertificate(otInstance *aInstance, int aThreadOidDescriptor, uint8_t *aAttributeBuffer, size_t *aAttributeLength)
|
Zwraca wartość atrybutu OID 1.3.6.1.4.1.44970.x z rozszerzeń wersji v3 własnego certyfikatu x509, gdzie ostatnia cyfra x jest ustawiona na aThreadOidDescriptor.
|
otBleSecureGetThreadAttributeFromPeerCertificate(otInstance *aInstance, int aThreadOidDescriptor, uint8_t *aAttributeBuffer, size_t *aAttributeLength)
|
Zwraca wartość atrybutu OID 1.3.6.1.4.1.44970.x z rozszerzeń wersji 3 certyfikatu x509 dla peera, gdzie ostatnia cyfra x jest ustawiona na aThreadOidDescriptor.
|
otBleSecureIsCommandClassAuthorized(otInstance *aInstance, otTcatCommandClass aCommandClass)
|
bool
Wskazuje, czy klasa polecenia TCAT jest autoryzowana.
|
otBleSecureIsConnected(otInstance *aInstance)
|
bool
Wskazuje, czy sesja TLS jest połączona.
|
otBleSecureIsConnectionActive(otInstance *aInstance)
|
bool
Wskazuje, czy sesja TLS jest aktywna (nawiązano połączenie).
|
otBleSecureIsTcatEnabled(otInstance *aInstance)
|
bool
Wskazuje, czy agent TCAT jest włączony.
|
otBleSecureSend(otInstance *aInstance, uint8_t *aBuf, uint16_t aLength)
|
Wysyła bezpieczny pakiet danych BLE.
|
otBleSecureSendApplicationTlv(otInstance *aInstance, uint8_t *aBuf, uint16_t aLength)
|
Wysyła bezpieczny pakiet danych BLE zawierający TLV danych aplikacji wysyłanych przez TCAT.
|
otBleSecureSendMessage(otInstance *aInstance, otMessage *aMessage)
|
Wysyła zabezpieczoną wiadomość BLE.
|
otBleSecureSetCaCertificateChain(otInstance *aInstance, const uint8_t *aX509CaCertificateChain, uint32_t aX509CaCertChainLength)
|
void
Ustawia zaufane urzędy certyfikacji najwyższego poziomu.
|
otBleSecureSetCertificate(otInstance *aInstance, const uint8_t *aX509Cert, uint32_t aX509Length, const uint8_t *aPrivateKey, uint32_t aPrivateKeyLength)
|
void
Ustawia certyfikat X509 urządzenia lokalnego z odpowiednim kluczem prywatnym na potrzeby sesji TLS z TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8.
|
otBleSecureSetPsk(otInstance *aInstance, const uint8_t *aPsk, uint16_t aPskLength, const uint8_t *aPskIdentity, uint16_t aPskIdLength)
|
void
Ustawia klucz PSK i mechanizm szyfrowania TLS_PSK_WITH_AES_128_CCM_8.
|
otBleSecureSetSslAuthMode(otInstance *aInstance, bool aVerifyPeerCertificate)
|
void
Ustawia tryb uwierzytelniania dla bezpiecznego połączenia BLE.
|
otBleSecureStart(otInstance *aInstance, otHandleBleSecureConnect aConnectHandler, otHandleBleSecureReceive aReceiveHandler, bool aTlvMode, void *aContext)
|
Uruchamia usługę BLE Secure.
|
otBleSecureStop(otInstance *aInstance)
|
void
Zatrzymuje bezpieczny serwer BLE.
|
otBleSecureTcatStart(otInstance *aInstance, const otTcatVendorInfo *aVendorInfo, otHandleTcatJoin aHandler)
|
Włącza protokół TCAT przez BLE Secure.
|
Konstrukcja |
|
|---|---|
| otTcatVendorInfo |
Ta struktura zawiera informacje o dostawcy TCAT. |
Wyliczenia
otTcatApplicationProtocol
otTcatApplicationProtocol
Reprezentuje protokół aplikacji TCAT.
| Właściwości | |
|---|---|
OT_TCAT_APPLICATION_PROTOCOL_NONE
|
Wiadomość wysłana bez aktywacji agenta TCAT. |
OT_TCAT_APPLICATION_PROTOCOL_STATUS
|
Wiadomość kierowana do usługi UDP. |
OT_TCAT_APPLICATION_PROTOCOL_TCP
|
Wiadomość kierowana do usługi TCP. |
otTcatCommandClass
otTcatCommandClass
Reprezentuje klasę poleceń TCAT.
| Właściwości | |
|---|---|
OT_TCAT_COMMAND_CLASS_APPLICATION
|
Polecenia TCAT związane z warstwą aplikacji. |
OT_TCAT_COMMAND_CLASS_COMMISSIONING
|
Polecenia TCAT związane z przekazywaniem zamówień. |
OT_TCAT_COMMAND_CLASS_DECOMMISSIONING
|
Polecenia TCAT związane z wycofaniem. |
OT_TCAT_COMMAND_CLASS_EXTRACTION
|
Polecenia TCAT związane z wyodrębnianiem kluczy. |
OT_TCAT_COMMAND_CLASS_GENERAL
|
Polecenia TCAT związane z działaniami ogólnymi. |
otTcatStatusCode
otTcatStatusCode
Reprezentuje kod stanu TCAT.
| Właściwości | |
|---|---|
OT_TCAT_STATUS_BUSY
|
Nie można wykonać polecenia, ponieważ zasób jest zajęty. |
OT_TCAT_STATUS_GENERAL_ERROR
|
Wystąpił błąd niepasujący do żadnej innej kategorii. |
OT_TCAT_STATUS_HASH_ERROR
|
Wartość skrótu przedstawiona przez komisarza była nieprawidłowa. |
OT_TCAT_STATUS_PARSE_ERROR
|
Nie udało się poprawnie przeanalizować żądania / polecenia. |
OT_TCAT_STATUS_SUCCESS
|
Polecenie lub żądanie zostało przetworzone. |
OT_TCAT_STATUS_UNAUTHORIZED
|
Nadawca nie ma wystarczających uprawnień do wykonania danego polecenia. |
OT_TCAT_STATUS_UNDEFINED
|
Żądana wartość, dane lub usługa nie są (obecnie) zdefiniowane albo niedostępne. |
OT_TCAT_STATUS_UNSUPPORTED
|
Żądane polecenie lub odebrane TLV nie jest obsługiwane. |
OT_TCAT_STATUS_VALUE_ERROR
|
Wartość przesyłanego TLV zawiera błąd. |
Definicje typów
otHandleBleSecureConnect
void(* otHandleBleSecureConnect)(otInstance *aInstance, bool aConnected, bool aBleConnectionOpen, void *aContext)
Wskaźnik do wywołania po zmianie stanu bezpiecznego połączenia.
| Szczegóły | |||||||||
|---|---|---|---|---|---|---|---|---|---|
| Parametry |
|
||||||||
otHandleBleSecureReceive
otHandleTcatApplicationDataReceive otHandleBleSecureReceive
Wskaźnik wywoływany po odebraniu danych przez bezpieczne połączenie TLS BLE.
otHandleTcatApplicationDataReceive
void(* otHandleTcatApplicationDataReceive)(otInstance *aInstance, const otMessage *aMessage, int32_t aOffset, otTcatApplicationProtocol aTcatApplicationProtocol, const char *aServiceName, void *aContext)
Wskaźnik do wywołania, gdy dane aplikacji zostały odebrane przez połączenie TLS TCAT.
| Szczegóły | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Parametry |
|
||||||||||||
otHandleTcatJoin
void(* otHandleTcatJoin)(otError aError, void *aContext)
Wskaźnik wywołujący, aby powiadomić o zakończeniu operacji złączenia.
| Szczegóły | |||||
|---|---|---|---|---|---|
| Parametry |
|
||||
otTcatApplicationProtocol
enum otTcatApplicationProtocol otTcatApplicationProtocol
Reprezentuje protokół aplikacji TCAT.
otTcatVendorInfo
struct otTcatVendorInfo otTcatVendorInfo
Ta struktura zawiera informacje o dostawcy TCAT.
Zawartość tej struktury MUSI być niezmieniona podczas trwania sesji TCAT.
Funkcje
otBleSecureConnect
otError otBleSecureConnect( otInstance *aInstance )
Inicjuje sesję TLS z peerem przy użyciu otwartego połączenia BLE.
| Szczegóły | |||
|---|---|---|---|
| Parametry |
|
||
| Zwracane wartości |
|
||
otBleSecureDisconnect
void otBleSecureDisconnect( otInstance *aInstance )
Zatrzymuje połączenia BLE i TLS.
| Szczegóły | |||
|---|---|---|---|
| Parametry |
|
||
otBleSecureFlush
otError otBleSecureFlush( otInstance *aInstance )
Opróżni bufor wysyłania.
| Szczegóły | |||||||
|---|---|---|---|---|---|---|---|
| Parametry |
|
||||||
| Zwracane wartości |
|
||||||
otBleSecureGetPeerCertificateBase64
otError otBleSecureGetPeerCertificateBase64( otInstance *aInstance, unsigned char *aPeerCert, size_t *aCertLength )
Zwraca certyfikat peer-x509 zakodowany w standardzie base64.
| Szczegóły | |||||||||
|---|---|---|---|---|---|---|---|---|---|
| Parametry |
|
||||||||
| Zwracane wartości |
|
||||||||
otBleSecureGetPeerSubjectAttributeByOid
otError otBleSecureGetPeerSubjectAttributeByOid( otInstance *aInstance, const char *aOid, size_t aOidLength, uint8_t *aAttributeBuffer, size_t *aAttributeLength, int *aAsn1Type )
Zwraca wartość atrybutu identyfikowaną przez jego OID od podmiotu certyfikatu x509 dla peera.
Identyfikator OID peera jest dostarczany w formacie binarnym. Jeśli atrybut został odczytany, długość atrybutu jest ustawiana, lub zero, jeśli nie udało się go odczytać. Typ ASN.1 ustawiony zgodnie z definicją w standardzie ITU-T X.690, jeśli atrybut został odczytany.
| Szczegóły | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Parametry |
|
||||||||||||
| Zwracane wartości |
|
||||||||||||
otBleSecureGetThreadAttributeFromOwnCertificate
otError otBleSecureGetThreadAttributeFromOwnCertificate( otInstance *aInstance, int aThreadOidDescriptor, uint8_t *aAttributeBuffer, size_t *aAttributeLength )
Zwraca wartość atrybutu OID 1.3.6.1.4.1.44970.x z rozszerzeń wersji v3 własnego certyfikatu x509, gdzie ostatnia cyfra x jest ustawiona na aThreadOidDescriptor.
Jeśli atrybut został odczytany, długość atrybutu jest ustawiana, lub zero, jeśli nie udało się go odczytać. Aby było aktywne, wymagane jest połączenie.
| Szczegóły | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Parametry |
|
||||||||||||||
| Zwracane wartości |
|
||||||||||||||
otBleSecureGetThreadAttributeFromPeerCertificate
otError otBleSecureGetThreadAttributeFromPeerCertificate( otInstance *aInstance, int aThreadOidDescriptor, uint8_t *aAttributeBuffer, size_t *aAttributeLength )
Zwraca wartość atrybutu OID 1.3.6.1.4.1.44970.x z rozszerzeń wersji 3 certyfikatu x509 dla peera, gdzie ostatnia cyfra x jest ustawiona na aThreadOidDescriptor.
Jeśli atrybut został odczytany, długość atrybutu jest ustawiana, lub zero, jeśli nie udało się go odczytać. Aby było aktywne, wymagane jest połączenie.
| Szczegóły | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Parametry |
|
||||||||||||||
| Zwracane wartości |
|
||||||||||||||
otBleSecureIsCommandClassAuthorized
bool otBleSecureIsCommandClassAuthorized( otInstance *aInstance, otTcatCommandClass aCommandClass )
Wskazuje, czy klasa polecenia TCAT jest autoryzowana.
| Szczegóły | |||||
|---|---|---|---|---|---|
| Parametry |
|
||||
| Zwracane wartości |
|
||||
otBleSecureIsConnected
bool otBleSecureIsConnected( otInstance *aInstance )
Wskazuje, czy sesja TLS jest połączona.
| Szczegóły | |||||
|---|---|---|---|---|---|
| Parametry |
|
||||
| Zwracane wartości |
|
||||
otBleSecureIsConnectionActive
bool otBleSecureIsConnectionActive( otInstance *aInstance )
Wskazuje, czy sesja TLS jest aktywna (nawiązano połączenie).
| Szczegóły | |||||
|---|---|---|---|---|---|
| Parametry |
|
||||
| Zwracane wartości |
|
||||
otBleSecureIsTcatEnabled
bool otBleSecureIsTcatEnabled( otInstance *aInstance )
Wskazuje, czy agent TCAT jest włączony.
| Szczegóły | |||||
|---|---|---|---|---|---|
| Zwracane wartości |
|
||||
otBleSecureSend
otError otBleSecureSend( otInstance *aInstance, uint8_t *aBuf, uint16_t aLength )
Wysyła bezpieczny pakiet danych BLE.
| Szczegóły | |||||||
|---|---|---|---|---|---|---|---|
| Parametry |
|
||||||
| Zwracane wartości |
|
||||||
otBleSecureSendApplicationTlv
otError otBleSecureSendApplicationTlv( otInstance *aInstance, uint8_t *aBuf, uint16_t aLength )
Wysyła bezpieczny pakiet danych BLE zawierający TLV danych aplikacji wysyłanych przez TCAT.
| Szczegóły | |||||||
|---|---|---|---|---|---|---|---|
| Parametry |
|
||||||
| Zwracane wartości |
|
||||||
otBleSecureSendMessage
otError otBleSecureSendMessage( otInstance *aInstance, otMessage *aMessage )
Wysyła zabezpieczoną wiadomość BLE.
Jeśli zwracana wartość to OT_ERROR_NONE, OpenThread przejmuje własność elementu aMessage, a wywołujący nie powinien już odwoływać się do elementu aMessage. Jeśli zwracana wartość nie ma wartości OT_ERROR_NONE, element wywołujący zachowuje prawo własności do elementu aMessage, w tym zwolnienie aMessage, jeśli bufor wiadomości nie jest już potrzebny.
| Szczegóły | |||||
|---|---|---|---|---|---|
| Parametry |
|
||||
| Szczegóły | |||||||
|---|---|---|---|---|---|---|---|
| Zwracane wartości |
|
||||||
otBleSecureSetCaCertificateChain
void otBleSecureSetCaCertificateChain( otInstance *aInstance, const uint8_t *aX509CaCertificateChain, uint32_t aX509CaCertChainLength )
Ustawia zaufane urzędy certyfikacji najwyższego poziomu.
Jest potrzebny do weryfikacji certyfikatu peera.
Tryb TLS „ECDHE ECDSA with AES 128 CCM 8” dla bezpiecznego BLE.
| Szczegóły | |||||||
|---|---|---|---|---|---|---|---|
| Parametry |
|
||||||
otBleSecureSetCertificate
void otBleSecureSetCertificate( otInstance *aInstance, const uint8_t *aX509Cert, uint32_t aX509Length, const uint8_t *aPrivateKey, uint32_t aPrivateKeyLength )
Ustawia certyfikat X509 urządzenia lokalnego z odpowiednim kluczem prywatnym na potrzeby sesji TLS z TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8.
| Szczegóły | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Parametry |
|
||||||||||
otBleSecureSetPsk
void otBleSecureSetPsk( otInstance *aInstance, const uint8_t *aPsk, uint16_t aPskLength, const uint8_t *aPskIdentity, uint16_t aPskIdLength )
Ustawia klucz PSK i mechanizm szyfrowania TLS_PSK_WITH_AES_128_CCM_8.
| Szczegóły | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Parametry |
|
||||||||||
otBleSecureSetSslAuthMode
void otBleSecureSetSslAuthMode( otInstance *aInstance, bool aVerifyPeerCertificate )
Ustawia tryb uwierzytelniania dla bezpiecznego połączenia BLE.
Wyłącz lub włącz weryfikację certyfikatu peera. Musi zostać wywołana przed rozpoczęciem.
| Szczegóły | |||||
|---|---|---|---|---|---|
| Parametry |
|
||||
otBleSecureStart
otError otBleSecureStart( otInstance *aInstance, otHandleBleSecureConnect aConnectHandler, otHandleBleSecureReceive aReceiveHandler, bool aTlvMode, void *aContext )
Uruchamia usługę BLE Secure.
Gdy włączony jest tryb TLV, funkcja aReceiveHandler zostanie wywołana po odebraniu pełnego TLV, a przesunięcie komunikatu wskazuje wartość TLV.
| Szczegóły | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Parametry |
|
||||||||||
| Zwracane wartości |
|
||||||||||
otBleSecureStop
void otBleSecureStop( otInstance *aInstance )
Zatrzymuje bezpieczny serwer BLE.
| Szczegóły | |||
|---|---|---|---|
| Parametry |
|
||
otBleSecureTcatStart
otError otBleSecureTcatStart( otInstance *aInstance, const otTcatVendorInfo *aVendorInfo, otHandleTcatJoin aHandler )
Włącza protokół TCAT przez BLE Secure.
| Szczegóły | |||||||
|---|---|---|---|---|---|---|---|
| Parametry |
|
||||||
| Zwracane wartości |
|
||||||
Makra
OT_TCAT_MAX_SERVICE_NAME_LENGTH
OT_TCAT_MAX_SERVICE_NAME_LENGTH 15
Maksymalna długość ciągu znaków nazwy usługi UDP lub TCP (nie obejmuje znaków null).
Zasoby
Tematy referencyjne interfejsu OpenThread API pochodzą z kodu źródłowego dostępnego w GitHub. Aby dowiedzieć się więcej lub dołączyć do naszej dokumentacji, skorzystaj z sekcji Zasoby.