Sicurezza COAP

Questo modulo include funzioni che controllano la comunicazione CoAP Secure (CoAP over DTLS).

Riepilogo

Le funzioni in questo modulo sono disponibili quando la funzionalità API CoAP Secure (OPENTHREAD_CONFIG_COAP_SECURE_API_ENABLE) è abilitata.

Definizione di tipo

otHandleCoapSecureClientConnect)(bool aConnected, void *aContext) typedef
void(*
Il puntatore viene chiamato quando lo stato della connessione DTLS cambia.

Funzioni

otCoapSecureAddBlockWiseResource(otInstance *aInstance, otCoapBlockwiseResource *aResource)
void
Aggiunge una risorsa a livello di blocco al server CoAP Secure.
otCoapSecureAddResource(otInstance *aInstance, otCoapResource *aResource)
void
Aggiunge una risorsa al server CoAP Secure.
otCoapSecureConnect(otInstance *aInstance, const otSockAddr *aSockAddr, otHandleCoapSecureClientConnect aHandler, void *aContext)
Inizializza la sessione DTLS con un peer.
otCoapSecureDisconnect(otInstance *aInstance)
void
Interrompe la connessione DTLS.
otCoapSecureGetPeerCertificateBase64(otInstance *aInstance, unsigned char *aPeerCert, size_t *aCertLength, size_t aCertBufferSize)
Restituisce il certificato x509 peer66 codificato.
otCoapSecureIsConnected(otInstance *aInstance)
bool
Indica se la sessione DTLS è connessa o meno.
otCoapSecureIsConnectionActive(otInstance *aInstance)
bool
Indica se la sessione DTLS è attiva o meno.
otCoapSecureRemoveBlockWiseResource(otInstance *aInstance, otCoapBlockwiseResource *aResource)
void
Rimuove una risorsa a livello di blocco dal server CoAP Secure.
otCoapSecureRemoveResource(otInstance *aInstance, otCoapResource *aResource)
void
Rimuove una risorsa dal server CoAP Secure.
otCoapSecureSendRequest(otInstance *aInstance, otMessage *aMessage, otCoapResponseHandler aHandler, void *aContext)
Invia una richiesta CoAP tramite una connessione DTLS sicura.
otCoapSecureSendRequestBlockWise(otInstance *aInstance, otMessage *aMessage, otCoapResponseHandler aHandler, void *aContext, otCoapBlockwiseTransmitHook aTransmitHook, otCoapBlockwiseReceiveHook aReceiveHook)
Invia una richiesta CoAP a livello di blocco tramite una connessione DTLS sicura.
otCoapSecureSendResponse(otInstance *aInstance, otMessage *aMessage, const otMessageInfo *aMessageInfo)
Invia una risposta CoAP dal server CoAP Secure.
otCoapSecureSendResponseBlockWise(otInstance *aInstance, otMessage *aMessage, const otMessageInfo *aMessageInfo, void *aContext, otCoapBlockwiseTransmitHook aTransmitHook)
Invia una risposta CoAP a livello di blocco dal server CoAP Secure.
otCoapSecureSetCaCertificateChain(otInstance *aInstance, const uint8_t *aX509CaCertificateChain, uint32_t aX509CaCertChainLength)
void
Imposta le autorità di certificazione di primo livello attendibili.
otCoapSecureSetCertificate(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 DTLS con DTLS_ECDHE_ECDSA_WITH_AES_128_CCM_8.
otCoapSecureSetClientConnectedCallback(otInstance *aInstance, otHandleCoapSecureClientConnect aHandler, void *aContext)
void
Imposta il callback connesso per indicare quando un client si connette al server CoAP Secure.
otCoapSecureSetDefaultHandler(otInstance *aInstance, otCoapRequestHandler aHandler, void *aContext)
void
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
Imposta la chiave precondivisa (PSK) e la suite di crittografia DTLS_PSK_WITH_AES_128_CCM_8.
otCoapSecureSetSslAuthMode(otInstance *aInstance, bool aVerifyPeerCertificate)
void
Imposta la modalità di autenticazione per la connessione sicura.
otCoapSecureStart(otInstance *aInstance, uint16_t aPort)
Avvia il servizio CoAP Secure.
otCoapSecureStop(otInstance *aInstance)
void
Interrompe il server CoAP Secure.

Definizione di tipo

otHandleCoapSecureClientConnect

void(* otHandleCoapSecureClientConnect)(bool aConnected, void *aContext)

Il puntatore 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 alle informazioni di contesto arbitrarie.

Funzioni

Risorsa otCoapSecureAddBlockWiseResource

void otCoapSecureAddBlockWiseResource(
  otInstance *aInstance,
  otCoapBlockwiseResource *aResource
)

Aggiunge una risorsa a livello di blocco al server CoAP Secure.

Dettagli
Parametri
[in] aInstance
Un puntatore su un'istanza OpenThread.
[in] aResource
Un puntatore alla risorsa.

otCoapSecureAddResource

void otCoapSecureAddResource(
  otInstance *aInstance,
  otCoapResource *aResource
)

Aggiunge una risorsa al server CoAP Secure.

Dettagli
Parametri
[in] aInstance
Un puntatore su un'istanza OpenThread.
[in] aResource
Un puntatore alla risorsa.

OtCoapSecureConnect

otError otCoapSecureConnect(
  otInstance *aInstance,
  const otSockAddr *aSockAddr,
  otHandleCoapSecureClientConnect aHandler,
  void *aContext
)

Inizializza la sessione DTLS con un peer.

Dettagli
Parametri
[in] aInstance
Un puntatore su un'istanza OpenThread.
[in] aSockAddr
Un puntatore sull'indirizzo della presa remota.
[in] aHandler
Un puntatore su una funzione che verrà chiamata quando lo stato della connessione DTLS cambia.
[in] aContext
Un puntatore alle informazioni di contesto arbitrarie.
Valori restituiti
OT_ERROR_NONE
Connessione DTLS avviata.

OtCoapSecureDisconnetti

void otCoapSecureDisconnect(
  otInstance *aInstance
)

Interrompe la connessione DTLS.

Dettagli
Parametri
[in] aInstance
Un puntatore su un'istanza OpenThread.

otCoapSecureGetPeerCertificateBase64

otError otCoapSecureGetPeerCertificateBase64(
  otInstance *aInstance,
  unsigned char *aPeerCert,
  size_t *aCertLength,
  size_t aCertBufferSize
)

Restituisce il certificato x509 peer66 codificato.

Dettagli
Parametri
[in] aInstance
Un puntatore su un'istanza OpenThread.
[out] aPeerCert
Un puntatore al buffer del certificato codificato in base64.
[out] aCertLength
La lunghezza del certificato peer codificato in base64.
[in] aCertBufferSize
La dimensione del buffer di aPeerCert.
Valori restituiti
OT_ERROR_INVALID_STATE
Non ancora connesso.
OT_ERROR_NONE
Ottieni il certificato peer.
OT_ERROR_NO_BUFS
Impossibile allocare la memoria per il certificato.

OtCoapSecureIsConnected

bool otCoapSecureIsConnected(
  otInstance *aInstance
)

Indica se la sessione DTLS è connessa o meno.

Dettagli
Parametri
[in] aInstance
Un puntatore su un'istanza OpenThread.
Valori restituiti
TRUE
La sessione DTLS è connessa.
FALSE
La sessione DTLS non è connessa.

OtCoapSecureIsConnectionActive

bool otCoapSecureIsConnectionActive(
  otInstance *aInstance
)

Indica se la sessione DTLS è attiva o meno.

Dettagli
Parametri
[in] aInstance
Un puntatore su un'istanza OpenThread.
Valori restituiti
TRUE
Se la sessione DTLS è attiva.
FALSE
Se la sessione DTLS non è attiva.

otCoapSecureRemoveBlockWiseResource

void otCoapSecureRemoveBlockWiseResource(
  otInstance *aInstance,
  otCoapBlockwiseResource *aResource
)

Rimuove una risorsa a livello di blocco dal server CoAP Secure.

Dettagli
Parametri
[in] aInstance
Un puntatore su un'istanza OpenThread.
[in] aResource
Un puntatore alla risorsa.

OtCoapSecureRemoveResource

void otCoapSecureRemoveResource(
  otInstance *aInstance,
  otCoapResource *aResource
)

Rimuove una risorsa dal server CoAP Secure.

Dettagli
Parametri
[in] aInstance
Un puntatore su un'istanza OpenThread.
[in] aResource
Un puntatore alla risorsa.

otCoapSecureSendRequest

otError otCoapSecureSendRequest(
  otInstance *aInstance,
  otMessage *aMessage,
  otCoapResponseHandler aHandler,
  void *aContext
)

Invia una richiesta CoAP tramite una connessione DTLS sicura.

Se è prevista una risposta a una richiesta, devono essere fornite le informazioni sulla funzione e sul contesto. Se non è prevista una risposta, questi argomenti devono 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
Un puntatore su un'istanza OpenThread.
[in] aMessage
Un riferimento al messaggio da inviare.
[in] aHandler
Un puntatore funzione che deve essere chiamato alla ricezione o al timeout della risposta.
[in] aContext
Un puntatore alle informazioni di contesto arbitrarie.
Valori restituiti
OT_ERROR_NONE
Messaggio CoAP inviato correttamente.
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
)

Invia una richiesta CoAP a livello di blocco tramite una connessione DTLS sicura.

È disponibile quando la configurazione OPENThread_CONFIG_COAP_BLOCCOWISE_TRASFERISCI è abilitata.

Se è prevista una risposta a una richiesta, devono essere fornite le informazioni sulla funzione e sul contesto. Se non è prevista una risposta, questi argomenti devono 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
Un puntatore su un'istanza OpenThread.
[in] aMessage
Un riferimento al messaggio da inviare.
[in] aHandler
Un puntatore funzione che deve essere chiamato alla ricezione o al timeout della risposta.
[in] aContext
Un puntatore alle informazioni di contesto arbitrarie.
[in] aTransmitHook
Un puntatore di funzione chiamato alla ricezione della risposta Block1.
[in] aReceiveHook
Un puntatore di funzione chiamato alla ricezione della risposta Block2.
Valori restituiti
OT_ERROR_NONE
Messaggio CoAP inviato correttamente.
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
)

