Trustkit est un framework open source qui facilite le déploiement de la clé publique SSL et des rapports dans toute application iOS 12+, macOS 10.13+, TVOS 12+ ou WatchOS 4+; Il prend en charge les applications Swift et Objective-C.
Si vous avez besoin d'épinglage / de rapport SSL dans votre application Android. Nous avons également publié Trustkit pour Android sur https://github.com/datatheorem/trustkit-android.
Trustkit fournit les fonctionnalités suivantes:
Le déploiement d'épinglage SSL dans l'application nécessite l'initialisation de Trustkit avec une politique d'épinglage (domaines, hachages d'informations de clés publiques sujet et paramètres supplémentaires).
La stratégie peut être configurée dans l' Info.plist de l'application:
Alternativement, la politique d'épinglage peut être définie par programme:
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];La politique peut également être définie par programme dans des applications Swift:
let trustKitConfig = [
kTSKSwizzleNetworkDelegates : false ,
kTSKPinnedDomains : [
" yahoo.com " : [
kTSKExpirationDate : " 2017-12-01 " ,
kTSKPublicKeyHashes : [
" JbQbUG5JMJUoI6brnx0x3vZF6jilxsapbXGVfjhN8Fg= " ,
" WoiWRyIOVNa9ihaBciRSC7XHjliYS9VwUGOIud4PB18= "
] , ] ] ] as [ String : Any ]
TrustKit . initSharedInstance ( withConfiguration : trustKitConfig ) Une fois que Trustkit a été initialisé, une instance TSKPinningValidator peut être récupérée à partir du Trustkit Singleton et peut être utilisée pour effectuer la validation de l'épinglage SSL dans les délégués réseau de l'application. Par exemple dans un 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 );
}
}Pour plus d'informations, consultez le Guide de démarrage.
Trustkit est un effort conjoint entre les équipes mobiles du théorème de données et de Yahoo. Voir AUTHORS pour plus de détails.
Trustkit est libéré sous la licence du MIT. Voir LICENSE pour plus de détails.