@@ -11,9 +11,9 @@ import (
)

func main() {
for ci, cipher := range []CipherFunc{CipherAESGCM, CipherChaChaPoly} {
for _, cipher := range []CipherFunc{CipherAESGCM, CipherChaChaPoly} {
for _, hash := range []HashFunc{HashSHA256, HashSHA512, HashBLAKE2b, HashBLAKE2s} {
for hi, handshake := range []HandshakePattern{
for _, handshake := range []HandshakePattern{
HandshakeNN,
HandshakeKN,
HandshakeNK,
@@ -31,15 +31,18 @@ func main() {
HandshakeX,
HandshakeXR,
} {
for _, psk := range []bool{false, true} {
payloads := (psk && hi%2 == 0) || (!psk && hi%2 != 0)
prologue := ci == 0
writeHandshake(
os.Stdout,
NewCipherSuite(DH25519, cipher, hash),
handshake, psk, prologue, payloads,
)
fmt.Fprintln(os.Stdout)
for _, prologue := range []bool{false, true} {
for _, payloads := range []bool{false, true} {
for pskPlacement := -1; pskPlacement <= len(handshake.Messages); pskPlacement++ {
writeHandshake(
os.Stdout,
NewCipherSuite(DH25519, cipher, hash),
handshake, pskPlacement,
pskPlacement >= 0, prologue, payloads,
)
fmt.Fprintln(os.Stdout)
}
}
}
}
}
@@ -62,13 +65,13 @@ const (
key4 = "4142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f60"
)

func writeHandshake(out io.Writer, cs CipherSuite, h HandshakePattern, hasPSK, hasPrologue, payloads bool) {
func writeHandshake(out io.Writer, cs CipherSuite, h HandshakePattern, pskPlacement int, hasPSK, hasPrologue, payloads bool) {
var prologue, psk []byte
if hasPrologue {
prologue = []byte("notsecret")
}
if hasPSK {
psk = []byte("verysecret")
psk = []byte("!verysecretverysecretverysecret!")
}

staticI := cs.GenerateKeypair(hexReader(key0))
@@ -82,17 +85,18 @@ func writeHandshake(out io.Writer, cs CipherSuite, h HandshakePattern, hasPSK, h
Initiator: true,
Prologue: prologue,
PresharedKey: psk,
PresharedKeyPlacement: pskPlacement,
}
configR := configI
configR.Random = hexReader(key4)
configR.Initiator = false

var pskName string
if hasPSK {
pskName = "PSK"
pskName = fmt.Sprintf("psk%d", pskPlacement)
}

fmt.Fprintf(out, "handshake=Noise%s_%s_%s\n", pskName, h.Name, cs.Name())
fmt.Fprintf(out, "handshake=Noise_%s%s_%s\n", h.Name, pskName, cs.Name())

if len(h.Name) == 1 {
switch h.Name {
33,132 vectors.txt

Large diffs are not rendered by default.