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

signEcdsaMessage

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

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

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

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

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

Пример

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

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

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

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

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

Параметры

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

Возвращает

EcdsaSignature

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