SDK Overview
TrustPin provides native SDKs for all major mobile and desktop platforms, enabling you to implement OWASP-compliant certificate pinning with minimal integration effort.
Available SDKs
| SDK | Latest version | Languages | Platforms |
|---|---|---|---|
| iOS / macOS | TrustPinKit 6.2.0 | Swift 6.1+ | iOS 15+, macOS 13+, watchOS 8+, tvOS 15+, visionOS 2+ |
| Android / Kotlin | cloud.trustpin:kotlin-sdk 6.2.0 | Kotlin 2.3.0+ | Android API 25+, JVM 11+ |
| Flutter | trustpin_sdk 6.2.0 | Dart | iOS 15+, Android API 25+, macOS 13+ |
The Flutter package bundles the native SDKs (TrustPinKit 6.2.x on iOS/macOS, cloud.trustpin:kotlin-sdk 6.2.x on Android), so a single flutter pub get brings everything in.
iOS, macOS, watchOS, tvOS & visionOS
- Language: Swift
- Package Manager: Swift Package Manager, CocoaPods
- View iOS / macOS SDK Documentation
Android & JVM
- Language: Kotlin
- Package Manager: Maven Central
- View Android / Kotlin SDK Documentation
Flutter (Cross-Platform)
- Language: Dart
- Package Manager: pub.dev
- View Flutter SDK Documentation
Quick Integration
All TrustPin SDKs follow a consistent 3-step integration pattern:
1. Install the SDK
Add TrustPin to your project using your platform’s package manager:
- iOS/macOS: Swift Package Manager or CocoaPods
- Android: Gradle with Maven Central
- Flutter: pub.dev package
2. Initialize TrustPin
Build a TrustPinConfiguration and pass it to setup() during app initialization. Each SDK can either load the configuration from a bundled file or accept it inline:
- iOS / macOS —
TrustPinConfiguration.fromPlist()reads a bundledTrustPin-Info.plist - Android / Kotlin —
TrustPinConfiguration.fromAssets(context)readssrc/main/assets/trustpin.json - Flutter —
TrustPin.shared.setupWithNativeBundle()defers to each platform’s native config file (TrustPin-Info.pliston iOS/macOS,trustpin.jsonon Android), so credentials never enter the Dart isolate
All three forms accept the same fields: organizationId / OrganizationId, projectId / ProjectId, publicKey / PublicKey, optional mode, and optional configurationURL.
setup() is non-blocking — it returns as soon as the configuration starts loading. To fail closed (block until a validated configuration is available before making pinned requests), await the new awaitConfiguration() gate after setup(). See each platform’s guide for the exact call.
3. Configure HTTP Client
Integrate TrustPin with your HTTP client:
- iOS / macOS:
URLSessionwithTrustPin.makeURLSessionDelegate(), the Alamofire adapter (TrustPinKitAlamofire), or system-wide viaTrustPinURLProtocol - Android / JVM: OkHttp / Retrofit / Ktor via the
trustpin-okhttp/trustpin-ktoradapters (.trustPin()), or manually withTrustPinSSLSocketFactory.create() - Flutter: Dio with
TrustPinDioInterceptor, orpackage:httpviaTrustPinHttpClient.create()
Key Features
All SDKs provide:
- ✅ OWASP-Compliant Pinning - Implements OWASP Mobile Security Testing Guide recommendations
- ✅ Zero-Downtime Updates - Update certificates remotely without app releases
- ✅ Automatic Validation - Certificate pinning happens automatically on all HTTPS requests
- ✅ Intelligent Caching - 10-minute configuration cache with automatic refresh
- ✅ Strict & Permissive Modes - Control pinning behavior for production vs development
- ✅ Comprehensive Error Handling - Detailed error codes for debugging
Platform-Specific Documentation
Choose your platform to view detailed integration guides, API references, and examples:
- iOS/Swift SDK - Native Swift implementation for Apple platforms
- Android/Kotlin SDK - Kotlin SDK for Android and JVM
- Flutter/Dart SDK - Cross-platform Dart package
Need Help?
- 📧 Email: support@trustpin.cloud
- 📚 Documentation: docs.trustpin.cloud
- 🎯 Dashboard: app.trustpin.cloud