nl::Weave::Profiles::Security::CASE::WeaveCASEAuthDelegate

これは抽象クラスです。

#include <src/lib/profiles/security/WeaveCASE.h>

CASE セッションの確立中に認証アクションが委任される抽象インターフェース。

概要

継承

直接的な既知のサブクラス: nl::Weave::DeviceManager::WeaveDeviceManager

パブリック関数

BeginValidation(const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet)=0
virtual WEAVE_ERROR
証明書の検証の開始時に呼び出されます。
EncodeNodeCertInfo(const BeginSessionContext & msgCtx, TLVWriter & writer)=0
virtual WEAVE_ERROR
ローカルノードの CASE 証明書情報をエンコードします。
EncodeNodePayload(const BeginSessionContext & msgCtx, uint8_t *payloadBuf, uint16_t payloadBufSize, uint16_t & payloadLen)
virtual WEAVE_ERROR
アプリケーション固有のペイロードをエンコードして、ピアへの CASE メッセージに含めます。
EndValidation(const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet)=0
virtual void
証明書の検証の終了時に呼び出されます。
GenerateNodeSignature(const BeginSessionContext & msgCtx, const uint8_t *msgHash, uint8_t msgHashLen, TLVWriter & writer, uint64_t tag)=0
virtual WEAVE_ERROR
ローカルノードの秘密鍵を使用して署名を生成します。
HandleValidationResult(const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet, WEAVE_ERROR & validRes)=0
virtual WEAVE_ERROR
証明書の検証結果を使用して呼び出されます。
OnPeerCertsLoaded(const BeginSessionContext & msgCtx, WeaveDN & subjectDN, CertificateKeyId & subjectKeyId, ValidationContext & validCtx, WeaveCertificateSet & certSet)
virtual WEAVE_ERROR
ピアの証明書が読み込まれた後に呼び出されます。

パブリック関数

BeginValidation

virtual WEAVE_ERROR BeginValidation(
  const BeginSessionContext & msgCtx,
  ValidationContext & validCtx,
  WeaveCertificateSet & certSet
)=0

証明書の検証の開始時に呼び出されます。

実装は、今後の証明書検証を処理するために十分なリソースを使用して、指定された WeaveCertificateSet オブジェクトを初期化する必要があります。この時点では、信頼できるルート証明書または CA 証明書を証明書セットに読み込むか、OnPeerCertsLoaded() が呼び出されるまで待機します。

証明書セットに読み込まれる各証明書には、読み込み機能によってデフォルトの証明書タイプが割り当てられます。実装では、必要に応じてこれらのタイプを調整し、検証中に証明書が正しく処理され、CASE のインタラクションに WeaveAuthMode が正しく割り当てられるようにする必要があります。

指定された検証コンテキストは、一連のデフォルトの検証基準で初期化されます。この基準は、必要に応じて実装によって変更される可能性があります。実装では、EffectiveTime フィールドを設定するか、適切な検証フラグを設定して、証明書の有効期間の検証を抑制する必要があります。

詳細な検証結果が必要な場合、実装で CertValidationResults と CertValidationLen のフィールドが初期化されます。

実装は、対応する EndValidation() が呼び出されるまで、BeginValidation() の間に割り当てられたリソースを保持する必要があります。実装では、BeginValidation() の呼び出しが成功するたびに、EndValidation() が 1 回だけ呼び出されることが保証されています。

EncodeNodeCertInfo

virtual WEAVE_ERROR EncodeNodeCertInfo(
  const BeginSessionContext & msgCtx,
  TLVWriter & writer
)=0

ローカルノードの CASE 証明書情報をエンコードします。

実装では、この呼び出しを使用して、ローカルノードの CASE CertificateInformation 構造のデフォルト エンコードをオーバーライドできます。実装では、呼び出されたとき、少なくともローカルノードのエンティティ証明書を含む CertificateInformation 構造を記述する必要があります。実装には、関連する証明書やトラスト アンカーのセットを任意で含めることができます。

EncodeNodePayload

virtual WEAVE_ERROR EncodeNodePayload(
  const BeginSessionContext & msgCtx,
  uint8_t *payloadBuf,
  uint16_t payloadBufSize,
  uint16_t & payloadLen
)

