decentralized-identity / keripy

Python Implementation of the KERI Core Libraries
Apache License 2.0
28 stars 10 forks source link

keripy CLI #141

Open m00sey opened 3 years ago

m00sey commented 3 years ago

Keripy CLI

Define a set of command line tools for exercsing KERI in the context of Verifiable Credential Issuance and revocation.

Wallet

A representation of a digital/cloud wallet using a locally backed datastore.

Wallet commands can be used to manipulate the wallet contents providing an interactive look at keys and key management in KERI. Multiple identifiers can be supported by a single wallet.

Command Description
init Initialize a wallet with a new local datastore
incept Create a new identifier and key set
delgated Create a new wallet from a delegated identifier
delgate Print info need for an agent to create a delegated identifier
rotate Perform a key rotation
identifier Print current identifier
key Print current public key
credentials Print current stored credentials
list Print identifiers

It might be beneficial to add a export/dump command taking an arbitary named database and printing/writing it's contents to allow general exploration of KERIs datastore.

Agent

The agent CLI builds upon an existing wallet. The agent communicates with other agents via TCP and takes on the role of issuing/accepting credentials from additional agents. It can also be used to create delgated identifiers derived from it's own wallet key set.

Command Description
start Spawn an agent process with an existing wallet
delegate
issue Issue a given credential
revoke Revoke a given credential

It is likely the agent commands will be a super set of wallet.

Building upon wallets and agents

In it's simplist form a wallet is a local representaion of the KERI datastore.

Using an agent in conjunction with a wallet wraps an existing local wallet with the agent CLI providing additional functionality.

agent start -w /tmp/bob-wallet

We can then use these components to start to build a more "real" scenario.

Ultimately we can use these components to create a set up which will model closer to a real world scenario. A "Root Wallet" from which we create a delegated identifer and from there we can began to "issue" our verifiable credentials.