Verify SD-JWT-based Verifiable Credentials
This guide shows how to verify an SD-JWT-based digital credential that follows draft-ietf-oauth-sd-jwt-vc-08 with the Vidos Verifier service.
Prerequisites
Section titled “Prerequisites”Before you start, complete the setup guide so your verifier endpoint and API key are ready.
Step 1: Review the credential payload
Section titled “Step 1: Review the credential payload”The credential is a compact SD-JWT string that combines the issuer-signed payload, the selective disclosure sections, and the key-binding JWT.
eyJhbGciOiJFUzI1NiIsInR5cCI6ImRjK3NkLWp3dCIsIng1YyI6WyJNSUlDaXpDQ0FoR2dBd0lCQWdJUU1qVHozbzdtVWxnd3ZEZnlnenM5WHpBS0JnZ3Foa2pPUFFRREF6QXVNUjh3SFFZRFZRUUREQlpQVjBZZ1RYVnNkR2x3WVhvZ1ZFVlRWQ0JKUVVOQk1Rc3dDUVlEVlFRR0RBSlZVekFlRncweU5UQTVNamt3T1RRM05EUmFGdzB5TmpFeU1qZ3dPVFEzTkRSYU1Dd3hIVEFiQmdOVkJBTU1GRTlYUmlCTmRXeDBhWEJoZWlCVVJWTlVJRVJUTVFzd0NRWURWUVFHREFKVlV6QlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJQMzVrbk9qQXV3RG4xVHVKSm1DdFdJRHR6ZXVMSHVoNktTSVI2QTExbGpibGNMd3VJZUJzc3JoeW9oNmdycWU0Wm50MzB2emxBd2x5UVp1c0plVjJNcWpnZ0VSTUlJQkRUQWZCZ05WSFNNRUdEQVdnQlNyWlJ2Z1ZzS1FVL0hkZjJ6a2g3NW8zbURKOVRBT0JnTlZIUThCQWY4RUJBTUNCNEF3RlFZRFZSMGxBUUgvQkFzd0NRWUhLSUdNWFFVQkFqQk1CZ05WSFJJRVJUQkRoa0ZvZEhSd2N6b3ZMMmRwZEdoMVlpNWpiMjB2YjNCbGJuZGhiR3hsZEMxbWIzVnVaR0YwYVc5dUxXeGhZbk12YVdSbGJuUnBkSGt0WTNKbFpHVnVkR2xoYkRCV0JnTlZIUjhFVHpCTk1FdWdTYUJIaGtWb2RIUndjem92TDJkcGRHaDFZaTVqYjIwdmIzQmxibmRoYkd4bGRDMW1iM1Z1WkdGMGFXOXVMV3hoWW5NdmFXUmxiblJwZEhrdFkzSmxaR1Z1ZEdsaGJDOWpjbXd3SFFZRFZSME9CQllFRktxQU9IUjJ4dWtyZUZHWDJreDZhbHNmZGZIZE1Bb0dDQ3FHU000OUJBTURBMmdBTUdVQ01HTjJWazBYNE9xWWZTQ0tPYTVmUnkvRTYyYUloWEhZYlY2RlluQmxzcnFFVE5qRVoxVnR3b3VFSGhzNlE0UVd2QUl4QUpPa3hBNVd4OU0wbWNTR2txSDM1SlhrOW1Ha0daSUxVQnpKQ3BoWDcrV0I3TktUV1NzaVlrZEN0UThzZ0xjN2pnIl19.eyJpc3MiOiJodHRwczovL2V4YW1wbGUtaXNzdWVyLmNvbSIsInZjdCI6InVybjpldWRpOnBpZDoxIiwiaWF0IjoxNzU5MjIyMDY4LCJuYmYiOjE3NTkyMjIwNjgsImV4cCI6MTc5MDc2MTY2OCwiX3NkIjpbIkVKc21jOW5USHpyV2VGdGV1dzFFbFBtM2pyV0ZHOUl6c2RzdmVpeWszVTQiLCI4RDdHbUl3MG94RWVPbmhIdE1UczRZVzlPQ3hZZmxtd05zOFhKSXVkOWJjIiwiWFpmREQ1WGxCa2Z4ZURiWHlud1dNRDVsSHB6S2JHeGpQMGFPSHhZQ21qayIsIlBmSkJRU3lVNnd0XzFCWGR5ZGRtUXdOd1VaUllmcThkX0cxTjBlS081Y1kiLCJ1aDlqTEtfMWM3UUdkQ0phMEFjYm5vU0Z0MHBBVjVQOWlGMWRpX0Y3c20wIiwiSWZ6cWQxem1jOWMzd1h5OVo5UFhRYkEzVmh0eEpfQTNMNEVHZGZHNThRdyIsImdCRE9iaDJtMWZYX0g4NXFGYkl4eFlmVUFIZnFwbkVrVnZyMXVxS200X1EiLCJLRHU1a3VsWFQxQUlucXB6SUFFclludTlGNUl2QkZnOHJoY1c3VzVGWjJ3IiwianhyOS1PVGN5ZHlSV1c3VGtfOEVPNEFBZTMwTjJUR25ZRmFieEZ6cmltcyIsInJtR0lpNGhIRFVRRUExSHI0MjhZQ3lTMzJmanVxSURZZjR6dnFROFk2YnciLCJiSFBkV2J4cG5rNGREWHR4R3d2dmIyMUw2TjNHd2VhcmxXUkpJQk5uRzhNIiwiTmY1a2pVYlN3M3hpbTZaRUJzUzhkT2wwMEo1WWZlWWlPS3UwRy1WZXAwNCIsIkhJSnB6Q1A0dHAyMm1pSmJodE1zWXRuMHhTVEIwSjlqY2lEQ0JVRHVDMVUiLCJvcl9qQnZMVnh1UzRoc25nb19rZXRuVFYyNFc4RTcwQ2hZSm1VdUI5NDkwIiwiYTcxZVZiYUU4cFpEVWJ6OGhzQnBheUdwS0NicmNNelRHM2Z0Qko3YWxXSSIsIkhBeWdaVjZVdFNmemxRZFJyWU9oV3U2eFd2MEZwMVlBMVctWXRHTktZNkUiLCJPYl9La1dVRnU5UlFJWm1PcGstbWJUMkE5eTMyU0hnbmZ5Vkp4R0NaS3lFIiwibkp6czdGeVhETktWLWpxRUYwaFE3NTFfODdBSVFBNGUzb2dIS2RHZ3VaNCIsIlRhc3BFMmd3OWY5NUt6WWFJN2JHZGdRNkVmeTBBbjlwUkJiX0tvYXk1LWMiLCJhT0tlS29vaEg0YXhMOTFrNm5uV3FHWFNVUklRYklsUHRsaEtSQWlHRDlNIiwiODd0eE9XUzg2bkRGOFQ5ZmRpQzRWQ09oNVJFWUdOZlEyeXJTOWctWWU0ayIsIlZleTVyc0FSYnB1bHNGTjJpalNiV2MtcVdmcWU5VnlmelpMTU9JUklNdEkiXSwiX3NkX2FsZyI6InNoYS0yNTYiLCJjbmYiOnsiandrIjp7ImNydiI6IlAtMjU2Iiwia3R5IjoiRUMiLCJ4Ijoib1FOd2NxQ1phZ25BUmI2SDFNZk1jbWJ6WDdrbFMybnJRTWpjd1pFVHdlayIsInkiOiJQTFMtYS1sWDlQMVJ5QmFxWl8ycG8yRnF6enlPUUItcUh2dDYyZWlUSnNnIn19fQ.RIoIVbzfb_2u8BFaRqHHrfKDnj1G9nTO77WjKTtZ2B08XiqXBrwaF9b5un7HN9GhdHe4avWuZjgO3zWU0dyB8g~WyI5NEF1UEwyUHFUMU95RGlMNUN0V0tnIiwiZmFtaWx5X25hbWUiLCJNdXN0ZXJtYW5uIl0~WyJ0ZW16XzRweXF5TFFGN21POERreWNBIiwiZ2l2ZW5fbmFtZSIsIkVyaWthIl0~WyJqX0NBaVBTVVBiWXIzU0xrb2hmU0VRIiwiYmlydGhkYXRlIiwiMTk3MS0wOS0wMSJd~WyI2bFZNRVJtVFFRX3kybVBwZGRWaWJnIiwiY291bnRyeSIsIlpaIl0~WyJZVWo2OVJleDZ1NldLVkZHM3REZlFRIiwicmVnaW9uIiwiU2FtcGxlIFN0YXRlIl0~WyJ6RzFRazVkZDhVSlVQSklET2Qwekh3IiwibG9jYWxpdHkiLCJTYW1wbGUgQ2l0eSJd~WyJUMi1yVE5xOW5FYkRVamZNY09YZDNBIiwicGxhY2Vfb2ZfYmlydGgiLHsiX3NkIjpbIlRuakhXcHRMWW1fMllra085WDZQekhnWjU0bnhuRWFrNW11aUVuUndOSFkiLCJGT0dUX1lVc1B1Q2xUYlk0UzVCRVN5LXVlM3lmM1c3SFU0bjFnVWp1Z1EwIiwiaGtUOFhkZ1B3MHphUGoxRFRhX3JYMzN2M0hvOE5tSm9TbDg4RndaM2kyayJdfV0~WyJENTR1bDR3ZnhuTzlMNlhEeTF4XzBRIiwiWloiXQ~WyJUdWxIeldaUFkzVTE1NS1jdGRaTnp3IiwiWFoiXQ~WyJzUFpPZGQ5OE9IQ2RBNnZrRkhyb3RnIiwibmF0aW9uYWxpdGllcyIsW3siLi4uIjoiVldwQW00dklmQTVlSjBnVGEzM3pHNmZYWmxITjNScVBWaG0yWHBaZGZiQSJ9LHsiLi4uIjoiS3V1SVFPM3dPM19oYm5hODRId3RTWWZ2VWcwRUdwNThkS1BvempnbHRMQSJ9XV0~WyIxTUJkTEpSSDFHXzh0VjhLbXF3dkFBIiwiZGF0ZV9vZl9leHBpcnkiLCIyMDI4LTA5LTAxIl0~WyI3YVpNNUZxMjhsR21lNGpUM2Q1T2lnIiwiaXNzdWluZ19hdXRob3JpdHkiLCJVdG9waWEgQ2VudHJhbCBSZWdpc3RyeSJd~WyJMNWU1NE9GdFVVb3ZYMHR3azlza2tnIiwiaXNzdWluZ19jb3VudHJ5IiwiVVMiXQ~eyJhbGciOiJFUzI1NiIsInR5cCI6ImtiK2p3dCJ9.eyJub25jZSI6Im4tNjU5OTIxNDYtMTVhOS00Y2NlLWI1YzMtYTJhYzQyZjAwMjRkIiwiYXVkIjoieDUwOV9zYW5fZG5zOmJhcmVseS1jZXJ0YWluLW1hbW1vdGgubmdyb2stZnJlZS5hcHAiLCJpYXQiOjE3NTkyMzU2ODYsInNkX2hhc2giOiJuLWtMQzJXWm1Pa3NMdnBHQkFpQ2JzNU9XdXFrWmFfZHpXV0tBcTYyaTkwIn0.kqOiOnCFRIKSANOc10P6j-00XNRADVgH2x65YYnvH-YtHL3ZCVa-SG9UAf2WMoteNB6Qm6auKPaIMhDMB6OtiQStep 2: Configure holder binding options
Section titled “Step 2: Configure holder binding options”The Verifier policy checks that the presentation matches your challenge response. Provide the expected audience and nonce alongside the credential.
{ "at": "2026-02-22T00:00:00.000Z", "policyParams": { "proof": { "holderBinding": { "type": "ietf-oauth-sd-jwt-vc", "aud": "x509_san_dns:barely-certain-mammoth.ngrok-free.app", "nonce": "n-65992146-15a9-4cce-b5c3-a2ac42f0024d" } } }}Step 3: Call the Verifier API
Section titled “Step 3: Call the Verifier API”Send the credential and options.
curl \ --request POST -i "$VIDOS_VERIFIER_ENDPOINT/vidos/verifier/v1/verify" \ --header "Content-Type: application/json" \ --header "Authorization: Bearer $VIDOS_API_KEY" \ --data '{ "credential": "eyJhbGciOiJFUzI1NiIsInR5cCI6ImRjK3NkLWp3dCIsIng1YyI6WyJNSUlDaXpDQ0FoR2dBd0lCQWdJUU1qVHozbzdtVWxnd3ZEZnlnenM5WHpBS0JnZ3Foa2pPUFFRREF6QXVNUjh3SFFZRFZRUUREQlpQVjBZZ1RYVnNkR2x3WVhvZ1ZFVlRWQ0JKUVVOQk1Rc3dDUVlEVlFRR0RBSlZVekFlRncweU5UQTVNamt3T1RRM05EUmFGdzB5TmpFeU1qZ3dPVFEzTkRSYU1Dd3hIVEFiQmdOVkJBTU1GRTlYUmlCTmRXeDBhWEJoZWlCVVJWTlVJRVJUTVFzd0NRWURWUVFHREFKVlV6QlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJQMzVrbk9qQXV3RG4xVHVKSm1DdFdJRHR6ZXVMSHVoNktTSVI2QTExbGpibGNMd3VJZUJzc3JoeW9oNmdycWU0Wm50MzB2emxBd2x5UVp1c0plVjJNcWpnZ0VSTUlJQkRUQWZCZ05WSFNNRUdEQVdnQlNyWlJ2Z1ZzS1FVL0hkZjJ6a2g3NW8zbURKOVRBT0JnTlZIUThCQWY4RUJBTUNCNEF3RlFZRFZSMGxBUUgvQkFzd0NRWUhLSUdNWFFVQkFqQk1CZ05WSFJJRVJUQkRoa0ZvZEhSd2N6b3ZMMmRwZEdoMVlpNWpiMjB2YjNCbGJuZGhiR3hsZEMxbWIzVnVaR0YwYVc5dUxXeGhZbk12YVdSbGJuUnBkSGt0WTNKbFpHVnVkR2xoYkRCV0JnTlZIUjhFVHpCTk1FdWdTYUJIaGtWb2RIUndjem92TDJkcGRHaDFZaTVqYjIwdmIzQmxibmRoYkd4bGRDMW1iM1Z1WkdGMGFXOXVMV3hoWW5NdmFXUmxiblJwZEhrdFkzSmxaR1Z1ZEdsaGJDOWpjbXd3SFFZRFZSME9CQllFRktxQU9IUjJ4dWtyZUZHWDJreDZhbHNmZGZIZE1Bb0dDQ3FHU000OUJBTURBMmdBTUdVQ01HTjJWazBYNE9xWWZTQ0tPYTVmUnkvRTYyYUloWEhZYlY2RlluQmxzcnFFVE5qRVoxVnR3b3VFSGhzNlE0UVd2QUl4QUpPa3hBNVd4OU0wbWNTR2txSDM1SlhrOW1Ha0daSUxVQnpKQ3BoWDcrV0I3TktUV1NzaVlrZEN0UThzZ0xjN2pnIl19.eyJpc3MiOiJodHRwczovL2V4YW1wbGUtaXNzdWVyLmNvbSIsInZjdCI6InVybjpldWRpOnBpZDoxIiwiaWF0IjoxNzU5MjIyMDY4LCJuYmYiOjE3NTkyMjIwNjgsImV4cCI6MTc5MDc2MTY2OCwiX3NkIjpbIkVKc21jOW5USHpyV2VGdGV1dzFFbFBtM2pyV0ZHOUl6c2RzdmVpeWszVTQiLCI4RDdHbUl3MG94RWVPbmhIdE1UczRZVzlPQ3hZZmxtd05zOFhKSXVkOWJjIiwiWFpmREQ1WGxCa2Z4ZURiWHlud1dNRDVsSHB6S2JHeGpQMGFPSHhZQ21qayIsIlBmSkJRU3lVNnd0XzFCWGR5ZGRtUXdOd1VaUllmcThkX0cxTjBlS081Y1kiLCJ1aDlqTEtfMWM3UUdkQ0phMEFjYm5vU0Z0MHBBVjVQOWlGMWRpX0Y3c20wIiwiSWZ6cWQxem1jOWMzd1h5OVo5UFhRYkEzVmh0eEpfQTNMNEVHZGZHNThRdyIsImdCRE9iaDJtMWZYX0g4NXFGYkl4eFlmVUFIZnFwbkVrVnZyMXVxS200X1EiLCJLRHU1a3VsWFQxQUlucXB6SUFFclludTlGNUl2QkZnOHJoY1c3VzVGWjJ3IiwianhyOS1PVGN5ZHlSV1c3VGtfOEVPNEFBZTMwTjJUR25ZRmFieEZ6cmltcyIsInJtR0lpNGhIRFVRRUExSHI0MjhZQ3lTMzJmanVxSURZZjR6dnFROFk2YnciLCJiSFBkV2J4cG5rNGREWHR4R3d2dmIyMUw2TjNHd2VhcmxXUkpJQk5uRzhNIiwiTmY1a2pVYlN3M3hpbTZaRUJzUzhkT2wwMEo1WWZlWWlPS3UwRy1WZXAwNCIsIkhJSnB6Q1A0dHAyMm1pSmJodE1zWXRuMHhTVEIwSjlqY2lEQ0JVRHVDMVUiLCJvcl9qQnZMVnh1UzRoc25nb19rZXRuVFYyNFc4RTcwQ2hZSm1VdUI5NDkwIiwiYTcxZVZiYUU4cFpEVWJ6OGhzQnBheUdwS0NicmNNelRHM2Z0Qko3YWxXSSIsIkhBeWdaVjZVdFNmemxRZFJyWU9oV3U2eFd2MEZwMVlBMVctWXRHTktZNkUiLCJPYl9La1dVRnU5UlFJWm1PcGstbWJUMkE5eTMyU0hnbmZ5Vkp4R0NaS3lFIiwibkp6czdGeVhETktWLWpxRUYwaFE3NTFfODdBSVFBNGUzb2dIS2RHZ3VaNCIsIlRhc3BFMmd3OWY5NUt6WWFJN2JHZGdRNkVmeTBBbjlwUkJiX0tvYXk1LWMiLCJhT0tlS29vaEg0YXhMOTFrNm5uV3FHWFNVUklRYklsUHRsaEtSQWlHRDlNIiwiODd0eE9XUzg2bkRGOFQ5ZmRpQzRWQ09oNVJFWUdOZlEyeXJTOWctWWU0ayIsIlZleTVyc0FSYnB1bHNGTjJpalNiV2MtcVdmcWU5VnlmelpMTU9JUklNdEkiXSwiX3NkX2FsZyI6InNoYS0yNTYiLCJjbmYiOnsiandrIjp7ImNydiI6IlAtMjU2Iiwia3R5IjoiRUMiLCJ4Ijoib1FOd2NxQ1phZ25BUmI2SDFNZk1jbWJ6WDdrbFMybnJRTWpjd1pFVHdlayIsInkiOiJQTFMtYS1sWDlQMVJ5QmFxWl8ycG8yRnF6enlPUUItcUh2dDYyZWlUSnNnIn19fQ.RIoIVbzfb_2u8BFaRqHHrfKDnj1G9nTO77WjKTtZ2B08XiqXBrwaF9b5un7HN9GhdHe4avWuZjgO3zWU0dyB8g~WyI5NEF1UEwyUHFUMU95RGlMNUN0V0tnIiwiZmFtaWx5X25hbWUiLCJNdXN0ZXJtYW5uIl0~WyJ0ZW16XzRweXF5TFFGN21POERreWNBIiwiZ2l2ZW5fbmFtZSIsIkVyaWthIl0~WyJqX0NBaVBTVVBiWXIzU0xrb2hmU0VRIiwiYmlydGhkYXRlIiwiMTk3MS0wOS0wMSJd~WyI2bFZNRVJtVFFRX3kybVBwZGRWaWJnIiwiY291bnRyeSIsIlpaIl0~WyJZVWo2OVJleDZ1NldLVkZHM3REZlFRIiwicmVnaW9uIiwiU2FtcGxlIFN0YXRlIl0~WyJ6RzFRazVkZDhVSlVQSklET2Qwekh3IiwibG9jYWxpdHkiLCJTYW1wbGUgQ2l0eSJd~WyJUMi1yVE5xOW5FYkRVamZNY09YZDNBIiwicGxhY2Vfb2ZfYmlydGgiLHsiX3NkIjpbIlRuakhXcHRMWW1fMllra085WDZQekhnWjU0bnhuRWFrNW11aUVuUndOSFkiLCJGT0dUX1lVc1B1Q2xUYlk0UzVCRVN5LXVlM3lmM1c3SFU0bjFnVWp1Z1EwIiwiaGtUOFhkZ1B3MHphUGoxRFRhX3JYMzN2M0hvOE5tSm9TbDg4RndaM2kyayJdfV0~WyJENTR1bDR3ZnhuTzlMNlhEeTF4XzBRIiwiWloiXQ~WyJUdWxIeldaUFkzVTE1NS1jdGRaTnp3IiwiWFoiXQ~WyJzUFpPZGQ5OE9IQ2RBNnZrRkhyb3RnIiwibmF0aW9uYWxpdGllcyIsW3siLi4uIjoiVldwQW00dklmQTVlSjBnVGEzM3pHNmZYWmxITjNScVBWaG0yWHBaZGZiQSJ9LHsiLi4uIjoiS3V1SVFPM3dPM19oYm5hODRId3RTWWZ2VWcwRUdwNThkS1BvempnbHRMQSJ9XV0~WyIxTUJkTEpSSDFHXzh0VjhLbXF3dkFBIiwiZGF0ZV9vZl9leHBpcnkiLCIyMDI4LTA5LTAxIl0~WyI3YVpNNUZxMjhsR21lNGpUM2Q1T2lnIiwiaXNzdWluZ19hdXRob3JpdHkiLCJVdG9waWEgQ2VudHJhbCBSZWdpc3RyeSJd~WyJMNWU1NE9GdFVVb3ZYMHR3azlza2tnIiwiaXNzdWluZ19jb3VudHJ5IiwiVVMiXQ~eyJhbGciOiJFUzI1NiIsInR5cCI6ImtiK2p3dCJ9.eyJub25jZSI6Im4tNjU5OTIxNDYtMTVhOS00Y2NlLWI1YzMtYTJhYzQyZjAwMjRkIiwiYXVkIjoieDUwOV9zYW5fZG5zOmJhcmVseS1jZXJ0YWluLW1hbW1vdGgubmdyb2stZnJlZS5hcHAiLCJpYXQiOjE3NTkyMzU2ODYsInNkX2hhc2giOiJuLWtMQzJXWm1Pa3NMdnBHQkFpQ2JzNU9XdXFrWmFfZHpXV0tBcTYyaTkwIn0.kqOiOnCFRIKSANOc10P6j-00XNRADVgH2x65YYnvH-YtHL3ZCVa-SG9UAf2WMoteNB6Qm6auKPaIMhDMB6OtiQ", "options": { "at": "2026-02-22T00:00:00.000Z", "policyParams": { "proof": { "holderBinding": { "type": "ietf-oauth-sd-jwt-vc", "aud": "x509_san_dns:barely-certain-mammoth.ngrok-free.app", "nonce": "n-65992146-15a9-4cce-b5c3-a2ac42f0024d" } } } }}'Step 4: Review the response
Section titled “Step 4: Review the response”A successful verification returns HTTP 200 with individual policy outcomes. You should see format, notBefore, notAfter, and proof entries for draft-ietf-oauth-sd-jwt-vc-08 credentials.
{ "results": [ { "data": { "credentialType": "dc", "format": "ietf.dc-sd-jwt", "version": "draft-ietf-oauth-sd-jwt-vc-08" }, "path": [], "policy": "format", "service": "verifier", "status": "success" }, { "data": { "reference": "2025-03-23T11:28:08.000Z", "status": "success", "target": "2025-02-22T00:00:00.000Z" }, "path": [], "policy": "notAfter", "service": "verifier", "status": "success" }, { "data": { "reference": "2025-02-21T11:28:08.000Z", "status": "success", "target": "2025-02-22T00:00:00.000Z" }, "path": [], "policy": "notBefore", "service": "verifier", "status": "success" }, { "data": { "type": "ietf" }, "path": [], "policy": "proof", "service": "verifier", "status": "success" } ]}Verify success
Section titled “Verify success”You have verified the credential when:
- The HTTP status is 200.
- All policy entries report
status: "success". - The
formatpolicy identifies the credential asietf.dc-sd-jwtwith the expected draft version.
Troubleshooting
Section titled “Troubleshooting”- Holder binding mismatch: Ensure the
nonceandaudyou supply match the values issued to the wallet during the presentation exchange. - Expired credential: Update the
attimestamp if you are verifying historical credentials, or issue a fresh credential if it has expired. - Untrusted issuer keys: Confirm the verifier configuration includes the issuer JWKS or certificate chain required to validate the SD-JWT signature.