---
# System prepended metadata

title: SSI POC

---

# SSI POC

The POC consists of several step that are captured below.

## Research

**Jolocom** is the preferred choice for credential management.

Read on [verifiable credentials](https://www.w3.org/TR/vc-data-model/#what-is-a-verifiable-credential).

Steps:
1. Clone the [demo](https://github.com/jolocom/interactions-demo) provided by Jolocom
2. Install the mobile application - [Android](https://play.google.com/store/apps/details?id=com.jolocomwallet&hl=en_US&gl=US) | [iOS](https://apps.apple.com/us/app/jolocom-smartwallet/id1223869062) | [Android Staging](https://jolocom.io/wp-content/uploads/smartwallet/smartwallet-staging-1.11.1.apk)\*
4. On windows need to add inbound rule for the 9000 port.

\* Android staging is used when we want to connect to a wallet in our local network without - no certificate needed.

### Sharing credential with the Alkemio system

Followed the dependency chain in the **service_agent** (the backend in the demo):
1. The credential share method is named *credShareRequest*
2. Internally it depends on:
    * [Jolocom Web Service](https://github.com/jolocom/web-service-base/blob/6713145a33fcf9c974d9b984b8facfb755b97915/src/index.ts#L79)
    * [Jolocom Hapi Web Service](https://github.com/jolocom/hapi-jolocom/blob/master/src/index.ts)
    * [Jolocom Service Client](https://github.com/jolocom/web-service-client/blob/master/src/index.ts)
    * [Jolocom Lib](https://github.com/jolocom/jolocom-lib/blob/352bd114d2a3f859a111b589ef3e278d2dd892c4/ts/interactionTokens/credentialRequest.ts#L141)
3. The share request is captured in https://miro.com/app/board/o9J_lqoQANg=/
4. Constraints are serializable objects
5. In wallet manager *beginCredentialRequestInteraction* + *completeCredentialRequestInteraction*

### Offering credential from the Alkemio system

Followed the dependency chain in the **service_agent** (the backend in the demo):
1. The credential share method is named *offerCred*
2. The offer request is captured in https://miro.com/app/board/o9J_lqoQANg=/
3. In wallet manager *beginCredentialOfferInteraction* + *completeCredentialOfferInteraction*

## The flow

Changes across the wallet-manager, server and client had to be applied.

In order to run the flow as-is:
1. Stop the wallet-manager container that starts with the services quickstart
2. Install the staging application **OR** Run an android emulator
3. Open the port that the server is available on (inbound rule).
4. Start the server with local network IP address:
![](https://i.imgur.com/uSNN4Md.png)
6. Navigate to the user profile page and perform the desired operation.

When using the iOS / Android production jolocom wallets:
1. Setup dev SSL - we need to run the server & wallet managers on https

## What is next

1. Integrate verified credential usage in the authorization policy
2. Standalone Trust registry
    - The registry is responsible for managing verified issuers, creating & setting constraints on credential claims based on their type
2. Alkemio Internal Credential Offer Interaction
    - Credential offer flow, but the credential is offered to an Alkemio cloud-hosted wallet 
3. Create an Alkemio Platform agent
    - Credentials need to be created by trusted issuers and Alkemio might become one at some point, thus the need for a platform wide wallet/agent that should be created
4. Using did:jun
    - There are different methods of storing decentralized identities - in jolocom **did:jun** is the local equivalent (stored in our db only) of **did:jolo** which is stored in a decentralized storage and publicly visible.
5. Authentication using Alkemio Credential
    - Extend oathkeeper to process the Alkemio verifiable credential
6. [Open badges](https://openbadges.org/)