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

To zajęcia abstrakcyjne.

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

Abstrakcyjny interfejs, do którego delegowane są działania uwierzytelniania podczas tworzenia 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ływane 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 zostanie uwzględniony w komunikacie CASE wysyłanym do peera.
EndValidation(const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet)=0
virtual void
Wywoływane na końcu weryfikacji certyfikatu.
GenerateNodeSignature(const BeginSessionContext & msgCtx, const uint8_t *msgHash, uint8_t msgHashLen, TLVWriter & writer, uint64_t tag)=0
virtual WEAVE_ERROR
Wygeneruj podpis przy użyciu klucza prywatnego węzła lokalnego.
HandleValidationResult(const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet, WEAVE_ERROR & validRes)=0
virtual WEAVE_ERROR
Wywoływane z wynikiem weryfikacji certyfikatu.
OnPeerCertsLoaded(const BeginSessionContext & msgCtx, WeaveDN & subjectDN, CertificateKeyId & subjectKeyId, ValidationContext & validCtx, WeaveCertificateSet & certSet)
virtual WEAVE_ERROR
Wywoływana po wczytaniu certyfikatów peera.

Funkcje publiczne

BeginValidation

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

Wywoływane na początku weryfikacji certyfikatu.

Implementacje muszą zainicjować podany obiekt WeaveCertificateSet z wystarczającą ilością zasobów do obsługi nadchodzącej weryfikacji certyfikatu. Obecnie implementacje mogą wczytywać zaufane certyfikaty główne lub certyfikaty CA do zestawu certyfikatów lub poczekać na wywołanie funkcji OnPeerCertsLoaded().

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

Podany kontekst weryfikacji zostanie zainicjowany przy użyciu zestawu domyślnych kryteriów weryfikacji, które implementacja może w razie potrzeby zmienić. Implementacja musi ustawić pole EffectiveTime lub ustawić odpowiednie flagi weryfikacji, aby zablokować weryfikację cyklu życia certyfikatu.

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

Implementacje są wymagane do utrzymania wszystkich zasobów przydzielonych podczas metody BeginValidation() do momentu wywołania odpowiedniej funkcji EndValidation(). Implementacje mają gwarantować, że funkcja EndValidation() będzie wywoływana dokładnie raz dla każdego udanego wywołania 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ępowania domyślnego kodowania struktury CertificateInformation CASE dla węzła lokalnego. Jeśli ta metoda jest wywoływana, implementacja powinna zapisać strukturę CertificateInformation zawierającą 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 zostanie uwzględniony w komunikacie CASE wysyłanym do peera.

Wdrożenie tej metody jest opcjonalne. Domyślna implementacja zwraca ładunek o zerowej długości.

EndValidation

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

Wywoływane na końcu weryfikacji certyfikatu.

Implementacje mogą używać tego wywołania do czyszczenia po zakończeniu weryfikacji certyfikatu. Implementacje mają gwarantować, że funkcja EndValidation() będzie wywoływana dokładnie raz dla każdego udanego wywołania 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 przy użyciu 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 następnie zapisać w formie struktury ECDSASignature CASE w dostarczonym tekście TLV przy użyciu określonego tagu.

Jeśli klucz prywatny węzła jest przechowywany w buforze lokalnym, do wdrożenia 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ływane z wynikiem weryfikacji certyfikatu.

Implementacje mogą wykorzystać to wywołanie, aby sprawdzić i w razie potrzeby zmienić wynik weryfikacji certyfikatu partnera. Jeśli weryfikacja się udała, wartość validRes zostanie ustawiona na WEAVE_NO_ERROR. W takim przypadku kontekst weryfikacji będzie zawierał szczegóły dotyczące 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 podczas wywoływania 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 błędu validRes, co powoduje błąd weryfikacji.

Jeśli weryfikacja się nie udała, przyczyna błędu będzie podana w kolumnie validRes. Implementacje mogą zastąpić wynik inną wartością błędu, ale NIE MOGĄ ustawiać wyniku na 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 peera.

Implementacje mogą używać tego wywołania do finalizacji certyfikatów wejściowych i kryteriów weryfikacji, które będą używane do weryfikacji certyfikatu peera. W momencie wywołania certyfikaty dostarczone przez peera zostaną wczytane do zestawu certyfikatów (razem z własnym certyfikatem, jeśli jest dostępny). Dodatkowo argumentysubjectDN isubjectKeyId zostaną zainicjowane do wartości, które zostaną użyte do rozpoznania certyfikatu peera z zestawu certyfikatów. Jeśli peer dostarczył własny certyfikat (a nie odwołanie do certyfikatu), pole EntityCert w argumencie validCtx będzie zawierać wskaźnik do tego certyfikatu.

Podczas jej wywoływania implementacje mogą modyfikować zawartość zestawu certyfikatów, w tym dodawać nowe certyfikaty. W razie potrzeby mogą też zmienić argumentysubjectDN, subjectKeyId lub validCtx. Przede wszystkim implementacje powinny dostosować pola typu certyfikatu, ustawiając certyfikat przed zwróceniem, aby zapewnić prawidłowe traktowanie certyfikatów podczas weryfikacji i późniejszych kontroli dostępu.

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

Wdrożenie tej metody jest opcjonalne. Domyślna implementacja nie robi nic.