Prerequisites

In the below exercises we will be creating credential offers in different ways. Please read the credential offers chapter first that explains the concept of credential offers.

Please make sure to have read the credential offers introduction first!
These exercises assume you have installed a wallet that is capable of OID4VCI and compatible in specification version with our Issuer software. If in doubt we suggest to use the Sphereon Wallet from the Android/iOS stores
We suggest to use a tool like Postman or curl to perform these exercises and examples. Although we provide an integrated UI in these docs and links to our swagger hub, we are also developers and in our experience new learnings stick better whilst actually doing instead of clicking.

Credential offers and session initiation

In the below exercises you will learn how to issue credentials by value and by reference. You will actually get them in a mobile wallet!

Exercise 1: Credential offer by value, using pre-authorized_code

Please use the create-credential-offer API (docs) or API (swaggerhub) to create a simple so-called credential offer by value using a pre-authorized_code grant.

This means using an offerMode of "VALUE" and a grants object containing an object of urn:ietf:params:oauth:grant-type:pre-authorized_code with a pre-authorized_code value of your choosing. Use a credential_configuration_id with value "PensionSdJwt".

Right now you will have to provide a random pre-authorized_code value of your choosing. Make sure to keep this value at hand because you will need it later. You can re-use this value during the create-offer phase to overwrite any existing session
The OpenAPI documentation provides example values for the pre-authorized_code. Since we allow overwriting of sessions with this value, do not use the default values, as others might be creating new sessions whilst you are performing the exercise!
If you are running a local agent with ngrok, you cannot use the Swaggerhub examples directly. What you need to do is load the OpenAPI definition through the swagger editor like this: https://petstore.swagger.io/?url=https://api.swaggerhub.com/apis/SphereonInt/OID4VCI/0.1.1 Now you should be able to execute against localhost.

The expected outcome should be an HTTP response with something like:

{
  "uri": "openid-credential-offer://?credential_offer=%7B%22credential_issuer%22%3A%22https%3A%2F%2Fagent.findynet.demo.sphereon.com%2Fdid-web%2Foid4vci%22%2C%22credential_configuration_ids%22%3A%5B%22PensionSdJwt%22%5D%2C%22grants%22%3A%7B%22urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Apre-authorized_code%22%3A%7B%22pre-authorized_code%22%3A%22d270fee1-9185-4e60-9901-d291e1338d7a%22%7D%7D%7D"
}

The above is the actual URI value that can be used in a link or QR code (more on that later). A wallet is using that value to start the issuance process with the Issuer. This is what is called an issuer initiated flow, instead of a wallet initiated flow. Reason is that the issuer had to create the offer first. For more info see the credential offers chapter.

Copy the response payload, as we will use it later

Exercise 2: Credential offer by value, using pre-authorized_code and a different base URI

In a so-called same device flow the wallet lives on the same device (phone, desktop) as where the credential-offer is displayed. This would happen in a browser on the device. In that case putting the above credential URI value in a link is enough to trigger the wallet when clicking on it. This is because the deeplink openid-credential-offer:// typically is registered by a wallet that can handle OID4VCI in your mobile phone. On a web-wallet it doesn’t work like that. Hence why the API also supports creating a credential offer using a different base URI (or scheme).

Let’s pretend we have web-wallet at http://localhost/my-wallet. We are not going to use a real web wallet in this exercise! Now create the above credential-offer with the web-wallet base URI using the baseUri parameter

Please use the create-credential-offer API (docs) or API (swaggerhub) to create a simple so-called credential offer by value using a pre-authorized_code grant.

This means using an offerMode of "VALUE" and a grants object containing an object of urn:ietf:params:oauth:grant-type:pre-authorized_code with a pre-authorized_code value used before (we will simply overwrite the session). Use a credential_configuration_id with value "PensionSdJwt" and use a baseUri with your web-wallet address.

Note that the baseUri is a top-level property in the payload!

The expected outcome should be an HTTP response with something like:

{
  "uri": "http://localhost/web-wallet?credential_offer=%7B%22credential_issuer%22%3A%22https%3A%2F%2Fagent.findynet.demo.sphereon.com%2Fdid-web%2Foid4vci%22%2C%22credential_configuration_ids%22%3A%5B%22PensionSdJwt%22%5D%2C%22grants%22%3A%7B%22urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Apre-authorized_code%22%3A%7B%22pre-authorized_code%22%3A%22d270fee1-9185-4e60-9901-d291e1338d7a%22%7D%7D%7D"
}

