7. Creating and Validating CWTs (Creazione e convalida)
7. Creating and Validating CWTs (Creazione e convalida dei CWT)
7.1. Creating a CWT (Creazione di un CWT)
Per creare un CWT si eseguono i passi seguenti. L'ordine dei passi non è significativo nei casi in cui non vi sono dipendenze tra gli ingressi e le uscite dei passi.
-
Creare un CWT Claims Set contenente i claim desiderati.
-
Sia il Message la rappresentazione binaria del CWT Claims Set.
-
Creare un COSE Header contenente l'insieme desiderato di Header Parameters. Il COSE Header DEVE essere valido secondo la specifica [RFC8152].
-
A seconda che il CWT sia firmato, sottoposto a MAC o crittografato, vi sono tre casi:
-
Se il CWT è firmato, creare un oggetto COSE_Sign/COSE_Sign1 usando il Message come COSE_Sign/COSE_Sign1 Payload; tutti i passi specificati in [RFC8152] per creare un oggetto COSE_Sign/COSE_Sign1 DEVONO essere seguiti.
-
Altrimenti, se il CWT è sottoposto a MAC, creare un oggetto COSE_Mac/COSE_Mac0 usando il Message come COSE_Mac/COSE_Mac0 Payload; tutti i passi specificati in [RFC8152] per creare un oggetto COSE_Mac/COSE_Mac0 DEVONO essere seguiti.
-
Altrimenti, se il CWT è un oggetto COSE_Encrypt/COSE_Encrypt0, creare un COSE_Encrypt/COSE_Encrypt0 usando il Message come plaintext per l'oggetto COSE_Encrypt/COSE_Encrypt0; tutti i passi specificati in [RFC8152] per creare un oggetto COSE_Encrypt/COSE_Encrypt0 DEVONO essere seguiti.
-
-
Se sarà eseguita un'operazione di firma, MAC o crittografia annidata, sia il Message il COSE_Sign/COSE_Sign1, COSE_Mac/COSE_Mac0 o COSE_Encrypt/COSE_Encrypt0 taggato, e tornare al Passo 3.
-
Se richiesto dall'applicazione, anteporre all'oggetto COSE il tag CBOR COSE appropriato per indicare il tipo dell'oggetto COSE. Se richiesto dall'applicazione, anteporre all'oggetto COSE il tag CBOR CWT per indicare che l'oggetto COSE è un CWT.
7.2. Validating a CWT (Convalida di un CWT)
Durante la convalida di un CWT si eseguono i passi seguenti. L'ordine dei passi non è significativo nei casi in cui non vi sono dipendenze tra gli ingressi e le uscite dei passi. Se uno qualsiasi dei passi elencati fallisce, il CWT DEVE essere rifiutato, cioè trattato dall'applicazione come ingresso non valido.
-
Verificare che il CWT sia un oggetto CBOR valido.
-
Se l'oggetto inizia con il tag CBOR CWT, rimuoverlo e verificare che uno dei tag CBOR COSE lo segua.
-
Se l'oggetto è taggato con uno dei tag CBOR COSE, rimuoverlo e usarlo per determinare il tipo del CWT, COSE_Sign/COSE_Sign1, COSE_Mac/COSE_Mac0 o COSE_Encrypt/COSE_Encrypt0. Se l'oggetto non ha un tag CBOR COSE, il tipo di messaggio COSE è determinato dal contesto applicativo.
-
Verificare che il COSE Header risultante includa solo parametri e valori la cui sintassi e semantica sono entrambe comprese e supportate oppure che sono specificati come da ignorare quando non compresi.
-
A seconda che il CWT sia firmato, sottoposto a MAC o crittografato, vi sono tre casi:
-
Se il CWT è un COSE_Sign/COSE_Sign1, seguire i passi specificati nella Sezione 4 di [RFC8152] ("Signing Objects") per convalidare un oggetto COSE_Sign/COSE_Sign1. Sia il Message il payload COSE_Sign/COSE_Sign1.
-
Altrimenti, se il CWT è un COSE_Mac/COSE_Mac0, seguire i passi specificati nella Sezione 6 di [RFC8152] ("MAC Objects") per convalidare un oggetto COSE_Mac/COSE_Mac0. Sia il Message il payload COSE_Mac/COSE_Mac0.
-
Altrimenti, se il CWT è un oggetto COSE_Encrypt/COSE_Encrypt0, seguire i passi specificati nella Sezione 5 di [RFC8152] ("Encryption Objects") per convalidare un oggetto COSE_Encrypt/COSE_Encrypt0. Sia il Message il plaintext risultante.
-
-
Se il Message inizia con un tag CBOR COSE, allora il Message è un CWT che è stato oggetto di operazioni annidate di firma, MAC o crittografia. In questo caso, tornare al Passo 1, usando il Message come CWT.
-
Verificare che il Message sia una mappa CBOR valida; sia il CWT Claims Set questa mappa CBOR.