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 la creazione della sessione CASE.

Riepilogo

Eredità

Sottoclassi note dirette: nl::Weave::DeviceManager::WeaveDeviceManager

Funzioni pubbliche

BeginValidation(const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet)=0
virtual WEAVE_ERROR
Chiamata 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 per l'applicazione da includere nel messaggio CASE per il 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
Richiamato con il risultato della convalida del certificato.
OnPeerCertsLoaded(const BeginSessionContext & msgCtx, WeaveDN & subjectDN, CertificateKeyId & subjectKeyId, ValidationContext & validCtx, WeaveCertificateSet & certSet)
virtual WEAVE_ERROR
Richiamato dopo il caricamento dei certificati del peer.

Funzioni pubbliche

BeginValidation

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

Chiamata all'inizio della convalida del certificato.

Le implementazioni devono inizializzare l'oggetto WeaveCertificateSet fornito con risorse sufficienti per gestire l'imminente convalida del certificato. Al momento le implementazioni potrebbero caricare certificati radice o CA attendibili nel set di certificati o attendere la chiamata di 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 potrebbe modificare secondo necessità. L'implementazione deve impostare il campo EffectiveTime o impostare i flag di convalida appropriati per eliminare 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 BeginValidation() fino a quando non viene chiamata la funzione EndValidation() corrispondente. Nelle implementazioni è garantito che EndValidation() venga chiamato esattamente una volta per ogni chiamata a BeginValidation() riuscita.

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 chiamata, l'implementazione deve scrivere una struttura CertificateInformation contenente almeno il certificato di entità del nodo locale. L'implementazione può facoltativamente includere un set di certificati correlati e/o di trust anchor.

EncodeNodePayload

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

Codifica un payload specifico per l'applicazione da includere nel messaggio CASE per il 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

Chiamata al termine della convalida del certificato.

Le implementazioni possono utilizzare questa chiamata per eseguire la pulizia al termine della convalida della certificazione. Nelle implementazioni è garantito che EndValidation() venga chiamato esattamente una volta per ogni chiamata a BeginValidation() riuscita.

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 richiamate, le implementazioni devono calcolare una firma sul valore hash specificato utilizzando la chiave privata del nodo. La firma generata dovrebbe quindi essere scritta sotto forma di struttura di firma CASE ECDSASignature alla scrittura TLV fornita utilizzando il tag specificato.

Nei casi in cui la chiave privata del nodo è mantenuta in un buffer locale, la funzione di utilità GenerateAndEncodeWeaveECDSASignature() può essere utile per l'implementazione di questo metodo.

HandleValidationResult

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

Richiamato con il risultato della convalida del certificato.

Le implementazioni possono utilizzare questa chiamata per esaminare e possibilmente modificare il risultato della convalida del certificato del peer. Se la convalida ha esito positivo, validRes verrà impostato su WEAVE_NO_ERROR. In questo caso, il contesto della convalida conterrà i dettagli relativi al risultato. In particolare, il campo TrustAnchor verrà impostato sul certificato di 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 risultati di convalida dettagliati per ciascun certificato nel set di certificati.

Le implementazioni possono eseguire l'override di questo valore impostando validRes su un valore di errore, causando così la mancata riuscita della convalida.

Se la convalida non è riuscita, validRes indicherà il motivo dell'errore. Le implementazioni possono eseguire l'override del risultato con un valore di errore diverso, ma NON DEVE impostare il risultato su WEAVE_NO_ERROR.

OnPeerCertsLoaded

virtual WEAVE_ERROR OnPeerCertsLoaded(
  const BeginSessionContext & msgCtx,
  WeaveDN & subjectDN,
  CertificateKeyId & subjectKeyId,
  ValidationContext & validCtx,
  WeaveCertificateSet & certSet
)

Richiamato 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 nel set 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 dal set di certificati. Se il peer ha fornito il proprio certificato (anziché un riferimento al certificato), il campo EntityCert all'interno dell'argomento validCtx conterrà un puntatore a tale certificato.

Durante la chiamata, le implementazioni possono modificare i contenuti del set di certificati, inclusa l'aggiunta di nuovi certificati. Inoltre, possono modificare gli argomenti subjectDN, subjectKeyId o validCtx, se necessario. Soprattutto, le implementazioni dovrebbero modificare 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 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, prima di restituire il certificato deve aggiungere al set di certificati un certificato che corrisponda al DN soggetto del peer e all'ID chiave.

L'implementazione di questo metodo è facoltativa. L'implementazione predefinita non esegue alcuna operazione.