Enumerations
The following enumerations are available globally.
-
Represents possible errors thrown by the TrustPin library.
TrustPin provides detailed error information to help with debugging certificate pinning issues and implementing appropriate error handling strategies. Each error case represents a specific failure scenario with distinct security implications.
Error Categories
- Configuration errors: Issues with setup parameters or credentials
- Network errors: Problems fetching pinning configurations
- Certificate errors: Invalid or malformed certificates
- Validation errors: Certificate doesn’t match configured pins
- Security errors: Potential security threats or policy violations
Example Error Handling
do { try await TrustPin.verify(domain: "api.example.com", certificate: cert) } catch TrustPinErrors.domainNotRegistered { // Handle unregistered domain (strict mode only) logger.warning("Unregistered domain accessed") } catch TrustPinErrors.pinsMismatch { // Critical security issue - possible MITM attack logger.critical("Certificate pinning failed") throw SecurityError.potentialMITMAttack } catch TrustPinErrors.invalidServerCert { // Certificate format issue logger.error("Invalid certificate format") } catch TrustPinErrors.errorFetchingPinningInfo { // Network connectivity issue logger.error("Unable to fetch pinning configuration") }Security Response Guidelines
pinsMismatch: Treat as potential MITM attack, do not retrydomainNotRegistered: Log for security monitoring, handle per modeallPinsExpired: Update pins urgently, consider emergency bypassinvalidServerCert: Investigate certificate source and formaterrorFetchingPinningInfo: Retry with exponential backoffconfigurationValidationFailed: Check credentials and network integrityinvalidProjectConfig: Verify credentials and configuration
Topics
Configuration Errors
invalidProjectConfig
Network Errors
errorFetchingPinningInfoconfigurationValidationFailed
Certificate Errors
invalidServerCert
Validation Errors
pinsMismatchallPinsExpired
Security Errors
domainNotRegistered
Declaration
Swift
public enum TrustPinErrors : Errorextension TrustPinErrors: LocalizedError -
Represents the severity level of a log message.
Used by the TrustPin logging infrastructure to control what types of messages are recorded or displayed.
See moreDeclaration
Swift
public enum TrustPinLogLevel : Int, Sendable -
Defines the behavior for handling unregistered domains in TrustPin certificate pinning.
This enum controls how TrustPin behaves when attempting to verify certificates for domains that are not configured in your pinning configuration. The choice between modes affects both security posture and application flexibility.
Security Considerations
Choose your pinning mode based on your security requirements and application architecture:
- Production applications: Use
strictmode to ensure all connections are validated - Development/Testing: Use
permissivemode to allow connections to test servers - Hybrid applications: Use
permissivemode when connecting to both controlled and uncontrolled services
Usage Examples
Strict Mode (Production)
try await TrustPin.setup(TrustPinConfiguration( organizationId: "prod-org-123", projectId: "mobile-app-v2", publicKey: "LS0tLS1CRUdJTi..." // mode defaults to .strict — recommended for production ))Permissive Mode (Development)
try await TrustPin.setup(TrustPinConfiguration( organizationId: "dev-org-456", projectId: "mobile-app-staging", publicKey: "LS0tLS1CRUdJTk...", mode: .permissive // Allows unregistered domains ))Migration Strategy
When implementing certificate pinning in existing applications:
- Phase 1: Deploy with
permissivemode to identify all domains in use - Phase 2: Register critical domains in TrustPin dashboard
- Phase 3: Switch to
strictmode for production security
Topics
Pinning Modes
strictpermissive
Declaration
Swift
public enum TrustPinMode : Sendable - Production applications: Use
View on GitHub
Install in Dash
Enumerations Reference