SIWS ReCap
This crate implements EIP-5573 in Solana, using siws-rs as its basis. Use this crate to build wallet-signable messages with capability delegations. The generated message contains two representations of the capabilities: an unambiguous machine-readable representation, and a human-readable description. Of the two representations, the latter is deterministically generated from the former.
Message formats
We currently support the following message formats:
- Phantom's Solana Wallet Standard: Sign-In With Solana (SIWS)
- CAIP-122 - Sign-In With X
SIWS Examples
An example with:
- the capability to
presentany credential, without restrictions - the capability to
presentcredentials of typetype1(technically redundant) - the capability to
list,getand retrievemetadatafrom the kepler locationkepler:ens:example.eth://default/kv, without restrictions - the capability to
list,get, retrievemetadata,putanddeletefrom the kepler locationskepler:ens:example.eth://default/kv/publicandkepler:ens:example.eth://default/kv/dapp-space, without restrictions
let msg: SiwsMessage = new
.with_actions_convert?
.with_actions_convert?
.with_actions_convert?
.with_actions_convert?
.build?;
Which produces this SIWS message:
example.com wants you to sign in with your Solana account:
0000000000000000000000000000000000000000
I further authorize the state URI to perform the following actions on my behalf: (1) "kv": "get", "list", "metadata" for "kepler:ens:example.eth://default/kv". (2) "kv": "delete", "get", "list", "metadata", "put" for "kepler:ens:example.eth://default/kv/dapp-space". (3) "kv": "delete", "get", "list", "metadata", "put" for "kepler:ens:example.eth://default/kv/public". (4) "credential": "present" for "urn:credential:type:type1".
URI: did:key:example
Version: 1
Chain ID: testnet
Nonce: mynonce1
Issued At: 2022-06-21T12:00:00.000Z
Resources:
- urn:recap:eyJhdHQiOnsia2VwbGVyOmVuczpleGFtcGxlLmV0aDovL2RlZmF1bHQva3YiOnsia3YvZ2V0IjpbXSwia3YvbGlzdCI6W10sImt2L21ldGFkYXRhIjpbXX0sImtlcGxlcjplbnM6ZXhhbXBsZS5ldGg6Ly9kZWZhdWx0L2t2L2RhcHAtc3BhY2UiOnsia3YvZGVsZXRlIjpbXSwia3YvZ2V0IjpbXSwia3YvbGlzdCI6W10sImt2L21ldGFkYXRhIjpbXSwia3YvcHV0IjpbXX0sImtlcGxlcjplbnM6ZXhhbXBsZS5ldGg6Ly9kZWZhdWx0L2t2L3B1YmxpYyI6eyJrdi9kZWxldGUiOltdLCJrdi9nZXQiOltdLCJrdi9saXN0IjpbXSwia3YvbWV0YWRhdGEiOltdLCJrdi9wdXQiOltdfSwidXJuOmNyZWRlbnRpYWw6dHlwZTp0eXBlMSI6eyJjcmVkZW50aWFsL3ByZXNlbnQiOltdfX0sInByZiI6W119