nl::Weave::Profiles::Security::CASE::WeaveCASEAuthDelegate

To jest klasa abstrakcyjna.

#include <src/lib/profiles/security/WeaveCASE.h>

Abstrakcyjny interfejs, do którego są przekazywane działania uwierzytelniania podczas nawiązywania sesji CASE.

Podsumowanie

Dziedziczenie

Bezpośrednie znane podklasy: nl::Weave::DeviceManager::WeaveDeviceManager

Funkcje publiczne

BeginValidation(const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet)=0
virtual WEAVE_ERROR
Wywoływana na początku weryfikacji certyfikatu.
EncodeNodeCertInfo(const BeginSessionContext & msgCtx, TLVWriter & writer)=0
virtual WEAVE_ERROR
Zakoduj informacje o certyfikacie CASE dla węzła lokalnego.
EncodeNodePayload(const BeginSessionContext & msgCtx, uint8_t *payloadBuf, uint16_t payloadBufSize, uint16_t & payloadLen)
virtual WEAVE_ERROR
Zakoduj ładunek specyficzny dla aplikacji, który ma być dołączony do wiadomości CASE wysyłanej do peera.
EndValidation(const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet)=0
virtual void
Wywoływana po zakończeniu weryfikacji certyfikatu.
GenerateNodeSignature(const BeginSessionContext & msgCtx, const uint8_t *msgHash, uint8_t msgHashLen, TLVWriter & writer, uint64_t tag)=0
virtual WEAVE_ERROR
Wygeneruj podpis za pomocą klucza prywatnego węzła lokalnego.
HandleValidationResult(const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet, WEAVE_ERROR & validRes)=0
virtual WEAVE_ERROR
Wywołano w wyniku weryfikacji certyfikatu.
OnPeerCertsLoaded(const BeginSessionContext & msgCtx, WeaveDN & subjectDN, CertificateKeyId & subjectKeyId, ValidationContext & validCtx, WeaveCertificateSet & certSet)
virtual WEAVE_ERROR
Wywoływana po wczytaniu certyfikatów elementu równorzędnego.

Funkcje publiczne

BeginValidation

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

Wywoływana na początku weryfikacji certyfikatu.

Implementacje muszą zainicjować dostarczony obiekt WeaveCertificateSet z zasobami wystarczającymi do przeprowadzenia nadchodzącej weryfikacji certyfikatu. Obecnie implementacje mogą wczytywać do zestawu certyfikatów zaufane certyfikaty główne i CA. Mogą też zaczekać na wywołanie OnPeerCertsLoaded().

Do każdego certyfikatu załadowanego do zestawu certyfikatów zostanie przypisany domyślny typ certyfikatu przez funkcję wczytywania. Implementacje powinny w razie potrzeby dostosować te typy, aby zapewnić prawidłowe traktowanie certyfikatu podczas weryfikacji i prawidłowe przypisanie WeaveAuthMode dla interakcji CASE.

Dostarczony kontekst weryfikacji jest zainicjowany przez zestaw domyślnych kryteriów weryfikacji, które implementacja może w razie potrzeby zmienić. Implementacja musi albo ustawić pole EffectiveTime, albo ustawić odpowiednie flagi weryfikacji, aby ograniczyć weryfikację cyklu życia certyfikatu.

Jeśli chcesz uzyskać szczegółowe wyniki weryfikacji, implementacja może zainicjować pola CertValidationResults i CertValidationLen.

Implementacje są wymagane do utrzymywania wszystkich zasobów przydzielonych w ramach funkcji BeginValidation() do czasu wywołania odpowiedniej funkcji EndValidation(). Implementacje mają gwarantować, że funkcja EndValidation() zostanie wywołana dokładnie raz przy każdym udanym wywołaniu funkcji BeginValidation().

EncodeNodeCertInfo

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

Zakoduj informacje o certyfikacie CASE dla węzła lokalnego.

Implementacje mogą używać tego wywołania do zastąpienia domyślnego kodowania struktury CertificateInformation CASE dla węzła lokalnego. Po wywołaniu implementacja powinna napisać strukturę CertificateInformation, która zawiera co najmniej certyfikat jednostki węzła lokalnego. Implementacja może opcjonalnie obejmować zestaw powiązanych certyfikatów lub kotwic zaufania.

EncodeNodePayload

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