アプリケーション固有のペイロードをエンコードして、ピアへの CASE メッセージに含めます。

このメソッドの実装は任意です。デフォルトの実装では、長さがゼロのペイロードが返されます。

EndValidation

virtual void EndValidation(
  const BeginSessionContext & msgCtx,
  ValidationContext & validCtx,
  WeaveCertificateSet & certSet
)=0

証明書の検証の終了時に呼び出されます。

実装では、認証の検証が完了した後に、この呼び出しを使用してクリーンアップを実行できます。実装では、BeginValidation() の呼び出しが成功するたびに、EndValidation() が 1 回だけ呼び出されることが保証されています。

GenerateNodeSignature

virtual WEAVE_ERROR GenerateNodeSignature(
  const BeginSessionContext & msgCtx,
  const uint8_t *msgHash,
  uint8_t msgHashLen,
  TLVWriter & writer,
  uint64_t tag
)=0

ローカルノードの秘密鍵を使用して署名を生成します。

呼び出されたとき、実装はノードの秘密鍵を使用して、指定されたハッシュ値に対する署名を計算する必要があります。生成された署名は、指定されたタグを使用して、指定された TLV 記述に対して CASE ECDSASignature 構造の形式で記述する必要があります。

ノードの秘密鍵がローカル バッファに保持されている場合、GenerateAndEncodeWeaveECDSASignature() ユーティリティ関数がこのメソッドの実装に役立つことがあります。

HandleValidationResult

virtual WEAVE_ERROR HandleValidationResult(
  const BeginSessionContext & msgCtx,
  ValidationContext & validCtx,
  WeaveCertificateSet & certSet,
  WEAVE_ERROR & validRes
)=0

証明書の検証結果を使用して呼び出されます。

実装では、この呼び出しを使用してピアの証明書の検証結果を検査し、場合によっては変更することもできます。検証に成功すると、validRes は WEAVE_NO_ERROR に設定されます。この場合、検証コンテキストには結果に関する詳細が含まれます。特に、TrustAnchor フィールドはトラスト アンカー証明書に設定されます。

呼び出しの際に、BeginValidation() の呼び出し時に、実装によって ValidationContext 構造体内の CertValidationResults と CertValidationLen のフィールドが初期化された場合、証明書セット内の各証明書の詳細な検証結果が含まれるようになります。

実装では、validRes をエラー値に設定することでこれをオーバーライドし、それによって検証が失敗する場合があります。

検証で不合格だった場合、validRes に失敗の理由が反映されます。実装では、結果を別のエラー値にオーバーライドできますが、結果を WEAVE_NO_ERROR に設定してはなりません。

OnPeerCertsLoaded

virtual WEAVE_ERROR OnPeerCertsLoaded(
  const BeginSessionContext & msgCtx,
  WeaveDN & subjectDN,
  CertificateKeyId & subjectKeyId,
  ValidationContext & validCtx,
  WeaveCertificateSet & certSet
)

ピアの証明書が読み込まれた後に呼び出されます。

実装では、この呼び出しを使用して、ピアの証明書の検証に使用する入力証明書と検証基準を確定できます。呼び出し時に、ピアから提供される証明書は証明書セット(存在する場合は独自の証明書を含む)に読み込まれます。さらに、subjectDN と subjectKeyId の引数は、ピアの証明書を証明書セットから解決する際に使用される値に初期化されます。ピアが(証明書参照ではなく)独自の証明書を提供した場合、validCtx 引数内の EntityCert フィールドにその証明書へのポインタが含まれます。

この呼び出しの間、実装は新しい証明書の追加を含め、証明書セットの内容を変更することがあります。また、必要に応じて subjectDN、subjectKeyId、validCtx 引数を変更することもできます。最も重要な点は、検証とそれに続くアクセス制御チェックの際に証明書が正しく扱われるように、コードを返す前に証明書タイプ フィールドを証明書セットで調整することです。

注: ピアが完全な証明書ではなく、ピア自体の証明書参照を提供している場合、検証コンテキストの EntityCert フィールドに NULL が含まれます。実装で証明書の参照をサポートする場合、返される前に、ピアのサブジェクト DN と鍵 ID に一致する証明書を証明書セットに追加する必要があります。

このメソッドの実装は任意です。デフォルトの実装では何も起こりません。