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 欄位。
您必須導入導入作業,維護 BeginValidation() 期間配置的所有資源,直到呼叫對應的 EndValidation() 為止。導入時,系統保證每次成功呼叫 BeginValidation() 時只會呼叫 EndValidation()。
EncodeNodeCertInfo
virtual WEAVE_ERROR EncodeNodeCertInfo( const BeginSessionContext & msgCtx, TLVWriter & writer )=0
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()。
GenerateNodeSignature
virtual WEAVE_ERROR GenerateNodeSignature( const BeginSessionContext & msgCtx, const uint8_t *msgHash, uint8_t msgHashLen, TLVWriter & writer, uint64_t tag )=0
使用本機節點的私密金鑰產生簽章。
叫用時,實作項目必須使用節點的私密金鑰,針對指定雜湊值計算簽名。接著,產生的簽名應以 CASE ECDSA 簽章結構,寫入提供的 TLV,並使用指定的標記。
如果節點的私密金鑰存放於本機緩衝區,GenerateAndEncodeWeaveECDSASignature() 公用程式函式可用來實作這個方法。
HandleValidationResult
virtual WEAVE_ERROR HandleValidationResult( const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet, WEAVE_ERROR & validRes )=0
使用憑證驗證結果呼叫。
實作可能會使用這個呼叫來檢查,並可能變更對等端憑證的驗證結果。如果驗證成功,有效 Res 會設為 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 欄位會包含空值。如果實作要求支援憑證參照,則您必須在傳回前,於憑證組合中新增與對等主體 DN 和金鑰 ID 相符的憑證。
您可以選擇是否要實作這個方法。預設的實作不會執行任何動作。