Passa al contenuto principale

9. Distinguishing between JWS and JWE Objects (Distinzione tra oggetti JWS e JWE)

Esistono diversi modi per distinguere se un oggetto è un JWS o un JWE. Tutti questi metodi produrranno lo stesso risultato per tutti i valori di input legali; per input mal formati, possono produrre risultati diversi.

  • Serializzazione compatta - Numero di segmenti: Se l'oggetto utilizza la serializzazione compatta JWS o la serializzazione compatta JWE, il numero di segmenti codificati in base64url separati da caratteri punto ('.') differisce tra i due. I JWS hanno tre segmenti, separati da due caratteri punto ('.'). I JWE hanno cinque segmenti, separati da quattro caratteri punto ('.').

  • Serializzazione JSON - Membri: Se l'oggetto utilizza la serializzazione JSON JWS o la serializzazione JSON JWE, i membri utilizzati saranno diversi. I JWS hanno un membro "payload", mentre i JWE non lo hanno. I JWE hanno un membro "ciphertext", mentre i JWS non lo hanno.

  • Valore del parametro alg: L'intestazione JOSE per un JWS può essere distinta dall'intestazione JOSE per un JWE esaminando il valore del parametro di intestazione "alg" (algorithm, algoritmo). Se il valore rappresenta un algoritmo di firma digitale o MAC, o è il valore "none", è per un JWS; se rappresenta un algoritmo di crittografia delle chiavi (Key Encryption), incapsulamento delle chiavi (Key Wrapping), accordo diretto sulle chiavi (Direct Key Agreement), accordo sulle chiavi con incapsulamento delle chiavi (Key Agreement with Key Wrapping) o crittografia diretta (Direct Encryption), è per un JWE. (L'estrazione del valore "alg" per l'esame è semplice quando si utilizza la serializzazione compatta JWS o la serializzazione compatta JWE e può essere più difficile quando si utilizza la serializzazione JSON JWS o la serializzazione JSON JWE.)

  • Presenza del membro enc: L'intestazione JOSE per un JWS può anche essere distinta dall'intestazione JOSE per un JWE determinando se esiste un membro "enc" (encryption algorithm, algoritmo di crittografia). Se il membro "enc" esiste, è un JWE; altrimenti, è un JWS.