mirror of
https://github.com/status-im/status-keycard-go.git
synced 2025-02-24 12:08:38 +00:00
add unblock puk
This commit is contained in:
parent
22e2f8a743
commit
27fc2264db
@ -109,7 +109,44 @@ func (f *KeycardFlow) openSC(kc *keycardContext) error {
|
||||
}
|
||||
|
||||
func (f *KeycardFlow) unblockPUK(kc *keycardContext) error {
|
||||
return errors.New("not yet implemented")
|
||||
pukError := ""
|
||||
var err error
|
||||
|
||||
newPIN, pinOK := f.params[NewPIN]
|
||||
puk, pukOK := f.params[PUK]
|
||||
|
||||
if pinOK && pukOK {
|
||||
err = kc.unblockPUK(puk.(string), newPIN.(string))
|
||||
|
||||
if err == nil {
|
||||
f.cardInfo.pinRetries = maxPINRetries
|
||||
f.cardInfo.pukRetries = maxPUKRetries
|
||||
f.params[PIN] = newPIN
|
||||
delete(f.params, NewPIN)
|
||||
delete(f.params, PUK)
|
||||
return nil
|
||||
} else if isSCardError(err) {
|
||||
return restartErr()
|
||||
} else if leftRetries, ok := getPinRetries(err); ok {
|
||||
f.cardInfo.pukRetries = leftRetries
|
||||
delete(f.params, PUK)
|
||||
pukOK = false
|
||||
}
|
||||
|
||||
pukError = PUK
|
||||
}
|
||||
|
||||
if !pukOK {
|
||||
err = f.pauseAndWait(EnterPUK, pukError)
|
||||
} else if !pinOK {
|
||||
err = f.pauseAndWait(EnterNewPIN, "")
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return f.unblockPUK(kc)
|
||||
}
|
||||
|
||||
func (f *KeycardFlow) authenticate(kc *keycardContext) error {
|
||||
@ -132,6 +169,7 @@ func (f *KeycardFlow) authenticate(kc *keycardContext) error {
|
||||
return restartErr()
|
||||
} else if leftRetries, ok := getPinRetries(err); ok {
|
||||
f.cardInfo.pinRetries = leftRetries
|
||||
delete(f.params, PIN)
|
||||
}
|
||||
|
||||
pinError = PIN
|
||||
|
@ -42,6 +42,10 @@ const (
|
||||
SwapCard = "keycard.action.swap-card"
|
||||
EnterPairing = "keycard.action.enter-pairing"
|
||||
EnterPIN = "keycard.action.enter-pin"
|
||||
EnterPUK = "keycard.action.enter-puk"
|
||||
EnterNewPair = "keycard.action.enter-new-pairing"
|
||||
EnterNewPIN = "keycard.action.enter-new-pin"
|
||||
EnterNewPUK = "keycard.action.enter-new-puk"
|
||||
)
|
||||
|
||||
const (
|
||||
@ -63,7 +67,11 @@ const (
|
||||
PINRetries = "pin-retries"
|
||||
PUKRetries = "puk-retries"
|
||||
PairingPass = "pairing-pass"
|
||||
NewPairing = "new- pairing-pass"
|
||||
PIN = "pin"
|
||||
NewPIN = "new-pin"
|
||||
PUK = "puk"
|
||||
NewPUK = "new-puk"
|
||||
MasterKey = "master-key"
|
||||
WalleRootKey = "wallet-root-key"
|
||||
WalletKey = "wallet-key"
|
||||
|
@ -1,6 +1,7 @@
|
||||
package statuskeycardgo
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
"github.com/ebfe/scard"
|
||||
@ -218,6 +219,10 @@ func (kc *keycardContext) verifyPin(pin string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (kc *keycardContext) unblockPUK(puk string, newPin string) error {
|
||||
return errors.New("not implemented yet")
|
||||
}
|
||||
|
||||
func (kc *keycardContext) generateKey() ([]byte, error) {
|
||||
<-kc.connected
|
||||
if kc.runErr != nil {
|
||||
|
Loading…
x
Reference in New Issue
Block a user