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 подпись в стандартном формате