---
# System prepended metadata

title: OIDC4VCI
tags: [im4dec]

---

# OIDC4VCI in IM4DEC

#### Links
* Wallet: https://github.com/Sphereon-Opensource
  * ssi-mobile-wallet: https://github.com/OwnYourData/ssi-mobile-wallet
  * Veramo: https://github.com/OwnYourData/veramo
* Open ID Specs: https://openid.net/developers/specs/
* OpenID for VC Issuance : https://openid.net/specs/openid-4-verifiable-credential-issuance-1_0.html
* Sphereon Example: https://github.com/Sphereon-Opensource/OID4VC-demo
  * check: [Pre-authorized Code Flow](https://github.com/Sphereon-Opensource/OID4VCI#pre-authorized-code-flow)
  * sample QR: https://ssi.sphereon.com/demo/issuer/#/credentials/verify/request
* Walt-ID Example: https://github.com/walt-id/waltid-openid4vc#examples
* Ruby Gem with code samples: https://github.com/jwt/ruby-jwt
* Useful Tools
  * Base64 decoding: https://www.base64decode.org/
  * URL encoding: https://www.url-encode-decode.com/
  * JWT decoding: https://jwt.io/
  * Uniresolver: https://dev.uniresolver.io/
* Specs
  * Multibase: https://github.com/multiformats/multibase
  * Multihash: https://github.com/multiformats/multihash
  * Multicodec: https://github.com/sleeplessbyte/ruby-multicodec ([table](https://github.com/SleeplessByte/ruby-multicodec/blob/master/lib/table.csv))
    
## OIDC4VP
#### Links

* Example (outdated): https://dutchblockchaincoalition.org/en/userlogin
* OpenID Specs: https://openid.net/wg/connect/specifications/
* Spec SIOPv2: https://openid.net/specs/openid-connect-self-issued-v2-1_0.html#name-self-issued-openid-provider-a
  (check Chap 9 for Auth Request)
* Spec OID4VP: https://openid.net/specs/openid-4-verifiable-presentations-1_0.html
* Spec OID4VCI: https://openid.net/specs/openid-4-verifiable-credential-issuance-1_0.html
* Sphereon Sample Code: https://github.com/Sphereon-Opensource/SIOP-OID4VP/tree/develop/test

```
openid-vc://?request_uri=https%3A%2F%2Fssi.dutchblockchaincoalition.org%2Fagent%2Fsiop%2Fdefinitions%2Fdbc2023%2Fauth-requests%2F0aec1dab-1c88-4131-9896-6aa15ddedb3e
```

## OIDC4VC* Basic Information

#### Tasks
- [x] setup app that acts as issuer 
    https://wallet-start.data-container.net/welcome
- [x] implement JWT to establish handshake with Sphereon Wallet
- [x] implement transferring credential from issuer to wallet
- [x] commit changes in Veramo and Sphereon Wallet to Github
- [ ] check with Mario if he can reproduce creating a credential

### Identity of Issuer

* DID: [`did:oyd:zQmX7WYhQCdHcdzfCLRj9tAUgRYar6pqAf2GXS7NQfoX6aE`](https://dev.uniresolver.io/#did:oyd:zQmX7WYhQCdHcdzfCLRj9tAUgRYar6pqAf2GXS7NQfoX6aE)
* command: 
```bash=
echo '' | oydid create --doc-pwd oydpwd --rev-pwd oydrev \
    --authentication --x25519-keyAgreement -z 1
```

### Credential Structure
the DEC112Credential with ID Austria identity and SIP credentials is a JWT, and has the following structure in the decoded form:
* `id_austria`: encrypted with the public key of the older -> decrypt with private key in wallet
* `sip_credentials`: encrypted with the public key of the older -> decrypt with private key in wallet
```json=
{
  "vc": {
    "@context": [
      "https://www.w3.org/2018/credentials/v1"
    ],
    "type": [
      "VerifiableCredential",
      "DEC112Credential"
    ],
    "issuer": "did:oyd:zQmX7WYhQCdHcdzfCLRj9tAUgRYar6pqAf2GXS7NQfoX6aE",
    "issuanceDate": "2023-11-26T11:50:08Z",
    "credentialSubject": {
      "id": "did:oyd:zQmaUxLCQp37ci2hqR63Vr2SqRtpLDAbhbGE47CJjRMQcL7",
      "id_austria": {
        "value": "6eda6af296...b1",
        "nonce": "a17f3019a3763f1c33dd7e8a736894b1cf67199bb17f9557"
      },
      "sip_credentials": {
        "value": "82a8410b94...fb",
        "nonce": "f3303a40eaaaf8670dcc3422cc32132aa896dc85ce1c078d"
      }
    },
    "proof": {
      "type": "Ed25519Signature2020",
      "verificationMethod": "did:oyd:zQmX7WYhQCdHcdzfCLRj9tAUgRYar6pqAf2GXS7NQfoX6aE",
      "proofPurpose": "assertionMethod",
      "proofValue": "z4iDnhb7JUXR6tfye4DzQZZqktCabkMpX8oVQm3sC4KoJMwhsRHEJPiFYWsJ18vbEzw8TCUisfbZCtD7APk8MzJLB"
    },
    "identifier": "zQmdMEab6oRtXf56h9ZxKpFhM8KBHjisKP4MPucfRYRKzMy",
    "expirationDate": "2024-02-26T11:50:08Z"
  },
  "iss": "did:oyd:zQmX7WYhQCdHcdzfCLRj9tAUgRYar6pqAf2GXS7NQfoX6aE",
  "nbf": 1700999408,
  "exp": 1708948208,
  "jti": "zQmdMEab6oRtXf56h9ZxKpFhM8KBHjisKP4MPucfRYRKzMy",
  "sub": "did:oyd:zQmaUxLCQp37ci2hqR63Vr2SqRtpLDAbhbGE47CJjRMQcL7"
}
```
