cic-docs/spec/025_web_wallet_authentication.md

207 lines
3.9 KiB
Markdown
Raw Normal View History

2022-01-12 15:05:25 +01:00
# Web Wallet Authentication
<!--
valid status values are: Pre-draft|Draft|Proposal|Accepted
-->
- Authors: William Luke <williamluke4@gmail.com> (grassecon.org)
- Date: 2022.01.12
- Version: 1
- Status: Pre-draft
## Rationale
## Intro
## User Flow:
![web_wallet_authentication](./images/web_wallet_authentication.svg)
```dot
digraph G {
node [fontname = "Handlee"];
edge [fontname = "Handlee"];
splines=true;
subgraph cluster_0 {
label = "Create Account";
color=black
node [style=filled,color=lightgray];
create [
label = "Create Account";
shape = rect;
];
create -> trusted
trusted [
label = "Are you on a trusted device";
shape = diamond;
];
trusted -> password [ label = "Yes"];
trusted -> are_you_sure [ label = "No" ];
are_you_sure [
label = "Are you sure you want to continue";
shape = diamond;
];
are_you_sure -> password [ label = "Yes"];
password [
label = "Create new Account";
shape = rect;
];
password -> generate_key_pair
generate_key_pair [
label = "Generate Device Key Pair";
shape = rect;
];
seed [
label = "Seed";
shape = rect;
];
seed -> generate_key_pair
generate_key_pair -> verify_key_copied
verify_key_copied [
label = "Verify Seed Copied";
shape = rect;
];
verify_key_copied -> store_key_pair
store_key_pair [
label = "Store Encrypted Device Key Pair";
shape = rect;
];
store_key_pair -> export_key
export_key [
label = "Do you want to save to USB/local?";
shape = diamond;
];
export_key -> select_export_location [ label = "Yes"];
export_key -> create_account [ label = "No"];
select_export_location [
label = "Select Export Location";
shape = rect;
]
select_export_location -> create_account
create_account [
label = "Create account and associate with device key pair";
shape = rect;
];
create_account -> share_endorsement_url
share_endorsement_url [
label = "Share Endorsement URL with Endorsers";
shape = rect;
];
}
subgraph cluster_1 {
label = "Sign In";
color=black
node [style=filled,color=lightgray];
select_profile [
label = "Select Profile";
shape = rect;
];
upload_key [
label = "Upload Key";
shape = rect;
];
select_profile -> enter_password
upload_key -> enter_password
enter_password [
label = "Enter Password";
shape = rect;
];
link_account [
label = "Link Account";
shape = rect;
];
link_account -> enter_phone_number
enter_phone_number [
label = "Enter Phone Number";
shape = rect;
];
enter_phone_number -> send_otp
send_otp [
label = "Send OTP";
shape = rect;
];
send_otp -> enter_pin
enter_pin [
label = "Enter Pin";
shape = rect;
];
enter_pin -> create_account_flow
create_account_flow [
label = "Create Account Flow";
shape = rect;
];
}
subgraph cluster_2 {
label = "Endorse";
color=black
node [style=filled,color=lightgray];
open_link [
label = "Open Link";
shape = rect;
];
open_link -> sign_in
sign_in [
label = "Sign In";
shape = rect;
];
sign_in -> custodial
custodial [
label = "Custodial";
shape = diamond;
];
custodial -> ask_server [label="Yes"]
custodial -> okota_tx [label="No"]
ask_server -> okota_tx
ask_server [
label = "Ask Server to Sign";
shape = rect;
];
okota_tx [
label = "Sign In";
shape = rect;
];
}
}
```
## Example:
## Testing
## Action items
## Implementation
### Workflow
### Variables
### Interface
## Security
## Changelog
<!--
Please remember to describe every change to this document in the changelog using
serial number:
* version 1:
-->