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

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

呼び出された場合、実装はノードの秘密鍵を使用して、指定されたハッシュ値で署名を計算する必要があります。生成された署名は、指定されたタグを使用して、提供された TLVCASE 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 に一致する証明書を証明書セットに追加する必要があります。

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