등록 오류 디버그

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' 또는 이와 유사한 문구로 시작합니다.

Configuration에 없거나 등록되지 않은 기본 유형을 가져오기 위해 GetPrimitive()를 호출하고 있습니다.

Configuration 객체를 사용하는 언어 (예: Java 및 C++)에서는 기본 요소를 지원하는 Configuration를 전달해야 합니다. Java에서는 모든 Tink 기본 요소(KeysetDeriver, JwtMac, JwtPublicKeySign, JwtPublicKeyVerify 포함)를 지원하는 TinkConfig2026.get() 또는 기본 요소별 구성(예: AeadConfig2026.get(), KeyDerivationConfig2026.get(), JwtConfig2026.get())을 전달하는 것이 좋습니다.

전역 등록을 사용하는 언어 또는 기존 API에서 (또는 Java에서 RegistryConfiguration.get()를 전달하는 경우) 이는 일반적으로 바이너리의 앞부분에서 TinkConfig.register()를 호출하여 해결됩니다. 한 번만 등록하면 되며 시작 시 등록할 수 있습니다. 일부 기본 요소에는 더 전문화된 등록이 필요합니다.

  • KeysetDeriver에는 KeyDerivationConfig.register()이(가) 필요합니다.
  • JwtMac에는 JwtMacConfig.register()이(가) 필요합니다.
  • JwtPublicKeySign 및 JwtPublicKeyVerify에는 JwtSignatureConfig.register()이 필요합니다.

케이스 2: 오류에 키 유형과 프리미티브가 나열됩니다.

예를 들어 P와 T의 특정 값에 대해 Unable to get primitive interface P for key of type T 오류가 표시될 수 있습니다.

이 경우 Tink는 보유한 키 세트에 대해 요청한 특정 기본 요소를 만들 수 없습니다. 일반적으로 이는 잘못된 유형의 키 세트가 있기 때문에 발생합니다. 예를 들어 Mac을 요청하지만 키 세트가 Aead용일 수 있습니다.

일반적인 사례 중 하나는 비공개 키가 포함된 키 세트에서 공개 키 프리미티브를 가져오려고 하는 경우입니다. 이것이 문제인지 확인하려면 대신 GetPublicKeysetHandle() 결과에서 GetPrimitive()를 호출해 보세요.

그래도 도움이 되지 않으면 교차 언어 테스트의 여기에서 최신 키 유형 목록을 확인할 수 있습니다. 기본 요소 P가 키 유형 T와 함께 나열되어 있는지 확인해야 합니다.

기본 요소가 해당 키 유형과 함께 나열된 경우 언어의 Tink 구현이 키 유형 T를 지원하지 않을 수 있습니다. 키 유형 목록을 확인하여 Tink가 해당 언어로 키 유형을 지원하는지 확인합니다.