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

signEddsaMessage

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

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

Generate distributed EDDSA signature for a given message

This method requires an already performed synchronisation procedure and does not store anythig in the permanent storage. Messages of a length, different from 32 bytes are padded/truncated according to EDDSA algorithm.

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

Example

 // Assume an already performed synchronisation procedure and established connection

 // Generate random session ID for a new signing session
 let signSessionId = UUID().uuidString

 // Message to be signed
 let message = "7hJ9yN2OdIQo2kJu0arZgw2EKnMX5FGtQ6jlCWuLXCM="

 // Generate a EDDSA signature
 let signature = await signEddsaMessage(secretId: String, syncSessionId: String, signSessionId: String, message: String)

 // Verify the resulting signature against a compound public key
 print([
     "curve": EddsaCurve.ed25519,
     "publicKey": publicKey,
     "message": message,
     "signature": [
         "R": signature.R,
         "s": signature.s
     ] as [String : Any]
 ] as [String : Any])

Parameters

Name Description
driver ProtocolSwift implementation
secretId ID (UUID) of a secret used for synchronisation
syncSessionId ID (UUID) of a corresponding synchronisation procedure
signSessionId ID (UUID) of this signing procedure
message message (32 bytes, base64 encoded) to be signed

Returns

EddsaSignature

EDDSA signature in standard format