Invia una risposta CoAP dal server CoAP Secure.

Dettagli
Parametri
[in] aInstance
Un puntatore su un'istanza OpenThread.
[in] aMessage
Un puntatore alla risposta CoAP da inviare.
[in] aMessageInfo
Un puntatore sulle informazioni del messaggio associate a aMessage.
Valori restituiti
OT_ERROR_NONE
Il messaggio di risposta CoAP è stato accodato.
OT_ERROR_NO_BUFS
Buffer insufficienti per inviare la risposta CoAP.

otCoapSecureSendResponseBlockWise

otError otCoapSecureSendResponseBlockWise(
  otInstance *aInstance,
  otMessage *aMessage,
  const otMessageInfo *aMessageInfo,
  void *aContext,
  otCoapBlockwiseTransmitHook aTransmitHook
)

Invia una risposta CoAP a livello di blocco dal server CoAP Secure.

È disponibile quando la configurazione OPENThread_CONFIG_COAP_BLOCCOWISE_TRASFERISCI è abilitata.

Dettagli
Parametri
[in] aInstance
Un puntatore su un'istanza OpenThread.
[in] aMessage
Un puntatore alla risposta CoAP da inviare.
[in] aMessageInfo
Un puntatore sulle informazioni del messaggio associate a aMessage.
[in] aContext
Un puntatore alle informazioni di contesto arbitrarie. Può essere NULL se non utilizzato.
[in] aTransmitHook
Un puntatore funzione che viene chiamato alla ricezione della richiesta Block1.
Valori restituiti
OT_ERROR_NONE
Il messaggio di risposta CoAP è stato accodato.
OT_ERROR_NO_BUFS
Buffer insufficienti per inviare la risposta CoAP.

