CoAP Secure

Este módulo incluye funciones que controlan la comunicación de CoAP Secure (CoAP sobre DTLS).

Resumen

Las funciones de este módulo están disponibles cuando se habilita la función de la API segura de CoAP (OPENTHREAD_CONFIG_COAP_SECURE_API_ENABLE).

Typedefs

otHandleCoapSecureClientConnect)(bool aConnected, void *aContext) typedef
void(*
Se llama al puntero cuando cambia el estado de conexión de DTLS.

Funciones

otCoapSecureAddBlockWiseResource(otInstance *aInstance, otCoapBlockwiseResource *aResource)
void
Agrega un recurso de bloques al servidor seguro de CoAP.
otCoapSecureAddResource(otInstance *aInstance, otCoapResource *aResource)
void
Agrega un recurso al servidor de CoAP Secure.
otCoapSecureConnect(otInstance *aInstance, const otSockAddr *aSockAddr, otHandleCoapSecureClientConnect aHandler, void *aContext)
Inicializa la sesión de DTLS con un par.
otCoapSecureDisconnect(otInstance *aInstance)
void
Detiene la conexión DTLS.
otCoapSecureGetPeerCertificateBase64(otInstance *aInstance, unsigned char *aPeerCert, size_t *aCertLength, size_t aCertBufferSize)
Muestra el certificado de par x509 codificado en base64.
otCoapSecureIsConnected(otInstance *aInstance)
bool
Indica si la sesión de DTLS está conectada o no.
otCoapSecureIsConnectionActive(otInstance *aInstance)
bool
Indica si la sesión de DTLS está activa o no.
otCoapSecureRemoveBlockWiseResource(otInstance *aInstance, otCoapBlockwiseResource *aResource)
void
Quita un recurso a nivel de bloque del servidor seguro de CoAP.
otCoapSecureRemoveResource(otInstance *aInstance, otCoapResource *aResource)
void
Quita un recurso del servidor seguro de CoAP.
otCoapSecureSendRequest(otInstance *aInstance, otMessage *aMessage, otCoapResponseHandler aHandler, void *aContext)
Envía una solicitud de CoAP a través de una conexión DTLS segura.
otCoapSecureSendRequestBlockWise(otInstance *aInstance, otMessage *aMessage, otCoapResponseHandler aHandler, void *aContext, otCoapBlockwiseTransmitHook aTransmitHook, otCoapBlockwiseReceiveHook aReceiveHook)
Envía una solicitud de CoAP a nivel de bloque a través de una conexión DTLS segura.
otCoapSecureSendResponse(otInstance *aInstance, otMessage *aMessage, const otMessageInfo *aMessageInfo)
Envía una respuesta de CoAP desde el servidor de CoAP Secure.
otCoapSecureSendResponseBlockWise(otInstance *aInstance, otMessage *aMessage, const otMessageInfo *aMessageInfo, void *aContext, otCoapBlockwiseTransmitHook aTransmitHook)
Envía una respuesta de CoAP a nivel de bloque desde el servidor seguro de CoAP.
otCoapSecureSetCaCertificateChain(otInstance *aInstance, const uint8_t *aX509CaCertificateChain, uint32_t aX509CaCertChainLength)
void
Establece las CA de nivel superior de confianza.
otCoapSecureSetCertificate(otInstance *aInstance, const uint8_t *aX509Cert, uint32_t aX509Length, const uint8_t *aPrivateKey, uint32_t aPrivateKeyLength)
void
Establece el certificado X509 del dispositivo local con la clave privada correspondiente para la sesión de DTLS con DTLS_ECDHE_ECDSA_WITH_AES_128_CCM_8.
otCoapSecureSetClientConnectedCallback(otInstance *aInstance, otHandleCoapSecureClientConnect aHandler, void *aContext)
void
Establece la devolución de llamada conectada para indicar cuando un cliente se conecta al servidor seguro de CoAP.
otCoapSecureSetDefaultHandler(otInstance *aInstance, otCoapRequestHandler aHandler, void *aContext)
void
Establece el controlador predeterminado para las solicitudes de CoAP Secure no controladas.
otCoapSecureSetPsk(otInstance *aInstance, const uint8_t *aPsk, uint16_t aPskLength, const uint8_t *aPskIdentity, uint16_t aPskIdLength)
void
Establece la clave precompartida (PSK) y el paquete de algoritmos de cifrado DTLS_PSK_WITH_AES_128_CCM_8.
otCoapSecureSetSslAuthMode(otInstance *aInstance, bool aVerifyPeerCertificate)
void
Establece el modo de autenticación para la conexión coap Secure.
otCoapSecureStart(otInstance *aInstance, uint16_t aPort)
Inicia el servicio de CoAP Secure.
otCoapSecureStop(otInstance *aInstance)
void
Detiene el servidor seguro de CoAP.

Typedefs

otHandleCoapSecureClientConnect

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

Se llama al puntero cuando cambia el estado de conexión de DTLS.

Detalles
Parámetros
[in] aConnected
true, si se establece una conexión, de lo contrario, false.
[in] aContext
Un puntero para obtener información contextual arbitraria

Funciones

otCoapSecureAddBlockWiseResource

void otCoapSecureAddBlockWiseResource(
  otInstance *aInstance,
  otCoapBlockwiseResource *aResource
)

Agrega un recurso de bloques al servidor seguro de CoAP.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aResource
Un puntero para el recurso.

otCoapSecureAddResource

void otCoapSecureAddResource(
  otInstance *aInstance,
  otCoapResource *aResource
)

Agrega un recurso al servidor de CoAP Secure.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aResource
Un puntero para el recurso.

otCoapSecureConnect

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

Inicializa la sesión de DTLS con un par.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aSockAddr
Un puntero a la dirección del socket remoto.
[in] aHandler
Un puntero a una función que se llamará cuando cambie el estado de conexión de DTLS.
[in] aContext
Un puntero para obtener información contextual arbitraria
Valores que se muestran
OT_ERROR_NONE
Se inició correctamente la conexión DTLS.

otCoapSecureDisconnect

void otCoapSecureDisconnect(
  otInstance *aInstance
)

Detiene la conexión DTLS.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.

otCoapSecureGetPeerCertificateBase64

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

Muestra el certificado de par x509 codificado en base64.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[out] aPeerCert
Un puntero para el búfer de certificado codificado en Base64.
[out] aCertLength
La longitud del certificado de par codificado en base64.
[in] aCertBufferSize
El tamaño del búfer de aPeerCert.
Valores que se muestran
OT_ERROR_INVALID_STATE
Aún no tienes conexión.
OT_ERROR_NONE
Se obtuvo correctamente el certificado de intercambio de tráfico.
OT_ERROR_NO_BUFS
No se puede asignar memoria al certificado.

otCoapSecureIsConnected

bool otCoapSecureIsConnected(
  otInstance *aInstance
)

Indica si la sesión de DTLS está conectada o no.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
Valores que se muestran
TRUE
La sesión de DTLS está conectada.
FALSE
La sesión de DTLS no está conectada.

otCoapSecureIsConnectionActive

bool otCoapSecureIsConnectionActive(
  otInstance *aInstance
)

Indica si la sesión de DTLS está activa o no.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
Valores que se muestran
TRUE
Si la sesión de DTLS está activa.
FALSE
Si la sesión de DTLS no está activa.

otCoapSecureRemoveBlockWiseResource

void otCoapSecureRemoveBlockWiseResource(
  otInstance *aInstance,
  otCoapBlockwiseResource *aResource
)

Quita un recurso a nivel de bloque del servidor seguro de CoAP.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aResource
Un puntero para el recurso.

otCoapSecureRemoveResource

void otCoapSecureRemoveResource(
  otInstance *aInstance,
  otCoapResource *aResource
)

Quita un recurso del servidor seguro de CoAP.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aResource
Un puntero para el recurso.

otCoapSecureSendRequest

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

Envía una solicitud de CoAP a través de una conexión DTLS segura.

Si se espera una respuesta para una solicitud, se debe proporcionar la información respectiva de función y contexto. Si no se espera una respuesta, estos argumentos deben ser punteros NULL. Si el ID de mensaje no se estableció en el encabezado (igual a 0), esta función le asignará el ID de mensaje único.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aMessage
Una referencia al mensaje para enviar.
[in] aHandler
Un puntero de función que se llamará en la recepción de la respuesta o en el tiempo de espera.
[in] aContext
Un puntero para obtener información contextual arbitraria
Valores que se muestran
OT_ERROR_NONE
Se envió correctamente el mensaje de CoAP.
OT_ERROR_NO_BUFS
No se pudieron asignar los datos de retransmisión.
OT_ERROR_INVALID_STATE
No se inicializó la conexión DTLS.

otCoapSecureSendRequestBlockWise

otError otCoapSecureSendRequestBlockWise(
  otInstance *aInstance,
  otMessage *aMessage,
  otCoapResponseHandler aHandler,
  void *aContext,
  otCoapBlockwiseTransmitHook aTransmitHook,
  otCoapBlockwiseReceiveHook aReceiveHook
)

Envía una solicitud de CoAP a nivel de bloque a través de una conexión DTLS segura.

Está disponible cuando se habilita la configuración OPENtas_CONFIG_COAP_BLOCKWISE_TRANSFER_ENABLE.

Si se espera una respuesta para una solicitud, se debe proporcionar la información respectiva de función y contexto. Si no se espera una respuesta, estos argumentos deben ser punteros NULL. Si el ID de mensaje no se estableció en el encabezado (igual a 0), esta función le asignará el ID de mensaje único.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aMessage
Una referencia al mensaje para enviar.
[in] aHandler
Un puntero de función que se llamará en la recepción de la respuesta o en el tiempo de espera.
[in] aContext
Un puntero para obtener información contextual arbitraria
[in] aTransmitHook
Un puntero de función al que se llama en la recepción de respuestas de Block1.
[in] aReceiveHook
Un puntero de función al que se llama en la recepción de respuestas de Block2.
Valores que se muestran
OT_ERROR_NONE
Se envió correctamente el mensaje de CoAP.
OT_ERROR_NO_BUFS
No se pudieron asignar los datos de retransmisión.
OT_ERROR_INVALID_STATE
No se inicializó la conexión DTLS.

otCoapSecureSendResponse

otError otCoapSecureSendResponse(
  otInstance *aInstance,
  otMessage *aMessage,
  const otMessageInfo *aMessageInfo
)

Envía una respuesta de CoAP desde el servidor de CoAP Secure.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aMessage
Un puntero a la respuesta de CoAP para enviar.
[in] aMessageInfo
Un puntero a la información del mensaje asociado con aMessage.
Valores que se muestran
OT_ERROR_NONE
Se puso en cola correctamente el mensaje de respuesta de CoAP.
OT_ERROR_NO_BUFS
No hay suficientes búferes disponibles para enviar la respuesta de CoAP.

otCoapSecureSendResponseBlockWise

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

Envía una respuesta de CoAP a nivel de bloque desde el servidor seguro de CoAP.

Está disponible cuando se habilita la configuración OPENtas_CONFIG_COAP_BLOCKWISE_TRANSFER_ENABLE.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aMessage
Un puntero a la respuesta de CoAP para enviar.
[in] aMessageInfo
Un puntero a la información del mensaje asociado con aMessage.
[in] aContext
Un puntero para obtener información contextual arbitraria Puede ser NULO si no se usa.
[in] aTransmitHook
Un puntero de función al que se llama en la recepción de solicitudes de Block1
Valores que se muestran
OT_ERROR_NONE
Se puso en cola correctamente el mensaje de respuesta de CoAP.
OT_ERROR_NO_BUFS
No hay suficientes búferes disponibles para enviar la respuesta de CoAP.

otCoapSecureSetCaCertificateChain

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

Establece las CA de nivel superior de confianza.

Es necesario para validar el certificado del par.

Modo DTLS "ECDHE ECDSA con AES 128 CCM 8" para CoAPS de aplicaciones

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aX509CaCertificateChain
Un puntero para la cadena de CA X509 con formato PEM.
[in] aX509CaCertChainLength
La longitud de la cadena.

otCoapSecureSetCertificate

void otCoapSecureSetCertificate(
  otInstance *aInstance,
  const uint8_t *aX509Cert,
  uint32_t aX509Length,
  const uint8_t *aPrivateKey,
  uint32_t aPrivateKeyLength
)

Establece el certificado X509 del dispositivo local con la clave privada correspondiente para la sesión de DTLS con DTLS_ECDHE_ECDSA_WITH_AES_128_CCM_8.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aX509Cert
Un puntero para el certificado X509 con formato PEM.
[in] aX509Length
La longitud del certificado.
[in] aPrivateKey
Un puntero para la clave privada con formato PEM.
[in] aPrivateKeyLength
La longitud de la clave privada.

otCoapSecureSetClientConnectedCallback

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

Establece la devolución de llamada conectada para indicar cuando un cliente se conecta al servidor seguro de CoAP.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aHandler
Un puntero a una función que se llamará una vez que se establezca la conexión DTLS.
[in] aContext
Un puntero para obtener información contextual arbitraria Puede ser NULO si no se usa.

otCoapSecureSetDefaultHandler

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

Establece el controlador predeterminado para las solicitudes de CoAP Secure no controladas.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aHandler
Un puntero de función al que se llamará cuando llegue una solicitud no controlada
[in] aContext
Un puntero para obtener información contextual arbitraria Puede ser NULO si no se usa.

otCoapSecureSetPsk

void otCoapSecureSetPsk(
  otInstance *aInstance,
  const uint8_t *aPsk,
  uint16_t aPskLength,
  const uint8_t *aPskIdentity,
  uint16_t aPskIdLength
)

Establece la clave precompartida (PSK) y el paquete de algoritmos de cifrado DTLS_PSK_WITH_AES_128_CCM_8.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aPsk
Un puntero para la PSK.
[in] aPskLength
La longitud de la PSK.
[in] aPskIdentity
El nombre de identidad de la PSK.
[in] aPskIdLength
Es la longitud de la identidad de PSK.

otCoapSecureSetSslAuthMode

void otCoapSecureSetSslAuthMode(
  otInstance *aInstance,
  bool aVerifyPeerCertificate
)

Establece el modo de autenticación para la conexión coap Secure.

Habilita o inhabilita la verificación del certificado de intercambio de tráfico. Se debe llamar antes de comenzar.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aVerifyPeerCertificate
true, para verificar el certificado de par.

otCoapSecureStart

otError otCoapSecureStart(
  otInstance *aInstance,
  uint16_t aPort
)

Inicia el servicio de CoAP Secure.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aPort
El puerto UDP local al que se vinculará.
Valores que se muestran
OT_ERROR_NONE
Se inició correctamente el servidor seguro de CoAP.

otCoapSecureStop

void otCoapSecureStop(
  otInstance *aInstance
)

Detiene el servidor seguro de CoAP.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.

Macros

PO_DEFAULT_COAP_SECURE_PORT

 OT_DEFAULT_COAP_SECURE_PORT 5684

Puerto seguro CoAP predeterminado, tal como se especifica en RFC 7252

Recursos

Los temas de referencia de la API de OpenThread se originan a partir del código fuente, disponible en GitHub. Para obtener más información o colaborar con nuestra documentación, consulta la sección Recursos.