If you had a real web based wallet that can interpret the above link, you would have to authenticate first (if not already authenticated), afterwards the wallet would guide you through the issuance process.

Some wallets do not support the above links (they should ideally). They typically require you to copy the original credential offer with the openid-credential-offer://?credential-offer= schema into a specific form in the wallet. This relies on an issuer allowing you to copy the URL.

Exercise 3: Create a QR code from the URI and scan it with a mobile wallet

In a lot of situations your wallet is on a mobile device, while you might be visiting the issuer website using another device like a tablet or desktop computer. This is the so called cross-device flow. AAlthough new mechanisms are being developer whereby your mobile wallet can register with your browser, right now a credential offer is being conveyed using a QR code. This is a short exercise to show that all you really need to do is display the credential offer value in a QR code to really start the interaction with the issuer from a mobile device. Meaning that if you are not interested in tracking the progress of the issuance process, you only need the create-credential-offer endpoint.

Take the outcome of Exercise 1 and copy the value of the uri field from the JSON response. So do not copy the whole JSON response. You should only copy the value that starts with openid-credential-offer://..... also minus the quotes in front and at the end.

Go to an online QR code generator like: https://www.qr-code-generator.com/ and past the credential offer value. You should get a QR code back. Below is an example QR code. Obviously yours will differ.

The above example QR will not work as the issuer does not know about that session anymore!

Now take you mobile wallet application and make sure you are logged in. Typically the wallet app will have a QR code scanning functionality. You can use that to initiate the issuance process. Most wallets will also register with the Operating System, meaning you can also scan the QR code using your regular photo/camera app instead. Then depending on your brand the wallet will open, or you will get a choice which wallet app to open. Finish the issuance process on your mobile wallet, to see that all it took was creating a credential-offer and displaying that as a QR code.

Exercise 4: Let the API create a QR code and scan it with a mobile wallet

The issuer has built-in support to generate QR codes and return them in the API. The QR images are returned as so-called data URIs. This means they are base64 encoded. Your browser can actually display these. Simply open a seperate tab and paste the data URI value from the response minus the quotes into your address bar at the top.

Your browser will show the image, without needing an internet connection. It simply decodes the QR code into an image and shows it locally

Please use the create-credential-offer API (docs) or API (swaggerhub) to create a simple so-called credential offer by value using a pre-authorized_code grant and this time with qrCodeOpts.

This means using an offerMode of "VALUE" and a grants object containing an object of urn:ietf:params:oauth:grant-type:pre-authorized_code with a pre-authorized_code value of your choosing. Use a credential_configuration_id with value "PensionSdJwt" and add a "qrCodeOpts" object with value {"size": 400}.

Now you should get a response that looks like below:

{
  "uri": "openid-credential-offer://?credential_offer=%7B%22credential_issuer%22%3A%22https%3A%2F%2Fagent.findynet.demo.sphereon.com%2Fdid-web%2Foid4vci%22%2C%22credential_configuration_ids%22%3A%5B%22PensionSdJwt%22%5D%2C%22grants%22%3A%7B%22urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Apre-authorized_code%22%3A%7B%22pre-authorized_code%22%3A%22d270fee1-9185-4e60-9901-d291e1338d7a%22%7D%7D%7D",
  "qrCodeDataUri": "data:image/png;base64,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"
}

Copy the entire value between quotes (excluding the quotes) of the qrCodeDataUri and paste that into your address bar in a new browser tab. You now should see a QR code.

If you are integrating with our API, you thus have the choice to use your own QR code generator library, or let the API generate them for you. All you then need to do is display them in your frontend

You can now scan the QR code with your wallet or mobile device and you should get an additional credential issued to your wallet.

Exercise 5: Protect the QR code and interaction with a transaction code

As explained in the issuer introduction documentation, a QR code isn’t the most safe method of interacting, especially not with a pre-authorized code like we are using right now. The issuer API has support for transaction/pin codes. This mitigates someone taking a picture over your sholder, and impersonating you. Remember with a pre-authorized code flow, you have already authenticated on a website for instance. Before you started scanning the QR code. By using a transaction/pin code you have an additional value that needs to be entered in the wallet. The idea is that the pincode is send out of bound, so that an attacker that can see the QR code doesn’t see it. So a text-message/SMS or e-mail for instance. Using hidden toggle on the website also works, but obviously is less secure.

