User Story: Connect Wallet to Storage

As a wallet user, I want to connect to a wallet attached storage server, so I can use it to share data.

Contents

Context

Learner Credential Wallet Connect to Storage

This user story was directly inspired by the following user story envisioned for https://lcw.app/.

Alice connects her Learner Credential Wallet to a Wallet-Attached Storage provider during wallet setup.

Conversation

We seek to socialize this user story widely as a core user story for the Wallet Attached Storage protocol.

Plan of conversation:

  1. Publish this user story at a final public URL
  2. Solicit feedback from digitalcredentials.mit.edu
  3. Incorporate feedback into the user story andd add to change log

If you want to be a part of the conversation, please publish feedback and link to Wallet Attached Storage.

Confirmation

This section describes how to confirm that an implementation has satisfied the user story.

Server MUST support PUT /space/:spaceUuid with HTTP Signature and ed25519 Multikey

Given

When

When the server successfully verified the request

When the server is unable to verify the request authorization

Based on the response status code, the wallet can determine whether it has successfully connected to the Wallet Attached Storage server. A Successful response (i.e. 2xx response status) indicates a successful connection.

Adding Space

Adding Space using ed25519 Multikey

Simply PUT a representation of the Space as JSON to /space/:spaceUuid, signed by the key.

Encode the key as a Multikey and refer to it as a did:key verification method URI. The mb-value MUST start with z6Mk like cid-1.0 Example 9. Other keyId syntaxes MAY be supported.

PUT /space/:spaceUuid HTTP/1.1
Authorization: Signature keyId="did:key:{mb-value}#{mb-value}"…

{
  "name": "Connection to Wallet Attached Storage"
}

Implementations

wallet-attached-storage-server

wallet-attached-storage-server supports authentication via Multikey ed25519

wasup

@wallet.storage/wasup supports authentication via Multikey ed25519 and can load keys from files generated by ssh-keygen -t ed25519