https://github.com/prongbang/flutter_certificate_pinning
HTTPS certificate verification or public key pinning for Dio.
https://github.com/prongbang/flutter_certificate_pinning
Last synced: 6 months ago
JSON representation
HTTPS certificate verification or public key pinning for Dio.
- Host: GitHub
- URL: https://github.com/prongbang/flutter_certificate_pinning
- Owner: prongbang
- License: mit
- Created: 2023-10-12T14:15:36.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2023-10-24T06:37:29.000Z (almost 2 years ago)
- Last Synced: 2025-03-25T22:52:04.461Z (7 months ago)
- Language: Dart
- Homepage: https://pub.dev/packages/flutter_certificate_pinning
- Size: 13.7 KB
- Stars: 1
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# flutter_certificate_pinning
[](https://pub.dartlang.org/packages/flutter_certificate_pinning)
HTTPS certificate verification or public key pinning for Dio.
[](https://www.buymeacoffee.com/prongbang)
## How to use
- Get SHA256 Certificate Fingerprint from Unit Test
```shell
flutter test test/flutter_certificate_pinning_test.dart
```Output
```shell
ExpiredAt: Dec 11 08:19:25 2023 GMT
Fingerprints: [b235f7c569490f2b2b861d2237e303337fe45a80ffec55dc140abda69e843d51]
```- SHA256 Certificate Fingerprint
```dart
class Sha256CertificateFingerprint extends CertificateFingerprint {
@override
Future> fingerprints() async {
return [
// ExpiredAt: Dec 11 08:19:25 2023 GMT
'b235f7c569490f2b2b861d2237e303337fe45a80ffec55dc140abda69e843d51',
];
}
}
```- Custom Validator
```dart
class SelfCustomValidator implements CustomValidator {
@override
bool validate(X509Certificate cert, String host, int port) {
final hostMatches = _validateHost(host);
return hostMatches;
}bool _validateHost(String host) {
return 'google.com' == host;
}
}
```- Certificate Trusted Configuration (Optional)
```dart
class LocalCertificateTrustedConfiguration implements CertificateTrustedConfiguration {
@override
List> certificates() {
// Certificate bytes
return [];
}
}
```- Using
```dart
final certificateTrustedConfiguration = LocalCertificateTrustedConfiguration();
final sha256CertificateFingerprint = Sha256CertificateFingerprint();
final selfCustomValidator = SelfCustomValidator();
final certificateValidator = SelfCertificateValidator(selfCustomValidator);
final securityHttpClientCreator = SecurityHttpClientCreator(
certificateValidator,
certificateTrustedConfiguration: certificateTrustedConfiguration,
);
final httpsCertificateVerification = HttpsCertificateVerification(
securityHttpClientCreator,
certificateValidator,
sha256CertificateFingerprint,
);
final dio = Dio();
httpsCertificateVerification.config(dio);
```