Skip to content

Instantly share code, notes, and snippets.

@roz3x
Last active June 10, 2020 16:59
Show Gist options
  • Save roz3x/04ec7bb902f30d8a0784859dd38becc4 to your computer and use it in GitHub Desktop.
Save roz3x/04ec7bb902f30d8a0784859dd38becc4 to your computer and use it in GitHub Desktop.
quic sample vector decoding
package main
import (
"bytes"
"encoding/binary"
"encoding/hex"
"fmt"
"github.com/marten-seemann/qtls"
)
var (
// sample vectors from ietf v29 draft
msg = "060040c4010000c003036660261ff947cea49cce6cfad687f457cf1b14531ba14131a0e8f309a1d0b9c4000006130113031302010000910000000b0009000006736572766572ff01000100000a00140012001d0017001800190100010101020103010400230000003300260024001d00204cfdfcd178b784bf328cae793b136f2aedce005ff183d7bb1495207236647037002b0003020304000d0020001e040305030603020308040805080604010501060102010402050206020202002d00020101001c00024001"
res = "2276e9b1e3011ef6bbc0ab48ad5bcc2681e953857ca62becd7524daac473e68d7405fbba4e9ee616c87038bdbe908c06d9605d9ac49030359eecb1d05a14e117db8cede2bb09d0dbbfee271cb374d8f10abec82d0f59a1dee29fe95638ed8dd41da07487468791b719c55c46968eb3b54680037102a28e53dc1d12903db0af5821794b41c4a93357fa59ce69cfe7f6bdfa629eef78616447e1d611c4baf71bf33febcb03137c2c75d25317d3e13b684370f668411c0f00304b501c8fd422bd9b9ad81d643b20da89ca0525d24d2b142041cae0af205092e430080cd8559ea4c5c6e4fa3f66082b7d303e52ce0162baa958532b0bbc2bc785681fcf37485dff6595e01e739c8ac9efba31b985d5f656cc092432d781db9522172487641c4d3ab8ece01e39bc85b15436614775a98ba8fa12d46f9b35e2a55eb72d7f85181a366663387ddc20551807e007673bd7e26bf9b29b5ab10a1ca87cbb7ad97e99eb66959c2a9bc3cbde4707ff7720b110fa95354674e395812e47a0ae53b464dcb2d1f345df360dc227270c750676f6724eb479f0d2fbb6124429990457ac6c9167f40aab739998f38b9eccb24fd47c8410131bf65a52af841275d5b3d1880b197df2b5dea3e6de56ebce3ffb6e9277a82082f8d9677a6767089b671ebd244c214f0bde95c2beb02cd1172d58bdf39dce56ff68eb35ab39b49b4eac7c815ea60451d6e6ab82119118df02a586844a9ffe162ba006d0669ef57668cab38b62f71a2523a084852cd1d079b3658dc2f3e87949b550bab3e177cfc49ed190dff0630e43077c30de8f6ae081537f1e83da537da980afa668e7b7fb25301cf741524be3c49884b42821f17552fbd1931a813017b6b6590a41ea18b6ba49cd48a440bd9a3346a7623fb4ba34a3ee571e3c731f35a7a3cf25b551a680fa68763507b7fde3aaf023c50b9d22da6876ba337eb5e9dd9ec3daf970242b6c5aab3aa4b296ad8b9f6832f686ef70fa938b31b4e5ddd7364442d3ea72e73d668fb0937796f462923a81a47e1cee7426ff6d9221269b5a62ec03d6ec94d12606cb485560bab574816009e96504249385bb61a819be04f62c2066214d8360a2022beb316240b6c7d78bbe56c13082e0ca272661210abf020bf3b5783f1426436cf9ff41840593a5d0638d32fc51c5c65ff291a3a7a52fd6775e623a4439cc08dd25582febc944ef92d8dbd329c91de3e9c9582e41f17f3d186f104ad3f90995116c682a2a14a3b4b1f547c335f0be710fc9fc03e0e587b8cda31ce65b969878a4ad4283e6d5b0373f43da86e9e0ffe1ae0fddd3516255bd74566f36a38703d5f34249ded1f66b3d9b45b9af2ccfefe984e13376b1b2c6404aa48c8026132343da3f3a33659ec1b3e95080540b28b7f3fcd35fa5d843b579a84c089121a60d8c1754915c344eeaf45a9bf27dc0c1e78416169122091313eb0e87555abd706626e557fc36a04fcd191a58829104d6075c5594f627ca506bf181daec940f4a4f3af0074eee89daacde6758312622d4fa675b39f728e062d2bee680d8f41a597c262648bb18bcfc13c8b3d97b1a77b2ac3af745d61a34cc4709865bac824a94bb19058015e4e42dea5388b911e76d2856d68cf6cf394185"
header = "c0ff00001c088394c8f03e5157080000449e3b343aa8"
rawheader = "c3ff00001c088394c8f03e5157080000449e00000002"
sample = "535064a4268a0d9d7b1c9d250ae35516"
key = "5d51da9ee897a21b2659ccc7e5bfa577"
iv = "5e5ae651fd1e8495af13508b"
salt = []byte{
0xc3, 0xee, 0xf7, 0x12, 0xc7, 0x2e, 0xbb, 0x5a,
0x11, 0xa7, 0xd2, 0x43, 0x2b, 0xb4, 0x63, 0x65,
0xbe, 0xf9, 0xf5, 0x02,
}
)
func main() {
_iv, _ := hex.DecodeString(iv)
_key, _ := hex.DecodeString(key)
_src, _ := hex.DecodeString(res)
_ad, _ := hex.DecodeString(header)
aead := qtls.AEADAESGCMTLS13([]byte(_key), []byte(_iv))
nonceBuf := make([]byte, aead.NonceSize())
pn := 0x02
binary.BigEndian.PutUint64(nonceBuf[len(nonceBuf)-8:], uint64(pn))
dst := make([]byte,0)
println(len(_src))
dec, err := aead.Open(dst, nonceBuf, []byte(_src), []byte(_ad))
if err != nil {
println(err.Error())
}
fmt.Printf("%x\n", dec)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment