Tink 有時會產生錯誤訊息,例如
No wrapper registered for type
No manager for type T has been registered
Unable to get primitive interface P for key of type T
這個頁面可協助您對這類問題進行偵錯。
案例 1:錯誤星星有「找不到包裝函式」或類似文字。
您將呼叫 GetPrimitive()
來取得尚未註冊的原始類型,通常只要在二進位檔中較早的位置呼叫 TinkConfig.register()
,即可修正此問題。累積足夠的資料後,就可以開始註冊。
部分基元需要更專業的註冊。
- 「
KeysetDeriver
」需要KeyDerivationConfig.register()
- 「
JwtMac
」需要JwtMacConfig.register()
JwtPublicKeySign
和JwtPublicKeyVerify
需要JwtSignatureConfig.register()
案例 2:錯誤會列出金鑰類型和原始版本。
例如,這個錯誤可能會顯示 Unable to get primitive interface P for key
of type T
代表 P 和 T 的某些特定值。
在這種情況下,Tink 無法針對您擁有的金鑰組建立特定原始版本。之所以會發生這個問題,通常是因為您的金鑰組屬於錯誤的類型。舉例來說,您可能要求使用 Mac,但金鑰組是 Aead。
常見的情況是,嘗試從含有私密金鑰的金鑰組取得公開金鑰基元。如要確認這是否為問題所在,請考慮改為對 GetPublicKeysetHandle()
結果呼叫 GetPrimitive()
。
如果這無法解決問題,請參閱跨語言測試這篇文章,查看最新的金鑰類型清單。建議您檢查原始 P 是否與金鑰類型 T 一併列出。
如果原始版本列出了對應的金鑰類型,可能是因為您語言的 Tink 實作不支援金鑰類型 T。請查看金鑰類型清單,瞭解 Tink 是否支援您所用語言的金鑰類型。