@@ -54,8 +54,8 @@ public class SSLSecurity : NSObject {
54
54
public var validatedDN = true //should the domain name be validated?
55
55
56
56
var isReady = false //is the key processing done?
57
- var certificates : [ NSData ] ? //the certificates
58
- @ nonobjc var pubKeys : [ SecKey ] ? //the public keys
57
+ var certificates : [ Data ] ? //the certificates
58
+ var pubKeys : [ SecKey ] ? //the public keys
59
59
var usePublicKeys = false //use public keys or certificate validation?
60
60
61
61
/**
@@ -116,7 +116,7 @@ public class SSLSecurity : NSObject {
116
116
}
117
117
return certificates
118
118
}
119
- self . certificates = certificates as [ NSData ]
119
+ self . certificates = certificates
120
120
self . isReady = true
121
121
}
122
122
}
@@ -132,7 +132,7 @@ public class SSLSecurity : NSObject {
132
132
public func isValid( _ trust: SecTrust , domain: String ? ) -> Bool {
133
133
134
134
var tries = 0
135
- while ( !self . isReady) {
135
+ while !self . isReady {
136
136
usleep ( 1000 )
137
137
tries += 1
138
138
if tries > 5 {
@@ -141,37 +141,36 @@ public class SSLSecurity : NSObject {
141
141
}
142
142
var policy : SecPolicy
143
143
if self . validatedDN {
144
- policy = SecPolicyCreateSSL ( true , domain as CFString ? )
144
+ policy = SecPolicyCreateSSL ( true , domain as NSString ? )
145
145
} else {
146
146
policy = SecPolicyCreateBasicX509 ( )
147
147
}
148
148
SecTrustSetPolicies ( trust, policy)
149
149
if self . usePublicKeys {
150
150
if let keys = self . pubKeys {
151
- let serverPubKeys = publicKeyChainForTrust ( trust : trust)
152
- for serverKey in serverPubKeys {
153
- for key in keys {
154
- if CFEqual ( serverKey, key) {
151
+ let serverPubKeys = publicKeyChain ( trust)
152
+ for serverKey in serverPubKeys as [ AnyObject ] {
153
+ for key in keys as [ AnyObject ] {
154
+ if serverKey. isEqual ( key) {
155
155
return true
156
156
}
157
157
}
158
158
}
159
159
}
160
160
} else if let certs = self . certificates {
161
- let serverCerts = certificateChainForTrust ( trust)
161
+ let serverCerts = certificateChain ( trust)
162
162
var collect = [ SecCertificate] ( )
163
163
for cert in certs {
164
- collect. append ( SecCertificateCreateWithData ( nil , cert) !)
164
+ collect. append ( SecCertificateCreateWithData ( nil , cert as CFData ) !)
165
165
}
166
- SecTrustSetAnchorCertificates ( trust, collect as CFArray )
167
- var result = SecTrustResultType ( rawValue : 0 ) !
166
+ SecTrustSetAnchorCertificates ( trust, collect as NSArray )
167
+ var result : SecTrustResultType = . unspecified
168
168
SecTrustEvaluate ( trust, & result)
169
- let r = Int ( result. rawValue)
170
- if r == Int ( SecTrustResultType . unspecified. rawValue) || r == Int ( SecTrustResultType . proceed. rawValue) {
169
+ if result == . unspecified || result == . proceed {
171
170
var trustedCount = 0
172
171
for serverCert in serverCerts {
173
172
for cert in certs {
174
- if cert as Data == serverCert {
173
+ if cert == serverCert {
175
174
trustedCount += 1
176
175
break
177
176
}
@@ -195,7 +194,7 @@ public class SSLSecurity : NSObject {
195
194
func extractPublicKey( _ data: Data ) -> SecKey ? {
196
195
guard let cert = SecCertificateCreateWithData ( nil , data as CFData ) else { return nil }
197
196
198
- return extractPublicKeyFromCert ( cert, policy: SecPolicyCreateBasicX509 ( ) )
197
+ return extractPublicKey ( cert, policy: SecPolicyCreateBasicX509 ( ) )
199
198
}
200
199
201
200
/**
@@ -205,13 +204,12 @@ public class SSLSecurity : NSObject {
205
204
206
205
- returns: a public key
207
206
*/
208
- func extractPublicKeyFromCert ( _ cert: SecCertificate , policy: SecPolicy ) -> SecKey ? {
207
+ func extractPublicKey ( _ cert: SecCertificate , policy: SecPolicy ) -> SecKey ? {
209
208
var possibleTrust : SecTrust ?
210
209
SecTrustCreateWithCertificates ( cert, policy, & possibleTrust)
211
210
212
211
guard let trust = possibleTrust else { return nil }
213
-
214
- var result = SecTrustResultType ( rawValue: 0 ) !
212
+ var result : SecTrustResultType = . unspecified
215
213
SecTrustEvaluate ( trust, & result)
216
214
return SecTrustCopyPublicKey ( trust)
217
215
}
@@ -223,7 +221,7 @@ public class SSLSecurity : NSObject {
223
221
224
222
- returns: the certificate chain for the trust
225
223
*/
226
- func certificateChainForTrust ( _ trust: SecTrust ) -> [ Data ] {
224
+ func certificateChain ( _ trust: SecTrust ) -> [ Data ] {
227
225
let certificates = ( 0 ..< SecTrustGetCertificateCount ( trust) ) . reduce ( [ Data] ( ) ) { ( certificates: [ Data ] , index: Int ) -> [ Data ] in
228
226
var certificates = certificates
229
227
let cert = SecTrustGetCertificateAtIndex ( trust, index)
@@ -241,12 +239,12 @@ public class SSLSecurity : NSObject {
241
239
242
240
- returns: the public keys from the certifcate chain for the trust
243
241
*/
244
- @ nonobjc func publicKeyChainForTrust ( trust: SecTrust ) -> [ SecKey ] {
242
+ func publicKeyChain ( _ trust: SecTrust ) -> [ SecKey ] {
245
243
let policy = SecPolicyCreateBasicX509 ( )
246
244
let keys = ( 0 ..< SecTrustGetCertificateCount ( trust) ) . reduce ( [ SecKey] ( ) ) { ( keys: [ SecKey ] , index: Int ) -> [ SecKey ] in
247
245
var keys = keys
248
246
let cert = SecTrustGetCertificateAtIndex ( trust, index)
249
- if let key = extractPublicKeyFromCert ( cert!, policy: policy) {
247
+ if let key = extractPublicKey ( cert!, policy: policy) {
250
248
keys. append ( key)
251
249
}
252
250
0 commit comments