Files
libsignal/swift/Sources/LibSignalClient/zkgroup/ServerZkAuthOperations.swift
Jordan Rose 9e13263581 Switch to swift-format for formatting instead of swiftformat
swift-format is owned by the Swift project and is generally less
opinionated than swiftformat (but better at formatting to a limited
line length).
2025-06-25 11:24:57 -07:00

76 lines
2.6 KiB
Swift

//
// Copyright 2020-2022 Signal Messenger, LLC.
// SPDX-License-Identifier: AGPL-3.0-only
//
import Foundation
import SignalFfi
public class ServerZkAuthOperations {
let serverSecretParams: ServerSecretParams
public init(serverSecretParams: ServerSecretParams) {
self.serverSecretParams = serverSecretParams
}
public func issueAuthCredentialWithPniZkc(
aci: Aci,
pni: Pni,
redemptionTime: UInt64
) throws -> AuthCredentialWithPniResponse {
return try self.issueAuthCredentialWithPniZkc(
randomness: Randomness.generate(),
aci: aci,
pni: pni,
redemptionTime: redemptionTime
)
}
public func issueAuthCredentialWithPniZkc(
randomness: Randomness,
aci: Aci,
pni: Pni,
redemptionTime: UInt64
) throws -> AuthCredentialWithPniResponse {
return try self.serverSecretParams.withNativeHandle { serverSecretParams in
try randomness.withUnsafePointerToBytes { randomness in
try aci.withPointerToFixedWidthBinary { aci in
try pni.withPointerToFixedWidthBinary { pni in
try invokeFnReturningVariableLengthSerialized {
signal_server_secret_params_issue_auth_credential_with_pni_zkc_deterministic(
$0,
serverSecretParams.const(),
randomness,
aci,
pni,
redemptionTime
)
}
}
}
}
}
}
public func verifyAuthCredentialPresentation(
groupPublicParams: GroupPublicParams,
authCredentialPresentation: AuthCredentialPresentation,
now: Date = Date()
) throws {
try self.serverSecretParams.withNativeHandle { serverSecretParams in
try groupPublicParams.withUnsafePointerToSerialized { groupPublicParams in
try authCredentialPresentation.withUnsafeBorrowedBuffer { authCredentialPresentation in
try checkError(
signal_server_secret_params_verify_auth_credential_presentation(
serverSecretParams.const(),
groupPublicParams,
authCredentialPresentation,
UInt64(now.timeIntervalSince1970)
)
)
}
}
}
}
}