تصحيح أخطاء التسجيل

تُنتج 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() للحصول على نوع أساسي غير متوفّر في Configuration (أو لم يتم تسجيله).

In languages that take a Configuration object (such as Java and C++), make sure you pass a Configuration that supports the primitive. في Java، ننصحك بتمرير TinkConfig2026.get()، الذي يتيح استخدام جميع عناصر Tink الأساسية (بما في ذلك KeysetDeriver وJwtMac وJwtPublicKeySign وJwtPublicKeyVerify)، أو إعدادات خاصة بالعناصر الأساسية، مثل AeadConfig2026.get() أو KeyDerivationConfig2026.get() أو JwtConfig2026.get().

في اللغات أو واجهات برمجة التطبيقات القديمة التي تستخدم التسجيل العام (أو إذا تم تمرير RegistryConfiguration.get() في Java)، يتم إصلاح ذلك بشكل عام من خلال استدعاء 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.

من الحالات الشائعة محاولة الحصول على عنصر أولي لمفتاح عام من مجموعة مفاتيح تحتوي على مفاتيح خاصة. لمعرفة ما إذا كانت هذه هي المشكلة، ننصحك باستدعاء GetPrimitive() على نتيجة GetPublicKeysetHandle() بدلاً من ذلك.

إذا لم تنجح هذه الطريقة، يمكنك العثور على قائمة محدَّثة بأنواع المفاتيح هنا، في اختباراتنا المتعددة اللغات. يجب التحقّق مما إذا كان العنصر الأساسي P مدرجًا مع نوع المفتاح T.

إذا كان العنصر الأساسي مدرجًا مع نوع المفتاح المقابل، قد يكون السبب هو أنّ تنفيذ Tink للغتك لا يتيح نوع المفتاح T. اطّلِع على قائمة أنواع المفاتيح لمعرفة ما إذا كانت Tink تتيح نوع المفتاح الذي تستخدمه بلغتك.