Перейти к содержанию

Spatium SDK > signEddsaMessage

signEddsaMessage

suspend fun signEddsaMessage(driver: ProtocolKotlin, secretId: String, syncSessionId: String, signSessionId: String, message: String): EddsaSignature

Генерирует распределенную EDDSA подпись для данного сообщения (отдельный помощник)

Для этого метода необходима уже пройденная процедура синхронизации и так же ничего не должно быть помещено в постоянное хранилище. Сообщения с объемом информации отличным от 32 байт будут дополнены/урезаны в соответствии с EDDSA алгоритмом.

Возвращает

EddsaSignature

EDDSA подпись в стандартном формате

  • SeeAlso: SpatiumProtocol/signEddsaMessage(secretId:syncSessionId:signSessionId:message:)

Пример

// Считаем, что процедура синхронизации уже пройдена и соединение установлено

// Генерируем рандомный session ID для новой сессии подписания
val signSessionId = UUID.randomUUID().toString()

// Сообщение к подписанию
val message = "7hJ9yN2OdIQo2kJu0arZgw2EKnMX5FGtQ6jlCWuLXCM="

// Генерируем EDDSA подпись
val signature = signEddsaMessage(secretId: String, syncSessionId: String, signSessionId: String, message: String)

// Верифицируем подпись к составному ключу
println(
 mapOf(
     "curve" to EcdsaCurve.secp256k1,
     "publicKey" to publicKey,
     "message" to message,
     "signature" to mapOf(
         "r" to signature.r,
         "s" to signature.s,
         "recovery" to signature.recovery
     )
 )
)

Параметры

androidJvm

Имя Описание
driver имплементация ProtocolKotlin
secretId ID (UUID) of a secret used for synchronisation
syncSessionId ID (UUID) соответствующей процедуры синхронизации
signSessionId ID (UUID) данной процедуры подписания
message сообщение (32 байта base64-encoded) к подписанию