Please use the create-credential-offer API (docs) or API (swaggerhub) to create a simple so-called credential offer by value using a pre-authorized_code grant and this time with qrCodeOpts and with “.

This means using an offerMode of "VALUE" and a grants object containing an object of urn:ietf:params:oauth:grant-type:pre-authorized_code with a pre-authorized_code value of your choosing. Use a credential_configuration_id with value "PensionSdJwt" and add a "qrCodeOpts" object with value {"size": 400} and a new transaction code object called tx_code and value

{
  "input_mode": "numeric",
  "length": 4
}

The tx_code needs to be part of the urn:ietf:params:oauth:grant-type:pre-authorized_code object.

Now you should get a response that looks like below:

{
  "uri": "openid-credential-offer://?credential_offer=%7B%22credential_issuer%22%3A%22https%3A%2F%2Fagent.findynet.demo.sphereon.com%2Fdid-web%2Foid4vci%22%2C%22credential_configuration_ids%22%3A%5B%22PensionSdJwt%22%5D%2C%22grants%22%3A%7B%22urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Apre-authorized_code%22%3A%7B%22pre-authorized_code%22%3A%22d270fee1-9185-4e60-9901-d291e1338d7a%22%7D%7D%7D",
  "qrCodeDataUri": "data:image/png;base64,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",
  "txCode": {
    "input_mode": "numeric",
    "length": 4
  },
  "userPin": "7029"
}

Note the addition of the txCode in the response, that confirms a numeric transaction code of length 4 is being used. Also note that the API returns the random pin of that length.

Scan the QR code with the wallet. During the issuance process you should now be asked to enter the pin code in the wallet.

The Sphereon wallet currently only supports pincodes in numeric form and of length 4. The API supports other lengths as well, but the wallet will not be able to handle these. The API does not support text input mode and will still use numeric

Exercise 6: Create an offer by reference

Up until now we have been creating offers by value. It also has the option to create them by reference. Please read the credential offers chapter again if you do not know the difference anymore. In the previous exercise we created a credential that was pretty large. If you need to incorporate that into a website this might not be the most appealing. You will notice that if you create the same QR code with for instance a size of 150 instead of 400 it becomes nicer to incorporate, but at the same time a lot of devices now might have problems in actually properly scanning the QR code. The reason is that there is quite a bit of information in the QR code. Let’s fix that by using a Credential Offer by reference instead of value. This means the Issuer will provide a URL called the credential_offer_uri in the credential-offer object. That URI will host the actual offer and the wallet will resolve that URI to fetch the offer using a GET request.

Our issuer creates a random correlation Id and uses that in the URL. There is an option to provide your own correlationId as well. This correlation Id is only used in this URL. In subsequent steps the wallet will not use or see this value. It will rely on other state and nonce values. You backend can use the correlationId to track progress for instance, without ever knowing the state values.

Please use the create-credential-offer API (docs) or API (swaggerhub) to create a simple so-called credential offer by reference using a pre-authorized_code grant and this time with qrCodeOpts.

This means using an offerMode of "REFERENCE" and a grants object containing an object of urn:ietf:params:oauth:grant-type:pre-authorized_code with a pre-authorized_code value of your choosing. Use a credential_configuration_id with value "PensionSdJwt" and add a "qrCodeOpts" object with value {"size": 400}.

Now you should get a response that looks like below:

{
  "uri": "openid-credential-offer://?credential_offer_uri=%7Bhttps%3A%2F%2Fagent.findynet.demo.sphereon.com%2Fdid-web%2Foid4vci%22%2C%22randomvalue%22%22%7D%7D%7D"
}

Notice the credential_offer_uri in the response instead of credential_offer. Also notice that the string length is shorter than before. If you look at the QR code you should see there is less data in it. This allows you to use it in a smaller sized QR code, without having issues with users not being able to scan them!

Credential offer session status

Up until now we only have been using one endpoint to start the issuance process from the API and then we received the credentials in our wallet. Typically you will have a portal or web-app that is guiding the user. This is the case both in the same-device as cross-device flow. When you create web frontend for the issuance process, you will want your frontend to react to states changes in the issuance process, to inform the user about errors, success etc.

The create-credential-offer endpoint we used below internally creates a session. The session contains all kind of information needed by the issuer; one of the important properties it has in the session is the state. The state can have the following values:

