Andrei0105 / identity-wallet

0 stars 0 forks source link

Sovrin/Indy integration details #3

Open Andrei0105 opened 5 years ago

Andrei0105 commented 5 years ago

Thread for details regarding Sovrin integration. Hyperledger Indy is a technology from the Linux foundation providing a decentralized ledger built for identity. Sovrin is an implementation of the Indy codebase. Hyperledger Aries is "infrastructure for blockchain-rooted, p2p interaction, it's not a blockchain and not an application".

Andrei0105 commented 5 years ago

Aries includes (from https://www.hyperledger.org/blog/2019/05/14/announcing-hyperledger-aries-infrastructure-supporting-interoperable-identity-solutions):

  1. A blockchain interface layer (known as a resolver) for creating and signing blockchain transactions.
  2. A cryptographic wallet for secure storage (the secure storage tech, not a UI) of cryptographic secrets and other information used to build blockchain clients.
  3. An encrypted messaging system for off-ledger interactions between clients using multiple transport protocols.
  4. An implementation of ZKP-capable W3C verifiable credentials using the ZKP primitives found in Ursa.
  5. An implementation of the Decentralized Key Management System (DKMS) specification currently being incubated in Hyperledger Indy.
  6. A mechanism to build higher-level protocols and API-like use cases based on the secure messaging functionality described earlier.

Hyperledger architecture

Goals for 1.0 release:

Andrei0105 commented 5 years ago

Useful links: DIDComm-js https://github.com/decentralized-identity/DIDComm-js Simple extension https://github.com/dbluhm/super-simple-browser-static-agent Agent Messaging https://docs.google.com/presentation/d/1XSDaCIJhuQJm4SwhjylJ1cchTcfpspKWngeLsAvXzhM/edit?usp=sharing Aries-RFCs; issue-credential and present-proof are particularly relevant: https://github.com/hyperledger/aries-rfcs/blob/master/index.md The Aries Toolbox https://github.com/TelegramSam/aries-toolbox Aries WG Call Notes and Agendas (past and future meetings will be posted on this page): https://wiki.hyperledger.org/display/ARIES/Aries+Working+Group The Call the Toolbox was demoed on (Recordings at the bottom of the page): https://wiki.hyperledger.org/pages/viewpage.action?pageId=16322546

Andrei0105 commented 5 years ago

Possible communication within the extension:

  1. Websites are backed by full agents providing their service. Eg: A server run by Faber College, allowing it to issue credentials to its students.
  2. The users have a backing full agent (local/cloud). This holds their identity wallet.
  3. The extension is a static agent connected to the user's full agent. It should be able to send and receive messages from the user's full agent.
  4. The extension should inject a javascript library to be used by the page to send DIDcomm messages to it (invites/credentials etc.).
  5. The static agent of the extension forwards the messages to the user's Full Agent.

Current problems/to-dos:

Messaging protocols that must be supported:

Andrei0105 commented 5 years ago

Structure of Daniel's static agent solution:

Andrei0105 commented 5 years ago

Possible solution:

Andrei0105 commented 5 years ago

Implementing the solution from https://github.com/Andrei0105/identity-wallet/issues/3#issuecomment-519079669:

Andrei0105 commented 5 years ago

Basic implementation at commit https://github.com/Andrei0105/identity-wallet/commit/c45b10587ac793272435b42ffb918296de41304d. Update/desired features:

Alternative/also needed: The connection to be initiated by the extension (the user's agent).

Andrei0105 commented 5 years ago

Full connection protocol implemented at commit https://github.com/Andrei0105/identity-wallet/commit/538ebb73ccebdbc7154f9e1299a62c00dc548093.

Andrei0105 commented 5 years ago

UI listing all connections with the ability to remove them implemented at commit https://github.com/Andrei0105/identity-wallet/commit/d435efc36a14c9a95554a94842f8cfb598669823.

Andrei0105 commented 5 years ago

Issuing credentials:

Andrei0105 commented 5 years ago

If not using --auto-respond-credential-offer:

Note: These steps assume the use of POST /credential_exchange/send by the page's agent to automate some communication steps.

Andrei0105 commented 5 years ago

Basic credential exchange implemented at commit https://github.com/Andrei0105/identity-wallet/commit/d1a94cbd52a177695ed02d07702e3b73eabcbb6b.

Andrei0105 commented 5 years ago

Presenting proofs (without --auto-respond-presentation-request):