บางครั้ง Tink จะแสดงข้อความแสดงข้อผิดพลาด เช่น
No wrapper registered for typeNo manager for type T has been registeredUnable to get primitive interface P for key of type T
หน้านี้จะช่วยแก้ไขข้อบกพร่องของปัญหาดังกล่าว
กรณีที่ 1: ข้อผิดพลาดขึ้นต้นด้วย "ไม่พบ 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 รองรับประเภทคีย์ของคุณในภาษาที่คุณใช้หรือไม่