Zakoduj ładunek specyficzny dla aplikacji, który ma być dołączony do wiadomości CASE wysyłanej do peera.

Implementacja tej metody jest opcjonalna. Domyślna implementacja zwraca ładunek o zerowej długości.

EndValidation

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

Wywoływana po zakończeniu weryfikacji certyfikatu.

Implementacje mogą używać tego wywołania do przeprowadzania czyszczenia po zakończeniu weryfikacji certyfikatu. Implementacje mają gwarantować, że funkcja EndValidation() zostanie wywołana dokładnie raz przy każdym udanym wywołaniu funkcji BeginValidation().

GenerateNodeSignature

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

Wygeneruj podpis za pomocą klucza prywatnego węzła lokalnego.

Po wywołaniu implementacje muszą obliczyć podpis dla danej wartości skrótu za pomocą klucza prywatnego węzła. Wygenerowany podpis należy zapisać w przekazanym dokumencie TLV z wykorzystaniem określonego tagu w formie struktury ECDSASignature CASE.

Jeśli klucz prywatny węzła jest przechowywany w buforze lokalnym, do implementacji tej metody może być przydatna funkcja narzędzia GenerateAndEncodeWeaveECDSASignature().

HandleValidationResult

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

Wywołano w wyniku weryfikacji certyfikatu.

Implementacje mogą używać tego wywołania do sprawdzania i ewentualnego modyfikowania wyniku weryfikacji certyfikatu peera. Jeśli weryfikacja zakończyła się powodzeniem, wartość validRes zostanie ustawiona na WEAVE_NO_ERROR. W takim przypadku kontekst weryfikacji będzie zawierał szczegóły wyniku. W szczególności pole TrustAnchor zostanie ustawione na certyfikat kotwicy zaufania.

Jeśli implementacja zainicjowała pola CertValidationResults i CertValidationLen w strukturze ValidationContext w ramach wywoływanej metody BeginValidation(), pola te będą zawierać szczegółowe wyniki weryfikacji każdego certyfikatu w zestawie certyfikatów.

Implementacje mogą zastąpić to ustawienie przez ustawienie wartości parametru validRes na wartość błędu, przez co weryfikacja kończy się niepowodzeniem.

Jeśli weryfikacja się nie powiodła, wartość validRes wskaże przyczynę błędu. Implementacje mogą zastąpić wynik inną wartością błędu, ale NIE MOGĄ ustawiać wyniku na wartość WEAVE_NO_ERROR.

OnPeerCertsLoaded

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

Wywoływana po wczytaniu certyfikatów elementu równorzędnego.

Implementacje mogą używać tego wywołania do finalizowania certyfikatów wejściowych i kryteriów weryfikacji, które posłużą do weryfikacji certyfikatu peera. W momencie wywołania certyfikaty dostarczone przez peer zostaną wczytane do zestawu certyfikatów (wraz z własnym certyfikatem, jeśli istnieje). Dodatkowo argumenty subjectDN i subjectKeyId zostaną zainicjowane z wartościami, które zostaną użyte do rozpoznania certyfikatu peera ze zbioru certyfikatów. Jeśli peer dostarczył własny certyfikat (a nie odniesienie do certyfikatu), pole EntityCert w argumencie validCtx będzie zawierać wskaźnik do tego certyfikatu.

Podczas wywoływania implementacji mogą zmieniać zawartość zestawu certyfikatów, w tym dodawać nowe certyfikaty. W razie potrzeby mogą też zmienić argumenty subjectDN, subjectKeyId lub validCtx. Co najważniejsze, przed zwróceniem wdrożenia należy dostosować pola typów certyfikatów za pomocą zestawu certyfikatów, aby zapewnić prawidłowe traktowanie certyfikatów podczas weryfikacji i późniejszych kontroli dostępu.

UWAGA: jeśli peer poda odwołanie do certyfikatu dla siebie, a nie pełny certyfikat, pole EntityCert w kontekście weryfikacji będzie zawierać wartość NULL. Jeśli implementacja chce obsługiwać odwołania do certyfikatów, przed zwróceniem certyfikatu musi dodać do zestawu certyfikatu certyfikat pasujący do nazwy wyróżniającej podmiotu i identyfikatora klucza kontaktu równorzędnego.

Implementacja tej metody jest opcjonalna. Domyślna implementacja nic nie robi.