mirror of
https://github.com/signalapp/libsignal.git
synced 2026-04-28 10:37: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).
67 lines
2.4 KiB
Swift
67 lines
2.4 KiB
Swift
//
|
|
// Copyright 2020-2021 Signal Messenger, LLC.
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
//
|
|
|
|
import Foundation
|
|
import SignalFfi
|
|
|
|
public class ServerZkReceiptOperations {
|
|
let serverSecretParams: ServerSecretParams
|
|
|
|
public init(serverSecretParams: ServerSecretParams) {
|
|
self.serverSecretParams = serverSecretParams
|
|
}
|
|
|
|
public func issueReceiptCredential(
|
|
receiptCredentialRequest: ReceiptCredentialRequest,
|
|
receiptExpirationTime: UInt64,
|
|
receiptLevel: UInt64
|
|
) throws -> ReceiptCredentialResponse {
|
|
return try self.issueReceiptCredential(
|
|
randomness: Randomness.generate(),
|
|
receiptCredentialRequest: receiptCredentialRequest,
|
|
receiptExpirationTime: receiptExpirationTime,
|
|
receiptLevel: receiptLevel
|
|
)
|
|
}
|
|
|
|
public func issueReceiptCredential(
|
|
randomness: Randomness,
|
|
receiptCredentialRequest: ReceiptCredentialRequest,
|
|
receiptExpirationTime: UInt64,
|
|
receiptLevel: UInt64
|
|
) throws -> ReceiptCredentialResponse {
|
|
return try self.serverSecretParams.withNativeHandle { serverSecretParams in
|
|
try randomness.withUnsafePointerToBytes { randomness in
|
|
try receiptCredentialRequest.withUnsafePointerToSerialized { receiptCredentialRequest in
|
|
try invokeFnReturningSerialized {
|
|
signal_server_secret_params_issue_receipt_credential_deterministic(
|
|
$0,
|
|
serverSecretParams.const(),
|
|
randomness,
|
|
receiptCredentialRequest,
|
|
receiptExpirationTime,
|
|
receiptLevel
|
|
)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public func verifyReceiptCredentialPresentation(receiptCredentialPresentation: ReceiptCredentialPresentation) throws
|
|
{
|
|
try self.serverSecretParams.withNativeHandle { serverSecretParams in
|
|
try receiptCredentialPresentation.withUnsafePointerToSerialized { receiptCredentialPresentation in
|
|
try checkError(
|
|
signal_server_secret_params_verify_receipt_credential_presentation(
|
|
serverSecretParams.const(),
|
|
receiptCredentialPresentation
|
|
)
|
|
)
|
|
}
|
|
}
|
|
}
|
|
}
|