otCoapSecureSetCaCertificatoChain

void otCoapSecureSetCaCertificateChain(
  otInstance *aInstance,
  const uint8_t *aX509CaCertificateChain,
  uint32_t aX509CaCertChainLength
)

Imposta le autorità di certificazione di primo livello attendibili.

È necessaria per convalidare il certificato del peer.

Modalità DTLS "ECDHE ECDSA con AES 128 CCM 8" per Application CoAPS.

Dettagli
Parametri
[in] aInstance
Un puntatore su un'istanza OpenThread.
[in] aX509CaCertificateChain
Un puntatore alla catena CA X509 in formato 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
)

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.

Dettagli
Parametri
[in] aInstance
Un puntatore su un'istanza OpenThread.
[in] aX509Cert
Un puntatore al certificato X509 in formato PEM.
[in] aX509Length
La lunghezza del certificato.
[in] aPrivateKey
Un puntatore sulla chiave privata formattata PEM.
[in] aPrivateKeyLength
La lunghezza della chiave privata.

otCoapSecureSetClientConnectedCallback

void otCoapSecureSetClientConnectedCallback(
  otInstance *aInstance,
  otHandleCoapSecureClientConnect aHandler,
  void *aContext
)

Imposta il callback connesso per indicare quando un client si connette al server CoAP Secure.

