nl:: Weave:: Profiles:: Security:: CASE:: WeaveCASEAuthDelegate
Questa è una classe astratta.
#include <src/lib/profiles/security/WeaveCASE.h>
Interfaccia astratta a cui vengono delegate le azioni di autenticazione durante l'instaurazione della sessione CASE.
Riepilogo
Eredità
Classi secondarie dirette note: nl::Weave::DeviceManager::WeaveDeviceManager
Funzioni pubbliche |
|
---|---|
BeginValidation(const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet)=0
|
virtual WEAVE_ERROR
Viene chiamato all'inizio della convalida del certificato.
|
EncodeNodeCertInfo(const BeginSessionContext & msgCtx, TLVWriter & writer)=0
|
virtual WEAVE_ERROR
Codifica le informazioni del certificato CASE per il nodo locale.
|
EncodeNodePayload(const BeginSessionContext & msgCtx, uint8_t *payloadBuf, uint16_t payloadBufSize, uint16_t & payloadLen)
|
virtual WEAVE_ERROR
Codifica un payload specifico dell'applicazione da includere nel messaggio CASE nel peer.
|
EndValidation(const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet)=0
|
virtual void
Viene chiamato al termine della convalida del certificato.
|
GenerateNodeSignature(const BeginSessionContext & msgCtx, const uint8_t *msgHash, uint8_t msgHashLen, TLVWriter & writer, uint64_t tag)=0
|
virtual WEAVE_ERROR
Genera una firma utilizzando la chiave privata del nodo locale.
|
HandleValidationResult(const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet, WEAVE_ERROR & validRes)=0
|
virtual WEAVE_ERROR
Viene chiamato con il risultato della convalida del certificato.
|
OnPeerCertsLoaded(const BeginSessionContext & msgCtx, WeaveDN & subjectDN, CertificateKeyId & subjectKeyId, ValidationContext & validCtx, WeaveCertificateSet & certSet)
|
virtual WEAVE_ERROR
Viene chiamato dopo il caricamento dei certificati del peer.
|
Funzioni pubbliche
BeginValidation
virtual WEAVE_ERROR BeginValidation( const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet )=0
Viene chiamato all'inizio della convalida del certificato.
Le implementazioni devono inizializzare l'oggetto WeaveCertificateSet fornito con risorse sufficienti per gestire l'imminente convalida dei certificati. Al momento le implementazioni possono caricare certificati attendibili di CA o radice nell'insieme di certificati oppure attendere l'esecuzione di OnPeerCertsLoaded().
A ogni certificato caricato nell'insieme di certificati verrà assegnato un tipo di certificato predefinito dalla funzione di caricamento. Le implementazioni devono modificare questi tipi in base alle necessità per garantire il trattamento corretto del certificato durante la convalida e l'assegnazione corretta di WeaveAuthMode per le interazioni CASE.
Il contesto di convalida fornito verrà inizializzato con un insieme di criteri di convalida predefiniti, che l'implementazione può modificare in base alle esigenze. L'implementazione deve impostare il campo EffectiveTime o gli indicatori di convalida appropriati per eliminare la convalida della durata del certificato.
Se si desiderano risultati di convalida dettagliati, l'implementazione potrebbe inizializzare i campi CertValidationResults e CertValidationLen.
Le implementazioni sono necessarie per mantenere le risorse allocate durante la funzione BeginValidation() fino a quando non viene chiamata la EndValidation() corrispondente. Per le implementazioni è garantito che EndValidation() venga chiamato esattamente una volta per ogni chiamata andata a buon fine a BeginValidation().
EncodeNodeCertInfo
virtual WEAVE_ERROR EncodeNodeCertInfo( const BeginSessionContext & msgCtx, TLVWriter & writer )=0
Codifica le informazioni del certificato CASE per il nodo locale.
Le implementazioni possono utilizzare questa chiamata per eseguire l'override della codifica predefinita della struttura CertificateInformation di CASE per il nodo locale. Quando viene chiamata, l'implementazione deve scrivere una struttura CertificateInformation contenente, come minimo, il certificato dell'entità del nodo locale. L'implementazione può includere facoltativamente un insieme di certificati correlati e/o trust anchor.
EncodeNodePayload
virtual WEAVE_ERROR EncodeNodePayload( const BeginSessionContext & msgCtx, uint8_t *payloadBuf, uint16_t payloadBufSize, uint16_t & payloadLen )
Codifica un payload specifico dell'applicazione da includere nel messaggio CASE al peer.
L'implementazione di questo metodo è facoltativa. L'implementazione predefinita restituisce un payload di lunghezza zero.
EndValidation
virtual void EndValidation( const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet )=0
Viene chiamato al termine della convalida del certificato.
Le implementazioni possono utilizzare questa chiamata per eseguire la pulizia al termine della convalida della certificazione. Per le implementazioni è garantito che EndValidation() verrà chiamato esattamente una volta per ogni chiamata a BeginValidation().
GenerateNodeSignature
virtual WEAVE_ERROR GenerateNodeSignature( const BeginSessionContext & msgCtx, const uint8_t *msgHash, uint8_t msgHashLen, TLVWriter & writer, uint64_t tag )=0
Genera una firma utilizzando la chiave privata del nodo locale.
Quando vengono richiamate, le implementazioni devono calcolare una firma sul valore hash specificato utilizzando la chiave privata del nodo. La firma generata deve quindi essere scritta sotto forma di struttura ECDSASignature CASE nella scrittura TLV fornita utilizzando il tag specificato.
Se la chiave privata del nodo si trova in un buffer locale, la funzione di utilità GenerateAndEncodeWeaveECDSASignature() può essere utile per implementare questo metodo.
HandleValidationResult
virtual WEAVE_ERROR HandleValidationResult( const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet, WEAVE_ERROR & validRes )=0
Viene chiamato con il risultato della convalida del certificato.
Le implementazioni possono utilizzare questa chiamata per ispezionare e, eventualmente, modificare il risultato della convalida del certificato del peer. Se la convalida è andata a buon fine, validRes viene impostato su WEAVE_NO_ERROR. In questo caso, il contesto di convalida conterrà i dettagli relativi al risultato. In particolare, il campo TrustAnchor verrà impostato sul certificato per trust anchor.
Se l'implementazione ha inizializzato i campi CertValidationResults e CertValidationLen all'interno della struttura ValidationContext durante la chiamata di BeginValidation(), questi campi conterranno i risultati di convalida dettagliati per ogni certificato nell'insieme di certificati.
Le implementazioni possono ignorare questo valore impostando validRes su un valore di errore, causando così il fallimento della convalida.
Se la convalida non è andata a buon fine, validRes rifletterà il motivo dell'errore. Le implementazioni possono sostituire il risultato con un valore di errore diverso, ma NON DEVONO impostare il risultato su WEAVE_NO_ERROR.
OnPeerCertsLoaded
virtual WEAVE_ERROR OnPeerCertsLoaded( const BeginSessionContext & msgCtx, WeaveDN & subjectDN, CertificateKeyId & subjectKeyId, ValidationContext & validCtx, WeaveCertificateSet & certSet )
Viene chiamato dopo il caricamento dei certificati del peer.
Le implementazioni possono utilizzare questa chiamata per finalizzare i certificati di input e i criteri di convalida che verranno utilizzati per eseguire la convalida del certificato del peer. Al momento della chiamata, i certificati forniti dal peer saranno stati caricati nell'insieme di certificati (incluso il proprio certificato, se presente). Inoltre, gli argomenti subjectDN e subjectKeyId saranno stati inizializzati con valori che verranno utilizzati per risolvere il certificato del peer dall'insieme di certificati. Se il peer ha fornito il proprio certificato (anziché un riferimento a un certificato), il campo EntityCert all'interno dell'argomento validCtx conterrà un puntatore a quel certificato.
Durante questa chiamata, le implementazioni possono modificare i contenuti del set di certificati, inclusa l'aggiunta di nuovi certificati. Possono anche modificare gli argomenti subjectDN, subjectKeyId o validCtx in base alle tue esigenze. Soprattutto, le implementazioni devono modificare i campi del tipo di certificato con il certificato impostato prima del ritorno per garantire il trattamento corretto dei certificati durante la convalida e i successivi controlli di controllo dell'accesso.
NOTA: se il peer fornisce un riferimento a un certificato per se stesso anziché un certificato completo, il campo EntityCert nel contesto di convalida conterrà un valore NULL. Se un'implementazione vuole supportare i riferimenti ai certificati, deve aggiungere un certificato corrispondente al DN dell'entità e all'ID chiave del peer all'insieme di certificati prima di restituire.
L'implementazione di questo metodo è facoltativa. L'implementazione predefinita non fa nulla.