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 に一致する証明書を証明書セットに追加する必要があります。

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