Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/signing-sdk/face-auth-ios/llms.txt

Use this file to discover all available pages before exploring further.

TAD Signing SDK lets you add face liveness verification and cryptographic document signing to iOS banking and fintech apps through a single drop-in view controller. It handles the full biometric flow — face liveness detection, FIDO2 passkey management, and JWT-signed result tokens — so you don’t need to build or maintain any custom biometric UI.

What the SDK does

TAD Signing SDK combines three security mechanisms into one integrated flow:
  • Face liveness detection — the SDK captures and verifies that the user is physically present, preventing spoofing via photos or video replay.
  • FIDO2 passkey management — passkeys are created and bound to your domain using WebAuthn. The device’s Secure Enclave stores the private key; it never leaves the device.
  • JWT-signed results — every completed operation returns a JWT signed with your backend’s ES512 key pair, which your server can verify independently.

Two modes: .register and .sign

The SDK operates in one of two modes, set at the time you present TadSigningViewController:
  • .register — performs face liveness, creates a new FIDO2 passkey bound to the user’s bankId, and registers it with your signing service. Returns a requestId on success.
  • .sign — authenticates the existing passkey with face liveness, then produces a signed JWT. Returns both a jwt and a requestId on success.
Both modes use the same view controller initializer and completion callback signature. The only difference is the mode argument you pass in.

Architecture overview

The entire biometric UI is encapsulated in TadSigningViewController. You instantiate it with a TadSigningConfig, a bankId identifying the user, an optional dto dictionary for extra data such as a one-time password, and a mode. You then present it modally from your existing view controller.
let signingVC = TadSigningViewController(
    config:  SDKConfig.shared,
    bankId:  "demo-user-001",
    dto:     ["otp": "12345"],
    mode:    .register
) { result in
    switch result {
    case .success(let jwt, let requestId):
        // Handle success
    case .failure(let code, let message):
        // Handle failure
    }
}
present(signingVC, animated: true)
The SDK manages camera access, face capture, network communication with the signing API, and passkey operations internally. Your app only interacts with the completion callback.

Key benefits for banking and fintech apps

  • No custom UI required. TadSigningViewController encapsulates the full biometric flow, reducing integration time and maintenance burden.
  • Passkey security by default. Private keys are stored in the device Secure Enclave and bound to your Associated Domain, preventing credential phishing.
  • Liveness prevents fraud. Real-time face liveness checks block photo and replay attacks at the point of authentication.
  • Verifiable JWT output. The ES512-signed JWT lets your backend independently verify every signing event without trusting the client.
  • Minimal surface area. One config object, one view controller, one callback — the SDK exposes only what you need.

What you need before integrating

TAD Signing SDK requires iOS 16.0 or later. Your Xcode project must have Associated Domains configured with webcredentials:<your-domain> for WebAuthn passkey binding to work.
You need three things from your backend team before you can run the SDK:
  1. API base URL — the endpoint your signing service is hosted at (for example, https://signing.tadi.uz).
  2. ES512 public key — the PEM-encoded EC public key used to verify JWT signatures.
  3. Relying party ID — the domain string that identifies your WebAuthn origin (for example, signing.tadi.uz).
Your Xcode project also needs two Info.plist usage descriptions: NSCameraUsageDescription for the face capture step, and NSFaceIDUsageDescription for passkey operations.

Explore the documentation

Quickstart

Add the SDK to your Xcode project and present your first biometric flow in four steps.

Configuration

Reference for all five TadSigningConfig parameters with examples.

API reference

Full reference for TadSigningViewController, TadSigningConfig, and result types.

Integration guide

Walk through the registration and signing flows end to end.

Build docs developers (and LLMs) love