mirror of
https://github.com/permissionlesstech/bitchat.git
synced 2026-07-26 11:25:19 +00:00
Authenticate only completed Noise candidates
This commit is contained in:
@@ -8,6 +8,7 @@ struct BLENoisePacketHandlerTests {
|
||||
|
||||
private final class Recorder {
|
||||
var handshakeResult: Result<Data?, Error> = .success(nil)
|
||||
var handshakeAuthenticated = false
|
||||
var hasSession = false
|
||||
var decryptResult: Result<Data, Error> = .success(Data())
|
||||
|
||||
@@ -38,7 +39,11 @@ struct BLENoisePacketHandlerTests {
|
||||
now: { now },
|
||||
processHandshakeMessage: { peerID, message in
|
||||
recorder.processedHandshakes.append((peerID, message))
|
||||
return try recorder.handshakeResult.get()
|
||||
return NoiseHandshakeProcessingResult(
|
||||
response: try recorder.handshakeResult.get(),
|
||||
didEstablishAuthenticatedSession:
|
||||
recorder.handshakeAuthenticated
|
||||
)
|
||||
},
|
||||
hasNoiseSession: { peerID in
|
||||
recorder.hasSessionQueries.append(peerID)
|
||||
@@ -110,6 +115,24 @@ struct BLENoisePacketHandlerTests {
|
||||
#expect(recorder.initiatedHandshakes.isEmpty)
|
||||
}
|
||||
|
||||
@Test
|
||||
func handshakeResultPreservesExactCandidateAuthentication() {
|
||||
let recorder = Recorder()
|
||||
recorder.handshakeAuthenticated = true
|
||||
let handler = makeHandler(recorder: recorder)
|
||||
let packet = makeHandshakePacket(
|
||||
recipientID: Data(hexString: localPeerID.id)
|
||||
)
|
||||
|
||||
let result = handler.handleHandshakeWithResult(
|
||||
packet,
|
||||
from: remotePeerID
|
||||
)
|
||||
|
||||
#expect(result.processed)
|
||||
#expect(result.didEstablishAuthenticatedSession)
|
||||
}
|
||||
|
||||
@Test
|
||||
func handshakeForAnotherPeerIsIgnored() {
|
||||
let recorder = Recorder()
|
||||
|
||||
Reference in New Issue
Block a user