Tink czasami generuje komunikaty o błędach, takie jak:
No wrapper registered for typeNo manager for type T has been registeredUnable to get primitive interface P for key of type T
Ta strona pomaga rozwiązywać takie problemy.
Przypadek 1. Błąd zaczyna się od „Nie znaleziono kodu opakowującego” lub podobnego komunikatu.
Wywołujesz GetPrimitive(), aby uzyskać typ podstawowy, którego nie ma w Configuration (lub który nie został zarejestrowany).
W językach, które przyjmują obiekt Configuration (takich jak Java i C++), upewnij się, że przekazujesz obiekt Configuration, który obsługuje dany element podstawowy. W języku Java zalecamy przekazywanie TinkConfig2026.get(), który obsługuje wszystkie elementy podstawowe Tink (w tym KeysetDeriver, JwtMac, JwtPublicKeySign i JwtPublicKeyVerify), lub konfiguracji specyficznej dla elementu podstawowego, takiej jak AeadConfig2026.get(), KeyDerivationConfig2026.get() lub JwtConfig2026.get().
W językach lub starszych interfejsach API, które używają rejestracji globalnej (lub jeśli przekazujesz RegistryConfiguration.get() w języku Java), zwykle można to naprawić, wywołując TinkConfig.register() we wcześniejszym miejscu w pliku binarnym.
Wystarczy zarejestrować się raz, co można zrobić podczas uruchamiania. Niektóre elementy podstawowe wymagają bardziej specjalistycznej rejestracji:
KeysetDeriverwymagaKeyDerivationConfig.register()JwtMacwymagaJwtMacConfig.register()JwtPublicKeySigniJwtPublicKeyVerifywymagająJwtSignatureConfig.register()
Przypadek 2. Informacje o błędzie zawierają typ klucza i element podstawowy.
Na przykład błąd może mieć postać Unable to get primitive interface P for key
of type T dla określonej wartości P i T.
W tym przypadku Tink nie może utworzyć określonego elementu podstawowego, o który prosisz, dla posiadanego zestawu kluczy. Zwykle dzieje się tak, gdy masz zestaw kluczy niewłaściwego typu. Możesz na przykład poprosić o klucz Mac, ale zestaw kluczy jest przeznaczony dla Aead.
Często zdarza się, że ktoś próbuje uzyskać prymityw klucza publicznego ze zbioru kluczy zawierającego klucze prywatne. Aby sprawdzić, czy to jest przyczyną problemu, rozważ wywołanie GetPrimitive() na wyniku GetPublicKeysetHandle().
Jeśli to nie pomoże, aktualną listę typów kluczy znajdziesz tutaj, w naszych testach międzyjęzykowych. Sprawdź, czy element podstawowy P jest wymieniony razem z typem klucza T.
Jeśli element podstawowy jest wymieniony z odpowiednim typem klucza, może się zdarzyć, że implementacja Tink w Twoim języku nie obsługuje typu klucza T. Sprawdź na liście typów kluczy, czy Tink obsługuje Twój typ klucza w Twoim języku.