MCPcopy
hub / github.com/WireGuard/wireguard-go / SendHandshakeInitiation

Method SendHandshakeInitiation

device/send.go:98–140  ·  view source on GitHub ↗
(isRetry bool)

Source from the content-addressed store, hash-verified

96}
97
98func (peer *Peer) SendHandshakeInitiation(isRetry bool) error {
99 if !isRetry {
100 peer.timers.handshakeAttempts.Store(0)
101 }
102
103 peer.handshake.mutex.RLock()
104 if time.Since(peer.handshake.lastSentHandshake) < RekeyTimeout {
105 peer.handshake.mutex.RUnlock()
106 return nil
107 }
108 peer.handshake.mutex.RUnlock()
109
110 peer.handshake.mutex.Lock()
111 if time.Since(peer.handshake.lastSentHandshake) < RekeyTimeout {
112 peer.handshake.mutex.Unlock()
113 return nil
114 }
115 peer.handshake.lastSentHandshake = time.Now()
116 peer.handshake.mutex.Unlock()
117
118 peer.device.log.Verbosef("%v - Sending handshake initiation", peer)
119
120 msg, err := peer.device.CreateMessageInitiation(peer)
121 if err != nil {
122 peer.device.log.Errorf("%v - Failed to create initiation message: %v", peer, err)
123 return err
124 }
125
126 packet := make([]byte, MessageInitiationSize)
127 _ = msg.marshal(packet)
128 peer.cookieGenerator.AddMacs(packet)
129
130 peer.timersAnyAuthenticatedPacketTraversal()
131 peer.timersAnyAuthenticatedPacketSent()
132
133 err = peer.SendBuffers([][]byte{packet})
134 if err != nil {
135 peer.device.log.Errorf("%v - Failed to send handshake initiation: %v", peer, err)
136 }
137 peer.timersHandshakeInitiated()
138
139 return err
140}
141
142func (peer *Peer) SendHandshakeResponse() error {
143 peer.handshake.mutex.Lock()

Callers 5

keepKeyFreshReceivingMethod · 0.95
keepKeyFreshSendingMethod · 0.95
SendStagedPacketsMethod · 0.95
expiredNewHandshakeFunction · 0.80

Calls 7

SendBuffersMethod · 0.95
AddMacsMethod · 0.80
marshalMethod · 0.45

Tested by

no test coverage detected