Code polish. Added extra failure if registration data or public key data is null

This commit is contained in:
nathan 2020-09-25 19:52:46 +02:00
parent 21a84bb9d2
commit 4fb5ec8517

View File

@ -79,7 +79,6 @@ internal class ClientHandshake<CONNECTION: Connection>(private val crypto: Crypt
return@FragmentAssembler return@FragmentAssembler
} }
if (this@ClientHandshake.sessionId != message.sessionId) { if (this@ClientHandshake.sessionId != message.sessionId) {
failed = ClientException("[$message.sessionId] ignored message intended for another client (mine is: " + failed = ClientException("[$message.sessionId] ignored message intended for another client (mine is: " +
"${this@ClientHandshake.sessionId})") "${this@ClientHandshake.sessionId})")
@ -87,17 +86,25 @@ internal class ClientHandshake<CONNECTION: Connection>(private val crypto: Crypt
} }
// it must be the correct state // it must be the correct state
val registrationData = message.registrationData
when (message.state) { when (message.state) {
HandshakeMessage.HELLO_ACK -> { HandshakeMessage.HELLO_ACK -> {
// The message was intended for this client. Try to parse it as one of the available message types. // The message was intended for this client. Try to parse it as one of the available message types.
// this message is ENCRYPTED! // this message is ENCRYPTED!
connectionHelloInfo = crypto.decrypt(message.registrationData, message.publicKey) val serverPublicKeyBytes = message.publicKey
if (registrationData != null && serverPublicKeyBytes != null) {
connectionHelloInfo = crypto.decrypt(registrationData, serverPublicKeyBytes)
} else {
failed = ClientException("[$message.sessionId] ignored message without registration and/or public key info")
}
} }
HandshakeMessage.HELLO_ACK_IPC -> { HandshakeMessage.HELLO_ACK_IPC -> {
// The message was intended for this client. Try to parse it as one of the available message types. // The message was intended for this client. Try to parse it as one of the available message types.
// this message is ENCRYPTED! // this message is ENCRYPTED!
val cryptInput = crypto.cryptInput val cryptInput = crypto.cryptInput
cryptInput.buffer = message.registrationData cryptInput.buffer = registrationData
val sessId = cryptInput.readInt() val sessId = cryptInput.readInt()
val streamSubId = cryptInput.readInt() val streamSubId = cryptInput.readInt()