CoAP Secure Questo modulo include funzioni che controllano la comunicazione CoAP Secure (CoAP over DTLS).
Sommario Le funzioni in questo modulo sono disponibili quando la funzione CoAP Secure API ( OPENTHREAD_CONFIG_COAP_SECURE_API_ENABLE
) è abilitata.
Typedef otHandleCoapSecureClientConnect )(bool aConnected, void *aContext)
typedef void(*
Questo puntatore a funzione viene chiamato quando cambia lo stato della connessione DTLS.
Funzioni otCoapSecureAddBlockWiseResource ( otInstance *aInstance, otCoapBlockwiseResource *aResource)
void
Questa funzione aggiunge una risorsa block-wise al server CoAP Secure.
otCoapSecureAddResource ( otInstance *aInstance, otCoapResource *aResource)
void
Questa funzione aggiunge una risorsa al server CoAP Secure.
otCoapSecureConnect ( otInstance *aInstance, const otSockAddr *aSockAddr, otHandleCoapSecureClientConnect aHandler, void *aContext)
Questo metodo inizializza la sessione DTLS con un peer.
otCoapSecureDisconnect ( otInstance *aInstance)
void
Questo metodo interrompe la connessione DTLS.
otCoapSecureGetPeerCertificateBase64 ( otInstance *aInstance, unsigned char *aPeerCert, size_t *aCertLength, size_t aCertBufferSize)
Questo metodo restituisce il certificato peer x509 con codifica base64.
otCoapSecureIsConnected ( otInstance *aInstance)
bool
Questo metodo indica se la sessione DTLS è connessa o meno.
otCoapSecureIsConnectionActive ( otInstance *aInstance)
bool
Questo metodo indica se la sessione DTLS è attiva o meno.
otCoapSecureRemoveBlockWiseResource ( otInstance *aInstance, otCoapBlockwiseResource *aResource)
void
Questa funzione rimuove una risorsa block-wise dal server CoAP Secure.
otCoapSecureRemoveResource ( otInstance *aInstance, otCoapResource *aResource)
void
Questa funzione rimuove una risorsa dal server CoAP Secure.
otCoapSecureSendRequest ( otInstance *aInstance, otMessage *aMessage, otCoapResponseHandler aHandler, void *aContext)
Questo metodo invia una richiesta CoAP su una connessione DTLS sicura.
otCoapSecureSendRequestBlockWise ( otInstance *aInstance, otMessage *aMessage, otCoapResponseHandler aHandler, void *aContext, otCoapBlockwiseTransmitHook aTransmitHook, otCoapBlockwiseReceiveHook aReceiveHook)
Questo metodo invia una richiesta CoAP a livello di blocco su una connessione DTLS sicura.
otCoapSecureSendResponse ( otInstance *aInstance, otMessage *aMessage, const otMessageInfo *aMessageInfo)
Questa funzione invia una risposta CoAP dal server CoAP Secure.
otCoapSecureSendResponseBlockWise ( otInstance *aInstance, otMessage *aMessage, const otMessageInfo *aMessageInfo, void *aContext, otCoapBlockwiseTransmitHook aTransmitHook)
Questa funzione invia una risposta CoAP per blocco dal server CoAP Secure.
otCoapSecureSetCaCertificateChain ( otInstance *aInstance, const uint8_t *aX509CaCertificateChain, uint32_t aX509CaCertChainLength)
void
Questo metodo imposta le CA affidabili di primo livello.
otCoapSecureSetCertificate ( otInstance *aInstance, const uint8_t *aX509Cert, uint32_t aX509Length, const uint8_t *aPrivateKey, uint32_t aPrivateKeyLength)
void
Questo metodo imposta il certificato X509 del dispositivo locale con la chiave privata corrispondente per la sessione DTLS con DTLS_ECDHE_ECDSA_WITH_AES_128_CCM_8.
otCoapSecureSetClientConnectedCallback ( otInstance *aInstance, otHandleCoapSecureClientConnect aHandler, void *aContext)
void
Questo metodo imposta il callback connesso per indicare quando un client si connette al server CoAP Secure.
otCoapSecureSetDefaultHandler ( otInstance *aInstance, otCoapRequestHandler aHandler, void *aContext)
void
Questa funzione imposta il gestore predefinito per le richieste CoAP Secure non gestite.
otCoapSecureSetPsk ( otInstance *aInstance, const uint8_t *aPsk, uint16_t aPskLength, const uint8_t *aPskIdentity, uint16_t aPskIdLength)
void
Questo metodo imposta la chiave pre-condivisa (PSK) e la suite di crittografia DTLS_PSK_WITH_AES_128_CCM_8.
otCoapSecureSetSslAuthMode ( otInstance *aInstance, bool aVerifyPeerCertificate)
void
Questo metodo imposta la modalità di autenticazione per la connessione sicura coap.
otCoapSecureStart ( otInstance *aInstance, uint16_t aPort)
Questa funzione avvia il servizio CoAP Secure.
otCoapSecureStop ( otInstance *aInstance)
void
Questa funzione arresta il server CoAP Secure.
Typedef otHandleCoapSecureClientConnect void(* otHandleCoapSecureClientConnect)(bool aConnected, void *aContext) Questo puntatore a funzione viene chiamato quando lo stato della connessione DTLS cambia.
Dettagli Parametri [in] aConnected
true, se è stata stabilita una connessione, false in caso contrario.
[in] aContext
Un puntatore a informazioni di contesto arbitrarie.
Funzioni otCoapSecureAddBlockWiseResource void otCoapSecureAddBlockWiseResource(
otInstance *aInstance,
otCoapBlockwiseResource *aResource
) Questa funzione aggiunge una risorsa block-wise al server CoAP Secure.
Dettagli Parametri [in] aInstance
Puntatore a un'istanza di OpenThread.
[in] aResource
Un puntatore alla risorsa.
otCoapSecureAddResource void otCoapSecureAddResource(
otInstance *aInstance,
otCoapResource *aResource
) Questa funzione aggiunge una risorsa al server CoAP Secure.
Dettagli Parametri [in] aInstance
Puntatore a un'istanza di OpenThread.
[in] aResource
Un puntatore alla risorsa.
otCoapSecureConnect otError otCoapSecureConnect(
otInstance *aInstance,
const otSockAddr *aSockAddr,
otHandleCoapSecureClientConnect aHandler,
void *aContext
) Questo metodo inizializza la sessione DTLS con un peer.
Dettagli Parametri [in] aInstance
Puntatore a un'istanza di OpenThread.
[in] aSockAddr
Un puntatore al file sockaddr remoto.
[in] aHandler
Puntatore a una funzione che verrà chiamata quando lo stato della connessione DTLS cambia.
[in] aContext
Un puntatore a informazioni di contesto arbitrarie.
Valori restituiti OT_ERROR_NONE
Connessione DTLS avviata con successo.
otCoapSecureDisconnect void otCoapSecureDisconnect(
otInstance *aInstance
) Questo metodo interrompe la connessione DTLS.
Dettagli Parametri [in] aInstance
Puntatore a un'istanza di OpenThread.
otCoapSecureGetPeerCertificateBase64 otError otCoapSecureGetPeerCertificateBase64(
otInstance *aInstance,
unsigned char *aPeerCert,
size_t *aCertLength,
size_t aCertBufferSize
) Questo metodo restituisce il certificato peer x509 con codifica base64.
Nota: questa funzione richiede l' MBEDTLS_BASE64_C
funzione in MBEDTLS_BASE64_C
di MBEDTLS_BASE64_C
.
Dettagli Parametri [in] aInstance
Puntatore a un'istanza di OpenThread.
[out] aPeerCert
Un puntatore al buffer del certificato con codifica base64.
[out] aCertLength
La lunghezza del certificato peer con codifica base64.
[in] aCertBufferSize
La dimensione del buffer di aPeerCert.
Valori restituiti OT_ERROR_INVALID_STATE
Non ancora connesso.
OT_ERROR_NONE
Ottieni con successo il certificato del peer.
OT_ERROR_NO_BUFS
Impossibile allocare memoria per il certificato.
otCoapSecureIsConnected bool otCoapSecureIsConnected(
otInstance *aInstance
) Questo metodo indica se la sessione DTLS è connessa o meno.
Dettagli Parametri [in] aInstance
Puntatore a un'istanza di OpenThread.
Valori restituiti TRUE
La sessione DTLS è connessa.
FALSE
La sessione DTLS non è connessa.
otCoapSecureIsConnectionActive bool otCoapSecureIsConnectionActive(
otInstance *aInstance
) Questo metodo indica se la sessione DTLS è attiva o meno.
Dettagli Parametri [in] aInstance
Puntatore a un'istanza di OpenThread.
Valori restituiti TRUE
Se la sessione DTLS è attiva.
FALSE
Se la sessione DTLS non è attiva.
otCoapSecureRemoveBlockWiseResource void otCoapSecureRemoveBlockWiseResource(
otInstance *aInstance,
otCoapBlockwiseResource *aResource
) Questa funzione rimuove una risorsa a livello di blocco dal server CoAP Secure.
Dettagli Parametri [in] aInstance
Puntatore a un'istanza di OpenThread.
[in] aResource
Un puntatore alla risorsa.
otCoapSecureRemoveResource void otCoapSecureRemoveResource(
otInstance *aInstance,
otCoapResource *aResource
) Questa funzione rimuove una risorsa dal server CoAP Secure.
Dettagli Parametri [in] aInstance
Puntatore a un'istanza di OpenThread.
[in] aResource
Un puntatore alla risorsa.
otCoapSecureSendRequest otError otCoapSecureSendRequest(
otInstance *aInstance,
otMessage *aMessage,
otCoapResponseHandler aHandler,
void *aContext
) Questo metodo invia una richiesta CoAP su una connessione DTLS sicura.
Se è prevista una risposta a una richiesta, devono essere fornite le rispettive funzioni e le informazioni sul contesto. Se non è prevista alcuna risposta, questi argomenti dovrebbero essere puntatori NULL. Se l'ID messaggio non è stato impostato nell'intestazione (uguale a 0), questa funzione assegnerà un ID messaggio univoco al messaggio.
Dettagli Parametri [in] aInstance
Puntatore a un'istanza di OpenThread.
[in] aMessage
Un riferimento al messaggio da inviare.
[in] aHandler
Un puntatore a funzione che deve essere chiamato alla ricezione della risposta o al timeout.
[in] aContext
Un puntatore a informazioni di contesto arbitrarie.
Valori restituiti OT_ERROR_NONE
Messaggio CoAP inviato con successo.
OT_ERROR_NO_BUFS
Impossibile allocare i dati di ritrasmissione.
OT_ERROR_INVALID_STATE
La connessione DTLS non è stata inizializzata.
otCoapSecureSendRequestBlockWise otError otCoapSecureSendRequestBlockWise(
otInstance *aInstance,
otMessage *aMessage,
otCoapResponseHandler aHandler,
void *aContext,
otCoapBlockwiseTransmitHook aTransmitHook,
otCoapBlockwiseReceiveHook aReceiveHook
) Questo metodo invia una richiesta CoAP a livello di blocco su una connessione DTLS sicura.
Questa funzione è disponibile quando la configurazione OPENTHREAD_CONFIG_COAP_BLOCKWISE_TRANSFER_ENABLE è abilitata.
Se è prevista una risposta a una richiesta, devono essere fornite le rispettive funzioni e informazioni sul contesto. Se non è prevista alcuna risposta, questi argomenti dovrebbero essere puntatori NULL. Se l'ID messaggio non è stato impostato nell'intestazione (uguale a 0), questa funzione assegnerà un ID messaggio univoco al messaggio.
Dettagli Parametri [in] aInstance
Puntatore a un'istanza di OpenThread.
[in] aMessage
Un riferimento al messaggio da inviare.
[in] aHandler
Un puntatore a funzione che deve essere chiamato alla ricezione della risposta o al timeout.
[in] aContext
Un puntatore a informazioni di contesto arbitrarie.
[in] aTransmitHook
Un puntatore a funzione che viene chiamato alla ricezione della risposta Block1.
[in] aReceiveHook
Un puntatore a funzione che viene chiamato alla ricezione della risposta Block2.
Valori restituiti OT_ERROR_NONE
Messaggio CoAP inviato con successo.
OT_ERROR_NO_BUFS
Impossibile allocare i dati di ritrasmissione.
OT_ERROR_INVALID_STATE
La connessione DTLS non è stata inizializzata.
otCoapSecureSendResponse otError otCoapSecureSendResponse(
otInstance *aInstance,
otMessage *aMessage,
const otMessageInfo *aMessageInfo
) Questa funzione invia una risposta CoAP dal server CoAP Secure.
Dettagli Parametri [in] aInstance
Puntatore a un'istanza di OpenThread.
[in] aMessage
Un puntatore alla risposta CoAP da inviare.
[in] aMessageInfo
Un puntatore alle informazioni sul messaggio associate a aMessage
.
Valori restituiti OT_ERROR_NONE
Accodato con successo il messaggio di risposta CoAP.
OT_ERROR_NO_BUFS
Buffer disponibili insufficienti per inviare la risposta CoAP.
otCoapSecureSendResponseBlockWise otError otCoapSecureSendResponseBlockWise(
otInstance *aInstance,
otMessage *aMessage,
const otMessageInfo *aMessageInfo,
void *aContext,
otCoapBlockwiseTransmitHook aTransmitHook
) Questa funzione invia una risposta CoAP per blocco dal server CoAP Secure.
Questa funzione è disponibile quando la configurazione OPENTHREAD_CONFIG_COAP_BLOCKWISE_TRANSFER_ENABLE è abilitata.
Dettagli Parametri [in] aInstance
Puntatore a un'istanza di OpenThread.
[in] aMessage
Un puntatore alla risposta CoAP da inviare.
[in] aMessageInfo
Un puntatore alle informazioni sul messaggio associate a aMessage
.
[in] aContext
Un puntatore a informazioni di contesto arbitrarie. Può essere NULL se non utilizzato.
[in] aTransmitHook
Puntatore a funzione che viene chiamato alla ricezione della richiesta Block1.
Valori restituiti OT_ERROR_NONE
Accodato con successo il messaggio di risposta CoAP.
OT_ERROR_NO_BUFS
Buffer disponibili insufficienti per inviare la risposta CoAP.
otCoapSecureSetCaCertificateChain void otCoapSecureSetCaCertificateChain(
otInstance *aInstance,
const uint8_t *aX509CaCertificateChain,
uint32_t aX509CaCertChainLength
) Questo metodo imposta le CA affidabili di primo livello.
È necessario per convalidare il certificato del peer.
Modalità DTLS "ECDHE ECDSA con AES 128 CCM 8" per applicazione CoAPS.
Nota: questa funzione richiede MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED=1
.
Dettagli Parametri [in] aInstance
Puntatore a un'istanza di OpenThread.
[in] aX509CaCertificateChain
Un puntatore alla catena X509 CA formattata PEM.
[in] aX509CaCertChainLength
La lunghezza della catena.
otCoapSecureSetCertificate void otCoapSecureSetCertificate(
otInstance *aInstance,
const uint8_t *aX509Cert,
uint32_t aX509Length,
const uint8_t *aPrivateKey,
uint32_t aPrivateKeyLength
) Questo metodo imposta il certificato X509 del dispositivo locale con la chiave privata corrispondente per la sessione DTLS con DTLS_ECDHE_ECDSA_WITH_AES_128_CCM_8.
Nota: questa funzione richiede MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED=1
.
Dettagli Parametri [in] aInstance
Puntatore a un'istanza di OpenThread.
[in] aX509Cert
Un puntatore al certificato X509 formattato PEM.
[in] aX509Length
La lunghezza del certificato.
[in] aPrivateKey
Un puntatore alla chiave privata formattata PEM.
[in] aPrivateKeyLength
La lunghezza della chiave privata.
otCoapSecureSetClientConnectedCallback void otCoapSecureSetClientConnectedCallback(
otInstance *aInstance,
otHandleCoapSecureClientConnect aHandler,
void *aContext
) Questo metodo imposta la richiamata connessa per indicare quando un client si connette al server CoAP Secure.
Dettagli Parametri [in] aInstance
Puntatore a un'istanza di OpenThread.
[in] aHandler
Puntatore a una funzione che verrà chiamata una volta stabilita la connessione DTLS.
[in] aContext
Un puntatore a informazioni di contesto arbitrarie. Può essere NULL se non utilizzato.
otCoapSecureSetDefaultHandler void otCoapSecureSetDefaultHandler(
otInstance *aInstance,
otCoapRequestHandler aHandler,
void *aContext
) Questa funzione imposta il gestore predefinito per le richieste CoAP Secure non gestite.
Dettagli Parametri [in] aInstance
Puntatore a un'istanza di OpenThread.
[in] aHandler
Un puntatore a funzione che deve essere chiamato quando arriva una richiesta non gestita.
[in] aContext
Un puntatore a informazioni di contesto arbitrarie. Può essere NULL se non utilizzato.
otCoapSecureSetPsk void otCoapSecureSetPsk(
otInstance *aInstance,
const uint8_t *aPsk,
uint16_t aPskLength,
const uint8_t *aPskIdentity,
uint16_t aPskIdLength
) Questo metodo imposta la chiave pre-condivisa (PSK) e la suite di crittografia DTLS_PSK_WITH_AES_128_CCM_8.
Nota: questa funzione richiede l' MBEDTLS_KEY_EXCHANGE_PSK_ENABLED
funzione in MBEDTLS_KEY_EXCHANGE_PSK_ENABLED
di MBEDTLS_KEY_EXCHANGE_PSK_ENABLED
.
Dettagli Parametri [in] aInstance
Puntatore a un'istanza di OpenThread.
[in] aPsk
Un puntatore al PSK.
[in] aPskLength
La lunghezza del PSK.
[in] aPskIdentity
Il nome identità per il PSK.
[in] aPskIdLength
La lunghezza dell'identità PSK.
otCoapSecureSetSslAuthMode void otCoapSecureSetSslAuthMode(
otInstance *aInstance,
bool aVerifyPeerCertificate
) Questo metodo imposta la modalità di autenticazione per la connessione sicura coap.
Disabilita o abilita la verifica del certificato peer. Deve essere chiamato prima dell'inizio.
Dettagli Parametri [in] aInstance
Puntatore a un'istanza di OpenThread.
[in] aVerifyPeerCertificate
true, per verificare il certificato del peer.
otCoapSecureStart otError otCoapSecureStart(
otInstance *aInstance,
uint16_t aPort
) Questa funzione avvia il servizio CoAP Secure.
Dettagli Parametri [in] aInstance
Puntatore a un'istanza di OpenThread.
[in] aPort
La porta UDP locale a cui collegarsi.
Valori restituiti OT_ERROR_NONE
Avviato con successo il server CoAP Secure.
otCoapSecureStop void otCoapSecureStop(
otInstance *aInstance
) Questa funzione arresta il server CoAP Secure.
Dettagli Parametri [in] aInstance
Puntatore a un'istanza di OpenThread.
Macro OT_DEFAULT_COAP_SECURE_PORT OT_DEFAULT_COAP_SECURE_PORT 5684 Porta protetta CoAP predefinita, come specificato in RFC 7252.