nl:: Weave:: Profiles:: Security:: CASE:: WeaveCASEAuthDelegate
To zajęcia abstrakcyjne.
#include <src/lib/profiles/security/WeaveCASE.h>
Abstrakcyjny interfejs, do którego działania uwierzytelniania są delegowane podczas ustanawiania sesji CASE.
Podsumowanie
Dziedziczenie
Znane podklasy bezpośrednie: 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
Kodowanie informacji o certyfikacie CASE dla węzła lokalnego.
|
EncodeNodePayload(const BeginSessionContext & msgCtx, uint8_t *payloadBuf, uint16_t payloadBufSize, uint16_t & payloadLen)
|
virtual WEAVE_ERROR
Kodowanie ładunku danych konkretnej aplikacji, który ma być zawarty w wiadomości CASE wysyłanej do peera.
|
EndValidation(const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet)=0
|
virtual void
Wywoływany 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 lokalnego węzła.
|
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
Jest wywoływany po załadowaniu 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ć dostarczony obiekt WeaveCertificateSet z wystarczającymi zasobami do obsługi nadchodzącej weryfikacji certyfikatu. W tym momencie implementacje mogą wczytać zaufane certyfikaty główne lub certyfikaty urzędu certyfikacji do zbioru certyfikatów albo czekać na wywołanie metody OnPeerCertsLoaded().
Funkcja wczytywania przypisuje do każdego certyfikatu wczytanego do zbioru certyfikatów domyślny typ certyfikatu. W implementacjach należy odpowiednio dostosować te typy, aby zapewnić prawidłowe traktowanie certyfikatu podczas weryfikacji oraz prawidłowe przypisywanie trybu WeaveAuth do interakcji CASE.
Podany kontekst weryfikacji zostanie zainicjowany za pomocą zestawu domyślnych kryteriów weryfikacji, które implementacja może zmienić w razie potrzeby. Implementacja musi ustawić pole EffectiveTime lub ustawić odpowiednie flagi weryfikacji, aby zablokować weryfikację cyklu życia certyfikatu.
Jeśli potrzebne są szczegółowe wyniki weryfikacji, implementacja może zainicjować pola CertValidationResults i CertValidationLen.
Implementacje muszą utrzymywać wszystkie zasoby przydzielone podczas wywołania funkcji BeginValidation() do momentu wywołania odpowiedniej funkcji EndValidation(). W przypadku każdej udanej implementacji wywołania funkcji BeginValidation() funkcja EndValidation() zostanie wywołana dokładnie raz.
EncodeNodeCertInfo
virtual WEAVE_ERROR EncodeNodeCertInfo( const BeginSessionContext & msgCtx, TLVWriter & writer )=0
Kodowanie informacji o certyfikacie CASE dla węzła lokalnego.
Implementacje mogą używać tego wywołania, aby zastąpić domyślne kodowanie struktury CertificateInformation CASE w węźle lokalnym. Po wywołaniu implementacja powinna zapisać strukturę CertificateInformation zawierającą co najmniej certyfikat encji węzła lokalnego. Implementacja może opcjonalnie zawierać 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 )
Kodowanie ładunku danych konkretnej aplikacji, który ma być zawarty w wiadomości CASE wysyłanej do peera.
Wdrożenie tej metody jest opcjonalne. Domyślna implementacja zwraca ładunek o długości 0.
EndValidation
virtual void EndValidation( const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet )=0
Wywoływany po zakończeniu weryfikacji certyfikatu.
Implementacje mogą używać tego wywołania do wykonywania czynności porządkujących po zakończeniu weryfikacji certyfikatu. Implementacje gwarantują, że funkcja EndValidation() będzie wywoływana dokładnie raz dla każdego udanego wywołania 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 lokalnego węzła.
Gdy zostanie wywołana, implementacja musi obliczyć podpis na podstawie podanej wartości funkcji szyfrującej 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.
W przypadku, gdy klucz prywatny węzła jest przechowywany w lokalnym buforze, do implementacji tej metody może być przydatna funkcja pomocnicza GenerateAndEncodeWeaveECDSASignature().
HandleValidationResult
virtual WEAVE_ERROR HandleValidationResult( const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet, WEAVE_ERROR & validRes )=0
Jest wywoływany z wynikiem walidacji certyfikatu.
Implementacje mogą używać tego wywołania do sprawdzania i ewentualnego zmieniania wyniku weryfikacji certyfikatu peera. Jeśli weryfikacja się powiedzie, wartość validRes zostanie ustawiona na WEAVE_NO_ERROR. W takim przypadku kontekst walidacji będzie zawierać szczegóły dotyczące wyniku. W szczególności pole TrustAnchor zostanie ustawione na certyfikat kotwicy zaufania.
Jeśli podczas wywołania funkcji BeginValidation() implementacja zainicjowała pola CertValidationResults i CertValidationLen w strukturze ValidationContext, będą one zawierać szczegółowe wyniki weryfikacji dla każdego certyfikatu w zestawie certyfikatów.
Implementacje mogą zastąpić to ustawienie, ustawiając wartość validRes na wartość błędu, co spowoduje niepowodzenie 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Ą ustawić wyniku na WEAVE_NO_ERROR.
OnPeerCertsLoaded
virtual WEAVE_ERROR OnPeerCertsLoaded( const BeginSessionContext & msgCtx, WeaveDN & subjectDN, CertificateKeyId & subjectKeyId, ValidationContext & validCtx, WeaveCertificateSet & certSet )
Jest wywoływany po załadowaniu certyfikatów peera.
Implementacje mogą używać tego wywołania do finalizowania certyfikatów wejściowych i kryteriów walidacji, które będą używane do walidowania certyfikatu peera. W momencie połączenia certyfikaty dostarczone przez peera zostaną załadowane do zestawu certyfikatów (w tym jego własny certyfikat, jeśli jest dostępny). Dodatkowo argumenty subjectDN i subjectKeyId zostaną zainicjowane wartościami, które zostaną użyte do zwrócenia certyfikatu peera z zestawu certyfikatów. Jeśli równorzędna baza danych dostarczyła własny certyfikat (a nie odwołanie do certyfikatu), pole EntityCert w argumencie validCtx będzie zawierać wskaźnik do tego certyfikatu.
Podczas tego wywołania implementacje mogą modyfikować zawartość zestawu certyfikatów, w tym dodawać nowe certyfikaty. W razie potrzeby umożliwia też zmianę argumentówsubjectDN, 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 poda odwołanie do certyfikatu dotyczącego siebie, a nie pełny certyfikat, pole EntityCert w kontekście weryfikacji 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.