Fixing hex and time functions
This commit is contained in:
+2
-1
@@ -41,6 +41,7 @@ import com.vitorpamplona.amethyst.ui.navigation.navs.INav
|
||||
import com.vitorpamplona.amethyst.ui.navigation.routes.Route
|
||||
import com.vitorpamplona.amethyst.ui.navigation.topbars.CreatingTopBar
|
||||
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
|
||||
import com.vitorpamplona.quartz.nip01Core.core.toHexKey
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlin.random.Random
|
||||
@@ -61,7 +62,7 @@ fun CreateGroupScreen(
|
||||
onPost = {
|
||||
isCreating = true
|
||||
scope.launch(Dispatchers.IO) {
|
||||
val nostrGroupId = Random.nextBytes(32).joinToString("") { "%02x".format(it) }
|
||||
val nostrGroupId = Random.nextBytes(32).toHexKey()
|
||||
accountViewModel.createMarmotGroup(nostrGroupId)
|
||||
if (groupName.isNotBlank()) {
|
||||
accountViewModel.account.marmotGroupList
|
||||
|
||||
+2
-1
@@ -30,6 +30,7 @@ import com.vitorpamplona.quartz.marmot.mls.tree.Credential
|
||||
import com.vitorpamplona.quartz.marmot.mls.tree.LeafNode
|
||||
import com.vitorpamplona.quartz.marmot.mls.tree.LeafNodeSource
|
||||
import com.vitorpamplona.quartz.marmot.mls.tree.Lifetime
|
||||
import com.vitorpamplona.quartz.utils.TimeUtils
|
||||
|
||||
/**
|
||||
* Manages KeyPackage creation and rotation lifecycle (MIP-00).
|
||||
@@ -190,7 +191,7 @@ class KeyPackageRotationManager {
|
||||
identity: ByteArray,
|
||||
signingKey: ByteArray,
|
||||
): LeafNode {
|
||||
val now = System.currentTimeMillis() / 1000
|
||||
val now = TimeUtils.now()
|
||||
val unsigned =
|
||||
LeafNode(
|
||||
encryptionKey = encryptionKey,
|
||||
|
||||
@@ -55,6 +55,8 @@ import com.vitorpamplona.quartz.marmot.mls.tree.LeafNodeSource
|
||||
import com.vitorpamplona.quartz.marmot.mls.tree.Lifetime
|
||||
import com.vitorpamplona.quartz.marmot.mls.tree.RatchetTree
|
||||
import com.vitorpamplona.quartz.marmot.mls.tree.UpdatePathNode
|
||||
import com.vitorpamplona.quartz.nip01Core.core.toHexKey
|
||||
import com.vitorpamplona.quartz.utils.TimeUtils
|
||||
import com.vitorpamplona.quartz.utils.mac.MacInstance
|
||||
|
||||
/**
|
||||
@@ -170,11 +172,9 @@ class MlsGroup private constructor(
|
||||
pskId: ByteArray,
|
||||
psk: ByteArray,
|
||||
) {
|
||||
pskStore[pskId.toHexId()] = psk
|
||||
pskStore[pskId.toHexKey()] = psk
|
||||
}
|
||||
|
||||
private fun ByteArray.toHexId(): String = joinToString("") { "%02x".format(it) }
|
||||
|
||||
/**
|
||||
* Get the list of members (leaf index -> LeafNode).
|
||||
*/
|
||||
@@ -845,7 +845,7 @@ class MlsGroup private constructor(
|
||||
var pskSecret = ByteArray(MlsCryptoProvider.HASH_OUTPUT_LENGTH)
|
||||
for (pskProposal in pskProposals) {
|
||||
val pskValue =
|
||||
pskStore[pskProposal.pskId.toHexId()]
|
||||
pskStore[pskProposal.pskId.toHexKey()]
|
||||
?: ByteArray(MlsCryptoProvider.HASH_OUTPUT_LENGTH) // Unknown PSK = zeros
|
||||
pskSecret = MlsCryptoProvider.hkdfExtract(pskSecret, pskValue)
|
||||
}
|
||||
@@ -990,7 +990,7 @@ class MlsGroup private constructor(
|
||||
// Validate KeyPackage lifetime (RFC 9420 Section 10.1)
|
||||
val lifetime = proposal.keyPackage.leafNode.lifetime
|
||||
if (lifetime != null) {
|
||||
val now = System.currentTimeMillis() / 1000
|
||||
val now = TimeUtils.now()
|
||||
require(now >= lifetime.notBefore && now <= lifetime.notAfter) {
|
||||
"KeyPackage lifetime expired or not yet valid"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user