accounts, console: frendly card errors, support pin unblock

This commit is contained in:
Péter Szilágyi
2018-04-20 10:37:45 +03:00
committed by Guillaume Ballet
parent 386943943f
commit 7d5886dcf4
6 changed files with 169 additions and 112 deletions

View File

@ -21,29 +21,15 @@ import (
"encoding/binary"
)
const (
claISO7816 = 0
insSelect = 0xA4
insGetResponse = 0xC0
insPair = 0x12
insUnpair = 0x13
insOpenSecureChannel = 0x10
insMutuallyAuthenticate = 0x11
sw1GetResponse = 0x61
sw1Ok = 0x90
)
// CommandAPDU represents an application data unit sent to a smartcard.
type CommandAPDU struct {
// commandAPDU represents an application data unit sent to a smartcard.
type commandAPDU struct {
Cla, Ins, P1, P2 uint8 // Class, Instruction, Parameter 1, Parameter 2
Data []byte // Command data
Le uint8 // Command data length
}
// serialize serializes a command APDU.
func (ca CommandAPDU) serialize() ([]byte, error) {
func (ca commandAPDU) serialize() ([]byte, error) {
buf := new(bytes.Buffer)
if err := binary.Write(buf, binary.BigEndian, ca.Cla); err != nil {
@ -72,14 +58,14 @@ func (ca CommandAPDU) serialize() ([]byte, error) {
return buf.Bytes(), nil
}
// ResponseAPDU represents an application data unit received from a smart card.
type ResponseAPDU struct {
// responseAPDU represents an application data unit received from a smart card.
type responseAPDU struct {
Data []byte // response data
Sw1, Sw2 uint8 // status words 1 and 2
}
// deserialize deserializes a response APDU.
func (ra *ResponseAPDU) deserialize(data []byte) error {
func (ra *responseAPDU) deserialize(data []byte) error {
ra.Data = make([]byte, len(data)-2)
buf := bytes.NewReader(data)