ssl_pining_checking 0.0.3
ssl_pining_checking: ^0.0.3 copied to clipboard
A new Flutter package ssl_pinning_check.
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'package:ssl_pining_checking/ssl_pining_checking.dart';
/// 1. Put your cert at assets/certification/client.pem
/// 2. Add to pubspec.yaml:
/// assets:
/// - assets/certification/client.pem
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return const MaterialApp(home: HomePage());
}
}
class HomePage extends StatefulWidget {
const HomePage({super.key});
@override
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
late http.Client _client;
String _result = '';
@override
void initState() {
super.initState();
_initClient();
}
Future<void> _initClient() async {
_client = await SSLPiningCheck(
certificateFilePath: 'assets/certification/client.pem',
).getSSLPiningClient();
}
Future<void> _callApi() async {
final response = await _client.post(
Uri.parse('https://your-api.example.com/endpoint'),
headers: <String, String>{
'Content-Type': 'application/json',
},
body: json.encode(<String, String>{'key': 'value'}),
);
setState(() {
_result = 'Status: ${response.statusCode}\nBody: ${response.body}';
});
}
@override
void dispose() {
_client.close();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('SSL Pining Example')),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
onPressed: _callApi,
child: const Text('Call pinned API'),
),
Padding(
padding: const EdgeInsets.all(16),
child: Text(_result),
),
],
),
),
);
}
}