Pour chaque claim divulgable sélectivement, l’émetteur construit une divulgation (l’encodage base64url d’un tableau JSON contenant un sel, le nom du claim et sa valeur) et place son condensat (SHA-256, sauf si _sd_alg indique autre chose) dans un tableau _sd de la charge utile signée ; les éléments de tableau utilisent à la place des entrées .... La présentation est issuer-JWT~disclosure~disclosure~…~, suivie d’un JWT de key binding facultatif. Des condensats leurres masquent le nombre de claims existants.
Le JWT de key binding (typ kb+jwt) prouve que la partie qui effectue la présentation détient la clé désignée dans le claim cnf du JWT de l’émetteur ; il contient iat, aud, nonce et sd_hash, un condensat calculé sur le SD-JWT présenté. Les vérificateurs recalculent le condensat de chaque divulgation, contrôlent que chacun figure exactement une fois, vérifient la signature de l’émetteur, puis le key binding.
SD-JWT est une brique de base : SD-JWT VC (un Internet-Draft) y ajoute un type d’attestation (vct), le statut et la découverte des clés de l’émetteur, et constitue l’un des deux formats d’attestation du portefeuille européen d’identité numérique (EU Digital Identity Wallet). Les présentations d’une même attestation peuvent être corrélées par la signature de l’émetteur ; les portefeuilles demandent donc des lots d’attestations à usage unique. L’inspecteur SD-JWT décode les présentations localement.