fix wallet status update

This is a temporary fix, better checks need to
be performed once the whole process has been
validated.
This commit is contained in:
Guillaume Ballet 2019-03-19 23:14:31 +01:00
parent 42c76a2ba1
commit 7ec6fa03d3

View File

@ -81,23 +81,26 @@ const (
sw1GetResponse = 0x61 sw1GetResponse = 0x61
sw1Ok = 0x90 sw1Ok = 0x90
insVerifyPin = 0x20 insVerifyPin = 0x20
insUnblockPin = 0x22 insUnblockPin = 0x22
insExportKey = 0xC2 insExportKey = 0xC2
insSign = 0xC0 insSign = 0xC0
insLoadKey = 0xD0 insLoadKey = 0xD0
insDeriveKey = 0xD1 insDeriveKey = 0xD1
insStatus = 0xF2 insStatus = 0xF2
deriveP1Assisted = uint8(0x01) P1DeriveKeyFromMaster = uint8(0x00)
deriveP1Append = uint8(0x80) P1DeriveKeyFromParent = uint8(0x01)
deriveP2KeyPath = uint8(0x00) P1DeriveKeyFromCurrent = uint8(0x10)
deriveP2PublicKey = uint8(0x01) deriveP1Assisted = uint8(0x01)
statusP1WalletStatus = uint8(0x00) deriveP1Append = uint8(0x80)
statusP1Path = uint8(0x01) deriveP2KeyPath = uint8(0x00)
signP1PrecomputedHash = uint8(0x01) deriveP2PublicKey = uint8(0x01)
signP2OnlyBlock = uint8(0x81) statusP1WalletStatus = uint8(0x00)
exportP1Any = uint8(0x00) statusP1Path = uint8(0x01)
exportP2Pubkey = uint8(0x01) signP1PrecomputedHash = uint8(0x01)
signP2OnlyBlock = uint8(0x81)
exportP1Any = uint8(0x00)
exportP2Pubkey = uint8(0x01)
// Minimum time to wait between self derivation attempts, even it the user is // Minimum time to wait between self derivation attempts, even it the user is
// requesting accounts like crazy. // requesting accounts like crazy.
@ -859,11 +862,11 @@ func (s *Session) walletStatus() (*walletStatus, error) {
if response.Data[2] != 2 || response.Data[3] != 1 || response.Data[5] != 2 || response.Data[6] != 1 || response.Data[8] != 1 || response.Data[9] != 1 { if response.Data[2] != 2 || response.Data[3] != 1 || response.Data[5] != 2 || response.Data[6] != 1 || response.Data[8] != 1 || response.Data[9] != 1 {
return nil, fmt.Errorf("invalid response tag format") return nil, fmt.Errorf("invalid response tag format")
} }
fmt.Println("asn1 response", response)
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 */
} }
/* /*