레지스트리

다음은 기본 사항부터 등록처에 대한 비공식적인 정의입니다.

하지만 아래 예는

하지만 당분간 Tink를 효율적으로 사용하려면 이 클래스를 이해하는 것이 유용할 수 있습니다.

키 세트 핸들에서 getPrimitive()를 호출하면 어떻게 되나요? AesGcm 키 또는 ChunkedMac 인스턴스와 같은 키와 기본 요소를 생성하기 위한 구체적인 메서드가 있는 객체가 포함된 레지스트리1로 호출을 전달합니다. 레지스트리의 작업은 호출을 올바른 객체로 전달하는 것입니다. 이는 객체가 등록된 경우에만 작동하므로 항상 사용할 프리미티브를 항상 등록하는 것이 중요합니다.

하지만 필요한 프리미티브를 이미 등록한 라이브러리를 사용하는 경우에는 어떻게 해야 하나요?

이것이 바로 문제가 되는 것입니다. 그리고 레지스트리가 삭제되는 이유 중 하나입니다. 이 경우 라이브러리 작성자가 더 이상 그 프리미티브를 등록하지 않기로 결정할 때까지만 코드가 작동하기 때문입니다. 이 시점에서 코드가 손상되며 이유는 명확하지 않고 혼란스럽습니다. 따라서 항상 사용하는 항목을 등록하세요. 예를 들어 자바 코드에서 MAC을 사용하려면 설정 단계에서 다음을 실행해야 합니다.

MacConfig.register()

이 코드는 필요한 모든 객체가 MAC 프리미티브를 사용하는 데 필요한 위치에 등록되도록 합니다.

이 문제에는 한 가지 측면이 더 있습니다. 일부 종속 항목은 실제로 필요하지 않고 의존하지 않으려는 항목을 등록할 수 있습니다. 이것이 전역 레지스트리를 제거하는 또 다른 이유입니다.


  1. 클래스 레지스트리의 전역 싱글톤 인스턴스로 전달됩니다. 클래스와 싱글톤에 'Registry'라는 이름을 서로 바꿔서 사용합니다.