The zkTLS SDK is in preview. Partner access, credentials and the test configuration are by request through pesapay.xyz.
Six verbs
The facade isZktlsClient, with the same six verbs on both platforms:
Support
There is no Expo module, React Native bridge or Flutter plugin. On a cross-platform framework, bind the SDK through your framework’s native-module mechanism: six functions and three opaque objects.
What you need from us
- Your app credential.
- The profile and policy IDs for what you want to prove.
- The front door URL (
baseUrl). - The trust bundle URL and the operator key to pin.
- The policy bundle URL and the digest to pin.
Two rules
- The witness never leaves the SDK.
capturereturns an opaque handle andproveconsumes it. No API gives you the bytes, and a handle proves once. - The SDK never retries a failed capture. If a capture fails before the reply is frozen, that session is over. Call
captureagain in a new session. Resuming would reuse a secret.
Integration checklist
1
Decide
Your minimum OS, how you hash your user ID into
userIdHash (never the raw ID), and how you make a new idempotencyKey for every session.2
Integrate
One
ZktlsClient per session, one session at a time, and a lifecycle object begun after login returns. Map every error to a message, with no automatic retry.3
Verify on your backend
Send
claim.encoded to your backend and verify it there. See Backend verification.4
Test
A real iPhone at your minimum iOS, and a mid-range and a low-end Android phone. Decline the disclosure, close the login page, background the app, switch Wi-Fi to cellular, and cancel mid-proof. Each must end cleanly.
5
Submit to the stores
Add the SDK’s privacy answers, your export-compliance answer, App Review notes with a demo account, and the SDK’s open-source notices. Confirm you may access the account on the user’s behalf under the provider’s terms (Apple guideline 5.2.2).
iOS
Swift Package Manager, CocoaPods, a full session.
Android
Maven Central, a full session, the foreground service.