แก้ไขข้อผิดพลาดในการลงทะเบียน

บางครั้ง 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: ข้อผิดพลาดติดดาวว่า "ไม่พบ Wrapper" หรือใกล้เคียง

คุณกำลังเรียกใช้ 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

กรณีหนึ่งที่พบบ่อยคือผู้ใช้พยายามรับคีย์สาธารณะพื้นฐานจากชุดคีย์ที่มีคีย์ส่วนตัว หากต้องการดูว่าปัญหาเกิดจากสาเหตุนี้หรือไม่ ให้ลองโทรหา GetPrimitive() ที่ผลลัพธ์ของ GetPublicKeysetHandle() แทน

หากไม่ได้ผล คุณสามารถดูรายการประเภทคีย์ล่าสุดได้ที่นี่ในการทดสอบข้ามภาษา คุณควรตรวจสอบว่ามีการแสดงค่า P แบบพื้นฐาน พร้อมกับคีย์ประเภท T หรือไม่

หากค่าพื้นฐานปรากฏพร้อมประเภทคีย์ที่เกี่ยวข้อง อาจเป็นไปได้ว่าการใช้ Tink ของภาษาของคุณไม่รองรับคีย์ประเภท T ตรวจสอบรายการประเภทคีย์เพื่อดูว่า Tink รองรับประเภทคีย์ในภาษาของคุณหรือไม่