fix persisting keys
This commit is contained in:
@@ -190,15 +190,39 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||
if m.state == 0 {
|
||||
pass := m.input.Value()
|
||||
if len(pass) > 0 {
|
||||
// REGISTERING USER FLOW
|
||||
if m.identityKey != nil {
|
||||
ciphertext, nonce, salt, err := encryptUserKey(m.identityKey.PrivateKey, pass)
|
||||
if err != nil {
|
||||
m.err = err
|
||||
return m, nil
|
||||
}
|
||||
// Store encrypted private key
|
||||
if err := storeUserEncryptedKey(m.username, ciphertext, salt, nonce); err != nil {
|
||||
m.err = err
|
||||
return m, nil
|
||||
}
|
||||
m.encryptedPrivKey = ciphertext
|
||||
m.privKeyNonce = nonce
|
||||
m.privKeySalt = salt
|
||||
} else {
|
||||
// LOGGING IN USER FLOW
|
||||
encKey, salt, nonce, err := getUserEncryptedKey(m.username)
|
||||
if err != nil {
|
||||
m.err = fmt.Errorf("failed to load keys: %v", err)
|
||||
return m, nil
|
||||
}
|
||||
privKey, err := decryptUserKey(encKey, nonce, salt, pass)
|
||||
if err != nil {
|
||||
m.err = fmt.Errorf("incorrect passphrase")
|
||||
return m, nil
|
||||
}
|
||||
// Reconstruct IdentityKeyPair
|
||||
pubKey, _ := getMemberIdentityKey(m.username)
|
||||
m.identityKey = &IdentityKeyPair{
|
||||
PrivateKey: privKey,
|
||||
PublicKey: pubKey,
|
||||
}
|
||||
}
|
||||
|
||||
m.passphrase = pass
|
||||
|
||||
Reference in New Issue
Block a user