透過集合功能整理內容 你可以依據偏好儲存及分類內容。

nl::Weave::設定檔:安全性::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
在對等點載入後呼叫。

公用函式

開始驗證

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

在憑證驗證開始時呼叫。

實作時,必須為提供的 WeaveCertificateSet 物件提供足夠的資源,以便處理即將發生的憑證驗證作業。目前導入作業可能會將信任的根憑證或 CA 憑證載入憑證集,或等待呼叫 OnPeerCertsLoaded()

每個載入憑證憑證的憑證都會依載入函式指派預設憑證類型。實作時應視情況調整這些類型,以確保驗證期間的憑證的處理方式正確無誤,以及為 WeCASEveAuthMode 正確指派的 CASE 互動。

提供的驗證內容將使用一組預設驗證條件來初始化,實作可能會視需要變更。實作程序必須設定 EffectiveTime 欄位,或是設定適當的驗證旗標來隱藏憑證生命週期驗證。

如果需要詳細的驗證結果,實作可以初始化 CertValidationResults 和 CertCertLen 欄位。

您需要實作實作作業,以保留在 BeginVerification() 期間分配的任何資源,直到呼叫對應的 EndAuthentication() 為止。每次成功呼叫 BeginValidation() 時,做法一定會保證將 EndAuthentication() 呼叫一次。

編碼節點特定資訊

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

為本機節點編碼 CASE 憑證資訊。

實作可以透過這項呼叫覆寫本機節點的 CASE 憑證資訊預設編碼。實作時,實作至少應含有包含本機節點實體憑證的 CertificateInformation 結構。實作作業可能包括一組相關憑證和/或信任錨點。

編碼節點酬載

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

對應用程式專屬酬載進行編碼,以便包含在 CASE 訊息中。

您可以自行決定是否要導入這個方法。預設導入作業會傳回零長度的酬載。

結束驗證

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

憑證驗證結束時呼叫。

在導入憑證驗證完成後,實作作業可能會使用這個呼叫執行清理作業。每次成功呼叫 BeginValidation() 時,做法一定會保證將 EndAuthentication() 呼叫一次。

產生節點簽名

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

使用本機節點的私密金鑰產生簽章。

叫用時,實作節點必須使用節點的私密金鑰計算指定雜湊值的簽章。接著,產生的簽名應以指定標記的形式,將 CASE ECDSASignature 結構寫入提供的 TLV 寫入。

如果將節點的私密金鑰保存在本機本機緩衝區中,GenerateAndEncodeWeaveECDSASignature() 公用程式函式可協助您實作此方法。

HandleValidationResult

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

使用憑證驗證的結果呼叫。

實作作業可能會透過這個呼叫來檢查 (或可能) 變更對等憑證的驗證結果。如果驗證成功,validRes 將設為 WEAVE_NO_ERROR。在此情況下,驗證內容會包含結果的詳細資料。具體來說,「TrustAnchor」欄位會設為信任錨定憑證。

如果實作在 BeginAuthentication() 呼叫期間,在 VerificationContext 結構中初始化 CertValidationResults 和 CertCertLen 欄位,則這些欄位會包含憑證集中每個憑證的詳細驗證結果。

實作可能會將 validRes 設為錯誤值而覆寫此情形,進而導致驗證失敗。

如果驗證失敗,validRes 會反映失敗的原因。導入方式可能覆寫其他錯誤的值,但「不得」將結果設為 WEAVE_NO_ERROR。

已載入對等互連同類應用程式

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 相符的憑證新增至憑證集。

您可以自行決定是否要導入這個方法。預設導入作業無須採取任何行動。