Dettagli
Parametri
[in] aInstance
Un puntatore su un'istanza OpenThread.
[in] aHandler
Un puntatore su una funzione che verrà chiamata una volta stabilita la connessione DTLS.
[in] aContext
Un puntatore alle informazioni di contesto arbitrarie. Può essere NULL se non utilizzato.

otCoapSecureSetDefaultHandler

void otCoapSecureSetDefaultHandler(
  otInstance *aInstance,
  otCoapRequestHandler aHandler,
  void *aContext
)

Imposta il gestore predefinito per le richieste CoAP Secure non gestite.

Dettagli
Parametri
[in] aInstance
Un puntatore su un'istanza OpenThread.
[in] aHandler
Un puntatore funzione che deve essere chiamato quando arriva una richiesta non gestita.
[in] aContext
Un puntatore alle 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
)

Imposta la chiave precondivisa (PSK) e la suite di crittografia DTLS_PSK_WITH_AES_128_CCM_8.

Dettagli
Parametri
[in] aInstance
Un puntatore su un'istanza OpenThread.
[in] aPsk
Un puntatore alla 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
)

Imposta la modalità di autenticazione per la connessione sicura.

Disattivare o attivare la verifica del certificato peer. Deve essere chiamato prima dell'inizio.

Dettagli
Parametri
[in] aInstance
Un puntatore su un'istanza OpenThread.
[in] aVerifyPeerCertificate
true, per verificare il certificato peer.

OtCoapSecureStart

otError otCoapSecureStart(
  otInstance *aInstance,
  uint16_t aPort
)

Avvia il servizio CoAP Secure.

Dettagli
Parametri
[in] aInstance
Un puntatore su un'istanza OpenThread.
[in] aPort
La porta UDP locale da associare.
Valori restituiti
OT_ERROR_NONE
Avvio del server CoAP Secure riuscito.

OtCoapSecureStop

void otCoapSecureStop(
  otInstance *aInstance
)

Interrompe il server CoAP Secure.

Dettagli
Parametri
[in] aInstance
Un puntatore su un'istanza OpenThread.

Macro

OT_DEFAULT_COAP_SECURE_PORT

 OT_DEFAULT_COAP_SECURE_PORT 5684

Porta sicura CoAP predefinita, come specificato in RFC 7252.

Risorse

Gli argomenti di riferimento per l'API OpenThread provengono dal codice sorgente, disponibile su GitHub. Per maggiori informazioni o per contribuire alla nostra documentazione, consulta Risorse.