mirror of https://github.com/status-im/op-geth.git
accounts/scwallet: display PUK retry count, validate PIN/PUK length
This commit is contained in:
parent
fc85777a21
commit
75a860880c
|
@ -27,6 +27,7 @@ import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"math/big"
|
"math/big"
|
||||||
|
"regexp"
|
||||||
"sort"
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
|
@ -310,8 +311,10 @@ func (w *Wallet) Status() (string, error) {
|
||||||
return fmt.Sprintf("Failed: %v", err), err
|
return fmt.Sprintf("Failed: %v", err), err
|
||||||
}
|
}
|
||||||
switch {
|
switch {
|
||||||
|
case !w.session.verified && status.PinRetryCount == 0 && status.PukRetryCount == 0:
|
||||||
|
return fmt.Sprintf("Bricked, waiting for full wipe"), nil
|
||||||
case !w.session.verified && status.PinRetryCount == 0:
|
case !w.session.verified && status.PinRetryCount == 0:
|
||||||
return fmt.Sprintf("Blocked, waiting for PUK and new PIN"), nil
|
return fmt.Sprintf("Blocked, waiting for PUK (%d attempts left) and new PIN", status.PukRetryCount), nil
|
||||||
case !w.session.verified:
|
case !w.session.verified:
|
||||||
return fmt.Sprintf("Locked, waiting for PIN (%d attempts left)", status.PinRetryCount), nil
|
return fmt.Sprintf("Locked, waiting for PIN (%d attempts left)", status.PinRetryCount), nil
|
||||||
case !status.Initialized:
|
case !status.Initialized:
|
||||||
|
@ -377,10 +380,18 @@ func (w *Wallet) Open(passphrase string) error {
|
||||||
case passphrase == "":
|
case passphrase == "":
|
||||||
return ErrPINUnblockNeeded
|
return ErrPINUnblockNeeded
|
||||||
case status.PinRetryCount > 0:
|
case status.PinRetryCount > 0:
|
||||||
|
if !regexp.MustCompile(`^[0-9]{6,}$`).MatchString(passphrase) {
|
||||||
|
w.log.Error("PIN needs to be at least 6 digits")
|
||||||
|
return ErrPINNeeded
|
||||||
|
}
|
||||||
if err := w.session.verifyPin([]byte(passphrase)); err != nil {
|
if err := w.session.verifyPin([]byte(passphrase)); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
if !regexp.MustCompile(`^[0-9]{12,}$`).MatchString(passphrase) {
|
||||||
|
w.log.Error("PUK needs to be at least 12 digits")
|
||||||
|
return ErrPINUnblockNeeded
|
||||||
|
}
|
||||||
if err := w.session.unblockPin([]byte(passphrase)); err != nil {
|
if err := w.session.unblockPin([]byte(passphrase)); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue