PK derivation has to be supported by the card

This commit is contained in:
Guillaume Ballet 2019-03-22 19:52:23 +01:00
parent 2625057fe3
commit bcf3c52ac9

View File

@ -321,10 +321,8 @@ func (w *Wallet) Status() (string, error) {
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:
return fmt.Sprintf("Empty, waiting for initialization"), nil return fmt.Sprintf("Empty, waiting for initialization"), nil
case status.SupportsPKDerivation:
return fmt.Sprintf("Online, can derive public keys"), nil
default: default:
return fmt.Sprintf("Online, cannot derive public keys"), nil return fmt.Sprintf("Online"), nil
} }
} }
@ -844,10 +842,9 @@ func (s *Session) authenticate(pairing smartcardPairing) error {
// walletStatus describes a smartcard wallet's status information. // walletStatus describes a smartcard wallet's status information.
type walletStatus struct { type walletStatus struct {
PinRetryCount int // Number of remaining PIN retries PinRetryCount int // Number of remaining PIN retries
PukRetryCount int // Number of remaining PUK retries PukRetryCount int // Number of remaining PUK retries
Initialized bool // Whether the card has been initialized with a private key Initialized bool // Whether the card has been initialized with a private key
SupportsPKDerivation bool // Whether the card supports doing public key derivation itself
} }
// walletStatus fetches the wallet's status from the card. // walletStatus fetches the wallet's status from the card.
@ -869,10 +866,9 @@ func (s *Session) walletStatus() (*walletStatus, error) {
return nil, fmt.Errorf("invalid response tag format") return nil, fmt.Errorf("invalid response tag format")
} }
status := &walletStatus{ status := &walletStatus{
PinRetryCount: int(response.Data[4]), PinRetryCount: int(response.Data[4]),
PukRetryCount: int(response.Data[7]), PukRetryCount: int(response.Data[7]),
Initialized: (response.Data[10] == 0xff), Initialized: (response.Data[10] == 0xff),
SupportsPKDerivation: true, /* Cards that don't aren't supported */
} }
/* /*