# Claim 169 QR Code Support

### Overview

**Inji Web Wallet** supports receiving and using Verifiable Credentials (VCs) that contain **Claim-169 formatted QR code blocks**. These QR blocks are issued as **CBOR Web Tokens (CWT)** embedded inside the credential and encoded as **Base64**.

This feature enables **secure, compact, and privacy-preserving QR sharing**, particularly useful for **offline and quick verification scenarios**.

The Web Wallet can:

* Download credentials containing embedded **Claim-169 QR blocks**
* Securely store QR payloads within the browser wallet storage
* Render QR codes dynamically for presentation
* Allow users to present QR-based identity attributes when required
* Perform validation checks for **size, structure, and format**

### Specification Details

Claim-169 QR blocks follow standards based on:

* **IANA Claim-169 Registry**
* **CBOR (Concise Binary Object Representation)**
* **CWT (CBOR Web Token)**
* **Base64-encoded QR payloads embedded inside a VC**

A Claim-169 enabled Verifiable Credential may include:

```
{
  "credentialSubject": {
    "id": "${_holderId}",
    "fullName": "${fullName}",
    "mobileNumber": "${mobileNumber}",
    "dateOfBirth": "${dateOfBirth}",
    "identityQRCode": $claim_169_values[0]
  }
}
```

Each QR block contains **CBOR-encoded identity attributes**, such as:

| Claim ID | Attribute    |
| -------- | ------------ |
| 4        | Full Name    |
| 12       | Phone Number |
| 17       | Face Image   |

***

### Why This Feature Matters

Claim-169 QR codes enable **identity data to be shared without requiring internet connectivity**, supporting **fast in-person verification workflows**.

Key benefits include:

* **Offline verification capability** through QR scanning
* **Selective disclosure**, where only required attributes are shared
* **Quick presentation of identity data** by displaying QR codes in the browser
* **Compact and secure encoding** using CBOR and CWT
* Support for **multiple QR codes within a single credential** for different verification scenarios\\

### Supported Credential Types

Claim-169 QR support applies to Verifiable Credentials that:

* Contain **embedded CWT QR blocks**
* Include **Base64-encoded Claim-169 QR fields**
* Are issued through **supported issuance flows**

Supported credential formats include:

* **W3C Verifiable Credentials (JSON-LD 1.1 / 2.0)**

## How Does the Claim-169 QR Code Flow Work?

### User Flow (Step-by-Step)

**Step 1: Credential Download**

When a credential containing QR blocks is downloaded to the **Inji Web Wallet**:

* The wallet extracts QR fields (such as `qr1`, `qr2`, etc.)
* Base64 content is decoded to obtain the **CWT payload**
* Optional validations are performed:
  * CWT structure validation
  * CBOR decoding
  * Signature verification (depending on configuration)
* The QR payload is stored securely within the **Web Wallet storage**

**Step 2: Viewing QR Codes**

When a user opens the credential in the Web Wallet:

* The wallet detects available QR blocks
* CBOR payload is converted into a **QR image**
* The QR is displayed with an **issuer-defined label** (for example, *Age Verification*)
* If decoding fails or the QR exceeds size limits, an **error message is displayed**

**Step 3: Sharing QR Codes**

During verification:

* The user selects the required QR code from the credential
* The Web Wallet displays the QR on screen
* The verifier scans the QR using a scanner or verification application

No additional data is transmitted beyond the information encoded inside the QR.

#### Multi-QR Credential Support

A single credential may contain **multiple QR codes**, enabling different verification contexts, such as:

* **Age Verification**
* **Address Verification**
* **Identity Proof**

**Note:** While **Inji Certify** supports the design for issuing **multiple QR codes**, **Inji Wallet currently does not support multiple QR codes for Claim-169 credentials.**

<figure><img src="https://3039626265-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FaY8BQ4hdzhSchZV814Ev%2Fuploads%2FHROG32Rp2ivHQMl1VBtS%2FClaim%20169%20-%20Wallet.png?alt=media&#x26;token=5401fd70-0651-4659-9d93-e5eaf5e01c06" alt=""><figcaption></figcaption></figure>

## Current Limitations

* Signature verification of **CWT payloads may vary depending on browser capabilities**
* Issuers must configure **QR labels and supported attributes**
* Only **Base64-encoded CWT QR blocks** are supported in the current release
* Advanced error handling and customization are limited in the current implementation

## Learn More

To understand how Claim-169 QR codes are issued and integrated with wallets, refer to:

**Claim-169 QR Code Support – Issuance Documentation**


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.inji.io/inji-wallet/inji-web/overview/features/claim-169-qr-code-support.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
