Depurar erros de registro

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 exige KeyDerivationConfig.register()
  • JwtMac exige JwtMacConfig.register()
  • JwtPublicKeySign e JwtPublicKeyVerify exigem JwtSignatureConfig.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.