Refactor client into separate files
Add a main loop, move I/O code into io.go, move configuration into config.go. Use shared.Decode24BitLength instead of manually decoding block lengths. Fix response block decoding and checksum validation. Add constants for commonly used byte values and use these in the signer and the client.
This commit is contained in:
parent
65855152ce
commit
42d1e6e991
8 changed files with 322 additions and 241 deletions
|
@ -1,15 +1,15 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"encoding/binary"
|
||||
"errors"
|
||||
"flag"
|
||||
"fmt"
|
||||
"git.cacert.org/cacert-gosigner/datastructures"
|
||||
"git.cacert.org/cacert-gosigner/shared"
|
||||
"log"
|
||||
"time"
|
||||
|
||||
"git.cacert.org/cacert-gosigner/datastructures"
|
||||
"git.cacert.org/cacert-gosigner/shared"
|
||||
|
||||
"github.com/goburrow/serial"
|
||||
)
|
||||
|
||||
|
@ -96,7 +96,7 @@ func SendResponse(port *serial.Port, response *datastructures.SignerResponse) er
|
|||
}
|
||||
|
||||
tryAgain := true
|
||||
for ; tryAgain; {
|
||||
for tryAgain {
|
||||
data := response.Serialize()
|
||||
if _, err := (*port).Write(data); err != nil {
|
||||
return err
|
||||
|
@ -150,11 +150,11 @@ func Receive(port *serial.Port, commandChan *chan datastructures.SignerRequest,
|
|||
*errorChan <- err
|
||||
return
|
||||
}
|
||||
if header[0] != 0x02 {
|
||||
*errorChan <- fmt.Errorf("unexpected byte 0x%x expected 0x02", header)
|
||||
if header[0] != shared.HandshakeByte {
|
||||
*errorChan <- fmt.Errorf("unexpected byte 0x%x expected 0x%x", header[0], shared.HandshakeByte)
|
||||
}
|
||||
|
||||
if _, err := (*port).Write([]byte{0x10}); err != nil {
|
||||
if _, err := (*port).Write([]byte{shared.AckByte}); err != nil {
|
||||
*errorChan <- errors.New("could not write ACK")
|
||||
return
|
||||
}
|
||||
|
@ -164,8 +164,8 @@ func Receive(port *serial.Port, commandChan *chan datastructures.SignerRequest,
|
|||
*errorChan <- err
|
||||
return
|
||||
}
|
||||
blockLength := binary.BigEndian.Uint32([]byte{0x0, lengthBytes[0], lengthBytes[1], lengthBytes[2]})
|
||||
blockData, err := shared.ReceiveBytes(port, int(blockLength), 5)
|
||||
blockLength := datastructures.Decode24BitLength(lengthBytes)
|
||||
blockData, err := shared.ReceiveBytes(port, blockLength, 5)
|
||||
if err != nil {
|
||||
*errorChan <- err
|
||||
return
|
||||
|
@ -199,4 +199,3 @@ func Receive(port *serial.Port, commandChan *chan datastructures.SignerRequest,
|
|||
|
||||
*commandChan <- *command
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue