Skip to content

Commit

Permalink
[INJIMOB-2109] - add more details to documentation and update compone…
Browse files Browse the repository at this point in the history
…nt diagram

Signed-off-by: swatigoel <[email protected]>
  • Loading branch information
swatigoel committed Oct 17, 2024
1 parent 321d186 commit fee4f18
Show file tree
Hide file tree
Showing 7 changed files with 93 additions and 92 deletions.
4 changes: 2 additions & 2 deletions .talismanrc
Original file line number Diff line number Diff line change
Expand Up @@ -374,7 +374,7 @@ fileignoreconfig:
- filename: machines/VerifiableCredential/VCItemMachine/VCItemActions.ts
checksum: 9b68ccc45681459d164197f73a1875e6f8bdf473acede18c811f4a784fca00e0
- filename: docs/InjiWalletComponents.drawio
checksum: d295ba37678f892d6939fa51b7e936d942fb9fa9b29ca4b64f0acef28ffeffa1
checksum: 7bc81e784fcb9898db91430b7343e44b462d3b9e72e432545d4133ce72534f14
- filename: docs/InjiWalletComponents.md
checksum: 2e1d6b147803bfcf93c1f83fcd01242c0d5d873817cc135491a24fecaae2b53e
checksum: 77df95e6f523fe81e6d0180473617d4c1b663e3961649f3a37a79a171efdb086
version: ""
86 changes: 49 additions & 37 deletions docs/InjiWalletComponents.drawio

Large diffs are not rendered by default.

53 changes: 19 additions & 34 deletions docs/InjiWalletComponents.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,51 +3,36 @@
<!-- TOC -->

