// // Copyright 2020-2022 Signal Messenger, LLC. // SPDX-License-Identifier: AGPL-3.0-only // import SignalFfi import Foundation public class SenderKeyRecord: ClonableHandleOwner { internal override class func destroyNativeHandle(_ handle: OpaquePointer) -> SignalFfiErrorRef? { return signal_sender_key_record_destroy(handle) } internal override class func cloneNativeHandle(_ newHandle: inout OpaquePointer?, currentHandle: OpaquePointer?) -> SignalFfiErrorRef? { return signal_sender_key_record_clone(&newHandle, currentHandle) } public convenience init(bytes: Bytes) throws { let handle: OpaquePointer? = try bytes.withUnsafeBorrowedBuffer { var result: OpaquePointer? try checkError(signal_sender_key_record_deserialize(&result, $0)) return result } self.init(owned: handle!) } public func serialize() -> [UInt8] { return withNativeHandle { nativeHandle in failOnError { try invokeFnReturningArray { signal_sender_key_record_serialize($0, $1, nativeHandle) } } } } }