---
# System prepended metadata

title: USCIS Revokes a Digital Permanent Resident Card

---

# USCIS Revokes a Digital Permanent Resident Card

This use case concerns the revocation of the validity of a digital permanent resident card by USCIS.

## Prerequisites

1. Resident has received a valid digital Permanent Resident Card that resides in their digital wallet.
2. USCIS desires to revoke the digital Permanent Resident Card due to business process or for any regulatory reason.

## Steps

1. USCIS performs an internal process that leads to the determination that the digital Permanent Resident Card is to be revoked.
2. USCIS revokes the digital permanent resident card.
3. The Credential in Resident's Wallet will appear as revoked and any subsequent verification of this credential will fail .

## Results

1. The digital permanent resident card is revoked and fails validation by any party that checks the credential status list.

## Phase 1: USCIS Revokes Digital PRC

The revocation process begins when USCIS identifies the digital permanent resident card that needs to be revoked (through a business process / regularotory reasons).

```mermaid
sequenceDiagram
    participant UB as USCIS Business Process
    participant UW as USCIS Backend
    participant CRS as Credential Revocation service (A part of the Issuer Web Service)
    autonumber
    UB ->> UB: Business Process Identifies the digital PRC that needs to be revoked 
    UB ->> UW: Request subject Digital PRC to be Revoked
    UW ->> CRS: Calls the Revocation Endpoint to revoke the credential (bulk revocation ??) 
    par 
        CRS ->> CRS: Updates the credential status in Revocation List to revoked
    end
    CRS ->> UW: Revocation confirmation
```

<details>
  <summary>Phase 1 - Digital PRC Credential Revocation - Protocol Details</summary>


#### Phase 1 - Update Credential Status List

- The Step 1 and 2 are internal to USCIS business process 
- At Step 3, The USCIS backend component calls the revocation endpoint to revoke the Subject PRC

```

POST /v1/credentials/a2c93b03-61e9-asfsdaf1-3e4c023a9bb9/revocation-status HTTP/1.1
Host: prc-issuer.example.com
Content-Type: application/json
Authorization: Bearer c93b03-61e9-4e2c-91c1-3e4cdzasfasdf

{
    "isRevoked": true
}

```

- At Step 5, The revocation endpoint confirms this update via HTTP response 

```

HTTP/1.1 200 OK

```
</details>



## Phase 2 - Revocation Status Check during Verification 

The revocation detection process begins when any party validating the digital PRC downloads and checks the revocation list.

```mermaid
sequenceDiagram
    participant H as Holder
    participant WA as Wallet APP
    participant V as Verifier
    participant CVS as Credential Verification service (A part of the Issuer Web Service) 
    autonumber
    V ->> WA: Verifier requests presentation of Digital PRC by including unique nounce for presentation
    note over  H,WA: Holder Consents to share the <br/> credential with the verifier
    WA ->> V: Wallet prepares presentation response for the verifier's request and includes the nounce during presentation
    activate V
    V ->> V: Verifier begins the verification and validation Process
    par 
        V -->> CVS: The Verifier requests revocation list that contains the revocation status of the credentials
        CVS -->> V: Revocation List returned to the verifier
    end
    V ->> V: Verifier detects the revocation of the credential and validation fails
    deactivate V
    V ->> WA: Failure message communicated to the Wallet
```

<details>

  <summary>Phase 2 - Revocation Status Check during Verification - Protocol Details</summary>


#### Phase 2 - Revocation Status Check during Verification 

- The Step 1 and 2 are performed as per the format described by the Verifiying application

- At Step 4, The Verifier requests the revocation list from Credential Service that contains the revocation status of the credentials

```

GET /v1/revocation-lists/6ceasf6e-73aa-4318-9265-ed5e8e44bbf4 HTTP/1.1
Host: prc-issuer.example.com

```

- The revocation list is returned as an encoded list (???)

```
HTTP/1.1 200 OK
Date: Thu, 07 Jul 2022 00:01:22 GMT
Connection: keep-alive
Content-Type: application/json

{
    "id": "https://prc-issuer.example.com/core/v1/revocation-lists/6ceasf6e-73aa-4318-9265-ed5e8e44bbf4",
    "type": [
        "VerifiableCredential",
        "RevocationList2020Credential"
    ],
    "proof": {
        "jws": "eyJhbGciOiJFZERTQSIFsc2UsImNyaXQiOlsiYjY0Il19..ci15d8GZyMfMEx9MPXVgIbsiK33yA4Cref1uWK5TeaVHTqghtMYrjDlxsg1r0RJijTANsqzR7kL7T8oUOqTCBA",
        "type": "Ed25519Signature2018",
        "created": "2022-07-06T23:27:00Z",
        "proofPurpose": "assertionMethod",
        "verificationMethod": "did:key:ayyqBgNRWDNqKVHp8ZLSvp5V9jWDQWnUvCao6HeBp5v"
    },
    "issuer": "did:key:asfsadfWnUvCao6HeBp5v",
    "@context": [
        "https://www.w3.org/2018/credentials/v1",
        "https://w3id.org/vc-revocation-list-2020/v1"
    ],
    "issuanceDate": "2022-07-06T23:27:00.725Z",
    "credentialSubject": {
        "type": "RevocationList2020",
        "encodedList": "H4sIAAAAAAAAA-3BIQEAAAACIP1_2hkAAAAAADeBjn7xTYAQAAA"
    }
}

```
</details>
