O Tink às vezes produz mensagens de erro como
No wrapper registered for type
No manager for type T has been registered
Unable to get primitive interface P for key of type T
Esta página ajuda a depurar esses problemas.
Caso 1: o erro é estrelado com "Nenhum wrapper encontrado" ou algo semelhante.
Você está chamando GetPrimitive()
para receber um tipo primitivo que não foi
registrado, que geralmente é corrigido chamando TinkConfig.register()
em algum lugar anteriormente no binário. Registrar uma vez é suficiente e pode ser feito na
inicialização.
Alguns primitivos precisam de registro mais especializado.
KeysetDeriver
exigeKeyDerivationConfig.register()
JwtMac
exigeJwtMacConfig.register()
JwtPublicKeySign
eJwtPublicKeyVerify
exigemJwtSignatureConfig.register()
Caso 2: o erro lista um tipo de chave e um primitivo.
Por exemplo, o erro pode mostrar Unable to get primitive interface P for key
of type T
para algum valor específico de P e T.
Nesse caso, o Tink não consegue criar o primitivo específico que você solicitou para o conjunto de chaves que você tem. Normalmente, isso acontece porque você tem um conjunto de chaves para o tipo errado. Por exemplo, talvez você esteja solicitando um Mac, mas o conjunto de chaves é para o Aead.
Um caso comum é a tentativa de conseguir um primitivo de chave pública em um conjunto que contém chaves privadas. Para ver se esse é o problema, chame
GetPrimitive()
no resultado de GetPublicKeysetHandle()
.
Se isso não ajudar, veja uma lista atualizada dos tipos de chave neste link (em inglês) nos nossos testes entre linguagens. Verifique se o P primitivo está listado junto com o tipo de chave T.
Se o primitivo estiver listado com o tipo de chave correspondente, pode ser que a implementação do Tink na sua linguagem não ofereça suporte ao tipo de chave T. Verifique a lista de tipos de chave para saber se a Tink é compatível com seu tipo de chave no seu idioma.