Tink sometimes produces error messages such as

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

This page helps to debug such issues.

## Case 1: The error starts with "No wrapper found" or similar.

You are calling `GetPrimitive()` to get a primitive type that is not in your
`Configuration` (or has not been registered).

In languages that take a `Configuration` object (such as Java and C++), make
sure you pass a `Configuration` that supports the primitive. In Java, we
recommend passing `TinkConfig2026.get()`, which supports all Tink primitives
(including `KeysetDeriver`, `JwtMac`, `JwtPublicKeySign`, and
`JwtPublicKeyVerify`), or a primitive-specific configuration such as
`AeadConfig2026.get()`, `KeyDerivationConfig2026.get()`, or
`JwtConfig2026.get()`.

In languages or legacy APIs that use global registration (or if you pass
`RegistryConfiguration.get()` in Java) this is generally fixed by calling
`TinkConfig.register()` somewhere earlier in the binary.
Registering once suffices and can be done at startup. Some primitives need more
specialized registration:

- `KeysetDeriver` requires `KeyDerivationConfig.register()`
- `JwtMac` requires `JwtMacConfig.register()`
- `JwtPublicKeySign` and `JwtPublicKeyVerify` require `JwtSignatureConfig.register()`

## Case 2: The error lists a key type and a primitive.

For example, the error might say `Unable to get primitive interface P for key
of type T` for some specific value of P and T.

In this case, Tink is unable to create the specific primitive you asked it
for the keyset you have. Typically, this happens because you have a keyset
for the wrong type. For example, you might be asking for a Mac, but the keyset
is for Aead.

One common case is that one tries to get a public key primitive from a keyset
containing private keys. To see if this is the problem, consider calling
`GetPrimitive()` on the result of `GetPublicKeysetHandle()` instead.

If this does not help, an up to date list of the key types can be found
[here](https://github.com/tink-crypto/tink-cross-lang-tests/blob/main/cross_language/cross_language/tink_config/_key_types.py),
in our [cross language tests](https://github.com/tink-crypto/tink-cross-lang-tests/blob/main/cross_language/cross_language). You should check if the primitive P is listed
together with the key type T.

If the primitive is listed with the corresponding key type, it may be that
the Tink implementation of your language does not support key type T. Check the
[list of key types](https://developers.google.com/tink/supported-key-types) to see if Tink supports your key
type in your language.