mirror of
https://github.com/logos-messaging/noise.git
synced 2026-01-05 23:53:08 +00:00
Removed the XR pattern and added the initiator check in WriteMessage and ReadMessage according to spec (#22)
* removed the XR pattern and added the initiator check in WriteMessage and ReadMessage according to spec * removed extra space I shouldn't have added * fixed vectors * re-generated via vectorgen
This commit is contained in:
parent
c49e9fa15d
commit
fc3a9f3b3c
26
patterns.go
26
patterns.go
@ -13,7 +13,7 @@ var HandshakeKN = HandshakePattern{
|
|||||||
InitiatorPreMessages: []MessagePattern{MessagePatternS},
|
InitiatorPreMessages: []MessagePattern{MessagePatternS},
|
||||||
Messages: [][]MessagePattern{
|
Messages: [][]MessagePattern{
|
||||||
{MessagePatternE},
|
{MessagePatternE},
|
||||||
{MessagePatternE, MessagePatternDHEE, MessagePatternDHES},
|
{MessagePatternE, MessagePatternDHEE, MessagePatternDHSE},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -32,7 +32,7 @@ var HandshakeKK = HandshakePattern{
|
|||||||
ResponderPreMessages: []MessagePattern{MessagePatternS},
|
ResponderPreMessages: []MessagePattern{MessagePatternS},
|
||||||
Messages: [][]MessagePattern{
|
Messages: [][]MessagePattern{
|
||||||
{MessagePatternE, MessagePatternDHES, MessagePatternDHSS},
|
{MessagePatternE, MessagePatternDHES, MessagePatternDHSS},
|
||||||
{MessagePatternE, MessagePatternDHEE, MessagePatternDHES},
|
{MessagePatternE, MessagePatternDHEE, MessagePatternDHSE},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -40,7 +40,7 @@ var HandshakeNX = HandshakePattern{
|
|||||||
Name: "NX",
|
Name: "NX",
|
||||||
Messages: [][]MessagePattern{
|
Messages: [][]MessagePattern{
|
||||||
{MessagePatternE},
|
{MessagePatternE},
|
||||||
{MessagePatternE, MessagePatternDHEE, MessagePatternS, MessagePatternDHSE},
|
{MessagePatternE, MessagePatternDHEE, MessagePatternS, MessagePatternDHES},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -49,7 +49,7 @@ var HandshakeKX = HandshakePattern{
|
|||||||
InitiatorPreMessages: []MessagePattern{MessagePatternS},
|
InitiatorPreMessages: []MessagePattern{MessagePatternS},
|
||||||
Messages: [][]MessagePattern{
|
Messages: [][]MessagePattern{
|
||||||
{MessagePatternE},
|
{MessagePatternE},
|
||||||
{MessagePatternE, MessagePatternDHEE, MessagePatternDHES, MessagePatternS, MessagePatternDHSE},
|
{MessagePatternE, MessagePatternDHEE, MessagePatternDHSE, MessagePatternS, MessagePatternDHES},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -66,7 +66,7 @@ var HandshakeIN = HandshakePattern{
|
|||||||
Name: "IN",
|
Name: "IN",
|
||||||
Messages: [][]MessagePattern{
|
Messages: [][]MessagePattern{
|
||||||
{MessagePatternE, MessagePatternS},
|
{MessagePatternE, MessagePatternS},
|
||||||
{MessagePatternE, MessagePatternDHEE, MessagePatternDHES},
|
{MessagePatternE, MessagePatternDHEE, MessagePatternDHSE},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -85,7 +85,7 @@ var HandshakeIK = HandshakePattern{
|
|||||||
ResponderPreMessages: []MessagePattern{MessagePatternS},
|
ResponderPreMessages: []MessagePattern{MessagePatternS},
|
||||||
Messages: [][]MessagePattern{
|
Messages: [][]MessagePattern{
|
||||||
{MessagePatternE, MessagePatternDHES, MessagePatternS, MessagePatternDHSS},
|
{MessagePatternE, MessagePatternDHES, MessagePatternS, MessagePatternDHSS},
|
||||||
{MessagePatternE, MessagePatternDHEE, MessagePatternDHES},
|
{MessagePatternE, MessagePatternDHEE, MessagePatternDHSE},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -93,17 +93,7 @@ var HandshakeXX = HandshakePattern{
|
|||||||
Name: "XX",
|
Name: "XX",
|
||||||
Messages: [][]MessagePattern{
|
Messages: [][]MessagePattern{
|
||||||
{MessagePatternE},
|
{MessagePatternE},
|
||||||
{MessagePatternE, MessagePatternDHEE, MessagePatternS, MessagePatternDHSE},
|
{MessagePatternE, MessagePatternDHEE, MessagePatternS, MessagePatternDHES},
|
||||||
{MessagePatternS, MessagePatternDHSE},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
var HandshakeXR = HandshakePattern{
|
|
||||||
Name: "XR",
|
|
||||||
Messages: [][]MessagePattern{
|
|
||||||
{MessagePatternE},
|
|
||||||
{MessagePatternE, MessagePatternDHEE},
|
|
||||||
{MessagePatternS, MessagePatternDHSE},
|
|
||||||
{MessagePatternS, MessagePatternDHSE},
|
{MessagePatternS, MessagePatternDHSE},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@ -112,7 +102,7 @@ var HandshakeIX = HandshakePattern{
|
|||||||
Name: "IX",
|
Name: "IX",
|
||||||
Messages: [][]MessagePattern{
|
Messages: [][]MessagePattern{
|
||||||
{MessagePatternE, MessagePatternS},
|
{MessagePatternE, MessagePatternS},
|
||||||
{MessagePatternE, MessagePatternDHEE, MessagePatternDHES, MessagePatternS, MessagePatternDHSE},
|
{MessagePatternE, MessagePatternDHEE, MessagePatternDHSE, MessagePatternS, MessagePatternDHES},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
24
state.go
24
state.go
@ -211,6 +211,7 @@ type HandshakeState struct {
|
|||||||
psk []byte // preshared key, maybe zero length
|
psk []byte // preshared key, maybe zero length
|
||||||
messagePatterns [][]MessagePattern
|
messagePatterns [][]MessagePattern
|
||||||
shouldWrite bool
|
shouldWrite bool
|
||||||
|
initiator bool
|
||||||
msgIdx int
|
msgIdx int
|
||||||
rng io.Reader
|
rng io.Reader
|
||||||
}
|
}
|
||||||
@ -269,6 +270,7 @@ func NewHandshakeState(c Config) *HandshakeState {
|
|||||||
psk: c.PresharedKey,
|
psk: c.PresharedKey,
|
||||||
messagePatterns: c.Pattern.Messages,
|
messagePatterns: c.Pattern.Messages,
|
||||||
shouldWrite: c.Initiator,
|
shouldWrite: c.Initiator,
|
||||||
|
initiator: c.Initiator,
|
||||||
rng: c.Random,
|
rng: c.Random,
|
||||||
}
|
}
|
||||||
if hs.rng == nil {
|
if hs.rng == nil {
|
||||||
@ -355,9 +357,17 @@ func (s *HandshakeState) WriteMessage(out, payload []byte) ([]byte, *CipherState
|
|||||||
case MessagePatternDHEE:
|
case MessagePatternDHEE:
|
||||||
s.ss.MixKey(s.ss.cs.DH(s.e.Private, s.re))
|
s.ss.MixKey(s.ss.cs.DH(s.e.Private, s.re))
|
||||||
case MessagePatternDHES:
|
case MessagePatternDHES:
|
||||||
|
if s.initiator {
|
||||||
s.ss.MixKey(s.ss.cs.DH(s.e.Private, s.rs))
|
s.ss.MixKey(s.ss.cs.DH(s.e.Private, s.rs))
|
||||||
case MessagePatternDHSE:
|
} else {
|
||||||
s.ss.MixKey(s.ss.cs.DH(s.s.Private, s.re))
|
s.ss.MixKey(s.ss.cs.DH(s.s.Private, s.re))
|
||||||
|
}
|
||||||
|
case MessagePatternDHSE:
|
||||||
|
if s.initiator {
|
||||||
|
s.ss.MixKey(s.ss.cs.DH(s.s.Private, s.re))
|
||||||
|
} else {
|
||||||
|
s.ss.MixKey(s.ss.cs.DH(s.e.Private, s.rs))
|
||||||
|
}
|
||||||
case MessagePatternDHSS:
|
case MessagePatternDHSS:
|
||||||
s.ss.MixKey(s.ss.cs.DH(s.s.Private, s.rs))
|
s.ss.MixKey(s.ss.cs.DH(s.s.Private, s.rs))
|
||||||
case MessagePatternPSK:
|
case MessagePatternPSK:
|
||||||
@ -430,9 +440,17 @@ func (s *HandshakeState) ReadMessage(out, message []byte) ([]byte, *CipherState,
|
|||||||
case MessagePatternDHEE:
|
case MessagePatternDHEE:
|
||||||
s.ss.MixKey(s.ss.cs.DH(s.e.Private, s.re))
|
s.ss.MixKey(s.ss.cs.DH(s.e.Private, s.re))
|
||||||
case MessagePatternDHES:
|
case MessagePatternDHES:
|
||||||
s.ss.MixKey(s.ss.cs.DH(s.s.Private, s.re))
|
if s.initiator {
|
||||||
case MessagePatternDHSE:
|
|
||||||
s.ss.MixKey(s.ss.cs.DH(s.e.Private, s.rs))
|
s.ss.MixKey(s.ss.cs.DH(s.e.Private, s.rs))
|
||||||
|
} else {
|
||||||
|
s.ss.MixKey(s.ss.cs.DH(s.s.Private, s.re))
|
||||||
|
}
|
||||||
|
case MessagePatternDHSE:
|
||||||
|
if s.initiator {
|
||||||
|
s.ss.MixKey(s.ss.cs.DH(s.s.Private, s.re))
|
||||||
|
} else {
|
||||||
|
s.ss.MixKey(s.ss.cs.DH(s.e.Private, s.rs))
|
||||||
|
}
|
||||||
case MessagePatternDHSS:
|
case MessagePatternDHSS:
|
||||||
s.ss.MixKey(s.ss.cs.DH(s.s.Private, s.rs))
|
s.ss.MixKey(s.ss.cs.DH(s.s.Private, s.rs))
|
||||||
case MessagePatternPSK:
|
case MessagePatternPSK:
|
||||||
|
|||||||
@ -56,7 +56,6 @@ func init() {
|
|||||||
HandshakeXK,
|
HandshakeXK,
|
||||||
HandshakeIK,
|
HandshakeIK,
|
||||||
HandshakeXX,
|
HandshakeXX,
|
||||||
HandshakeXR,
|
|
||||||
HandshakeIX,
|
HandshakeIX,
|
||||||
HandshakeN,
|
HandshakeN,
|
||||||
HandshakeK,
|
HandshakeK,
|
||||||
|
|||||||
@ -29,7 +29,6 @@ func main() {
|
|||||||
HandshakeN,
|
HandshakeN,
|
||||||
HandshakeK,
|
HandshakeK,
|
||||||
HandshakeX,
|
HandshakeX,
|
||||||
HandshakeXR,
|
|
||||||
} {
|
} {
|
||||||
for _, prologue := range []bool{false, true} {
|
for _, prologue := range []bool{false, true} {
|
||||||
for _, payloads := range []bool{false, true} {
|
for _, payloads := range []bool{false, true} {
|
||||||
|
|||||||
3714
vectors.txt
3714
vectors.txt
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user