- [**Inji Wallet Components**](#inji-wallet-components)
_ [**Inji Wallet**](#inji-wallet)
_ [**Mimoto**](#mimoto)
_ [**Inji Verify**](#inji-verify)
_ [**Inji Certify**](#inji-certify)
_ [**Data Share**](#data-share)
_ [**ESignet**](#esignet) \* [\*\*Native Libraries](#native-libraries)
_ [**Inji Wallet UI**](#inji-wallet-ui)
[**Mimoto**](#mimoto)
_ [**Native Components**](#native-components)
<!-- TOC -->

### **Inji Wallet**
### **Inji Wallet UI**

This is a mobile application for Android and iOS developed in react native.

- The Inji Wallet is a mobile application for Android and iOS developed in react native.
- It offers a secure, trustworthy, and dependable mobile Verifiable Credentials wallet designed to fulfil the following functions
- Download and store Verifiable Credentials
- Conduct offline face verification
- Share Verifiable Credentials
- Enable users to log in to relying parties with their credential
- Generate a QR code for the credential to be shared offline or with other application.
- Generate a QR code for the credential to be shared offline with relying parties.

### **Mimoto**

- Mimoto is a BFF(Backend for Frontend) for Inji Wallet. It's being used to get default configuration, list of trusted issuers and few other services as mentioned below:
- Gives default properties needed by Inji Wallet
- Gives the List of Issuers Supported by the Inji Wallet through mimoto-issuers-config.json
- Gives access token based on authorization code to download credential
- Allows to wallet binding so that user can log in to relying party

### **Inji Verify**

- **Inji Verify** stands out as a robust verification tool specifically designed to validate the verifiable credentials encoded in QR codes through an intuitive web portal interface.
- Inji Verify can verify the Credential either via Scan or Upload Functionality
- Inji Verify supports the QR code generated in VC to verify

### **Inji Certify**

- Inji Certify lets organizations issue and manage verifiable credentials, empowering users with greater control over their data and access to services.
- Inji Certify Integrate with specific plugins to retrieve the data from the registry and convert the raw Data into verifiable Credential and Issues them to wallet to manage it.
Mimoto is a BFF(Backend for Frontend) for Inji Wallet. It's being used to serve default configuration, list of trusted issuers and few other services as mentioned below:

### **eSignet**
- Gives default properties needed by Inji Wallet
- Gives the list of issuers supported by the Inji Wallet through mimoto-issuers-config.json
- Gives access token based on authorization code to download credential
- Allows wallet binding so that user can log in to relying party

- **eSignet** strives to provide a user-friendly and effective method for individuals to authenticate themselves and utilize online services while also having the option to share their profile information. Moreover, eSignet supports multiple modes of identity verification to ensure inclusivity and broaden access, thereby reducing potential digital barriers.
- eSignet Allows us to perform the authorization of the resident on the portal before downloading the credential
### **Native Components**

### **Native Libraries**
There are many components which are being used to build Inji wallet. Each of these components supports some specification or use-cases required by Inji Wallet.

- **Secure-Keystore** is a module to create and store keys in android hardware keystore and helps to do encryption, decryption, and hmac calculation
- **Tuvali** is a module for the OpenID for Verifiable Presentations over BLE implementation to support sending vc/vp using Bluetooth Low Energy local channel
- **Pixelpass** is a module to generate QR code from VC data and decode from QR to get VC data
- **VCI client** is a module to support OpenId4VCI specification for downloading the credential
- **Secure-Keystore** is a module to create and store keys in android hardware keystore and helps to do encryption, decryption, and hmac calculation. Please find more details [here](https://docs.mosip.io/inji/inji-wallet/technical-overview/components#id-3.-secure-keystore)
- **Tuvali** is a module for the OpenID for Verifiable Presentations over BLE implementation to support sending vc/vp using Bluetooth Low Energy local channel. Please find more details [here](https://docs.mosip.io/inji/inji-wallet/technical-overview/components#id-1.-tuvali-sharing-via-ble)
- **Pixelpass** is a module to generate QR code from VC data and decode from QR to get VC data. Please find more details [here](https://docs.mosip.io/inji/inji-wallet/technical-overview/components#id-5.-pixelpass)
- **VCI client** is a module to support OpenId4VCI specification for downloading the credential. Please find more details [here](https://docs.mosip.io/inji/inji-wallet/technical-overview/components#id-5.-pixelpass)
- **Face Match** is a module which supports offline face verification. Please find more details [here](https://docs.mosip.io/inji/inji-wallet/technical-overview/components#id-2.-face-match)
Binary file modified docs/InjiWalletComponents.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
13 changes: 8 additions & 5 deletions docs/InjiWalletSequence.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,18 @@

### **Inji Wallet**

- The use installs the application on Android or iOS device.
- The user installs the application on Android or iOS device.
- Application link is available in our sandbox env https://collab.mosip.net/
- After installation, user will be asked to select unlock mehtod as passcode or biometric to add security to the applicaiton
- After installation, user will be asked to select unlock method as passcode or biometric to add security to the application
- After selecting unlock method, user will be navigated to Home screen.
- There is plus icon on home screen, after tapping on that icon, it will display list of issuers supported by Inji wallet to downlaod credentials.
- List of Issuers supported and sourced from [mimoto-issuers-configuration](https://github.com/mosip/inji-config/blob/collab/mimoto-issuers-config.json)
- After this, user can download the verifiable credentials for trusted issuers configured in mimoto.
- Mimoto maintains a list of trusted issuers and that is sourced from [mimoto-issuers-configuration](https://github.com/mosip/inji-config/blob/collab/mimoto-issuers-config.json)
- Use can tap on plus icon on home screen. It will fetch the trusted issuer list from mimoto and display it.

### **Selection of Issuer and credential type:**

- The users can select an Issuer from the list of trusted issuers
- On Clicking the issuer, user will be redirected to credential Types, where user will be displayed with list of credentials supported by the selected issuer.
- On clicking the issuer, user will be redirected to credential Types, where user will be displayed with list of credentials supported by the selected issuer.
- Credential Types of the issuers are sourced from the issuers wellknown **"/.well-known/openid-credential-issuer"**
- The users can select a credential type from the available options provided by the issuers.

Expand All @@ -23,6 +24,8 @@
### **Authorization**

- When the user selects any credential type, user is redirected to the authorization page for that specific issuer.
- This authorization page is managed by `OAuth Authorization server (eSignet)` and will be rendered in webview inside Inji App.
- User will be asked to provide details for authorization.
- Once authorization is successful, authorization server return the **"authorizationCode"**
- Inji Wallet sends the authorization code to authorization server through Mimoto to perform the client assertions.
- Once authorized, authorization server issues token response, which include **access_token**.
Expand Down
Binary file modified docs/InjiWalletSequence.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
29 changes: 15 additions & 14 deletions docs/InjiWalletSequenceMermaid.txt
Original file line number Diff line number Diff line change
@@ -1,19 +1,20 @@
sequenceDiagram
actor User
User->>+Inji Wallet: Launches Inji Wallet in mobile
Inji Wallet->>+Mimoto: Fetch trusted issuers
Mimoto->>+Inji Wallet: List of Issuers
User->>Inji Wallet: Launches Inji Wallet in mobile
Inji Wallet->>Mimoto: Fetch trusted issuers
Mimoto->>Inji Wallet: List of Issuers
User->>Inji Wallet: User chooses an issuer
Inji Wallet->>Inji Certify: Fetches issuers' well-known details
Inji Certify->>+Inji Wallet: Provide List of Credential types
Inji Wallet->>Issuer System / Inji Certify: Fetches issuers' well-known details
Issuer System / Inji Certify->>Inji Wallet: Provide List of Credential types
User->>Inji Wallet: User chooses a credential type
Inji Wallet->>+eSignet: Authentication request
User->>eSignet: User provides details for authentication
eSignet->>+Inji Wallet: Authentication response with auth code
Inji Wallet->>+Mimoto: Initiate Token request
Mimoto->>+eSignet: Access Token request with client details
eSignet->>+Mimoto: Token response with access token
Mimoto->>+Inji Wallet: Access token
Inji Wallet->>+Inji Certify: Credential request with token
Inji Certify->>+Inji Wallet: VC sent in response
Inji Wallet->>OAuth Authorization server (eSignet): Authentication request
OAuth Authorization server (eSignet)->>Inji Wallet: Webview page is rendered to accept input for authentication
User->>OAuth Authorization server (eSignet): User provides details for authentication
OAuth Authorization server (eSignet)->>Inji Wallet: Authentication response with auth code
Inji Wallet->>Mimoto: Initiate Token request
Mimoto->>OAuth Authorization server (eSignet): Access Token request with client details
OAuth Authorization server (eSignet)->>Mimoto: Token response with access token
Mimoto->>Inji Wallet: Access token
Inji Wallet->>Issuer System / Inji Certify: Credential request with token
Issuer System / Inji Certify->>Inji Wallet: VC sent in response
Inji Wallet->>Inji Wallet: Store the VC and generate the QR code

0 comments on commit fee4f18

Please sign in to comment.