9. Distinguishing between JWS and JWE Objects (Distinction entre objets JWS et JWE)
Il existe plusieurs façons de déterminer si un objet est un JWS ou un JWE. Toutes ces méthodes donneront le même résultat pour toutes les valeurs d'entrée légales ; pour les entrées mal formées, elles peuvent donner des résultats différents.
-
Sérialisation compacte - Nombre de segments : Si l'objet utilise la sérialisation compacte JWS ou la sérialisation compacte JWE, le nombre de segments encodés en base64url séparés par des caractères point ('.') diffère entre les deux. Les JWS ont trois segments, séparés par deux caractères point ('.'). Les JWE ont cinq segments, séparés par quatre caractères point ('.').
-
Sérialisation JSON - Membres : Si l'objet utilise la sérialisation JSON JWS ou la sérialisation JSON JWE, les membres utilisés seront différents. Les JWS ont un membre "payload", tandis que les JWE n'en ont pas. Les JWE ont un membre "ciphertext", tandis que les JWS n'en ont pas.
-
Valeur du paramètre alg : L'en-tête JOSE d'un JWS peut être distingué de l'en-tête JOSE d'un JWE en examinant la valeur du paramètre d'en-tête "alg" (algorithm, algorithme). Si la valeur représente un algorithme de signature numérique ou MAC, ou est la valeur "none", c'est pour un JWS ; si elle représente un algorithme de chiffrement de clé (Key Encryption), d'encapsulation de clé (Key Wrapping), d'accord de clé direct (Direct Key Agreement), d'accord de clé avec encapsulation de clé (Key Agreement with Key Wrapping) ou de chiffrement direct (Direct Encryption), c'est pour un JWE. (L'extraction de la valeur "alg" pour examen est simple lors de l'utilisation de la sérialisation compacte JWS ou de la sérialisation compacte JWE et peut être plus difficile lors de l'utilisation de la sérialisation JSON JWS ou de la sérialisation JSON JWE.)
-
Présence du membre enc : L'en-tête JOSE d'un JWS peut également être distingué de l'en-tête JOSE d'un JWE en déterminant si un membre "enc" (encryption algorithm, algorithme de chiffrement) existe. Si le membre "enc" existe, c'est un JWE ; sinon, c'est un JWS.