BLE Secure
Dieses Modul enthält Funktionen zur Steuerung der BLE Secure-Kommunikation (TLS über BLE).
Zusammenfassung
Dieses Modul enthält Funktionen zur Implementierung der TCAT-Kommunikation.
Die Funktionen in diesem Modul sind verfügbar, wenn die BLE Secure API-Funktion (OPENTHREAD_CONFIG_BLE_TCAT_ENABLE
) aktiviert ist.
Die Funktionen in diesem Modul sind verfügbar, wenn die TCAT-Funktion (OPENTHREAD_CONFIG_BLE_TCAT_ENABLE
) aktiviert ist.
Aufzählungen |
|
---|---|
otTcatApplicationProtocol{
|
enum Stellt das TCAT-Anwendungsprotokoll dar. |
otTcatCommandClass{
|
enum Stellt eine TCAT-Befehlsklasse dar. |
otTcatStatusCode{
|
enum Stellt den TCAT-Statuscode dar. |
Typedefs |
|
---|---|
otHandleBleSecureConnect)(otInstance *aInstance, bool aConnected, bool aBleConnectionOpen, void *aContext)
|
typedefvoid(*
Zeiger, der aufgerufen wird, wenn sich der Status der sicheren Verbindung ändert. |
otHandleBleSecureReceive
|
typedef Zeiger zum Aufrufen, wenn Daten über eine BLE Secure-TLS-Verbindung empfangen wurden. |
otHandleTcatApplicationDataReceive)(otInstance *aInstance, const otMessage *aMessage, int32_t aOffset, otTcatApplicationProtocol aTcatApplicationProtocol, const char *aServiceName, void *aContext)
|
typedefvoid(*
Zeiger zum Aufrufen, wenn Anwendungsdaten über eine TCAT-TLS-Verbindung empfangen wurden. |
otHandleTcatJoin)(otError aError, void *aContext)
|
typedefvoid(*
Zeiger, der aufgerufen werden soll, um den Abschluss eines Join-Vorgangs zu benachrichtigen. |
otTcatApplicationProtocol
|
typedef Stellt das TCAT-Anwendungsprotokoll dar. |
otTcatCommandClass
|
typedefenum otTcatCommandClass
Stellt eine TCAT-Befehlsklasse dar. |
otTcatStatusCode
|
typedefenum otTcatStatusCode
Stellt den TCAT-Statuscode dar. |
otTcatVendorInfo
|
typedefstruct otTcatVendorInfo
Diese Struktur stellt Informationen zu TCAT-Anbietern dar. |
Funktionen |
|
---|---|
otBleSecureConnect(otInstance *aInstance)
|
Initialisiert die TLS-Sitzung mit einem Peer mithilfe einer bereits offenen BLE-Verbindung.
|
otBleSecureDisconnect(otInstance *aInstance)
|
void
Beendet die BLE- und TLS-Verbindung.
|
otBleSecureFlush(otInstance *aInstance)
|
Löscht den Sendepuffer.
|
otBleSecureGetPeerCertificateBase64(otInstance *aInstance, unsigned char *aPeerCert, size_t *aCertLength)
|
Gibt das base64-codierte Peer-x509-Zertifikat zurück.
|
otBleSecureGetPeerSubjectAttributeByOid(otInstance *aInstance, const char *aOid, size_t aOidLength, uint8_t *aAttributeBuffer, size_t *aAttributeLength, int *aAsn1Type)
|
Gibt einen Attributwert zurück, der anhand seiner OID aus dem Betreff des Peer-x509-Zertifikats identifiziert wird.
|
otBleSecureGetThreadAttributeFromOwnCertificate(otInstance *aInstance, int aThreadOidDescriptor, uint8_t *aAttributeBuffer, size_t *aAttributeLength)
|
Gibt einen Attributwert für die OID 1.3.6.1.4.1.44970.x aus den v3-Erweiterungen des eigenen x509-Zertifikats zurück, wobei die letzte Ziffer x auf aThreadOidDescriptor festgelegt ist.
|
otBleSecureGetThreadAttributeFromPeerCertificate(otInstance *aInstance, int aThreadOidDescriptor, uint8_t *aAttributeBuffer, size_t *aAttributeLength)
|
Gibt einen Attributwert für die OID 1.3.6.1.4.1.44970.x aus den v3-Erweiterungen des Peer-x509-Zertifikats zurück, wobei die letzte Ziffer x auf aThreadOidDescriptor festgelegt ist.
|
otBleSecureIsCommandClassAuthorized(otInstance *aInstance, otTcatCommandClass aCommandClass)
|
bool
Gibt an, ob eine TCAT-Befehlsklasse autorisiert ist.
|
otBleSecureIsConnected(otInstance *aInstance)
|
bool
Gibt an, ob die TLS-Sitzung verbunden ist.
|
otBleSecureIsConnectionActive(otInstance *aInstance)
|
bool
Gibt an, ob die TLS-Sitzung aktiv ist (verbunden oder Verbindung hergestellt).
|
otBleSecureIsTcatEnabled(otInstance *aInstance)
|
bool
Gibt an, ob der TCAT-Agent aktiviert ist.
|
otBleSecureSend(otInstance *aInstance, uint8_t *aBuf, uint16_t aLength)
|
Sendet ein sicheres BLE-Datenpaket.
|
otBleSecureSendApplicationTlv(otInstance *aInstance, uint8_t *aBuf, uint16_t aLength)
|
Es wird ein sicheres BLE-Datenpaket gesendet, das eine TCAT-TLV enthält.
|
otBleSecureSendMessage(otInstance *aInstance, otMessage *aMessage)
|
Sendet eine sichere BLE-Nachricht.
|
otBleSecureSetCaCertificateChain(otInstance *aInstance, const uint8_t *aX509CaCertificateChain, uint32_t aX509CaCertChainLength)
|
void
Legt die vertrauenswürdigen Top-Level-Zertifizierungsstellen fest.
|
otBleSecureSetCertificate(otInstance *aInstance, const uint8_t *aX509Cert, uint32_t aX509Length, const uint8_t *aPrivateKey, uint32_t aPrivateKeyLength)
|
void
Legt das X509-Zertifikat des lokalen Geräts mit dem entsprechenden privaten Schlüssel für die TLS-Sitzung mit TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 fest.
|
otBleSecureSetPsk(otInstance *aInstance, const uint8_t *aPsk, uint16_t aPskLength, const uint8_t *aPskIdentity, uint16_t aPskIdLength)
|
void
Legt den vorab freigegebenen Schlüssel (Pre-Shared Key, PSK) und die Cipher Suite TLS_PSK_WITH_AES_128_CCM_8 fest.
|
otBleSecureSetSslAuthMode(otInstance *aInstance, bool aVerifyPeerCertificate)
|
void
Legt den Authentifizierungsmodus für die sichere BLE-Verbindung fest.
|
otBleSecureStart(otInstance *aInstance, otHandleBleSecureConnect aConnectHandler, otHandleBleSecureReceive aReceiveHandler, bool aTlvMode, void *aContext)
|
Startet den BLE Secure-Dienst.
|
otBleSecureStop(otInstance *aInstance)
|
void
Stoppt den BLE Secure-Server.
|
otBleSecureTcatStart(otInstance *aInstance, const otTcatVendorInfo *aVendorInfo, otHandleTcatJoin aHandler)
|
Aktiviert das TCAT-Protokoll über BLE Secure.
|
Strukturen |
|
---|---|
otTcatVendorInfo |
Diese Struktur stellt Informationen zu TCAT-Anbietern dar. |
Aufzählungen
otTcatApplicationProtocol
otTcatApplicationProtocol
Stellt das TCAT-Anwendungsprotokoll dar.
Attribute | |
---|---|
OT_TCAT_APPLICATION_PROTOCOL_NONE
|
Nachricht, die gesendet wurde, ohne den TCAT-Agent zu aktivieren. |
OT_TCAT_APPLICATION_PROTOCOL_STATUS
|
An einen UDP-Dienst weitergeleitete Nachricht. |
OT_TCAT_APPLICATION_PROTOCOL_TCP
|
An einen TCP-Dienst gerichtete Nachricht. |
otTcatCommandClass
otTcatCommandClass
Stellt eine TCAT-Befehlsklasse dar.
Attribute | |
---|---|
OT_TCAT_COMMAND_CLASS_APPLICATION
|
TCAT-Befehle für die Anwendungsebene. |
OT_TCAT_COMMAND_CLASS_COMMISSIONING
|
TCAT-Befehle für die Inbetriebnahme |
OT_TCAT_COMMAND_CLASS_DECOMMISSIONING
|
TCAT-Befehle zur Außerbetriebnahme |
OT_TCAT_COMMAND_CLASS_EXTRACTION
|
TCAT-Befehle im Zusammenhang mit der Schlüsselextraktion. |
OT_TCAT_COMMAND_CLASS_GENERAL
|
TCAT-Befehle für den allgemeinen Betrieb. |
otTcatStatusCode
otTcatStatusCode
Stellt den TCAT-Statuscode dar.
Attribute | |
---|---|
OT_TCAT_STATUS_BUSY
|
Der Befehl kann nicht ausgeführt werden, da die Ressource ausgelastet ist. |
OT_TCAT_STATUS_GENERAL_ERROR
|
Es ist ein Fehler aufgetreten, der mit keiner anderen Kategorie übereinstimmt. |
OT_TCAT_STATUS_HASH_ERROR
|
Der vom Kommissar vorgelegte Hash-Wert war falsch. |
OT_TCAT_STATUS_PARSE_ERROR
|
Anfrage / Befehl konnte nicht richtig geparst werden. |
OT_TCAT_STATUS_SUCCESS
|
Befehl oder Anfrage wurde erfolgreich verarbeitet. |
OT_TCAT_STATUS_UNAUTHORIZED
|
Der Absender verfügt nicht über eine ausreichende Autorisierung für den angegebenen Befehl. |
OT_TCAT_STATUS_UNDEFINED
|
Der angeforderte Wert, die angeforderten Daten oder der angeforderte Dienst ist (aktuell) nicht definiert oder nicht vorhanden. |
OT_TCAT_STATUS_UNSUPPORTED
|
Der angeforderte Befehl oder die empfangene TLV wird nicht unterstützt. |
OT_TCAT_STATUS_VALUE_ERROR
|
Der Wert der übertragenen TLV weist einen Fehler auf. |
Typedefs
otHandleBleSecureConnect
void(* otHandleBleSecureConnect)(otInstance *aInstance, bool aConnected, bool aBleConnectionOpen, void *aContext)
Zeiger, der aufgerufen wird, wenn sich der Status der sicheren Verbindung ändert.
Details | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parameter |
|
otHandleBleSecureReceive
otHandleTcatApplicationDataReceive otHandleBleSecureReceive
Zeiger zum Aufrufen, wenn Daten über eine BLE Secure-TLS-Verbindung empfangen wurden.
otHandleTcatApplicationDataReceive
void(* otHandleTcatApplicationDataReceive)(otInstance *aInstance, const otMessage *aMessage, int32_t aOffset, otTcatApplicationProtocol aTcatApplicationProtocol, const char *aServiceName, void *aContext)
Zeiger zum Aufrufen, wenn Anwendungsdaten über eine TCAT-TLS-Verbindung empfangen wurden.
Details | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
otHandleTcatJoin
void(* otHandleTcatJoin)(otError aError, void *aContext)
Zeiger, der aufgerufen werden soll, um den Abschluss eines Join-Vorgangs zu benachrichtigen.
Details | |||||
---|---|---|---|---|---|
Parameter |
|
otTcatApplicationProtocol
enum otTcatApplicationProtocol otTcatApplicationProtocol
Stellt das TCAT-Anwendungsprotokoll dar.
otTcatVendorInfo
struct otTcatVendorInfo otTcatVendorInfo
Diese Struktur stellt Informationen zu TCAT-Anbietern dar.
Der Inhalt dieser Struktur MUSS bestehen bleiben und unverändert bleiben, während eine TCAT-Sitzung läuft.
Funktionen
otBleSecureConnect
otError otBleSecureConnect( otInstance *aInstance )
Initialisiert die TLS-Sitzung mit einem Peer mithilfe einer bereits offenen BLE-Verbindung.
Details | |||
---|---|---|---|
Parameter |
|
||
Rückgabewerte |
|
otBleSecureDisconnect
void otBleSecureDisconnect( otInstance *aInstance )
Beendet die BLE- und TLS-Verbindung.
Details | |||
---|---|---|---|
Parameter |
|
otBleSecureFlush
otError otBleSecureFlush( otInstance *aInstance )
Löscht den Sendepuffer.
Details | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
||||||
Rückgabewerte |
|
otBleSecureGetPeerCertificateBase64
otError otBleSecureGetPeerCertificateBase64( otInstance *aInstance, unsigned char *aPeerCert, size_t *aCertLength )
Gibt das base64-codierte Peer-x509-Zertifikat zurück.
Details | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||
Rückgabewerte |
|
otBleSecureGetPeerSubjectAttributeByOid
otError otBleSecureGetPeerSubjectAttributeByOid( otInstance *aInstance, const char *aOid, size_t aOidLength, uint8_t *aAttributeBuffer, size_t *aAttributeLength, int *aAsn1Type )
Gibt einen Attributwert zurück, der anhand seiner OID aus dem Betreff des Peer-x509-Zertifikats identifiziert wird.
Die Peer-OID wird im Binärformat bereitgestellt. Die Attributlänge wird festgelegt, wenn das Attribut erfolgreich gelesen wurde, oder null, wenn das Attribut nicht erfolgreich war. Der ASN.1-Typ ist entsprechend der Definition im ITU-T X.690-Standard festgelegt, wenn das Attribut erfolgreich gelesen wurde.
Details | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||||
Rückgabewerte |
|
otBleSecureGetThreadAttributeFromOwnCertificate
otError otBleSecureGetThreadAttributeFromOwnCertificate( otInstance *aInstance, int aThreadOidDescriptor, uint8_t *aAttributeBuffer, size_t *aAttributeLength )
Gibt einen Attributwert für die OID 1.3.6.1.4.1.44970.x aus den v3-Erweiterungen des eigenen x509-Zertifikats zurück, wobei die letzte Ziffer x auf aThreadOidDescriptor festgelegt ist.
Die Attributlänge wird festgelegt, wenn das Attribut erfolgreich gelesen wurde, oder null, wenn das Attribut nicht erfolgreich war. Es ist eine aktive Verbindung erforderlich.
Details | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||||||
Rückgabewerte |
|
otBleSecureGetThreadAttributeFromPeerCertificate
otError otBleSecureGetThreadAttributeFromPeerCertificate( otInstance *aInstance, int aThreadOidDescriptor, uint8_t *aAttributeBuffer, size_t *aAttributeLength )
Gibt einen Attributwert für die OID 1.3.6.1.4.1.44970.x aus den v3-Erweiterungen des Peer-x509-Zertifikats zurück, wobei die letzte Ziffer x auf aThreadOidDescriptor festgelegt ist.
Die Attributlänge wird festgelegt, wenn das Attribut erfolgreich gelesen wurde, oder null, wenn das Attribut nicht erfolgreich war. Es ist eine aktive Verbindung erforderlich.
Details | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||||||
Rückgabewerte |
|
otBleSecureIsCommandClassAuthorized
bool otBleSecureIsCommandClassAuthorized( otInstance *aInstance, otTcatCommandClass aCommandClass )
Gibt an, ob eine TCAT-Befehlsklasse autorisiert ist.
Details | |||||
---|---|---|---|---|---|
Parameter |
|
||||
Rückgabewerte |
|
otBleSecureIsConnected
bool otBleSecureIsConnected( otInstance *aInstance )
Gibt an, ob die TLS-Sitzung verbunden ist.
Details | |||||
---|---|---|---|---|---|
Parameter |
|
||||
Rückgabewerte |
|
otBleSecureIsConnectionActive
bool otBleSecureIsConnectionActive( otInstance *aInstance )
Gibt an, ob die TLS-Sitzung aktiv ist (verbunden oder Verbindung hergestellt).
Details | |||||
---|---|---|---|---|---|
Parameter |
|
||||
Rückgabewerte |
|
otBleSecureIsTcatEnabled
bool otBleSecureIsTcatEnabled( otInstance *aInstance )
Gibt an, ob der TCAT-Agent aktiviert ist.
Details | |||||
---|---|---|---|---|---|
Rückgabewerte |
|
otBleSecureSend
otError otBleSecureSend( otInstance *aInstance, uint8_t *aBuf, uint16_t aLength )
Sendet ein sicheres BLE-Datenpaket.
Details | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
||||||
Rückgabewerte |
|
otBleSecureSendApplicationTlv
otError otBleSecureSendApplicationTlv( otInstance *aInstance, uint8_t *aBuf, uint16_t aLength )
Es wird ein sicheres BLE-Datenpaket gesendet, das eine TCAT-TLV enthält.
Details | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
||||||
Rückgabewerte |
|
otBleSecureSendMessage
otError otBleSecureSendMessage( otInstance *aInstance, otMessage *aMessage )
Sendet eine sichere BLE-Nachricht.
Wenn der Rückgabewert OT_ERROR_NONE lautet, übernimmt OpenThread die Inhaberschaft von aMessage
und der Aufrufer sollte nicht mehr auf aMessage
verweisen. Wenn der Rückgabewert nicht OT_ERROR_NONE ist, behält der Aufrufer die Inhaberschaft von aMessage
und gibt aMessage
frei, wenn der Nachrichtenpuffer nicht mehr benötigt wird.
Details | |||||
---|---|---|---|---|---|
Parameter |
|
Details | |||||||
---|---|---|---|---|---|---|---|
Rückgabewerte |
|
otBleSecureSetCaCertificateChain
void otBleSecureSetCaCertificateChain( otInstance *aInstance, const uint8_t *aX509CaCertificateChain, uint32_t aX509CaCertChainLength )
Legt die vertrauenswürdigen Top-Level-Zertifizierungsstellen fest.
Wird zum Validieren des Zertifikats des Peers benötigt.
TLS-Modus „ECDHE ECDSA mit AES 128 CCM 8“ für sicheres BLE.
Details | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
otBleSecureSetCertificate
void otBleSecureSetCertificate( otInstance *aInstance, const uint8_t *aX509Cert, uint32_t aX509Length, const uint8_t *aPrivateKey, uint32_t aPrivateKeyLength )
Legt das X509-Zertifikat des lokalen Geräts mit dem entsprechenden privaten Schlüssel für die TLS-Sitzung mit TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 fest.
Details | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
otBleSecureSetPsk
void otBleSecureSetPsk( otInstance *aInstance, const uint8_t *aPsk, uint16_t aPskLength, const uint8_t *aPskIdentity, uint16_t aPskIdLength )
Legt den vorab freigegebenen Schlüssel (Pre-Shared Key, PSK) und die Cipher Suite TLS_PSK_WITH_AES_128_CCM_8 fest.
Details | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
otBleSecureSetSslAuthMode
void otBleSecureSetSslAuthMode( otInstance *aInstance, bool aVerifyPeerCertificate )
Legt den Authentifizierungsmodus für die sichere BLE-Verbindung fest.
Deaktivieren oder aktivieren Sie die Verifizierung des Peer-Zertifikats. Muss vor dem Start aufgerufen werden.
Details | |||||
---|---|---|---|---|---|
Parameter |
|
otBleSecureStart
otError otBleSecureStart( otInstance *aInstance, otHandleBleSecureConnect aConnectHandler, otHandleBleSecureReceive aReceiveHandler, bool aTlvMode, void *aContext )
Startet den BLE Secure-Dienst.
Wenn der TLV-Modus aktiviert ist, wird die Funktion aReceiveHandler
aufgerufen, sobald eine vollständige TLV empfangen wurde und der Nachrichtenversatz auf den TLV-Wert verweist.
Details | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||
Rückgabewerte |
|
otBleSecureStop
void otBleSecureStop( otInstance *aInstance )
Stoppt den BLE Secure-Server.
Details | |||
---|---|---|---|
Parameter |
|
otBleSecureTcatStart
otError otBleSecureTcatStart( otInstance *aInstance, const otTcatVendorInfo *aVendorInfo, otHandleTcatJoin aHandler )
Aktiviert das TCAT-Protokoll über BLE Secure.
Details | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
||||||
Rückgabewerte |
|
Makros
OT_TCAT_MAX_SERVICE_NAME_LENGTH
OT_TCAT_MAX_SERVICE_NAME_LENGTH 15
Maximale Stringlänge eines UDP- oder TCP-Dienstnamens (ohne Nullzeichen).
Ressourcen
OpenThread API-Referenzthemen stammen aus dem Quellcode, der auf GitHub verfügbar ist. Weitere Informationen finden Sie unter Ressourcen. Dort können Sie auch einen Beitrag zu unserer Dokumentation leisten.