go test: correct tai64n and formatting

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
This commit is contained in:
Jason A. Donenfeld 2017-06-01 19:08:24 +02:00
parent 19c89f3c3a
commit 9fbd187288

View file

@ -41,15 +41,15 @@ func main() {
preshared, _ := base64.StdEncoding.DecodeString("FpCyhws9cxwWoV4xELtfJvjJN+zQVRPISllRWgeopVE=") preshared, _ := base64.StdEncoding.DecodeString("FpCyhws9cxwWoV4xELtfJvjJN+zQVRPISllRWgeopVE=")
cs := noise.NewCipherSuite(noise.DH25519, noise.CipherChaChaPoly, noise.HashBLAKE2s) cs := noise.NewCipherSuite(noise.DH25519, noise.CipherChaChaPoly, noise.HashBLAKE2s)
hs := noise.NewHandshakeState(noise.Config{ hs := noise.NewHandshakeState(noise.Config{
CipherSuite: cs, CipherSuite: cs,
Random: rand.Reader, Random: rand.Reader,
Pattern: noise.HandshakeIK, Pattern: noise.HandshakeIK,
Initiator: true, Initiator: true,
Prologue: []byte("WireGuard v1 zx2c4 Jason@zx2c4.com"), Prologue: []byte("WireGuard v1 zx2c4 Jason@zx2c4.com"),
PresharedKey: preshared, PresharedKey: preshared,
PresharedKeyPlacement: 2, PresharedKeyPlacement: 2,
StaticKeypair: noise.DHKey{Private: ourPrivate, Public: ourPublic}, StaticKeypair: noise.DHKey{Private: ourPrivate, Public: ourPublic},
PeerStatic: theirPublic, PeerStatic: theirPublic,
}) })
conn, err := net.Dial("udp", "demo.wireguard.io:12913") conn, err := net.Dial("udp", "demo.wireguard.io:12913")
if err != nil { if err != nil {
@ -61,12 +61,12 @@ func main() {
now := time.Now() now := time.Now()
tai64n := make([]byte, 12) tai64n := make([]byte, 12)
binary.BigEndian.PutUint64(tai64n[:], 4611686018427387914+uint64(now.Unix())) binary.BigEndian.PutUint64(tai64n[:], 4611686018427387914+uint64(now.Unix()))
binary.BigEndian.PutUint32(tai64n[8:], uint32(now.UnixNano())) binary.BigEndian.PutUint32(tai64n[8:], uint32(now.Nanosecond()))
initiationPacket := make([]byte, 8) initiationPacket := make([]byte, 8)
initiationPacket[0] = 1 // Type: Initiation initiationPacket[0] = 1 // Type: Initiation
initiationPacket[1] = 0 // Reserved initiationPacket[1] = 0 // Reserved
initiationPacket[2] = 0 // Reserved initiationPacket[2] = 0 // Reserved
initiationPacket[3] = 0 // Reserved initiationPacket[3] = 0 // Reserved
binary.LittleEndian.PutUint32(initiationPacket[4:], 28) // Sender index: 28 (arbitrary) binary.LittleEndian.PutUint32(initiationPacket[4:], 28) // Sender index: 28 (arbitrary)
initiationPacket, _, _ = hs.WriteMessage(initiationPacket, tai64n) initiationPacket, _, _ = hs.WriteMessage(initiationPacket, tai64n)
hasher, _ := blake2s.New(&blake2s.Config{Size: 32}) hasher, _ := blake2s.New(&blake2s.Config{Size: 32})
@ -130,13 +130,13 @@ func main() {
pingData := append(append(pingHeader, pingMessage...), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) pingData := append(append(pingHeader, pingMessage...), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
binary.BigEndian.PutUint16(pingData[10:], ipChecksum(pingData)) binary.BigEndian.PutUint16(pingData[10:], ipChecksum(pingData))
pingPacket := make([]byte, 16) pingPacket := make([]byte, 16)
pingPacket[0] = 4 // Type: Data pingPacket[0] = 4 // Type: Data
pingPacket[1] = 0 // Reserved pingPacket[1] = 0 // Reserved
pingPacket[2] = 0 // Reserved pingPacket[2] = 0 // Reserved
pingPacket[3] = 0 // Reserved pingPacket[3] = 0 // Reserved
binary.LittleEndian.PutUint32(pingPacket[4:], theirIndex) binary.LittleEndian.PutUint32(pingPacket[4:], theirIndex) // Their index
binary.LittleEndian.PutUint64(pingPacket[8:], 0) // Nonce binary.LittleEndian.PutUint64(pingPacket[8:], 0) // Nonce
pingPacket = sendCipher.Encrypt(pingPacket, nil, pingData) pingPacket = sendCipher.Encrypt(pingPacket, nil, pingData) // Payload data
if _, err := conn.Write(pingPacket); err != nil { if _, err := conn.Write(pingPacket); err != nil {
log.Fatalf("error writing ping message: %s", err) log.Fatalf("error writing ping message: %s", err)
} }
@ -174,12 +174,12 @@ func main() {
} }
keepalivePacket := make([]byte, 16) keepalivePacket := make([]byte, 16)
keepalivePacket[0] = 4 // Type: Data keepalivePacket[0] = 4 // Type: Data
keepalivePacket[1] = 0 // Reserved keepalivePacket[1] = 0 // Reserved
keepalivePacket[2] = 0 // Reserved keepalivePacket[2] = 0 // Reserved
keepalivePacket[3] = 0 // Reserved keepalivePacket[3] = 0 // Reserved
binary.LittleEndian.PutUint32(keepalivePacket[4:], theirIndex) binary.LittleEndian.PutUint32(keepalivePacket[4:], theirIndex) // Their index
binary.LittleEndian.PutUint64(keepalivePacket[8:], 1) // Nonce binary.LittleEndian.PutUint64(keepalivePacket[8:], 1) // Nonce
keepalivePacket = sendCipher.Encrypt(keepalivePacket, nil, nil) // Empty data means keepalive keepalivePacket = sendCipher.Encrypt(keepalivePacket, nil, nil) // Empty data means keepalive
if _, err := conn.Write(keepalivePacket); err != nil { if _, err := conn.Write(keepalivePacket); err != nil {
log.Fatalf("error writing keepalive message: %s", err) log.Fatalf("error writing keepalive message: %s", err)