रजिस्ट्रेशन से जुड़ी गड़बड़ियां डीबग करना

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

इस पेज पर, ऐसी समस्याओं को डीबग करने का तरीका बताया गया है.

पहला मामला: गड़बड़ी का मैसेज "कोई रैपर नहीं मिला" या इससे मिलते-जुलते शब्दों से शुरू होता है.

आपने GetPrimitive() को कॉल किया है, ताकि आपको ऐसा प्रिमिटिव टाइप मिल सके जो आपके Configuration में नहीं है या रजिस्टर नहीं किया गया है.

Configuration ऑब्जेक्ट (जैसे, Java और C++) का इस्तेमाल करने वाली भाषाओं में, पक्का करें कि आपने ऐसा Configuration पास किया हो जो प्रिमिटिव के साथ काम करता हो. Java में, हमारा सुझाव है कि आप TinkConfig2026.get() पास करें. यह Tink के सभी प्रिमिटिव के साथ काम करता है. इनमें KeysetDeriver, JwtMac, JwtPublicKeySign, और JwtPublicKeyVerify शामिल हैं. इसके अलावा, प्रिमिटिव के हिसाब से कॉन्फ़िगरेशन भी पास किया जा सकता है. जैसे, AeadConfig2026.get(), KeyDerivationConfig2026.get() या JwtConfig2026.get().

ग्लोबल रजिस्ट्रेशन का इस्तेमाल करने वाली भाषाओं या लेगसी एपीआई में (या Java में RegistryConfiguration.get() पास करने पर), आम तौर पर बाइनरी में पहले कहीं TinkConfig.register() को कॉल करके इसे ठीक किया जाता है. एक बार रजिस्टर करना काफ़ी है. यह काम स्टार्टअप के दौरान किया जा सकता है. कुछ प्रिमिटिव को ज़्यादा खास रजिस्ट्रेशन की ज़रूरत होती है:

  • KeysetDeriver के लिए KeyDerivationConfig.register() ज़रूरी है
  • JwtMac के लिए JwtMacConfig.register() ज़रूरी है
  • JwtPublicKeySign और JwtPublicKeyVerify के लिए, JwtSignatureConfig.register() की सदस्यता होनी चाहिए

दूसरा केस: गड़बड़ी की जानकारी में, पासकोड का टाइप और प्रिमिटिव शामिल होता है.

उदाहरण के लिए, P और T की किसी खास वैल्यू के लिए, गड़बड़ी का मैसेज Unable to get primitive interface P for key of type T हो सकता है.

इस मामले में, Tink आपके पास मौजूद कीसेट के लिए, वह प्रिमिटिव नहीं बना सकता जिसके लिए आपने अनुरोध किया है. आम तौर पर, ऐसा इसलिए होता है, क्योंकि आपके पास गलत टाइप का कीसेट है. उदाहरण के लिए, हो सकता है कि आपने Mac के लिए अनुरोध किया हो, लेकिन कीसेट Aead के लिए हो.

एक आम मामला यह है कि कोई व्यक्ति निजी पासकोड वाले कीसेट से सार्वजनिक पासकोड प्रिमिटिव पाने की कोशिश करता है. यह देखने के लिए कि क्या यही समस्या है, GetPublicKeysetHandle() के नतीजे पर GetPrimitive() को कॉल करें.

अगर इससे मदद नहीं मिलती है, तो मुख्य टाइप की अप-टू-डेट सूची यहां, हमारे क्रॉस लैंग्वेज टेस्ट में देखी जा सकती है. आपको यह देखना चाहिए कि प्रिमिटिव P को कुंजी टाइप T के साथ लिस्ट किया गया है या नहीं.

अगर प्रिमिटिव को उससे जुड़े की टाइप के साथ लिस्ट किया गया है, तो हो सकता है कि आपकी भाषा में Tink का इस्तेमाल, की टाइप T के साथ काम न करता हो. कुंजी के टाइप की सूची देखें और पता लगाएं कि Tink आपकी भाषा में आपकी कुंजी के टाइप के साथ काम करता है या नहीं.