connect_secure 0.1.0 copy "connect_secure: ^0.1.0" to clipboard
connect_secure: ^0.1.0 copied to clipboard

Production-ready SSL pinning for Dart/Flutter with Dio, http (IOClient) and dart:io.

example/lib/main.dart

import 'dart:convert';
import 'package:connect_secure/connect_secure.dart';
import 'package:dio/dio.dart';
import 'package:http/http.dart' as http;

Future<void> main() async {
  //  Allowed certificate fingerprints (dummy example)
  final allowedFingerprints = [
    "A1:B2:C3:D4:E5:F6:12:34:56:78:9A:BC:DE:F0:12:34:56:78:90:AB:CD:EF:12:34:56:78:90:AB:CD:EF:12:34:56"
  ];

  // =============================
  // Example 1: Using SecureHttpClient
  // =============================
  final client = SecureHttpClient(allowedFingerprints: allowedFingerprints);
  final response = await client.get(Uri.parse("https://example.com"));
  final responseBody = await response.transform(utf8.decoder).join();
  print("SecureHttpClient response:");
  print(responseBody);

  // =============================
  // Example 2: Using Dio + SSL Pinning
  // =============================
  final dio = Dio();
  dio.httpClientAdapter =
      DioSslPinning(allowedFingerprints: allowedFingerprints);

  try {
    final dioResponse = await dio.get("https://example.com");
    print("DioSslPinning response:");
    print(dioResponse.data);
  } catch (e) {
    print("Dio error: $e");
  }

  // =============================
  // Example 3: Using http (IOClient) + SSL Pinning
  // =============================
  final ioClient = createPinnedHttpClient(
    allowedFingerprints: allowedFingerprints,
    fingerprintsByHost: {
      'example.com': [
        'A1 B2 C3 D4 E5 F6 12 34 56 78 9A BC DE F0 12 34 56 78 90 AB CD EF 12 34 56 78 90 AB CD EF 12 34 56',
      ],
    },
  );
  try {
    final httpResponse = await ioClient.get(Uri.parse('https://example.com'));
    print('http IOClient response:');
    print(httpResponse.statusCode);
  } catch (e) {
    print('http IOClient error: $e');
  }
}
7
likes
160
points
273
downloads

Publisher

unverified uploader

Weekly Downloads

Production-ready SSL pinning for Dart/Flutter with Dio, http (IOClient) and dart:io.

Repository (GitLab)
View/report issues

Topics

#security #networking #ssl #http #dio

Documentation

API reference

License

MIT (license)

Dependencies

crypto, dio, http

More

Packages that depend on connect_secure