Replace pinning certificates without shipping a new build.
Keep the certificates your app pins or presents in one place, per app and environment. Replace one in the dashboard and apps pick it up on their next fetch.
| Certificate | Notification Group | Expiration Date | Days Remaining |
|---|---|---|---|
| API_PINNING | Mobile team | Oct 3, 2026 | 5 days |
| PAYMENTS_MTLS | Payments | Oct 20, 2026 | 22 days |
| CDN_PINNING | Mobile team | Dec 18, 2026 | 81 days |
From expiring to replaced, without a release.
Your app reads certificates at runtime, so rotating one is a dashboard change.
- 01
Add the certificate
Store its value with the SHA-256 fingerprint and expiry date, per app and environment.
- 02
Read it in your app
Call getCertificates, or getAllSecureData to load it together with your variables.
- 03
Replace it before it expires
See which certificates are inside each team's expiry window in the dashboard, then upload the new one. Apps pick it up on their next fetch.
Pin against what the server tells you.
Each certificate comes with its value and fingerprint. Initialize the SDK once, then read them.
// After SmartGrowSecure.init(...)
val pinning = smartGrow.getCertificates().first { it.key == "API_PINNING" }
pinning.value // PEM / base64 payload
pinning.fingerprint // SHA fingerprint to pin against // After SmartGrowSecure.initialize(...)
let pinning = try await smartGrow.getCertificates().first { $0.key == "API_PINNING" }
pinning?.value // PEM / base64 payload
pinning?.fingerprint // SHA fingerprint to pin against // After initializeSmartGrowSecure()
final certificates = await smartGrow.getCertificates();
final pinning = certificates.firstWhere((c) => c.key == 'API_PINNING');
pinning.value; // PEM / base64 payload
pinning.fingerprint; // SHA fingerprint to pin against What you get.
Every item here is something the product does today.
-
Value, fingerprint and expiry
Store each certificate's PEM or base64 value with its SHA-256 fingerprint and expiry date.
-
Delivered through the SDK
Android, iOS, macOS, tvOS and Flutter apps read certificates at runtime.
-
Expiry windows per team
Set how many days before expiry each notification group should watch a certificate, and see the expiring ones in the dashboard.
-
Only your signed app
Requests need the API token and your app's signing fingerprint, over a post-quantum channel on top of HTTPS.
-
Roles and audit log
Limit who can add or replace certificates, and see every change.