init
This commit is contained in:
3
README.md
Normal file
3
README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# Currently all i do is brainstorm
|
||||
|
||||

|
||||
119
layout.d2
Normal file
119
layout.d2
Normal file
@@ -0,0 +1,119 @@
|
||||
ppassctl
|
||||
|
||||
ppassctl.Commands: {
|
||||
shape: class
|
||||
|
||||
init
|
||||
ls
|
||||
grep
|
||||
find
|
||||
show
|
||||
insert
|
||||
edit
|
||||
generate
|
||||
rm
|
||||
mv
|
||||
cp
|
||||
git
|
||||
help
|
||||
version
|
||||
}
|
||||
|
||||
ppassctl -- ppassd: control via unix socket
|
||||
|
||||
ppassd
|
||||
ppassd.Host: {
|
||||
shape: class
|
||||
|
||||
PeerId: "libp2p.ID"
|
||||
PublicKey: "libp2p.PubKey"
|
||||
PrivateKey: "libp2p.PrivKey"
|
||||
}
|
||||
|
||||
ppassd.Config: {
|
||||
shape: class
|
||||
|
||||
+VaultCfgs: "[]VaultCfg"
|
||||
}
|
||||
|
||||
ppassd.VaultCfg {
|
||||
shape: class
|
||||
|
||||
peers: "[]Peer"
|
||||
VaultId: "string" #PubSub Topic
|
||||
}
|
||||
|
||||
ppassd.Peer {
|
||||
shape: class
|
||||
|
||||
PeerId: "libp2p.ID"
|
||||
PublicKey: "string"
|
||||
}
|
||||
|
||||
ppassd.Vault: {
|
||||
shape: class
|
||||
|
||||
Id: "string"
|
||||
Keys: "[]Peer.PublicKey"
|
||||
|
||||
Add(p Password): "error"
|
||||
Get(k string): "(Password, error)"
|
||||
Modify(p Password): "error"
|
||||
Remove(k string): "(bool, error)"
|
||||
Exists(k string): "(bool)"
|
||||
OnUpdate(handler func()): "error"
|
||||
|
||||
ctx: "context.Context"
|
||||
ps: "*pubsub.PubSub"
|
||||
topic: "*pubsub.Topic"
|
||||
sub: "*pubsub.Subscription"
|
||||
}
|
||||
|
||||
ppassd.PasswordStore: {
|
||||
shape: class
|
||||
|
||||
Init(): "error"
|
||||
Add(p Password): "error"
|
||||
Get(k string): "(Password, error)"
|
||||
Modify(p Password): "error"
|
||||
Remove(k string): "(bool, error)"
|
||||
Exists(k string): "(bool)"
|
||||
|
||||
NewVault(id string): "(Vault, error)"
|
||||
|
||||
Cfg: "Config"
|
||||
Vaults: "[]Vaults"
|
||||
Passwords: "[]Password"
|
||||
Secrets: "[]GnuPGKey"
|
||||
host: "Host"
|
||||
}
|
||||
|
||||
ppassd.Password: {
|
||||
shape: class
|
||||
|
||||
Key: "string"
|
||||
Password: "string"
|
||||
Vaults: "[]*Vault"
|
||||
}
|
||||
|
||||
ppassd.PasswordStore -> PPassd.Host
|
||||
ppassd.PasswordStore -> PPassd.Config
|
||||
ppassd.Config -> PPassd.VaultCfg
|
||||
ppassd.VaultCfg -> PPassd.Peer
|
||||
ppassd.PasswordStore -> PPassd.Vault
|
||||
ppassd.PasswordStore -> PPassd.Password: Load on Init()
|
||||
|
||||
Thoughts
|
||||
Thoughts.explanation: |md
|
||||
# Architecture
|
||||
- The host is a libp2p node. It connects with Peers of the given VaultCfgs.
|
||||
- The Vaults itself a basically pubsub topics that each hosts subscribes and publishes to.
|
||||
- Vaults internally are just abstractions of the PasswordStore
|
||||
- they are like a "view" onto certain passwords
|
||||
- there they can modify, add, delete passwords too
|
||||
- if a password is in multiple vaults, it should be updated too
|
||||
- hosts do not have to be able to decrypt stored passwords
|
||||
- for example it would be nice to have a dummy node that is always online, storing passwords
|
||||
- but not able to decrypt them
|
||||
|
||||
|
|
||||
872
layout.svg
Normal file
872
layout.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 72 KiB |
Reference in New Issue
Block a user