mirror of
https://github.com/signalapp/libsignal.git
synced 2026-04-27 18:17:38 +02:00
swift-format is owned by the Swift project and is generally less opinionated than swiftformat (but better at formatting to a limited line length).
94 lines
3.5 KiB
Swift
94 lines
3.5 KiB
Swift
//
|
|
// Copyright 2020-2021 Signal Messenger, LLC.
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
//
|
|
|
|
import Foundation
|
|
import SignalFfi
|
|
|
|
public class ClientZkReceiptOperations {
|
|
let serverPublicParams: ServerPublicParams
|
|
|
|
public init(serverPublicParams: ServerPublicParams) {
|
|
self.serverPublicParams = serverPublicParams
|
|
}
|
|
|
|
public func createReceiptCredentialRequestContext(
|
|
receiptSerial: ReceiptSerial
|
|
) throws -> ReceiptCredentialRequestContext {
|
|
return try self.createReceiptCredentialRequestContext(
|
|
randomness: Randomness.generate(),
|
|
receiptSerial: receiptSerial
|
|
)
|
|
}
|
|
|
|
public func createReceiptCredentialRequestContext(
|
|
randomness: Randomness,
|
|
receiptSerial: ReceiptSerial
|
|
) throws -> ReceiptCredentialRequestContext {
|
|
return try self.serverPublicParams.withNativeHandle { serverPublicParams in
|
|
try randomness.withUnsafePointerToBytes { randomness in
|
|
try receiptSerial.withUnsafePointerToSerialized { receiptSerial in
|
|
try invokeFnReturningSerialized {
|
|
signal_server_public_params_create_receipt_credential_request_context_deterministic(
|
|
$0,
|
|
serverPublicParams.const(),
|
|
randomness,
|
|
receiptSerial
|
|
)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public func receiveReceiptCredential(
|
|
receiptCredentialRequestContext: ReceiptCredentialRequestContext,
|
|
receiptCredentialResponse: ReceiptCredentialResponse
|
|
) throws -> ReceiptCredential {
|
|
return try self.serverPublicParams.withNativeHandle { serverPublicParams in
|
|
try receiptCredentialRequestContext.withUnsafePointerToSerialized { requestContext in
|
|
try receiptCredentialResponse.withUnsafePointerToSerialized { response in
|
|
try invokeFnReturningSerialized {
|
|
signal_server_public_params_receive_receipt_credential(
|
|
$0,
|
|
serverPublicParams.const(),
|
|
requestContext,
|
|
response
|
|
)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public func createReceiptCredentialPresentation(
|
|
receiptCredential: ReceiptCredential
|
|
) throws -> ReceiptCredentialPresentation {
|
|
return try self.createReceiptCredentialPresentation(
|
|
randomness: Randomness.generate(),
|
|
receiptCredential: receiptCredential
|
|
)
|
|
}
|
|
|
|
public func createReceiptCredentialPresentation(
|
|
randomness: Randomness,
|
|
receiptCredential: ReceiptCredential
|
|
) throws -> ReceiptCredentialPresentation {
|
|
return try self.serverPublicParams.withNativeHandle { serverPublicParams in
|
|
try randomness.withUnsafePointerToBytes { randomness in
|
|
try receiptCredential.withUnsafePointerToSerialized { receiptCredential in
|
|
try invokeFnReturningSerialized {
|
|
signal_server_public_params_create_receipt_credential_presentation_deterministic(
|
|
$0,
|
|
serverPublicParams.const(),
|
|
randomness,
|
|
receiptCredential
|
|
)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|