flutter_ssl_pinning_client 1.0.2 copy "flutter_ssl_pinning_client: ^1.0.2" to clipboard
flutter_ssl_pinning_client: ^1.0.2 copied to clipboard

Enterprise SSL/TLS Certificate & SPKI Public Key Pinning client for Flutter with backup pin rotation, wildcard domain matching, and MITM protection.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:flutter_ssl_pinning_client/flutter_ssl_pinning_client.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'SSL Pinning Client Demo',
      theme: ThemeData.dark(useMaterial3: true),
      home: const SslPinningScreen(),
    );
  }
}

class SslPinningScreen extends StatefulWidget {
  const SslPinningScreen({super.key});

  @override
  State<SslPinningScreen> createState() => _SslPinningScreenState();
}

class _SslPinningScreenState extends State<SslPinningScreen> {
  late final SslPinningHttpClient _client;
  String _status = 'Ready';

  @override
  void initState() {
    super.initState();
    final config = SslPinningConfig(
      mode: EnforceMode.strict,
      onPinningFailure: (domain, presented) {
        debugPrint('⚠️ SSL Pinning MITM Alert on $domain! Fingerprint: $presented');
      },
      domainConfigs: {
        'jsonplaceholder.typicode.com': const DomainPinConfig(
          domain: 'jsonplaceholder.typicode.com',
          allowedSHA256Pins: {
            'sha256/7130325d70678f564757c2a71f008801d9f67822998f45a49c362947d95393c5',
          },
        ),
      },
    );

    _client = SslPinningHttpClient(config: config);
  }

  Future<void> _makeRequest() async {
    setState(() => _status = 'Executing secure request...');
    try {
      final response = await _client.get(
        Uri.parse('https://jsonplaceholder.typicode.com/todos/1'),
      );
      setState(() => _status = 'Success! Status Code: ${response.statusCode}');
    } catch (e) {
      setState(() => _status = 'Error / MITM Rejected: $e');
    }
  }

  @override
  void dispose() {
    _client.close();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('flutter_ssl_pinning_client Demo')),
      body: Center(
        child: Padding(
          padding: const EdgeInsets.all(24.0),
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              const Icon(Icons.security, size: 64, color: Colors.greenAccent),
              const SizedBox(height: 16),
              Text(_status, textAlign: TextAlign.center),
              const SizedBox(height: 24),
              ElevatedButton(
                onPressed: _makeRequest,
                child: const Text('Send SSL Pinned Request'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
1
likes
0
points
260
downloads

Publisher

unverified uploader

Weekly Downloads

Enterprise SSL/TLS Certificate & SPKI Public Key Pinning client for Flutter with backup pin rotation, wildcard domain matching, and MITM protection.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

crypto, flutter, http

More

Packages that depend on flutter_ssl_pinning_client