add initial webwallet authentication
This commit is contained in:
206
spec/025_web_wallet_authentication.md
Normal file
206
spec/025_web_wallet_authentication.md
Normal file
@@ -0,0 +1,206 @@
|
||||
# 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:
|
||||
|
||||

|
||||
|
||||
```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:
|
||||
-->
|
||||
Reference in New Issue
Block a user