Debug degli errori di registrazione

A volte Tink genera messaggi di errore come

  • No wrapper registered for type
  • No manager for type T has been registered
  • Unable to get primitive interface P for key of type T

Questa pagina aiuta a eseguire il debug di questi problemi.

Caso 1: l'errore inizia con "Nessun wrapper trovato" o un messaggio simile.

Stai chiamando GetPrimitive() per ottenere un tipo primitivo che non è presente nel tuo Configuration (o non è stato registrato).

Nei linguaggi che accettano un oggetto Configuration (come Java e C++), assicurati di passare un Configuration che supporti la primitiva. In Java, ti consigliamo di passare TinkConfig2026.get(), che supporta tutte le primitive Tink (tra cui KeysetDeriver, JwtMac, JwtPublicKeySign e JwtPublicKeyVerify), o una configurazione specifica per le primitive, come AeadConfig2026.get(), KeyDerivationConfig2026.get() o JwtConfig2026.get().

Nei linguaggi o nelle API legacy che utilizzano la registrazione globale (o se passi RegistryConfiguration.get() in Java), questo problema viene generalmente risolto chiamando TinkConfig.register() in un punto precedente del file binario. È sufficiente registrarsi una sola volta e l'operazione può essere eseguita all'avvio. Alcune primitive richiedono una registrazione più specializzata:

  • KeysetDeriver richiede KeyDerivationConfig.register()
  • JwtMac richiede JwtMacConfig.register()
  • JwtPublicKeySign e JwtPublicKeyVerify richiedono JwtSignatureConfig.register()

Caso 2: l'errore elenca un tipo di chiave e una primitiva.

Ad esempio, l'errore potrebbe indicare Unable to get primitive interface P for key of type T per un valore specifico di P e T.

In questo caso, Tink non è in grado di creare la primitiva specifica che hai richiesto per il keyset che hai. In genere, questo accade perché hai un set di chiavi per il tipo sbagliato. Ad esempio, potresti richiedere un MAC, ma il set di chiavi è per AEAD.

Un caso comune è quando si tenta di ottenere una primitiva di chiave pubblica da un keyset contenente chiavi private. Per verificare se questo è il problema, prova a chiamare GetPrimitive() sul risultato di GetPublicKeysetHandle().

Se questo non aiuta, puoi trovare un elenco aggiornato dei tipi di chiavi qui, nei nostri test cross-language. Devi verificare se la primitiva P è elencata insieme al tipo di chiave T.

Se la primitiva è elencata con il tipo di chiave corrispondente, è possibile che l'implementazione Tink della tua lingua non supporti il tipo di chiave T. Controlla l'elenco dei tipi di chiavi per verificare se Tink supporta il tuo tipo di chiave nel tuo linguaggio.