Sécurité BLE
Ce module inclut des fonctions qui contrôlent les communications BLE Secure (TLS sur BLE).
Résumé
Ce module comprend des fonctions qui implémentent la communication TCAT.
Les fonctions de ce module sont disponibles lorsque la fonctionnalité d'API sécurisée BLE (OPENTHREAD_CONFIG_BLE_TCAT_ENABLE
) est activée.
Les fonctions de ce module sont disponibles lorsque la fonctionnalité TCAT (OPENTHREAD_CONFIG_BLE_TCAT_ENABLE
) est activée.
Énumérations |
|
---|---|
otTcatApplicationProtocol{
|
enum Représente le protocole d'application TCAT. |
otTcatCommandClass{
|
enum Représente une classe de commande TCAT. |
otTcatStatusCode{
|
enum Représente le code d'état TCAT. |
Typedefs |
|
---|---|
otHandleBleSecureConnect)(otInstance *aInstance, bool aConnected, bool aBleConnectionOpen, void *aContext)
|
typedefvoid(*
Pointeur à appeler lorsque l'état d'une connexion sécurisée change. |
otHandleBleSecureReceive
|
typedef Pointeur à appeler lorsque des données ont été reçues via une connexion TLS sécurisée BLE. |
otHandleTcatApplicationDataReceive)(otInstance *aInstance, const otMessage *aMessage, int32_t aOffset, otTcatApplicationProtocol aTcatApplicationProtocol, const char *aServiceName, void *aContext)
|
typedefvoid(*
Pointeur à appeler lorsque les données d'application ont été reçues via une connexion TCAT/TLS. |
otHandleTcatJoin)(otError aError, void *aContext)
|
typedefvoid(*
Pointeur à appeler pour avertir la fin d'une opération de jointure. |
otTcatApplicationProtocol
|
typedef Représente le protocole d'application TCAT. |
otTcatCommandClass
|
typedefenum otTcatCommandClass
Représente une classe de commande TCAT. |
otTcatStatusCode
|
typedefenum otTcatStatusCode
Représente le code d'état TCAT. |
otTcatVendorInfo
|
typedefstruct otTcatVendorInfo
Cette structure représente les informations sur un fournisseur TCAT. |
distantes |
|
---|---|
otBleSecureConnect(otInstance *aInstance)
|
Initialise la session TLS avec un pair à l'aide d'une connexion BLE déjà ouverte.
|
otBleSecureDisconnect(otInstance *aInstance)
|
void
Arrête la connexion BLE et TLS.
|
otBleSecureFlush(otInstance *aInstance)
|
Vide le tampon d'envoi.
|
otBleSecureGetPeerCertificateBase64(otInstance *aInstance, unsigned char *aPeerCert, size_t *aCertLength)
|
Renvoie le certificat x509 pair encodé en base64.
|
otBleSecureGetPeerSubjectAttributeByOid(otInstance *aInstance, const char *aOid, size_t aOidLength, uint8_t *aAttributeBuffer, size_t *aAttributeLength, int *aAsn1Type)
|
Renvoie une valeur d'attribut identifiée par son OID provenant de l'objet du certificat x509 pair.
|
otBleSecureGetThreadAttributeFromOwnCertificate(otInstance *aInstance, int aThreadOidDescriptor, uint8_t *aAttributeBuffer, size_t *aAttributeLength)
|
Renvoie une valeur d'attribut pour l'OID 1.3.6.1.4.1.44970.x à partir des extensions v3 du certificat x509, où le dernier chiffre x est défini sur aThreadOidDescriptor.
|
otBleSecureGetThreadAttributeFromPeerCertificate(otInstance *aInstance, int aThreadOidDescriptor, uint8_t *aAttributeBuffer, size_t *aAttributeLength)
|
Renvoie une valeur d'attribut pour l'OID 1.3.6.1.4.1.44970.x à partir des extensions v3 du certificat x509 pair, où le dernier chiffre x est défini sur "aThreadOidDescriptor".
|
otBleSecureIsCommandClassAuthorized(otInstance *aInstance, otTcatCommandClass aCommandClass)
|
bool
Indique si une classe de commande TCAT est autorisée ou non.
|
otBleSecureIsConnected(otInstance *aInstance)
|
bool
Indique si la session TLS est connectée ou non.
|
otBleSecureIsConnectionActive(otInstance *aInstance)
|
bool
Indique si la session TLS est active (connectée ou en cours de connexion).
|
otBleSecureIsTcatEnabled(otInstance *aInstance)
|
bool
Indique si l'agent TCAT est activé ou non.
|
otBleSecureSend(otInstance *aInstance, uint8_t *aBuf, uint16_t aLength)
|
Envoie un paquet de données BLE sécurisé.
|
otBleSecureSendApplicationTlv(otInstance *aInstance, uint8_t *aBuf, uint16_t aLength)
|
Envoie un paquet de données BLE sécurisé contenant un TLV de données d'application d'envoi TCAT.
|
otBleSecureSendMessage(otInstance *aInstance, otMessage *aMessage)
|
Envoie un message BLE sécurisé.
|
otBleSecureSetCaCertificateChain(otInstance *aInstance, const uint8_t *aX509CaCertificateChain, uint32_t aX509CaCertChainLength)
|
void
Définit les autorités de certification de premier niveau approuvées.
|
otBleSecureSetCertificate(otInstance *aInstance, const uint8_t *aX509Cert, uint32_t aX509Length, const uint8_t *aPrivateKey, uint32_t aPrivateKeyLength)
|
void
Définit le certificat X509 de l'appareil local avec la clé privée correspondante pour la session TLS avec 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
Définit la clé pré-partagée (PSK) et la suite de chiffrement TLS_PSK_WITH_AES_128_CCM_8.
|
otBleSecureSetSslAuthMode(otInstance *aInstance, bool aVerifyPeerCertificate)
|
void
Définit le mode d'authentification de la connexion sécurisée BLE.
|
otBleSecureStart(otInstance *aInstance, otHandleBleSecureConnect aConnectHandler, otHandleBleSecureReceive aReceiveHandler, bool aTlvMode, void *aContext)
|
Démarre le service sécurisé BLE.
|
otBleSecureStop(otInstance *aInstance)
|
void
Arrête le serveur sécurisé BLE.
|
otBleSecureTcatStart(otInstance *aInstance, const otTcatVendorInfo *aVendorInfo, otHandleTcatJoin aHandler)
|
Active le protocole TCAT via BLE Secure.
|
Structs |
|
---|---|
otTcatVendorInfo |
Cette structure représente les informations sur un fournisseur TCAT. |
Énumérations
otTcatApplicationProtocol
otTcatApplicationProtocol
Représente le protocole d'application TCAT.
Propriétés | |
---|---|
OT_TCAT_APPLICATION_PROTOCOL_NONE
|
Message qui a été envoyé sans activer l'agent TCAT. |
OT_TCAT_APPLICATION_PROTOCOL_STATUS
|
Message dirigé vers un service UDP. |
OT_TCAT_APPLICATION_PROTOCOL_TCP
|
Message dirigé vers un service TCP. |
otTcatCommandClass
otTcatCommandClass
Représente une classe de commande TCAT.
Propriétés | |
---|---|
OT_TCAT_COMMAND_CLASS_APPLICATION
|
les commandes TCAT liées à la couche application ; |
OT_TCAT_COMMAND_CLASS_COMMISSIONING
|
les commandes TCAT liées à la mise en service ; |
OT_TCAT_COMMAND_CLASS_DECOMMISSIONING
|
Commandes TCAT liées à la mise hors service. |
OT_TCAT_COMMAND_CLASS_EXTRACTION
|
Commandes TCAT liées à l'extraction de clés. |
OT_TCAT_COMMAND_CLASS_GENERAL
|
les commandes TCAT liées aux opérations générales. |
otTcatStatusCode
otTcatStatusCode
Représente le code d'état TCAT.
Propriétés | |
---|---|
OT_TCAT_STATUS_BUSY
|
Impossible d'exécuter la commande, car la ressource est occupée. |
OT_TCAT_STATUS_GENERAL_ERROR
|
Une erreur ne correspond à aucune autre catégorie. |
OT_TCAT_STATUS_HASH_ERROR
|
La valeur de hachage présentée par le commissaire était incorrecte. |
OT_TCAT_STATUS_PARSE_ERROR
|
Impossible d'analyser la requête ou la commande correctement. |
OT_TCAT_STATUS_SUCCESS
|
La commande ou la requête a bien été traitée. |
OT_TCAT_STATUS_UNAUTHORIZED
|
L'expéditeur ne dispose pas d'une autorisation suffisante pour la commande donnée. |
OT_TCAT_STATUS_UNDEFINED
|
La valeur, les données ou le service demandés ne sont pas définis (actuellement) ou ne sont pas présents. |
OT_TCAT_STATUS_UNSUPPORTED
|
La commande demandée ou le TLV reçu n'est pas pris en charge. |
OT_TCAT_STATUS_VALUE_ERROR
|
La valeur du TLV transmis contient une erreur. |
Typedefs
otHandleBleSecureConnect
void(* otHandleBleSecureConnect)(otInstance *aInstance, bool aConnected, bool aBleConnectionOpen, void *aContext)
Pointeur à appeler lorsque l'état d'une connexion sécurisée change.
Détails | |||||||||
---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
otHandleBleSecureReceive
otHandleTcatApplicationDataReceive otHandleBleSecureReceive
Pointeur à appeler lorsque des données ont été reçues via une connexion TLS sécurisée BLE.
otHandleTcatApplicationDataReceive
void(* otHandleTcatApplicationDataReceive)(otInstance *aInstance, const otMessage *aMessage, int32_t aOffset, otTcatApplicationProtocol aTcatApplicationProtocol, const char *aServiceName, void *aContext)
Pointeur à appeler lorsque les données d'application ont été reçues via une connexion TCAT/TLS.
Détails | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
otHandleTcatJoin
void(* otHandleTcatJoin)(otError aError, void *aContext)
Pointeur à appeler pour avertir la fin d'une opération de jointure.
Détails | |||||
---|---|---|---|---|---|
Paramètres |
|
otTcatApplicationProtocol
enum otTcatApplicationProtocol otTcatApplicationProtocol
Représente le protocole d'application TCAT.
otTcatCommandClass
enum otTcatCommandClass otTcatCommandClass
Représente une classe de commande TCAT.
otTcatVendorInfo
struct otTcatVendorInfo otTcatVendorInfo
Cette structure représente les informations sur un fournisseur TCAT.
Le contenu de cette structure DOIT être conservé et rester inchangé pendant l'exécution d'une session TCAT.
distantes
otBleSecureConnect
otError otBleSecureConnect( otInstance *aInstance )
Initialise la session TLS avec un pair à l'aide d'une connexion BLE déjà ouverte.
Détails | |||
---|---|---|---|
Paramètres |
|
||
Valeurs de retour |
|
otBleSecureDisconnect
void otBleSecureDisconnect( otInstance *aInstance )
Arrête la connexion BLE et TLS.
Détails | |||
---|---|---|---|
Paramètres |
|
otBleSecureFlush
otError otBleSecureFlush( otInstance *aInstance )
Vide le tampon d'envoi.
Détails | |||||||
---|---|---|---|---|---|---|---|
Paramètres |
|
||||||
Valeurs de retour |
|
otBleSecureGetPeerCertificateBase64
otError otBleSecureGetPeerCertificateBase64( otInstance *aInstance, unsigned char *aPeerCert, size_t *aCertLength )
Renvoie le certificat x509 pair encodé en base64.
Détails | |||||||||
---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||
Valeurs de retour |
|
otBleSecureGetPeerSubjectAttributeByOid
otError otBleSecureGetPeerSubjectAttributeByOid( otInstance *aInstance, const char *aOid, size_t aOidLength, uint8_t *aAttributeBuffer, size_t *aAttributeLength, int *aAsn1Type )
Renvoie une valeur d'attribut identifiée par son OID provenant de l'objet du certificat x509 pair.
L'OID du pair est fourni au format binaire. La longueur de l'attribut est définie si la lecture de l'attribut a abouti ou zéro en cas d'échec. Type ASN.1 tel que défini dans la norme ITU-T X.690 si l'attribut a été lu avec succès.
Détails | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||||||
Valeurs de retour |
|
otBleSecureGetThreadAttributeFromOwnCertificate
otError otBleSecureGetThreadAttributeFromOwnCertificate( otInstance *aInstance, int aThreadOidDescriptor, uint8_t *aAttributeBuffer, size_t *aAttributeLength )
Renvoie une valeur d'attribut pour l'OID 1.3.6.1.4.1.44970.x à partir des extensions v3 du certificat x509, où le dernier chiffre x est défini sur aThreadOidDescriptor.
La longueur de l'attribut est définie si la lecture de l'attribut a abouti ou zéro en cas d'échec. Une connexion est requise pour être actif.
Détails | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||||||||
Valeurs de retour |
|
otBleSecureGetThreadAttributeFromPeerCertificate
otError otBleSecureGetThreadAttributeFromPeerCertificate( otInstance *aInstance, int aThreadOidDescriptor, uint8_t *aAttributeBuffer, size_t *aAttributeLength )
Renvoie une valeur d'attribut pour l'OID 1.3.6.1.4.1.44970.x à partir des extensions v3 du certificat x509 pair, où le dernier chiffre x est défini sur "aThreadOidDescriptor".
La longueur de l'attribut est définie si la lecture de l'attribut a abouti ou zéro en cas d'échec. Une connexion est requise pour être actif.
Détails | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||||||||
Valeurs de retour |
|
otBleSecureIsCommandClassAuthorized
bool otBleSecureIsCommandClassAuthorized( otInstance *aInstance, otTcatCommandClass aCommandClass )
Indique si une classe de commande TCAT est autorisée ou non.
Détails | |||||
---|---|---|---|---|---|
Paramètres |
|
||||
Valeurs de retour |
|
otBleSecureIsConnected
bool otBleSecureIsConnected( otInstance *aInstance )
Indique si la session TLS est connectée ou non.
Détails | |||||
---|---|---|---|---|---|
Paramètres |
|
||||
Valeurs de retour |
|
otBleSecureIsConnectionActive
bool otBleSecureIsConnectionActive( otInstance *aInstance )
Indique si la session TLS est active (connectée ou en cours de connexion).
Détails | |||||
---|---|---|---|---|---|
Paramètres |
|
||||
Valeurs de retour |
|
otBleSecureIsTcatEnabled
bool otBleSecureIsTcatEnabled( otInstance *aInstance )
Indique si l'agent TCAT est activé ou non.
Détails | |||||
---|---|---|---|---|---|
Valeurs de retour |
|
otBleSecureSend
otError otBleSecureSend( otInstance *aInstance, uint8_t *aBuf, uint16_t aLength )
Envoie un paquet de données BLE sécurisé.
Détails | |||||||
---|---|---|---|---|---|---|---|
Paramètres |
|
||||||
Valeurs de retour |
|
otBleSecureSendApplicationTlv
otError otBleSecureSendApplicationTlv( otInstance *aInstance, uint8_t *aBuf, uint16_t aLength )
Envoie un paquet de données BLE sécurisé contenant un TLV de données d'application d'envoi TCAT.
Détails | |||||||
---|---|---|---|---|---|---|---|
Paramètres |
|
||||||
Valeurs de retour |
|
otBleSecureSendMessage
otError otBleSecureSendMessage( otInstance *aInstance, otMessage *aMessage )
Envoie un message BLE sécurisé.
Si la valeur renvoyée est OT_ERROR_NONE, OpenThread devient propriétaire de aMessage
, et l'appelant ne doit plus référencer aMessage
. Si la valeur renvoyée n'est pas OT_ERROR_NONE, l'appelant conserve la propriété de aMessage
, y compris en libérant aMessage
si la mémoire tampon du message n'est plus nécessaire.
Détails | |||||
---|---|---|---|---|---|
Paramètres |
|
Détails | |||||||
---|---|---|---|---|---|---|---|
Valeurs de retour |
|
otBleSecureSetCaCertificateChain
void otBleSecureSetCaCertificateChain( otInstance *aInstance, const uint8_t *aX509CaCertificateChain, uint32_t aX509CaCertChainLength )
Définit les autorités de certification de premier niveau approuvées.
Il est nécessaire pour valider le certificat du pair.
Mode TLS "ECDHE ECDSA avec AES 128 CCM 8" pour une connexion BLE sécurisée
Détails | |||||||
---|---|---|---|---|---|---|---|
Paramètres |
|
otBleSecureSetCertificate
void otBleSecureSetCertificate( otInstance *aInstance, const uint8_t *aX509Cert, uint32_t aX509Length, const uint8_t *aPrivateKey, uint32_t aPrivateKeyLength )
Définit le certificat X509 de l'appareil local avec la clé privée correspondante pour la session TLS avec TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8.
Détails | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
otBleSecureSetPsk
void otBleSecureSetPsk( otInstance *aInstance, const uint8_t *aPsk, uint16_t aPskLength, const uint8_t *aPskIdentity, uint16_t aPskIdLength )
Définit la clé pré-partagée (PSK) et la suite de chiffrement TLS_PSK_WITH_AES_128_CCM_8.
Détails | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
otBleSecureSetSslAuthMode
void otBleSecureSetSslAuthMode( otInstance *aInstance, bool aVerifyPeerCertificate )
Définit le mode d'authentification de la connexion sécurisée BLE.
Désactivez ou activez la vérification des certificats de pairs. Doit être appelé avant le début.
Détails | |||||
---|---|---|---|---|---|
Paramètres |
|
otBleSecureStart
otError otBleSecureStart( otInstance *aInstance, otHandleBleSecureConnect aConnectHandler, otHandleBleSecureReceive aReceiveHandler, bool aTlvMode, void *aContext )
Démarre le service sécurisé BLE.
Lorsque le mode TLV est actif, la fonction aReceiveHandler
est appelée une fois qu'un TLV complet a été reçu et que le décalage du message pointe vers la valeur TLV.
Détails | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||||
Valeurs de retour |
|
otBleSecureStop
void otBleSecureStop( otInstance *aInstance )
Arrête le serveur sécurisé BLE.
Détails | |||
---|---|---|---|
Paramètres |
|
otBleSecureTcatStart
otError otBleSecureTcatStart( otInstance *aInstance, const otTcatVendorInfo *aVendorInfo, otHandleTcatJoin aHandler )
Active le protocole TCAT via BLE Secure.
Détails | |||||||
---|---|---|---|---|---|---|---|
Paramètres |
|
||||||
Valeurs de retour |
|
Macros
OT_TCAT_MAX_SERVICE_NAME_LENGTH
OT_TCAT_MAX_SERVICE_NAME_LENGTH 15
Longueur maximale de la chaîne d'un nom de service UDP ou TCP (n'inclut pas le caractère nul).
Ressources
Les sujets de référence de l'API OpenThread proviennent du code source, disponible sur GitHub. Pour en savoir plus ou pour contribuer à notre documentation, consultez la section Ressources.