রেজিস্ট্রেশন সংক্রান্ত সমস্যার সমাধান করা

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()-কে সাপোর্ট করে।

যেসব ভাষা বা লিগ্যাসি API গ্লোবাল রেজিস্ট্রেশন ব্যবহার করে (অথবা আপনি যদি জাভাতে 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 আপনার 'কী' টাইপ সাপোর্ট করে কিনা তা দেখতে 'কী' টাইপের তালিকা চেক করুন।