diff --git a/crypto_stream.go b/crypto_stream.go index fbf7324ce..45d118daa 100644 --- a/crypto_stream.go +++ b/crypto_stream.go @@ -72,6 +72,8 @@ const ( TagORBT Tag = 'O' + 'R'<<8 + 'B'<<16 + 'T'<<24 // TagEXPY is the server config expiry TagEXPY Tag = 'E' + 'X'<<8 + 'P'<<16 + 'Y'<<24 + // TagCERT is the CERT data + TagCERT Tag = 0xff545243 ) var ( diff --git a/example/main.go b/example/main.go index b866c7eb8..6724a0de7 100644 --- a/example/main.go +++ b/example/main.go @@ -16,6 +16,12 @@ const ( ) func main() { + path := "/Users/lucas/src/go/src/github.com/lucas-clemente/quic-go/example/" + keyData, err := crypto.LoadKeyData(path+"cert.der", path+"key.der") + if err != nil { + panic(err) + } + addr, err := net.ResolveUDPAddr("udp", "localhost:6121") if err != nil { panic(err) @@ -73,26 +79,35 @@ func main() { } fmt.Printf("Tag: %d\n", messageTag) - fmt.Printf("Talking to: %s\n", string(cryptoData[quic.TagUAID])) + fmt.Printf("Talking to: %q\n", cryptoData[quic.TagUAID]) serverConfig := &bytes.Buffer{} quic.WriteCryptoMessage(serverConfig, quic.TagSCFG, map[quic.Tag][]byte{ quic.TagSCID: []byte{0xC5, 0x1C, 0x73, 0x6B, 0x8F, 0x48, 0x49, 0xAE, 0xB3, 0x00, 0xA2, 0xD4, 0x4B, 0xA0, 0xCF, 0xDF}, quic.TagKEXS: []byte("C255"), quic.TagAEAD: []byte("AESG"), - quic.TagPUBS: []byte{}, + quic.TagPUBS: []byte{0x1, 0x2, 0x3}, quic.TagORBT: []byte{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7}, quic.TagEXPY: []byte{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, - quic.TagVER: []byte("Q030"), + quic.TagVER: []byte("Q032"), }) + proof, err := keyData.SignServerProof(frame.Data, serverConfig.Bytes()) + if err != nil { + panic(err) + } serverReply := &bytes.Buffer{} quic.WriteCryptoMessage(serverReply, quic.TagREJ, map[quic.Tag][]byte{ quic.TagSCFG: serverConfig.Bytes(), + quic.TagCERT: keyData.GetCERTdata(), + quic.TagPROF: proof, }) replyFrame := &bytes.Buffer{} replyFrame.WriteByte(0) // Private header + quic.WriteAckFrame(replyFrame, &quic.AckFrame{ + LargestObserved: 1, + }) quic.WriteStreamFrame(replyFrame, &quic.StreamFrame{ StreamID: 1, Data: serverReply.Bytes(), @@ -108,7 +123,7 @@ func main() { conn.WriteToUDP(fullReply.Bytes(), remoteAddr) - n, remoteAddr, err = conn.ReadFromUDP(data) + n, _, err = conn.ReadFromUDP(data) if err != nil { panic(err) }