
commonMain.org.ton.api.pub.ed25519.kt Maven / Gradle / Ivy
@file:Suppress("NOTHING_TO_INLINE")
package org.ton.api.pub
import io.ktor.utils.io.core.*
import kotlinx.serialization.Polymorphic
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import org.ton.api.adnl.AdnlIdShort
import org.ton.api.pk.PrivateKeyEd25519
import org.ton.crypto.*
import org.ton.tl.*
import kotlin.jvm.JvmStatic
public inline fun PublicKeyEd25519(privateKey: PrivateKeyEd25519): PublicKeyEd25519 = PublicKeyEd25519.of(privateKey)
@Serializable
@SerialName("pub.ed25519")
@Polymorphic
public data class PublicKeyEd25519(
val key: Bits256
) : PublicKey, Encryptor by EncryptorEd25519(key.toByteArray()) {
public constructor(key: ByteArray) : this(Bits256(key))
private val _adnlIdShort: AdnlIdShort by lazy(LazyThreadSafetyMode.PUBLICATION) {
AdnlIdShort(PublicKeyEd25519.hash(this))
}
override fun toAdnlIdShort(): AdnlIdShort = _adnlIdShort
public companion object : TlCodec by PublicKeyEd25519TlConstructor {
@JvmStatic
public fun tlConstructor(): TlConstructor = PublicKeyEd25519TlConstructor
@JvmStatic
public fun of(privateKey: PrivateKeyEd25519): PublicKeyEd25519 =
PublicKeyEd25519(Ed25519.publicKey(privateKey.key.toByteArray()))
}
}
private object PublicKeyEd25519TlConstructor : TlConstructor(
schema = "pub.ed25519 key:int256 = PublicKey",
) {
override fun encode(writer: TlWriter, value: PublicKeyEd25519) {
writer.writeBits256(value.key)
}
override fun decode(reader: TlReader): PublicKeyEd25519 {
val key = reader.readBits256()
return PublicKeyEd25519(key)
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy