Kayıt Hatalarında Ayıklama

Tink bazen aşağıdaki gibi hata mesajları üretir:

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

Bu sayfa, bu tür sorunların giderilmesine yardımcı olur.

1. durum: Hata "Sarmalayıcı bulunamadı" veya benzer bir ifadeyle başlıyor.

Configuration içinde olmayan (veya kaydedilmemiş) bir temel türü almak için GetPrimitive() yöntemini çağırıyorsunuz.

Configuration nesnesi alan dillerde (ör. Java ve C++) temel öğeyi destekleyen bir Configuration ilettiğinizden emin olun. Java'da, tüm Tink temel öğelerini (KeysetDeriver, JwtMac, JwtPublicKeySign ve JwtPublicKeyVerify dahil) destekleyen TinkConfig2026.get() veya AeadConfig2026.get(), KeyDerivationConfig2026.get() ya da JwtConfig2026.get() gibi temel öğeye özgü bir yapılandırma iletmenizi öneririz.

Genel kaydı kullanan dillerde veya eski API'lerde (ya da Java'da RegistryConfiguration.get() değerini iletirseniz) bu sorun genellikle ikili programın daha önceki bir yerinde TinkConfig.register() çağrılarak düzeltilir. Bir kez kaydolmak yeterlidir ve bu işlem başlangıçta yapılabilir. Bazı temel öğeler için daha özel kayıt gerekir:

  • KeysetDeriver, KeyDerivationConfig.register() gerektirir
  • JwtMac, JwtMacConfig.register() gerektirir
  • JwtPublicKeySign ve JwtPublicKeyVerify için JwtSignatureConfig.register() gerekir.

2. durum: Hatada bir anahtar türü ve temel öğe listeleniyor.

Örneğin, hata mesajında belirli bir P ve T değeri için Unable to get primitive interface P for key of type T yazabilir.

Bu durumda Tink, sahip olduğunuz anahtar grubu için istediğiniz temel öğeyi oluşturamaz. Bu durum genellikle yanlış türde bir anahtar grubunuz olduğu için ortaya çıkar. Örneğin, Mac istiyor olabilirsiniz ancak anahtar grubu Aead için olabilir.

Sık karşılaşılan durumlardan biri, özel anahtarlar içeren bir anahtar grubundan ortak anahtar temel öğesi almaya çalışmaktır. Sorunun bu olup olmadığını görmek için GetPublicKeysetHandle() sonucunda GetPrimitive() yöntemini çağırabilirsiniz.

Bu işe yaramazsa anahtar türlerinin güncel listesini burada, farklı dillerde testlerimizde bulabilirsiniz. P temel öğesinin T anahtar türüyle birlikte listelenip listelenmediğini kontrol etmeniz gerekir.

Temel öğe, ilgili anahtar türüyle listeleniyorsa dilinizin Tink uygulamasında T anahtar türü desteklenmiyor olabilir. Tink'in anahtar türünüzü dilinizde destekleyip desteklemediğini görmek için anahtar türleri listesini kontrol edin.