ניפוי באגים ותיקון שגיאות רישום

לפעמים 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: השגיאה מתחילה ב-"No wrapper found" (לא נמצא wrapper) או משהו דומה.

אתם קוראים ל-GetPrimitive() כדי לקבל סוג פרימיטיבי שלא נמצא ב-Configuration (או שלא נרשם).

בשפות שמשתמשות באובייקט Configuration (כמו Java ו-C++‎), חשוב להעביר Configuration שתומך בפרימיטיב. ב-Java, מומלץ להעביר את TinkConfig2026.get(), שתומך בכל הפרימיטיבים של Tink (כולל KeysetDeriver,‏ JwtMac,‏ JwtPublicKeySign ו-JwtPublicKeyVerify), או הגדרה ספציפית לפרימיטיב כמו AeadConfig2026.get(),‏ KeyDerivationConfig2026.get() או JwtConfig2026.get().

בשפות או בממשקי API מדור קודם שמשתמשים ברישום גלובלי (או אם מעבירים את 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 תומך בסוג המפתח שלכם בשפה שלכם.