Improve new convo error messages

This commit is contained in:
Andrew
2024-03-27 12:22:53 +10:30
parent 006c50e38d
commit e25b90b229
6 changed files with 25 additions and 27 deletions

View File

@@ -1,7 +1,7 @@
package org.session.libsignal.utilities
enum class IdPrefix(val value: String) {
STANDARD("05"), BLINDED("15"), UN_BLINDED("00"), BLINDEDV2("25");
STANDARD("05"), BLINDED("15"), UN_BLINDED("00"), BLINDEDV2("25"), GROUP("03");
fun isBlinded() = value == BLINDED.value || value == BLINDEDV2.value
@@ -11,6 +11,7 @@ enum class IdPrefix(val value: String) {
BLINDED.value -> BLINDED
BLINDEDV2.value -> BLINDEDV2
UN_BLINDED.value -> UN_BLINDED
GROUP.value -> GROUP
else -> null
}
}

View File

@@ -1,18 +1,11 @@
package org.session.libsignal.utilities
object PublicKeyValidation {
private val HEX_CHARACTERS = "0123456789ABCDEF".toSet()
private val INVALID_PREFIXES = setOf(IdPrefix.GROUP, IdPrefix.BLINDED, IdPrefix.BLINDEDV2)
@JvmStatic
fun isValid(candidate: String): Boolean {
return isValid(candidate, 66, true)
}
@JvmStatic
fun isValid(candidate: String, expectedLength: Int, isPrefixRequired: Boolean): Boolean {
val hexCharacters = "0123456789ABCDEF".toSet()
val isValidHexEncoding = hexCharacters.containsAll(candidate.uppercase().toSet())
val hasValidLength = candidate.length == expectedLength
val hasValidPrefix = if (isPrefixRequired) IdPrefix.fromValue(candidate) != null else true
return isValidHexEncoding && hasValidLength && hasValidPrefix
}
fun isValid(candidate: String, isPrefixRequired: Boolean = true): Boolean = hasValidLength(candidate) && isValidHexEncoding(candidate) && (!isPrefixRequired || IdPrefix.fromValue(candidate) != null)
fun hasValidPrefix(candidate: String) = IdPrefix.fromValue(candidate) !in INVALID_PREFIXES
private fun hasValidLength(candidate: String) = candidate.length == 66
private fun isValidHexEncoding(candidate: String) = HEX_CHARACTERS.containsAll(candidate.uppercase().toSet())
}