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

signEddsaMessage

signEddsaMessage(driver:secretId:syncSessionId:signSessionId:message:)

public func signEddsaMessage(driver: ProtocolSwift, secretId: String, syncSessionId: String, signSessionId: String, message: String) async throws -> EddsaSignature

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

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

  • См. также: SpatiumProtocol/signEddsaMessage(secretId:syncSessionId:signSessionId:message:)

Пример

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

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

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

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

 // Верифицируем подпись к составному ключу
 print([
     "curve": EddsaCurve.ed25519,
     "publicKey": publicKey,
     "message": message,
     "signature": [
         "R": signature.R,
         "s": signature.s
     ] as [String : Any]
 ] as [String : Any])

Параметры

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

Возвращает

EddsaSignature

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