Skip to content
Snippets Groups Projects
Commit e3d6afe8 authored by Sebastian's avatar Sebastian
Browse files

Merge branch '44-random-ids' into 'main'

Add a simple RandomIdManager to generate and validate random IDs

Closes #44

See merge request !25
parents 40c30ab5 f491883b
No related branches found
No related tags found
1 merge request!25Add a simple RandomIdManager to generate and validate random IDs
Pipeline #7813 passed
package org.briarproject.mailbox.core.system
import java.security.SecureRandom
import javax.inject.Inject
private const val ID_SIZE = 32
private const val ID_HEX_SIZE = ID_SIZE * 2
class RandomIdManager @Inject constructor() {
private val secureRandom = SecureRandom()
private val idRegex = Regex("[a-f0-9]{64}")
fun getNewRandomId(): String {
val idBytes = ByteArray(ID_SIZE)
secureRandom.nextBytes(idBytes)
return idBytes.toHex()
}
fun isValidRandomId(id: String): Boolean {
if (id.length != ID_HEX_SIZE) return false
return idRegex.matches(id)
}
}
fun ByteArray.toHex(): String = joinToString(separator = "") { eachByte ->
"%02x".format(eachByte)
}
package org.briarproject.mailbox.core.system
import org.junit.jupiter.api.Test
import kotlin.test.assertEquals
import kotlin.test.assertTrue
class RandomIdManagerTest {
private val randomIdManager = RandomIdManager()
@Test
fun `generated IDs are considered valid`() {
for (i in 0..23) {
val id = randomIdManager.getNewRandomId()
assertEquals(64, id.length)
assertTrue(randomIdManager.isValidRandomId(id))
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment