Tink иногда выдает сообщения об ошибках, такие как
-
No wrapper registered for type
-
No manager for type T has been registered
-
Unable to get primitive interface P for key of type T
Эта страница помогает устранить такие проблемы.
Случай 1. Ошибка отмечена надписью «Обертка не найдена» или чем-то подобным.
Вы вызываете GetPrimitive()
, чтобы получить примитивный тип, который не был зарегистрирован, что обычно исправляется вызовом TinkConfig.register()
где-то ранее в двоичном файле. Достаточно однократной регистрации, и ее можно выполнить при запуске.
Некоторые примитивы нуждаются в более специализированной регистрации.
-
KeysetDeriver
требуетKeyDerivationConfig.register()
-
JwtMac
требуетJwtMacConfig.register()
-
JwtPublicKeySign
иJwtPublicKeyVerify
требуютJwtSignatureConfig.register()
Случай 2: В ошибке указан тип ключа и примитив.
Например, ошибка может гласить Unable to get primitive interface P for key of type T
для некоторого конкретного значения P и T».
В этом случае Tink не сможет создать конкретный примитив, который вы запросили, для имеющегося у вас набора ключей. Обычно это происходит из-за того, что у вас есть набор ключей неправильного типа. Например, вы можете запросить Mac, но набор ключей предназначен для Aead.
Одним из распространенных случаев является попытка получить примитив открытого ключа из набора ключей, содержащего закрытые ключи. Чтобы проверить, не в этом ли проблема, рассмотрите возможность вызова GetPrimitive()
вместо результата GetPublicKeysetHandle()
.
Если это не поможет, актуальный список типов ключей можно найти здесь , в наших кросс-языковых тестах . Вам следует проверить, указан ли примитив P вместе с типом ключа T.
Если примитив указан с соответствующим типом ключа, возможно, реализация Tink на вашем языке не поддерживает тип ключа T. Проверьте список типов ключей , чтобы узнать, поддерживает ли Tink ваш тип ключа на вашем языке.