Registry

Beginnend mit den Grundlagen finden Sie hier eine informelle Definition von Registry:

Aber:

Dennoch kann es hilfreich sein, diese Klasse zu verstehen, um mit Tink vorerst effizient zu arbeiten.

Was passiert, wenn du getPrimitive() über einen Tastensatz aufrufst? Ihr Aufruf wird an die Registry1 weitergeleitet, die Objekte mit konkreten Methoden zum Erstellen von Schlüsseln und Primitiven enthält, z. B. einen AesGcm-Schlüssel oder eine ChunkedMac-Instanz. Die Aufgabe der Registry besteht darin, den Aufruf an das richtige Objekt weiterzuleiten. Dies funktioniert nur, wenn das Objekt registriert ist. Daher ist es wichtig, die zu verwendenden Primitiven immer zu registrieren.

Aber was ist, wenn ich eine Bibliothek verwende, die die benötigten Primitiven bereits registriert hat?

Genau das ist das Problem. Und einer der Gründe, warum die Registry entfernt wird. In diesem Fall funktioniert Ihr Code nur so lange, bis die Autoren der Bibliothek beschließen, diese Primitive nicht mehr zu registrieren. An dieser Stelle bricht Ihr Code ab, und der Grund ist nicht offensichtlich und verwirrend. Registrieren Sie also immer, was Sie verwenden. Wenn Sie beispielsweise MAC in Ihrem Java-Code verwenden möchten, sollten Sie in der Einrichtungsphase so vorgehen:

MacConfig.register()

Dieser Code sorgt dafür, dass alle erforderlichen Objekte an den Orten registriert sind, an denen Sie die MAC-Primitive verwenden können.

Es gibt noch eine weitere Seite dieses Problems. Einige Ihrer Abhängigkeiten können Dinge registrieren, die Sie eigentlich nicht benötigen und von denen Sie nicht abhängig sein möchten. Dies ist ein weiterer Grund für das Entfernen der globalen Registry.


  1. der globalen Singleton-Instanz der Klasse Registry hinzugefügt. Wir verwenden den Namen "Registry" sowohl für die Klasse als auch für den Singleton.