|
@@ -127,7 +127,7 @@ internal class ScramMechanism(private val algorithm: String, override val priori
|
127
|
127
|
private fun pbkdf2(keyMaterial: ByteArray, initialSalt: ByteArray, iterations: Int): ByteArray {
|
128
|
128
|
var salt = initialSalt + 0x00 + 0x00 + 0x00 + 0x01
|
129
|
129
|
var result: ByteArray? = null
|
130
|
|
- for (i in 1..iterations) {
|
|
130
|
+ repeat(iterations) {
|
131
|
131
|
salt = hmac(keyMaterial, salt)
|
132
|
132
|
result = result?.xor(salt) ?: salt
|
133
|
133
|
}
|
|
@@ -136,8 +136,9 @@ internal class ScramMechanism(private val algorithm: String, override val priori
|
136
|
136
|
|
137
|
137
|
private val IrcClient.scramState: ScramState
|
138
|
138
|
get() = with(serverState.sasl) {
|
139
|
|
- mechanismState = mechanismState as? ScramState ?: com.dmdirc.ktirc.sasl.ScramState()
|
140
|
|
- mechanismState as ScramState
|
|
139
|
+ (mechanismState as? ScramState ?: com.dmdirc.ktirc.sasl.ScramState()).apply {
|
|
140
|
+ mechanismState = this
|
|
141
|
+ }
|
141
|
142
|
}
|
142
|
143
|
|
143
|
144
|
private fun ByteArray.xor(other: ByteArray): ByteArray = zip(other) { a, b -> a.xor(b) }.toByteArray()
|