Registro

Partendo dalle nozioni di base, ecco una definizione informale di Registry:

Tuttavia:

Detto ciò, potrebbe essere utile comprendere questo corso per lavorare con Tink in modo efficiente per il momento.

Cosa succede quando chiami getPrimitive() sull'handle di un set di tasti? Inoltra la chiamata al Registry1, che contiene oggetti con metodi concreti per creare chiavi e primitivi, come una chiave AesGcm o un'istanza ChunkedMac. L'attività del Registro è inoltrare la chiamata all'oggetto corretto. Questo funziona solo se l'oggetto è registrato, motivo per cui è importante registrare sempre le primitive che utilizzerai.

Ma cosa succede se utilizzo una libreria che ha già registrato le primitive di cui ho bisogno?

È proprio questo il problema. Questo è uno dei motivi per cui il Registry viene rimosso. Perché in questo caso il codice funziona solo fino a quando gli autori della libreria non decidono di non registrare più quella primitiva. A questo punto si verifica un errore nel codice e il motivo non è chiaro e poco chiaro. Quindi registra sempre ciò che utilizzi. Ad esempio, se intendi utilizzare un MAC nel codice Java, devi eseguire le seguenti operazioni nella fase di configurazione:

MacConfig.register()

Questo codice assicura che tutti gli oggetti necessari siano registrati nelle posizioni necessarie per poter utilizzare la primitiva MAC.

C'è un altro aspetto di questo problema. Alcune delle tue dipendenze potrebbero registrare cose che non ti servono e da cui preferiresti non dipendere. Questo è un altro motivo per rimuovere il registro globale.


  1. all'istanza singleton globale del registro della classe, per essere precisi. Utilizziamo il nome "Registry" sia per la classe che per il singleton in modo intercambiabile.