Fix / fail to update usk when dl own keys
This commit is contained in:
parent
1d84ccd64a
commit
754ca3c582
@ -313,6 +313,25 @@ internal class RealmCryptoStore(private val realmConfiguration: RealmConfigurati
|
|||||||
signingInfo.setSelfSignedKey(keyEntity)
|
signingInfo.setSelfSignedKey(keyEntity)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Only for me
|
||||||
|
if (userSigningKey != null) {
|
||||||
|
val existingUSK = signingInfo.getUserSigningKey()
|
||||||
|
if (existingUSK != null && existingUSK.publicKeyBase64 == userSigningKey.unpaddedBase64PublicKey) {
|
||||||
|
// update signatures?
|
||||||
|
existingUSK.putSignatures(userSigningKey.signatures)
|
||||||
|
existingUSK.usages = userSigningKey.usages?.toTypedArray()?.let { RealmList(*it) }
|
||||||
|
?: RealmList()
|
||||||
|
} else {
|
||||||
|
val keyEntity = realm.createObject(KeyInfoEntity::class.java).apply {
|
||||||
|
this.publicKeyBase64 = userSigningKey.unpaddedBase64PublicKey
|
||||||
|
this.usages = userSigningKey.usages?.toTypedArray()?.let { RealmList(*it) }
|
||||||
|
?: RealmList()
|
||||||
|
this.putSignatures(userSigningKey.signatures)
|
||||||
|
}
|
||||||
|
signingInfo.setUserSignedKey(keyEntity)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
userEntity.crossSigningInfoEntity = signingInfo
|
userEntity.crossSigningInfoEntity = signingInfo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -46,4 +46,14 @@ internal open class CrossSigningInfoEntity(
|
|||||||
.forEach { crossSigningKeys.remove(it) }
|
.forEach { crossSigningKeys.remove(it) }
|
||||||
info?.let { crossSigningKeys.add(it) }
|
info?.let { crossSigningKeys.add(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun getUserSigningKey() = crossSigningKeys.firstOrNull { it.usages.contains(KeyUsage.USER_SIGNING.value) }
|
||||||
|
|
||||||
|
fun setUserSignedKey(info: KeyInfoEntity?) {
|
||||||
|
crossSigningKeys
|
||||||
|
.filter { it.usages.contains(KeyUsage.USER_SIGNING.value) }
|
||||||
|
.forEach { crossSigningKeys.remove(it) }
|
||||||
|
info?.let { crossSigningKeys.add(it) }
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user