diff --git a/Sources/libdkls/include/dkls.h b/Sources/libdkls/include/dkls.h
index 2eb86df..92efc60 100644
--- a/Sources/libdkls/include/dkls.h
+++ b/Sources/libdkls/include/dkls.h
@@ -30,9 +30,9 @@
//MsgComm
struct DKLSMsgComm* dkls_comm(int index,int parties,const char* session,
- const char* (*read_msg_callback)(const char*,unsigned long long int,unsigned long long int,const char*),
- bool (*send_msg_callback)(const char*,unsigned long long int,unsigned long long int,const char*,const char*), int* error_code);
- void dkls_comm_free(struct DKLSMsgComm* comm);
+ const char* (*read_msg_callback)(const char*,unsigned long long int,unsigned long long int,const char*, const void*),
+ bool (*send_msg_callback)(const char*,unsigned long long int,unsigned long long int,const char*,const char*, const void*), const void* parent_instance_ref, int* error_code);
+ const void* dkls_comm_free(struct DKLSMsgComm* comm);
//Random Generator
struct ChaChaRng* random_generator(const char* state, int* error_code);
diff --git a/Sources/libdkls/libdkls.xcframework/Info.plist b/Sources/libdkls/libdkls.xcframework/Info.plist
index a0ee820..76ef450 100644
--- a/Sources/libdkls/libdkls.xcframework/Info.plist
+++ b/Sources/libdkls/libdkls.xcframework/Info.plist
@@ -8,7 +8,7 @@
BinaryPath
libdkls.a
LibraryIdentifier
- macos-arm64_x86_64
+ ios-arm64_x86_64-simulator
LibraryPath
libdkls.a
SupportedArchitectures
@@ -17,13 +17,15 @@
x86_64
SupportedPlatform
- macos
+ ios
+ SupportedPlatformVariant
+ simulator
BinaryPath
libdkls.a
LibraryIdentifier
- ios-arm64_x86_64-simulator
+ macos-arm64_x86_64
LibraryPath
libdkls.a
SupportedArchitectures
@@ -32,9 +34,7 @@
x86_64
SupportedPlatform
- ios
- SupportedPlatformVariant
- simulator
+ macos
CFBundlePackageType
diff --git a/Sources/libdkls/libdkls.xcframework/ios-arm64_x86_64-simulator/libdkls.a b/Sources/libdkls/libdkls.xcframework/ios-arm64_x86_64-simulator/libdkls.a
index cf07d16..f2dc9c1 100644
Binary files a/Sources/libdkls/libdkls.xcframework/ios-arm64_x86_64-simulator/libdkls.a and b/Sources/libdkls/libdkls.xcframework/ios-arm64_x86_64-simulator/libdkls.a differ
diff --git a/Sources/libdkls/libdkls.xcframework/macos-arm64_x86_64/libdkls.a b/Sources/libdkls/libdkls.xcframework/macos-arm64_x86_64/libdkls.a
index 33d2fef..1d8e60a 100644
Binary files a/Sources/libdkls/libdkls.xcframework/macos-arm64_x86_64/libdkls.a and b/Sources/libdkls/libdkls.xcframework/macos-arm64_x86_64/libdkls.a differ
diff --git a/Sources/tss-client-swift/TSSClient.swift b/Sources/tss-client-swift/TSSClient.swift
index 4ae11f2..855cadf 100644
--- a/Sources/tss-client-swift/TSSClient.swift
+++ b/Sources/tss-client-swift/TSSClient.swift
@@ -66,7 +66,7 @@ public class TSSClient {
}
}
- let readMsg: (@convention(c) (UnsafePointer?, UInt64, UInt64, UnsafePointer?) -> UnsafePointer?)? = { sessionCString, index, party, msgTypeCString in
+ let readMsg: (@convention(c) (UnsafePointer?, UInt64, UInt64, UnsafePointer?, UnsafeRawPointer?) -> UnsafePointer?)? = { sessionCString, index, party, msgTypeCString, obj_ref in
// index = recipient
// party = sender
if let sessionCString = sessionCString, let msgTypeCString = msgTypeCString {
@@ -115,7 +115,7 @@ public class TSSClient {
return ("" as NSString).utf8String
}
- let sendMsg: (@convention(c) (UnsafePointer?, UInt64, UInt64, UnsafePointer?, UnsafePointer?) -> Bool)? = { sessionCString, index, recipient, msgTypeCString, msgDataCString in
+ let sendMsg: (@convention(c) (UnsafePointer?, UInt64, UInt64, UnsafePointer?, UnsafePointer?, UnsafeRawPointer?) -> Bool)? = { sessionCString, index, recipient, msgTypeCString, msgDataCString, obj_ref in
// index = sender
if let sessionCString = sessionCString, let msgTypeCString = msgTypeCString, let msgDataCString = msgDataCString {
let session = String(cString: sessionCString)
diff --git a/Sources/tss-client-swift/dkls/DKLSComm.swift b/Sources/tss-client-swift/dkls/DKLSComm.swift
index 9b25133..9b54b69 100644
--- a/Sources/tss-client-swift/dkls/DKLSComm.swift
+++ b/Sources/tss-client-swift/dkls/DKLSComm.swift
@@ -5,21 +5,25 @@ import Foundation
internal final class DKLSComm {
private(set) var pointer: OpaquePointer?
-
+ // This is a placeholder to satisfy the interface,
+ // tracking this object is not necessary in swift as it maintains context
+ // on entry for the callback
+ private var obj_ref: UnsafeRawPointer?
+
// Note:
- // readMsgCallback(session, index, remote, msg_type) -> msg_data
- // sendMsgCallback(session, index, recipient, msg_type, msg_data) -> Bool
+ // readMsgCallback(session, index, remote, msg_type, obj_ref) -> msg_data
+ // sendMsgCallback(session, index, recipient, msg_type, msg_data, obj_ref) -> Bool
public init(session: String,
index: Int32,
parties: Int32,
- readMsgCallback: (@convention(c) (UnsafePointer?, UInt64, UInt64, UnsafePointer?) -> UnsafePointer?)?,
- sendMsgCallback: (@convention(c) (UnsafePointer?, UInt64, UInt64, UnsafePointer?, UnsafePointer?) -> Bool)?
+ readMsgCallback: (@convention(c) (UnsafePointer?, UInt64, UInt64, UnsafePointer?, UnsafeRawPointer?) -> UnsafePointer?)?,
+ sendMsgCallback: (@convention(c) (UnsafePointer?, UInt64, UInt64, UnsafePointer?, UnsafePointer?, UnsafeRawPointer?) -> Bool)?
) throws {
var errorCode: Int32 = -1
let sessionPointer = UnsafePointer((session as NSString).utf8String)
let result = withUnsafeMutablePointer(to: &errorCode, { error in
- dkls_comm(index, parties, sessionPointer, readMsgCallback, sendMsgCallback, error)
+ dkls_comm(index, parties, sessionPointer, readMsgCallback, sendMsgCallback, obj_ref, error)
})
guard errorCode == 0 else {
throw DKLSError("Error creating comm")