Sicurezza BLE
Questo modulo include funzioni che controllano la comunicazione BLE Secure (TLS su BLE).
Riepilogo
Questo modulo include funzioni che implementano la comunicazione TCAT.
Le funzioni in questo modulo sono disponibili quando è abilitata la funzionalità dell'API BLE Secure (OPENTHREAD_CONFIG_BLE_TCAT_ENABLE
).
Le funzioni in questo modulo sono disponibili quando la funzionalità TCAT (OPENTHREAD_CONFIG_BLE_TCAT_ENABLE
) è abilitata.
Enumerazioni |
|
---|---|
otTcatApplicationProtocol{
|
enum Rappresenta il protocollo dell'applicazione TCAT. |
otTcatCommandClass{
|
enum Rappresenta una classe di comando TCAT. |
otTcatStatusCode{
|
enum Rappresenta il codice di stato TCAT. |
Typedef |
|
---|---|
otHandleBleSecureConnect)(otInstance *aInstance, bool aConnected, bool aBleConnectionOpen, void *aContext)
|
typedefvoid(*
Puntatore da chiamare quando cambia lo stato di connessione sicura. |
otHandleBleSecureReceive
|
typedef Puntatore da chiamare quando i dati sono stati ricevuti tramite una connessione TLS sicura BLE. |
otHandleTcatApplicationDataReceive)(otInstance *aInstance, const otMessage *aMessage, int32_t aOffset, otTcatApplicationProtocol aTcatApplicationProtocol, const char *aServiceName, void *aContext)
|
typedefvoid(*
Puntatore da chiamare quando i dati dell'applicazione sono stati ricevuti tramite una connessione TLS TCAT. |
otHandleTcatJoin)(otError aError, void *aContext)
|
typedefvoid(*
Puntatore da chiamare per notificare il completamento di un'operazione di join. |
otTcatApplicationProtocol
|
typedef Rappresenta il protocollo dell'applicazione TCAT. |
otTcatCommandClass
|
typedefenum otTcatCommandClass
Rappresenta una classe di comando TCAT. |
otTcatStatusCode
|
typedefenum otTcatStatusCode
Rappresenta il codice di stato TCAT. |
otTcatVendorInfo
|
typedefstruct otTcatVendorInfo
Questa struttura rappresenta le informazioni di un fornitore TCAT. |
Funzioni |
|
---|---|
otBleSecureConnect(otInstance *aInstance)
|
Inizializza la sessione TLS con un peer utilizzando una connessione BLE già aperta.
|
otBleSecureDisconnect(otInstance *aInstance)
|
void
Interrompe la connessione BLE e TLS.
|
otBleSecureFlush(otInstance *aInstance)
|
Svuota il buffer di invio.
|
otBleSecureGetPeerCertificateBase64(otInstance *aInstance, unsigned char *aPeerCert, size_t *aCertLength)
|
Restituisce il certificato x509 del peer con codifica Base64.
|
otBleSecureGetPeerSubjectAttributeByOid(otInstance *aInstance, const char *aOid, size_t aOidLength, uint8_t *aAttributeBuffer, size_t *aAttributeLength, int *aAsn1Type)
|
Restituisce un valore dell'attributo identificato dal relativo OID dal soggetto del certificato x509 peer.
|
otBleSecureGetThreadAttributeFromOwnCertificate(otInstance *aInstance, int aThreadOidDescriptor, uint8_t *aAttributeBuffer, size_t *aAttributeLength)
|
Restituisce un valore di attributo per l'OID 1.3.6.1.4.1.44970.x dalle estensioni v3 del proprio certificato x509, dove l'ultima cifra x è impostata su aThreadOidDescriptor.
|
otBleSecureGetThreadAttributeFromPeerCertificate(otInstance *aInstance, int aThreadOidDescriptor, uint8_t *aAttributeBuffer, size_t *aAttributeLength)
|
Restituisce un valore di attributo per l'OID 1.3.6.1.4.1.44970.x dalle estensioni v3 del certificato peer x509, dove l'ultima cifra x è impostata su aThreadOidDescriptor.
|
otBleSecureIsCommandClassAuthorized(otInstance *aInstance, otTcatCommandClass aCommandClass)
|
bool
Indica se una classe di comando TCAT è autorizzata o meno.
|
otBleSecureIsConnected(otInstance *aInstance)
|
bool
Indica se la sessione TLS è connessa o meno.
|
otBleSecureIsConnectionActive(otInstance *aInstance)
|
bool
Indica se la sessione TLS è attiva (connessa o connessa).
|
otBleSecureIsTcatEnabled(otInstance *aInstance)
|
bool
Indica se l'agente TCAT è abilitato o meno.
|
otBleSecureSend(otInstance *aInstance, uint8_t *aBuf, uint16_t aLength)
|
Invia un pacchetto di dati BLE sicuro.
|
otBleSecureSendApplicationTlv(otInstance *aInstance, uint8_t *aBuf, uint16_t aLength)
|
Invia un pacchetto di dati BLE sicuro contenente un TCAT Send Application Data TLV.
|
otBleSecureSendMessage(otInstance *aInstance, otMessage *aMessage)
|
Invia un messaggio BLE sicuro.
|
otBleSecureSetCaCertificateChain(otInstance *aInstance, const uint8_t *aX509CaCertificateChain, uint32_t aX509CaCertChainLength)
|
void
Imposta le CA di primo livello attendibili.
|
otBleSecureSetCertificate(otInstance *aInstance, const uint8_t *aX509Cert, uint32_t aX509Length, const uint8_t *aPrivateKey, uint32_t aPrivateKeyLength)
|
void
Imposta il certificato X509 del dispositivo locale con la chiave privata corrispondente per la sessione TLS con 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
Imposta la chiave precondivisa (PSK) e la suite di crittografia TLS_PSK_WITH_AES_128_CCM_8.
|
otBleSecureSetSslAuthMode(otInstance *aInstance, bool aVerifyPeerCertificate)
|
void
Imposta la modalità di autenticazione per la connessione sicura BLE.
|
otBleSecureStart(otInstance *aInstance, otHandleBleSecureConnect aConnectHandler, otHandleBleSecureReceive aReceiveHandler, bool aTlvMode, void *aContext)
|
Avvia il servizio BLE Secure.
|
otBleSecureStop(otInstance *aInstance)
|
void
Interrompe il server sicuro BLE.
|
otBleSecureTcatStart(otInstance *aInstance, const otTcatVendorInfo *aVendorInfo, otHandleTcatJoin aHandler)
|
Consente di attivare il protocollo TCAT tramite BLE Secure.
|
Strutture |
|
---|---|
otTcatVendorInfo |
Questa struttura rappresenta le informazioni di un fornitore TCAT. |
Enumerazioni
otTcatApplicationProtocol
otTcatApplicationProtocol
Rappresenta il protocollo dell'applicazione TCAT.
Proprietà | |
---|---|
OT_TCAT_APPLICATION_PROTOCOL_NONE
|
Messaggio inviato senza attivare l'agente TCAT. |
OT_TCAT_APPLICATION_PROTOCOL_STATUS
|
Messaggio diretto a un servizio UDP. |
OT_TCAT_APPLICATION_PROTOCOL_TCP
|
Messaggio diretto a un servizio TCP. |
otTcatCommandClass
otTcatCommandClass
Rappresenta una classe di comando TCAT.
Proprietà | |
---|---|
OT_TCAT_COMMAND_CLASS_APPLICATION
|
Comandi TCAT relativi al livello dell'applicazione. |
OT_TCAT_COMMAND_CLASS_COMMISSIONING
|
Comandi TCAT relativi alla messa in servizio. |
OT_TCAT_COMMAND_CLASS_DECOMMISSIONING
|
Comandi TCAT relativi al ritiro. |
OT_TCAT_COMMAND_CLASS_EXTRACTION
|
Comandi TCAT relativi all'estrazione delle chiavi. |
OT_TCAT_COMMAND_CLASS_GENERAL
|
Comandi TCAT relativi alle operazioni generali. |
otTcatStatusCode
otTcatStatusCode
Rappresenta il codice di stato TCAT.
Proprietà | |
---|---|
OT_TCAT_STATUS_BUSY
|
Impossibile eseguire il comando perché la risorsa è occupata. |
OT_TCAT_STATUS_GENERAL_ERROR
|
Si è verificato un errore che non corrisponde a nessun'altra categoria. |
OT_TCAT_STATUS_HASH_ERROR
|
Il valore hash presentato dal commissario non era corretto. |
OT_TCAT_STATUS_PARSE_ERROR
|
Impossibile analizzare correttamente la richiesta o il comando. |
OT_TCAT_STATUS_SUCCESS
|
Il comando o la richiesta sono stati elaborati correttamente. |
OT_TCAT_STATUS_UNAUTHORIZED
|
Il mittente non dispone di autorizzazioni sufficienti per il comando fornito. |
OT_TCAT_STATUS_UNDEFINED
|
Il valore, i dati o il servizio richiesti non sono definiti (attualmente) o non sono presenti. |
OT_TCAT_STATUS_UNSUPPORTED
|
Il comando richiesto o il TLV ricevuto non sono supportati. |
OT_TCAT_STATUS_VALUE_ERROR
|
Il valore del TLV trasmesso contiene un errore. |
Typedef
otHandleBleSecureConnect
void(* otHandleBleSecureConnect)(otInstance *aInstance, bool aConnected, bool aBleConnectionOpen, void *aContext)
Puntatore da chiamare quando cambia lo stato di connessione sicura.
Dettagli | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametri |
|
otHandleBleSecureReceive
otHandleTcatApplicationDataReceive otHandleBleSecureReceive
Puntatore da chiamare quando i dati sono stati ricevuti tramite una connessione TLS sicura BLE.
otHandleTcatApplicationDataReceive
void(* otHandleTcatApplicationDataReceive)(otInstance *aInstance, const otMessage *aMessage, int32_t aOffset, otTcatApplicationProtocol aTcatApplicationProtocol, const char *aServiceName, void *aContext)
Puntatore da chiamare quando i dati dell'applicazione sono stati ricevuti tramite una connessione TLS TCAT.
Dettagli | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
otHandleTcatJoin
void(* otHandleTcatJoin)(otError aError, void *aContext)
Puntatore da chiamare per notificare il completamento di un'operazione di join.
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
otTcatApplicationProtocol
enum otTcatApplicationProtocol otTcatApplicationProtocol
Rappresenta il protocollo dell'applicazione TCAT.
otTcatCommandClass
enum otTcatCommandClass otTcatCommandClass
Rappresenta una classe di comando TCAT.
otTcatVendorInfo
struct otTcatVendorInfo otTcatVendorInfo
Questa struttura rappresenta le informazioni di un fornitore TCAT.
I contenuti di questa struttura DEVONO rimanere invariati mentre è in esecuzione una sessione TCAT.
Funzioni
otBleSecureConnect
otError otBleSecureConnect( otInstance *aInstance )
Inizializza la sessione TLS con un peer utilizzando una connessione BLE già aperta.
Dettagli | |||
---|---|---|---|
Parametri |
|
||
Valori restituiti |
|
otBleSecureDisconnect
void otBleSecureDisconnect( otInstance *aInstance )
Interrompe la connessione BLE e TLS.
Dettagli | |||
---|---|---|---|
Parametri |
|
otBleSecureFlush
otError otBleSecureFlush( otInstance *aInstance )
Svuota il buffer di invio.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
||||||
Valori restituiti |
|
otBleSecureGetPeerCertificateBase64
otError otBleSecureGetPeerCertificateBase64( otInstance *aInstance, unsigned char *aPeerCert, size_t *aCertLength )
Restituisce il certificato x509 del peer con codifica Base64.
Dettagli | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||
Valori restituiti |
|
otBleSecureGetPeerSubjectAttributeByOid
otError otBleSecureGetPeerSubjectAttributeByOid( otInstance *aInstance, const char *aOid, size_t aOidLength, uint8_t *aAttributeBuffer, size_t *aAttributeLength, int *aAsn1Type )
Restituisce un valore dell'attributo identificato dal relativo OID dal soggetto del certificato x509 peer.
L'OID peer è fornito in formato binario. La lunghezza dell'attributo viene impostata se l'attributo è stato letto correttamente oppure zero in caso di errore. Il tipo di ASN.1 impostato come definito nello standard ITU-T X.690 se l'attributo è stato letto correttamente.
Dettagli | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||
Valori restituiti |
|
otBleSecureGetThreadAttributeFromOwnCertificate
otError otBleSecureGetThreadAttributeFromOwnCertificate( otInstance *aInstance, int aThreadOidDescriptor, uint8_t *aAttributeBuffer, size_t *aAttributeLength )
Restituisce un valore di attributo per l'OID 1.3.6.1.4.1.44970.x dalle estensioni v3 del proprio certificato x509, dove l'ultima cifra x è impostata su aThreadOidDescriptor.
La lunghezza dell'attributo viene impostata se l'attributo è stato letto correttamente oppure zero in caso di errore. È necessaria una connessione attiva.
Dettagli | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||||
Valori restituiti |
|
otBleSecureGetThreadAttributeFromPeerCertificate
otError otBleSecureGetThreadAttributeFromPeerCertificate( otInstance *aInstance, int aThreadOidDescriptor, uint8_t *aAttributeBuffer, size_t *aAttributeLength )
Restituisce un valore di attributo per l'OID 1.3.6.1.4.1.44970.x dalle estensioni v3 del certificato peer x509, dove l'ultima cifra x è impostata su aThreadOidDescriptor.
La lunghezza dell'attributo viene impostata se l'attributo è stato letto correttamente oppure zero in caso di errore. È necessaria una connessione attiva.
Dettagli | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||||
Valori restituiti |
|
otBleSecureIsCommandClassAuthorized
bool otBleSecureIsCommandClassAuthorized( otInstance *aInstance, otTcatCommandClass aCommandClass )
Indica se una classe di comando TCAT è autorizzata o meno.
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
||||
Valori restituiti |
|
otBleSecureIsConnected
bool otBleSecureIsConnected( otInstance *aInstance )
Indica se la sessione TLS è connessa o meno.
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
||||
Valori restituiti |
|
otBleSecureIsConnectionActive
bool otBleSecureIsConnectionActive( otInstance *aInstance )
Indica se la sessione TLS è attiva (connessa o connessa).
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
||||
Valori restituiti |
|
otBleSecureIsTcatEnabled
bool otBleSecureIsTcatEnabled( otInstance *aInstance )
Indica se l'agente TCAT è abilitato o meno.
Dettagli | |||||
---|---|---|---|---|---|
Valori restituiti |
|
otBleSecureSend
otError otBleSecureSend( otInstance *aInstance, uint8_t *aBuf, uint16_t aLength )
Invia un pacchetto di dati BLE sicuro.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
||||||
Valori restituiti |
|
otBleSecureSendApplicationTlv
otError otBleSecureSendApplicationTlv( otInstance *aInstance, uint8_t *aBuf, uint16_t aLength )
Invia un pacchetto di dati BLE sicuro contenente un TCAT Send Application Data TLV.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
||||||
Valori restituiti |
|
otBleSecureSendMessage
otError otBleSecureSendMessage( otInstance *aInstance, otMessage *aMessage )
Invia un messaggio BLE sicuro.
Se il valore restituito è OT_ERROR_NONE, OpenThread acquisisce la proprietà di aMessage
e il chiamante non deve più fare riferimento a aMessage
. Se il valore restituito non è OT_ERROR_NONE, il chiamante mantiene la proprietà di aMessage
, liberando aMessage
se il buffer dei messaggi non è più necessario.
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Valori restituiti |
|
otBleSecureSetCaCertificateChain
void otBleSecureSetCaCertificateChain( otInstance *aInstance, const uint8_t *aX509CaCertificateChain, uint32_t aX509CaCertChainLength )
Imposta le CA di primo livello attendibili.
È necessaria per convalidare il certificato del peer.
Modalità TLS "ECDHE ECDSA con AES 128 CCM 8" per BLE sicuro.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
otBleSecureSetCertificate
void otBleSecureSetCertificate( otInstance *aInstance, const uint8_t *aX509Cert, uint32_t aX509Length, const uint8_t *aPrivateKey, uint32_t aPrivateKeyLength )
Imposta il certificato X509 del dispositivo locale con la chiave privata corrispondente per la sessione TLS con TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8.
Dettagli | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
otBleSecureSetPsk
void otBleSecureSetPsk( otInstance *aInstance, const uint8_t *aPsk, uint16_t aPskLength, const uint8_t *aPskIdentity, uint16_t aPskIdLength )
Imposta la chiave precondivisa (PSK) e la suite di crittografia TLS_PSK_WITH_AES_128_CCM_8.
Dettagli | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
otBleSecureSetSslAuthMode
void otBleSecureSetSslAuthMode( otInstance *aInstance, bool aVerifyPeerCertificate )
Imposta la modalità di autenticazione per la connessione sicura BLE.
Disattiva o abilita la verifica del certificato peer. Deve essere chiamato prima dell'inizio.
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
otBleSecureStart
otError otBleSecureStart( otInstance *aInstance, otHandleBleSecureConnect aConnectHandler, otHandleBleSecureReceive aReceiveHandler, bool aTlvMode, void *aContext )
Avvia il servizio BLE Secure.
Quando la modalità TLV è attiva, la funzione aReceiveHandler
viene chiamata dopo la ricezione di un TLV completo e l'offset del messaggio punta al valore TLV.
Dettagli | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||
Valori restituiti |
|
otBleSecureStop
void otBleSecureStop( otInstance *aInstance )
Interrompe il server sicuro BLE.
Dettagli | |||
---|---|---|---|
Parametri |
|
otBleSecureTcatStart
otError otBleSecureTcatStart( otInstance *aInstance, const otTcatVendorInfo *aVendorInfo, otHandleTcatJoin aHandler )
Consente di attivare il protocollo TCAT tramite BLE Secure.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
||||||
Valori restituiti |
|
Macro
OT_TCAT_MAX_SERVICE_NAME_LENGTH
OT_TCAT_MAX_SERVICE_NAME_LENGTH 15
Lunghezza massima della stringa del nome di un servizio UDP o TCP (non include il carattere nullo).
Risorse
Gli argomenti di riferimento dell'API OpenThread provengono dal codice sorgente, disponibile su GitHub. Per saperne di più o per contribuire alla nostra documentazione, consulta la sezione Risorse.