Trustkit adalah kerangka kerja open source yang memudahkan untuk menggunakan kunci dan pelaporan kunci publik SSL dalam aplikasi iOS 12+, MacOS 10.13+, TVOS 12+ atau WatchOS 4+; Ini mendukung aplikasi Swift dan Objective-C.
Jika Anda membutuhkan Pinning/Pelaporan SSL di aplikasi Android Anda. Kami juga telah merilis Trustkit untuk Android di https://github.com/datatheorem/trustkit-android.
Trustkit menyediakan fitur -fitur berikut:
Menyebarkan Pinning SSL dalam aplikasi memerlukan inisialisasi trustkit dengan kebijakan pinning (domain, hash info kunci publik subjek, dan pengaturan tambahan).
Kebijakan dapat dikonfigurasi dalam Info.plist :
Atau, kebijakan pinning dapat diatur secara terprogram:
NSDictionary *trustKitConfig =
@{
kTSKSwizzleNetworkDelegates : @ NO ,
kTSKPinnedDomains : @{
@" www.datatheorem.com " : @{
kTSKExpirationDate : @" 2017-12-01 " ,
kTSKPublicKeyHashes : @[
@" HXXQgxueCIU5TTLHob/bPbwcKOKw6DkfsTWYHbxbqTY= " ,
@" 0SDf3cRToyZJaMsoS17oF72VMavLxj/N7WBNasNuiR8= "
],
kTSKEnforcePinning : @ NO ,
},
@" yahoo.com " : @{
kTSKPublicKeyHashes : @[
@" TQEtdMbmwFgYUifM4LDF+xgEtd0z69mPGmkp014d6ZY= " ,
@" rFjc3wG7lTZe43zeYTvPq8k4xdDEutCmIhI5dn4oCeE= " ,
],
kTSKIncludeSubdomains : @ YES
}
}};
[TrustKit initSharedInstanceWithConfiguration: trustKitConfig];Kebijakan ini juga dapat ditetapkan secara terprogram dalam aplikasi Swift:
let trustKitConfig = [
kTSKSwizzleNetworkDelegates : false ,
kTSKPinnedDomains : [
" yahoo.com " : [
kTSKExpirationDate : " 2017-12-01 " ,
kTSKPublicKeyHashes : [
" JbQbUG5JMJUoI6brnx0x3vZF6jilxsapbXGVfjhN8Fg= " ,
" WoiWRyIOVNa9ihaBciRSC7XHjliYS9VwUGOIud4PB18= "
] , ] ] ] as [ String : Any ]
TrustKit . initSharedInstance ( withConfiguration : trustKitConfig ) Setelah trustkit diinisialisasi, instance TSKPinningValidator dapat diambil dari trustkit singleton, dan dapat digunakan untuk melakukan validasi pinning SSL di delegasi jaringan aplikasi. Misalnya dalam nsurlsessionDelegate:
- ( void )URLSession:( NSURLSession *)session
task:( NSURLSessionTask *)task
didReceiveChallenge:( NSURLAuthenticationChallenge *)challenge
completionHandler:( void (^)( NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler {
{
TSKPinningValidator *pinningValidator = [[TrustKit sharedInstance ] pinningValidator ];
// Pass the authentication challenge to the validator; if the validation fails, the connection will be blocked
if (![pinningValidator handleChallenge: challenge completionHandler: completionHandler])
{
// TrustKit did not handle this challenge: perhaps it was not for server trust
// or the domain was not pinned. Fall back to the default behavior
completionHandler ( NSURLSessionAuthChallengePerformDefaultHandling , nil );
}
}Untuk informasi lebih lanjut, lihat Panduan Memulai.
Trustkit adalah upaya bersama antara tim seluler di Teorema Data dan Yahoo. Lihat AUTHORS untuk detailnya.
Trustkit dirilis di bawah lisensi MIT. Lihat LICENSE untuk detailnya.