mirror of
https://github.com/amnezia-vpn/amneziawg-go.git
synced 2025-09-02 16:12:51 +02:00
fix: default wg protocol
This commit is contained in:
parent
70292c0ae3
commit
675b7b7531
4 changed files with 53 additions and 24 deletions
|
@ -7,6 +7,15 @@ import (
|
|||
)
|
||||
|
||||
func setUpJunkCreator() JunkCreator {
|
||||
mh, _ := NewMagicHeaders(
|
||||
[]MagicHeader{
|
||||
NewMagicHeaderSameValue(123456),
|
||||
NewMagicHeaderSameValue(67543),
|
||||
NewMagicHeaderSameValue(32345),
|
||||
NewMagicHeaderSameValue(123123),
|
||||
},
|
||||
)
|
||||
|
||||
jc := NewJunkCreator(Cfg{
|
||||
IsSet: true,
|
||||
JunkPacketCount: 5,
|
||||
|
@ -14,11 +23,7 @@ func setUpJunkCreator() JunkCreator {
|
|||
JunkPacketMaxSize: 1000,
|
||||
InitHeaderJunkSize: 30,
|
||||
ResponseHeaderJunkSize: 40,
|
||||
// TODO
|
||||
// InitPacketMagicHeader: 123456,
|
||||
// ResponsePacketMagicHeader: 67543,
|
||||
// UnderloadPacketMagicHeader: 32345,
|
||||
// TransportPacketMagicHeader: 123123,
|
||||
MagicHeaders: mh,
|
||||
})
|
||||
|
||||
return jc
|
||||
|
|
|
@ -154,7 +154,7 @@ func (st *CookieChecker) CreateReply(
|
|||
smac1 := smac2 - blake2s.Size128
|
||||
|
||||
reply := new(MessageCookieReply)
|
||||
reply.Type = msgType
|
||||
reply.Type = msgType
|
||||
reply.Receiver = recv
|
||||
|
||||
_, err := rand.Read(reply.Nonce[:])
|
||||
|
|
|
@ -205,18 +205,22 @@ func (device *Device) CreateMessageInitiation(peer *Peer) (*MessageInitiation, e
|
|||
|
||||
handshake.mixHash(handshake.remoteStatic[:])
|
||||
|
||||
device.awg.Mux.RLock()
|
||||
msgType, err := device.awg.GetMsgType(DefaultMessageInitiationType)
|
||||
if err != nil {
|
||||
msgType := DefaultMessageInitiationType
|
||||
if device.isAWG() {
|
||||
device.awg.Mux.RLock()
|
||||
msgType, err = device.awg.GetMsgType(DefaultMessageInitiationType)
|
||||
if err != nil {
|
||||
device.awg.Mux.RUnlock()
|
||||
return nil, fmt.Errorf("get message type: %w", err)
|
||||
}
|
||||
|
||||
device.awg.Mux.RUnlock()
|
||||
return nil, fmt.Errorf("get message type: %w", err)
|
||||
}
|
||||
|
||||
msg := MessageInitiation{
|
||||
Type: msgType,
|
||||
Ephemeral: handshake.localEphemeral.publicKey(),
|
||||
}
|
||||
device.awg.Mux.RUnlock()
|
||||
|
||||
handshake.mixKey(msg.Ephemeral[:])
|
||||
handshake.mixHash(msg.Ephemeral[:])
|
||||
|
@ -391,14 +395,19 @@ func (device *Device) CreateMessageResponse(peer *Peer) (*MessageResponse, error
|
|||
}
|
||||
|
||||
var msg MessageResponse
|
||||
device.awg.Mux.RLock()
|
||||
msg.Type, err = device.awg.GetMsgType(DefaultMessageResponseType)
|
||||
if err != nil {
|
||||
if device.isAWG() {
|
||||
device.awg.Mux.RLock()
|
||||
msg.Type, err = device.awg.GetMsgType(DefaultMessageResponseType)
|
||||
if err != nil {
|
||||
device.awg.Mux.RUnlock()
|
||||
return nil, fmt.Errorf("get message type: %w", err)
|
||||
}
|
||||
|
||||
device.awg.Mux.RUnlock()
|
||||
return nil, fmt.Errorf("get message type: %w", err)
|
||||
} else {
|
||||
msg.Type = DefaultMessageResponseType
|
||||
}
|
||||
|
||||
device.awg.Mux.RUnlock()
|
||||
msg.Sender = handshake.localIndex
|
||||
msg.Receiver = handshake.remoteIndex
|
||||
|
||||
|
|
|
@ -237,10 +237,17 @@ func (device *Device) SendHandshakeCookie(
|
|||
device.log.Verbosef("Sending cookie response for denied handshake message for %v", initiatingElem.endpoint.DstToString())
|
||||
|
||||
sender := binary.LittleEndian.Uint32(initiatingElem.packet[4:8])
|
||||
msgType, err := device.awg.GetMsgType(DefaultMessageCookieReplyType)
|
||||
if err != nil {
|
||||
device.log.Errorf("Get message type for cookie reply: %v", err)
|
||||
return err
|
||||
msgType := DefaultMessageCookieReplyType
|
||||
if device.isAWG() {
|
||||
device.awg.Mux.RLock()
|
||||
|
||||
var err error
|
||||
msgType, err = device.awg.GetMsgType(DefaultMessageCookieReplyType)
|
||||
device.awg.Mux.RUnlock()
|
||||
if err != nil {
|
||||
device.log.Errorf("Get message type for cookie reply: %v", err)
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
reply, err := device.cookieChecker.CreateReply(
|
||||
|
@ -530,11 +537,19 @@ func (device *Device) RoutineEncryption(id int) {
|
|||
fieldReceiver := header[4:8]
|
||||
fieldNonce := header[8:16]
|
||||
|
||||
msgType, err := device.awg.GetMsgType(DefaultMessageTransportType)
|
||||
if err != nil {
|
||||
device.log.Errorf("get message type for transport: %v", err)
|
||||
continue
|
||||
msgType := DefaultMessageTransportType
|
||||
if device.isAWG() {
|
||||
device.awg.Mux.RLock()
|
||||
|
||||
var err error
|
||||
msgType, err = device.awg.GetMsgType(DefaultMessageTransportType)
|
||||
device.awg.Mux.RUnlock()
|
||||
if err != nil {
|
||||
device.log.Errorf("get message type for transport: %v", err)
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
binary.LittleEndian.PutUint32(fieldType, msgType)
|
||||
binary.LittleEndian.PutUint32(fieldReceiver, elem.keypair.remoteIndex)
|
||||
binary.LittleEndian.PutUint64(fieldNonce, elem.nonce)
|
||||
|
|
Loading…
Add table
Reference in a new issue