Registro

Partendo dalle basi, ecco una definizione informale di registry:

Tuttavia:

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

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

Ma cosa succede se uso una libreria in cui sono già registrate le primitive di cui ho bisogno?

È esattamente questo il problema. Una delle ragioni per cui il registro è stato rimosso. Perché in questo caso il tuo codice funziona solo fino a quando gli autori delle biblioteche non decidono di non registrare più quella primitiva. A questo punto il tuo codice si interrompe non è ovvio e poco chiaro. Quindi registrate sempre ciò che . Ad esempio, se intendi utilizzare MAC nel codice Java, dovresti i seguenti passaggi nella fase di configurazione:

MacConfig.register()

Questo codice garantisce che tutti gli oggetti necessari siano registrati nel posti necessari per usare la primitiva MAC.

C'è un altro lato di questo problema. Alcune dipendenze potrebbero essere registrate che non ti servono e da cui preferiresti non dipendere. Questo è per rimuovere il registro globale.


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