mirror of
https://github.com/signalapp/libsignal.git
synced 2026-05-02 12:32:47 +02:00
The former is what we want going forward; the latter is equivalent to the old format for compatibility with previous client builds.
80 lines
3.6 KiB
Swift
80 lines
3.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 issueAuthCredential(aci: Aci, redemptionTime: UInt32) throws -> AuthCredentialResponse {
|
|
return try issueAuthCredential(randomness: Randomness.generate(), aci: aci, redemptionTime: redemptionTime)
|
|
}
|
|
|
|
public func issueAuthCredential(randomness: Randomness, aci: Aci, redemptionTime: UInt32) throws -> AuthCredentialResponse {
|
|
return try serverSecretParams.withUnsafePointerToSerialized { serverSecretParams in
|
|
try randomness.withUnsafePointerToBytes { randomness in
|
|
try aci.withPointerToFixedWidthBinary { aci in
|
|
try invokeFnReturningSerialized {
|
|
signal_server_secret_params_issue_auth_credential_deterministic($0, serverSecretParams, randomness, aci, redemptionTime)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public func issueAuthCredentialWithPniAsServiceId(aci: Aci, pni: Pni, redemptionTime: UInt64) throws -> AuthCredentialWithPniResponse {
|
|
return try issueAuthCredentialWithPniAsServiceId(randomness: Randomness.generate(), aci: aci, pni: pni, redemptionTime: redemptionTime)
|
|
}
|
|
|
|
public func issueAuthCredentialWithPniAsServiceId(randomness: Randomness, aci: Aci, pni: Pni, redemptionTime: UInt64) throws -> AuthCredentialWithPniResponse {
|
|
return try serverSecretParams.withUnsafePointerToSerialized { serverSecretParams in
|
|
try randomness.withUnsafePointerToBytes { randomness in
|
|
try aci.withPointerToFixedWidthBinary { aci in
|
|
try pni.withPointerToFixedWidthBinary { pni in
|
|
try invokeFnReturningSerialized {
|
|
signal_server_secret_params_issue_auth_credential_with_pni_as_service_id_deterministic($0, serverSecretParams, randomness, aci, pni, redemptionTime)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public func issueAuthCredentialWithPniAsAci(aci: Aci, pni: Pni, redemptionTime: UInt64) throws -> AuthCredentialWithPniResponse {
|
|
return try issueAuthCredentialWithPniAsAci(randomness: Randomness.generate(), aci: aci, pni: pni, redemptionTime: redemptionTime)
|
|
}
|
|
|
|
public func issueAuthCredentialWithPniAsAci(randomness: Randomness, aci: Aci, pni: Pni, redemptionTime: UInt64) throws -> AuthCredentialWithPniResponse {
|
|
return try serverSecretParams.withUnsafePointerToSerialized { serverSecretParams in
|
|
try randomness.withUnsafePointerToBytes { randomness in
|
|
try aci.withPointerToFixedWidthBinary { aci in
|
|
try pni.withPointerToFixedWidthBinary { pni in
|
|
try invokeFnReturningSerialized {
|
|
signal_server_secret_params_issue_auth_credential_with_pni_as_aci_deterministic($0, serverSecretParams, randomness, aci, pni, redemptionTime)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public func verifyAuthCredentialPresentation(groupPublicParams: GroupPublicParams, authCredentialPresentation: AuthCredentialPresentation, now: Date = Date()) throws {
|
|
try serverSecretParams.withUnsafePointerToSerialized { serverSecretParams in
|
|
try groupPublicParams.withUnsafePointerToSerialized { groupPublicParams in
|
|
try authCredentialPresentation.withUnsafeBorrowedBuffer { authCredentialPresentation in
|
|
try checkError(signal_server_secret_params_verify_auth_credential_presentation(serverSecretParams, groupPublicParams, authCredentialPresentation, UInt64(now.timeIntervalSince1970)))
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|