CoAP のセキュリティ

このモジュールには、CoAP セキュア(DAP over CoAP)通信を制御する関数が含まれています。

まとめ

このモジュールの関数は、CoAP Secure API 機能(OPENTHREAD_CONFIG_COAP_SECURE_API_ENABLE)が有効な場合に使用できます。

Typedef

otHandleCoapSecureClientConnect)(bool aConnected, void *aContext) typedef
void(*
DTLS 接続状態が変更されると、ポインタが呼び出されます。

関数

otCoapSecureAddBlockWiseResource(otInstance *aInstance, otCoapBlockwiseResource *aResource)
void
CoAP セキュア サーバーにブロック単位のリソースを追加します。
otCoapSecureAddResource(otInstance *aInstance, otCoapResource *aResource)
void
CoAP セキュア サーバーにリソースを追加します。
otCoapSecureConnect(otInstance *aInstance, const otSockAddr *aSockAddr, otHandleCoapSecureClientConnect aHandler, void *aContext)
ピアとの DTLS セッションを初期化します。
otCoapSecureDisconnect(otInstance *aInstance)
void
DTLS 接続を停止します。
otCoapSecureGetPeerCertificateBase64(otInstance *aInstance, unsigned char *aPeerCert, size_t *aCertLength, size_t aCertBufferSize)
エンコードされたピア x509 証明書の base64 を返します。
otCoapSecureIsConnected(otInstance *aInstance)
bool
DTLS セッションが接続されているかどうかを示します。
otCoapSecureIsConnectionActive(otInstance *aInstance)
bool
DTLS セッションがアクティブかどうかを示します。
otCoapSecureRemoveBlockWiseResource(otInstance *aInstance, otCoapBlockwiseResource *aResource)
void
CoAP セキュア サーバーからブロック単位のリソースを削除します。
otCoapSecureRemoveResource(otInstance *aInstance, otCoapResource *aResource)
void
CoAP セキュア サーバーからリソースを削除します。
otCoapSecureSendRequest(otInstance *aInstance, otMessage *aMessage, otCoapResponseHandler aHandler, void *aContext)
セキュアな DTLS 接続を介して CoAP リクエストを送信します。
otCoapSecureSendRequestBlockWise(otInstance *aInstance, otMessage *aMessage, otCoapResponseHandler aHandler, void *aContext, otCoapBlockwiseTransmitHook aTransmitHook, otCoapBlockwiseReceiveHook aReceiveHook)
安全な DTLS 接続を介してブロックごとに CoAP リクエストを送信します。
otCoapSecureSendResponse(otInstance *aInstance, otMessage *aMessage, const otMessageInfo *aMessageInfo)
CoAP セキュア サーバーから CoAP レスポンスを送信します。
otCoapSecureSendResponseBlockWise(otInstance *aInstance, otMessage *aMessage, const otMessageInfo *aMessageInfo, void *aContext, otCoapBlockwiseTransmitHook aTransmitHook)
CoAP セキュア サーバーからブロックごとに CoAP レスポンスを送信します。
otCoapSecureSetCaCertificateChain(otInstance *aInstance, const uint8_t *aX509CaCertificateChain, uint32_t aX509CaCertChainLength)
void
信頼できるトップレベル CA を設定します。
otCoapSecureSetCertificate(otInstance *aInstance, const uint8_t *aX509Cert, uint32_t aX509Length, const uint8_t *aPrivateKey, uint32_t aPrivateKeyLength)
void
ローカル デバイスの X509 証明書を、DTLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 の DTLS セッションに対応する秘密鍵に設定します。
otCoapSecureSetClientConnectedCallback(otInstance *aInstance, otHandleCoapSecureClientConnect aHandler, void *aContext)
void
クライアントが CoAP セキュア サーバーに接続するときに示す接続コールバックを設定します。
otCoapSecureSetDefaultHandler(otInstance *aInstance, otCoapRequestHandler aHandler, void *aContext)
void
未処理の CoAP Secure リクエストのデフォルト ハンドラを設定します。
otCoapSecureSetPsk(otInstance *aInstance, const uint8_t *aPsk, uint16_t aPskLength, const uint8_t *aPskIdentity, uint16_t aPskIdLength)
void
事前共有キー(PSK)と暗号スイート DTLS_PSK_WITH_AES_128_CCM_8 を設定します。
otCoapSecureSetSslAuthMode(otInstance *aInstance, bool aVerifyPeerCertificate)
void
coap Secure 接続の認証モードを設定します。
otCoapSecureStart(otInstance *aInstance, uint16_t aPort)
CoAP セキュア サービスを開始します。
otCoapSecureStop(otInstance *aInstance)
void
CoAP セキュア サーバーを停止します。

Typedef

otHandleCoapSecureClientConnect

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

DTLS 接続状態が変更されると、ポインタが呼び出されます。

詳細
パラメータ
[in] aConnected
接続が確立された場合は true、そうでない場合は false です。
[in] aContext
任意のコンテキスト情報へのポインタ。

関数

otCoapSecureAddBlockWiseResource

void otCoapSecureAddBlockWiseResource(
  otInstance *aInstance,
  otCoapBlockwiseResource *aResource
)

CoAP セキュア サーバーにブロック単位のリソースを追加します。

詳細
パラメータ
[in] aInstance
OpenThread インスタンスへのポインタ。
[in] aResource
リソースへのポインタ。

otCoapSecureAddResource

void otCoapSecureAddResource(
  otInstance *aInstance,
  otCoapResource *aResource
)

CoAP セキュア サーバーにリソースを追加します。

詳細
パラメータ
[in] aInstance
OpenThread インスタンスへのポインタ。
[in] aResource
リソースへのポインタ。

otCoapSecureConnect

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

ピアとの DTLS セッションを初期化します。

詳細
パラメータ
[in] aInstance
OpenThread インスタンスへのポインタ。
[in] aSockAddr
リモート ソケット アドレスへのポインタ。
[in] aHandler
DTLS 接続状態が変更されたときに呼び出される関数へのポインタ。
[in] aContext
任意のコンテキスト情報へのポインタ。
戻り値
OT_ERROR_NONE
DTLS 接続が正常に開始されました。

otCoapSecureDisconnect

void otCoapSecureDisconnect(
  otInstance *aInstance
)

DTLS 接続を停止します。

詳細
パラメータ
[in] aInstance
OpenThread インスタンスへのポインタ。

otCoapSecureGetPeerCertificateBase64

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

エンコードされたピア x509 証明書の base64 を返します。

詳細
パラメータ
[in] aInstance
OpenThread インスタンスへのポインタ。
[out] aPeerCert
base64 でエンコードされた証明書バッファへのポインタ。
[out] aCertLength
base64 でエンコードされたピア証明書の長さ。
[in] aCertBufferSize
aPeerCert のバッファサイズ。
戻り値
OT_ERROR_INVALID_STATE
まだ接続されていません。
OT_ERROR_NONE
ピア証明書を取得しました。
OT_ERROR_NO_BUFS
証明書にメモリを割り当てることができません。

otCoapSecureIsConnected

bool otCoapSecureIsConnected(
  otInstance *aInstance
)

DTLS セッションが接続されているかどうかを示します。

詳細
パラメータ
[in] aInstance
OpenThread インスタンスへのポインタ。
戻り値
TRUE
DTLS セッションは接続されています。
FALSE
DTLS セッションが接続されていません。

otCoapSecureIsConnectionActive

bool otCoapSecureIsConnectionActive(
  otInstance *aInstance
)

DTLS セッションがアクティブかどうかを示します。

詳細
パラメータ
[in] aInstance
OpenThread インスタンスへのポインタ。
戻り値
TRUE
DTLS セッションがアクティブかどうか。
FALSE
DTLS セッションがアクティブでない場合。

otCoapSecureRemoveBlockWiseResource

void otCoapSecureRemoveBlockWiseResource(
  otInstance *aInstance,
  otCoapBlockwiseResource *aResource
)

CoAP セキュア サーバーからブロック単位のリソースを削除します。

詳細
パラメータ
[in] aInstance
OpenThread インスタンスへのポインタ。
[in] aResource
リソースへのポインタ。

otCoapSecureRemoveResource

void otCoapSecureRemoveResource(
  otInstance *aInstance,
  otCoapResource *aResource
)

CoAP セキュア サーバーからリソースを削除します。

詳細
パラメータ
[in] aInstance
OpenThread インスタンスへのポインタ。
[in] aResource
リソースへのポインタ。

otCoapSecureSendRequest

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

セキュアな DTLS 接続を介して CoAP リクエストを送信します。

リクエストのレスポンスが予想される場合は、それぞれの関数とコンテキスト情報を提供します。レスポンスが想定されない場合、これらの引数は NULL ポインタである必要があります。ヘッダーにメッセージ ID が設定されていない場合(0 の場合)、メッセージに一意のメッセージ ID が割り当てられます。

詳細
パラメータ
[in] aInstance
OpenThread インスタンスへのポインタ。
[in] aMessage
送信するメッセージへの参照。
[in] aHandler
レスポンスの受信またはタイムアウト時に呼び出される関数ポインタ。
[in] aContext
任意のコンテキスト情報へのポインタ。
戻り値
OT_ERROR_NONE
CoAP メッセージを送信しました。
OT_ERROR_NO_BUFS
再送データを割り当てることができませんでした。
OT_ERROR_INVALID_STATE
DTLS 接続が初期化されませんでした。

otCoapSecureSendRequestBlockWise

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

安全な DTLS 接続を介してブロックごとに CoAP リクエストを送信します。

OPENTHREAD_CONFIG_COAP_BLOCKWISE_TRANSFER_ENABLE 構成が有効な場合に使用できます。

リクエストのレスポンスが予想される場合は、それぞれの関数とコンテキスト情報を提供します。レスポンスが想定されない場合、これらの引数は NULL ポインタである必要があります。ヘッダーにメッセージ ID が設定されていない場合(0 の場合)、メッセージに一意のメッセージ ID が割り当てられます。

詳細
パラメータ
[in] aInstance
OpenThread インスタンスへのポインタ。
[in] aMessage
送信するメッセージへの参照。
[in] aHandler
レスポンスの受信またはタイムアウト時に呼び出される関数ポインタ。
[in] aContext
任意のコンテキスト情報へのポインタ。
[in] aTransmitHook
Block1 のレスポンスの受信で呼び出される関数ポインタ。
[in] aReceiveHook
Block2 のレスポンスの受信で呼び出される関数ポインタ。
戻り値
OT_ERROR_NONE
CoAP メッセージを送信しました。
OT_ERROR_NO_BUFS
再送データを割り当てることができませんでした。
OT_ERROR_INVALID_STATE
DTLS 接続が初期化されませんでした。

otCoapSecureSendResponse

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

CoAP セキュア サーバーから CoAP レスポンスを送信します。

詳細
パラメータ
[in] aInstance
OpenThread インスタンスへのポインタ。
[in] aMessage
送信する CoAP レスポンスへのポインタ。
[in] aMessageInfo
aMessage に関連付けられたメッセージ情報へのポインタ。
戻り値
OT_ERROR_NONE
CoAP レスポンス メッセージをキューに登録しました。
OT_ERROR_NO_BUFS
CoAP レスポンスの送信に使用できるバッファが不足しています。

otCoapSecureSendResponseBlockBlockWise

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

CoAP セキュア サーバーからブロックごとに CoAP レスポンスを送信します。

OPENTHREAD_CONFIG_COAP_BLOCKWISE_TRANSFER_ENABLE 構成が有効な場合に使用できます。

詳細
パラメータ
[in] aInstance
OpenThread インスタンスへのポインタ。
[in] aMessage
送信する CoAP レスポンスへのポインタ。
[in] aMessageInfo
aMessage に関連付けられたメッセージ情報へのポインタ。
[in] aContext
任意のコンテキスト情報へのポインタ。使用しない場合は、NULL になります。
[in] aTransmitHook
Block1 リクエストの受信で呼び出される関数ポインタ。
戻り値
OT_ERROR_NONE
CoAP レスポンス メッセージをキューに登録しました。
OT_ERROR_NO_BUFS
CoAP レスポンスの送信に使用できるバッファが不足しています。

otCoapSecureSetCaCertificateChain

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

信頼できるトップレベル CA を設定します。

ピアの証明書を検証するために必要です。

Application CoAPS 用の DTLS モード「ECDHE ECDSA with AES 128 CCM 8」。

詳細
パラメータ
[in] aInstance
OpenThread インスタンスへのポインタ。
[in] aX509CaCertificateChain
PEM 形式の X509 CA チェーンへのポインタ。
[in] aX509CaCertChainLength
チェーンの長さ

otCoapSecureSetCertificate

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

ローカル デバイスの X509 証明書を、DTLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 の DTLS セッションに対応する秘密鍵に設定します。

詳細
パラメータ
[in] aInstance
OpenThread インスタンスへのポインタ。
[in] aX509Cert
PEM 形式の X509 証明書へのポインタ。
[in] aX509Length
証明書の長さ。
[in] aPrivateKey
PEM 形式の秘密鍵へのポインタ。
[in] aPrivateKeyLength
秘密鍵の長さ。

otCoapSecureSetClientConnectedCallback

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

クライアントが CoAP セキュア サーバーに接続するときに示す接続コールバックを設定します。

詳細
パラメータ
[in] aInstance
OpenThread インスタンスへのポインタ。
[in] aHandler
DTLS 接続が確立されると呼び出される関数へのポインタ。
[in] aContext
任意のコンテキスト情報へのポインタ。使用しない場合は、NULL になります。

otCoapSecureSetDefaultHandler

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

未処理の CoAP Secure リクエストのデフォルト ハンドラを設定します。

詳細
パラメータ
[in] aInstance
OpenThread インスタンスへのポインタ。
[in] aHandler
未処理のリクエストが届いたときに呼び出される関数ポインタ。
[in] aContext
任意のコンテキスト情報へのポインタ。使用しない場合は、NULL になります。

otCoapSecureSetPsk

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

事前共有キー(PSK)と暗号スイート DTLS_PSK_WITH_AES_128_CCM_8 を設定します。

詳細
パラメータ
[in] aInstance
OpenThread インスタンスへのポインタ。
[in] aPsk
PSK へのポインタ。
[in] aPskLength
PSK の長さ。
[in] aPskIdentity
PSK の ID 名。
[in] aPskIdLength
PSK ID の長さ。

otCoapSecureSetSslAuthMode

void otCoapSecureSetSslAuthMode(
  otInstance *aInstance,
  bool aVerifyPeerCertificate
)

coap Secure 接続の認証モードを設定します。

ピア証明書の確認を有効または無効にします。開始前に呼び出す必要があります。

詳細
パラメータ
[in] aInstance
OpenThread インスタンスへのポインタ。
[in] aVerifyPeerCertificate
true に設定すると、ピア証明書が検証されます。

otCoapSecureStart

otError otCoapSecureStart(
  otInstance *aInstance,
  uint16_t aPort
)

CoAP セキュア サービスを開始します。

詳細
パラメータ
[in] aInstance
OpenThread インスタンスへのポインタ。
[in] aPort
バインドするローカル UDP ポート。
戻り値
OT_ERROR_NONE
CoAP セキュア サーバーを起動しました。

otCoapSecureStop

void otCoapSecureStop(
  otInstance *aInstance
)

CoAP セキュア サーバーを停止します。

詳細
パラメータ
[in] aInstance
OpenThread インスタンスへのポインタ。

マクロ

OT_DEFAULT_COAP_SECURE_PORT

 OT_DEFAULT_COAP_SECURE_PORT 5684

RFC 7252 で指定されているデフォルトの CoAP セキュアポート。

関連情報

OpenThread API リファレンスのトピックは、GitHub で入手可能なソースコードに基づいています。詳細やドキュメントの作成方法については、リソースをご覧ください。