nl:: Weave:: Profiles:: Security:: CASE:: WeaveCASEAuthDelegate
Questa è una classe astratta.
#include <src/lib/profiles/security/WeaveCASE.h>
Interfaccia astratta a cui vengono delegati le azioni di autenticazione durante la creazione della sessione CASE.
Riepilogo
Eredità
Sottoclassi note direttamente: 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
Chiamata 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
Chiamata 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 che i certificati del peer sono stati caricati.
|
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 potrebbero caricare certificati radice attendibili o CA nel set di certificati o attendere che venga chiamato OnPeerCertsLoaded().
A ogni certificato caricato nel set di certificati verrà assegnato un tipo di certificato predefinito dalla funzione di caricamento. Le implementazioni dovrebbero modificare questi tipi secondo necessità per garantire il corretto trattamento del certificato durante la convalida e la corretta assegnazione di WeaveAuthMode per le interazioni CASE.
Il contesto di convalida fornito verrà inizializzato con una serie di criteri di convalida predefiniti, che l'implementazione può modificare in base alle necessità. L'implementazione deve impostare il campo EffectiveTime o impostare i flag di convalida appropriati per sopprimere la convalida della durata del certificato.
Se si vogliono ottenere risultati di convalida dettagliati, l'implementazione può 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. Le implementazioni sono garantite che EndValidation() verrà chiamato esattamente una volta per ogni chiamata riuscita 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 sostituire la codifica predefinita della struttura CertificateInformation CASE per il nodo locale. Quando viene richiamata, l'implementazione deve scrivere una struttura CertificateInformation contenente almeno 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 nel peer.
L'implementazione di questo metodo è facoltativa. L'implementazione predefinita restituisce un payload di lunghezza pari a zero.
EndValidation
virtual void EndValidation( const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet )=0
Chiamata al termine della convalida del certificato.
Le implementazioni possono utilizzare questa chiamata per eseguire la pulizia al termine della convalida della certificazione. Le implementazioni sono garantite che EndValidation() verrà chiamato esattamente una volta per ogni chiamata riuscita 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.
Se richiamato, le implementazioni devono calcolare una firma sul valore hash specificato usando 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.
Nei casi in cui la chiave privata del nodo si trovi 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
Chiamata con il risultato della convalida del certificato.
Le implementazioni possono utilizzare questa chiamata per esaminare ed eventualmente modificare il risultato della convalida del certificato del peer. Se la convalida è riuscita, validRes verrà 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 BeginValidation(), questi campi conterranno risultati di convalida dettagliati per ciascun certificato nel set di certificati.
Le implementazioni possono eseguire l'override di questa regola impostando validRes su un valore di errore, causando così la mancata riuscita della convalida.
Se la convalida non è riuscita, validRes rifletterà il motivo dell'errore. Le implementazioni potrebbero 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 che i certificati del peer sono stati caricati.
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 nel set di certificati (incluso il proprio certificato, se presente). Inoltre, gli argomenti subjectDN e subjectKeyId saranno stati inizializzati in valori che verranno utilizzati per risolvere il certificato del peer dal set di certificati. Se il peer ha fornito il proprio certificato (anziché un riferimento al certificato), il campo EntityCert nell'argomento validCtx conterrà un puntatore a quel certificato.
Durante questa chiamata, le implementazioni potrebbero modificare il contenuto del set di certificati, inclusa l'aggiunta di nuovi certificati. Possono anche modificare gli argomenti subjectDN, subjectKeyId o validCtx in base alle tue esigenze. Ma soprattutto, le implementazioni devono regolare i campi del tipo di certificato con il certificato impostato prima di tornare per garantire il corretto trattamento dei certificati durante la convalida e i successivi controlli di controllo dell'accesso.
NOTA: nel caso in cui il peer fornisca un riferimento al certificato per sé 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 che corrisponda al DN soggetto e all'ID chiave del peer al set di certificati prima della restituzione.
L'implementazione di questo metodo è facoltativa. L'implementazione predefinita non ha alcun effetto.