All Downloads are FREE. Search and download functionalities are using the official Maven repository.

commonMain.net.folivo.trixnity.client.store.KeySignatureTrustLevel.kt Maven / Gradle / Ivy

There is a newer version: 4.7.1
Show newest version
package net.folivo.trixnity.client.store

import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.JsonClassDiscriminator

@OptIn(ExperimentalSerializationApi::class)
@JsonClassDiscriminator("level")
@Serializable
sealed interface KeySignatureTrustLevel {

    /**
     * The key is valid or verified.
     * This level will never be set on master keys.
     */
    @Serializable
    @SerialName("valid")
    data class Valid(val verified: Boolean) : KeySignatureTrustLevel

    /**
     * The key is cross signed. The cross signing key could be verified and so this key is.
     * When set on master key, this means, that this key signs all devices.
     */
    @Serializable
    @SerialName("cross_signed")
    data class CrossSigned(val verified: Boolean) : KeySignatureTrustLevel

    /**
     * There is a master key, but the key has not been cross signed yet.
     * This level will never be set on master keys.
     */
    @Serializable
    @SerialName("not_cross_signed")
    data object NotCrossSigned : KeySignatureTrustLevel

    /**
     * Not all keys are signed by the master key.
     * This level gets only set on master keys.
     */
    @Serializable
    @SerialName("not_all_device_keys_cross_signed")
    data class NotAllDeviceKeysCrossSigned(val verified: Boolean) : KeySignatureTrustLevel

    /**
     * The device key or a key, that signed this device key is blocked.
     */
    @Serializable
    @SerialName("blocked")
    data object Blocked : KeySignatureTrustLevel

    /**
     * The trust level could not be calculated.
     */
    @Serializable
    @SerialName("invalid")
    data class Invalid(val reason: String) : KeySignatureTrustLevel
}

val KeySignatureTrustLevel.isVerified: Boolean
    get() = this is KeySignatureTrustLevel.CrossSigned && this.verified
            || this is KeySignatureTrustLevel.Valid && this.verified




© 2015 - 2024 Weber Informatics LLC | Privacy Policy