stateDescription
OFFER_CREATEDAn offer is created. This is the initial state
ACCESS_TOKEN_REQUESTEDOptional state, given the token endpoint could also be on a separate AS
ACCESS_TOKEN_CREATEDOptional state, given the token endpoint could also be on a separate AS
CREDENTIAL_REQUEST_RECEIVEDCredential request received. Next state would either be error or issued
CREDENTIAL_ISSUEDThe credential iss issued from the issuer’s perspective
ERRORAn error occurred
NOTIFICATION_CREDENTIAL_ACCEPTEDThe holder/user stored the credential in the wallet (If notifications are enabled)
NOTIFICATION_CREDENTIAL_DELETEDThe holder/user did not store the credential in the wallet (If notifications are enabled)
NOTIFICATION_CREDENTIAL_FAILUREThe holder/user encountered an error (If notifications are enabled)
The above states are more or less in order. The credential issued or error are mutually exclusive. The notifications are an optional feature. It can be enabled on the issuer side. Once enabled a wallet does not have to respect it because of privacy reasons. Be aware that you thus cannot rely on them only for success/storage by the user or for failure and/or deletion of the credential.

Exercise 7: Get the initial status

In this exercise we will retrieve the initial status of the credential offer. Without a wallet involved. The state will be OFFER_CREATED

Please use the credential-offer-status API (docs) or API (swaggerhub) to check the progress of the session using the pre-authorized_code value you supplied during credential offer creation. You could also create a new offer as explained in the above exercises. It is wise to create the QR code using the API

You should get a response like this:

{
  "createdAt":1739044208549,
  "lastUpdatedAt":1739044208549,
  "status":"OFFER_CREATED"
}

The status is from the table above.

Exercise 8: Check the status whilst accepting the credential in the wallet

In this exercise we will continue where the previous exercise ended. We will use the wallet to scan the QR code. Make sure that you create the QR code from the offer, or use the QR code the API supplied (see earlier exercises in case of doubt). Scan the QR code with the mobile wallet. Once the wallet is in the accept/decline screen, you should see the state as CREDENTIAL_ISSUED

Please use the credential-offer-status API (docs) or API (swaggerhub) to check the progress of the session using the pre-authorized_code value you supplied during credential offer creation.

You should get a response like this:

{
  "createdAt":1739044208549,
  "lastUpdatedAt":1739044208549,
  "status":"CREDENTIAL_ISSUED"
}

The status is from the table above.

The reason the status is CREDENTIAL_ISSUED is because it actually is issued from the perspective of the Issuer at this point. The wallet does not know (yet) whether the holder will accept or decline the credential. If you now accept the credential in the wallet the status value will move to NOTIFICATION_CREDENTIAL_ACCEPTED if you call the API, but only if the notification endpoint is enabled and only if the wallet has both implemented that feature and enabled it.

Advanced Exercise 9: Add the previously designed credential to the issuer

In the credential design we have thought about a new credential. If you are running the agent locally and via ngrok, then you can attempt to perform this exercise.

Be aware that the current approach to configure the agent is not going to be the final solution

Open the file packages/agent/conf/exercises/oid4vci_metadata/example-issuer.json. Go to the credential_configurations_supported JSON structure. Now copy the entire “PensionSdJwt” object including the key. Add it above or below the PensionSdJwt. Name it after what your credential represents.

Now adjust the values, mainly in the display section. If you want to use images and logo’s, make sure to have uploaded them to a URL somewhere. For instance use imagebb.com Make sure to also update the vct value to the name of your credential. This should be the same as the key you used. Then update the claims object so that it contains the correct values for your credential.

After you are done with that part go to the bottom of the file to the template_mappings section. Copy

{
  "credential_types": [
    "PensionSdJwt"
  ],
  "template_path": "PensionSdJwt.hbs.json",
  "format": "vc+sd-jwt"
}

To a new object. Rename PensionSDJwt for both the credential_types and template_path into the name of your credential.

Now copy the file packages/agent/conf/exercises/templates/PensionSdJwt.hbs.json into a file YourCredentialName.hbs.json that you referenced above

Update the hbs file and make sure you are putting the correct claims in there that you designed before and that match the claims in the metadata above.

Now stop the agent and restart the agent again. This imports the new definition/metadata and enables the new template file.

You should now be able to create a new offer. Make sure to provide the correct configuration_id in the payload instead of the PensionSdJwt. Also make sure that the credentialDataSupplier values are updated to reflect the values you would like to see in the issued credential. If everything went well, you should get your branded credential in your wallet.