@@ -77,7 +77,7 @@ extension CertificatePolicy {
77
77
func verify(
78
78
certChain: [ Certificate ] ,
79
79
trustedRoots: [ Certificate ] ? ,
80
- policies: [ VerifierPolicy ] ,
80
+ @ PolicyBuilder policies: ( ) -> some VerifierPolicy ,
81
81
observabilityScope: ObservabilityScope ,
82
82
callbackQueue: DispatchQueue ,
83
83
callback: @escaping ( Result < Void , Error > ) -> Void
@@ -87,7 +87,7 @@ extension CertificatePolicy {
87
87
guard !certChain. isEmpty else {
88
88
return wrappedCallback ( . failure( CertificatePolicyError . emptyCertChain) )
89
89
}
90
-
90
+ let policies = policies ( )
91
91
Task {
92
92
var trustStore = CertificateStores . defaultTrustRoots
93
93
if let trustedRoots {
@@ -98,9 +98,9 @@ extension CertificatePolicy {
98
98
return wrappedCallback ( . failure( CertificatePolicyError . noTrustedRootCertsConfigured) )
99
99
}
100
100
101
- let policySet = PolicySet ( policies : policies )
102
-
103
- var verifier = Verifier ( rootCertificates : CertificateStore ( trustStore ) , policy : policySet )
101
+ var verifier = Verifier ( rootCertificates : CertificateStore ( trustStore ) ) {
102
+ policies
103
+ }
104
104
let result = await verifier. validate (
105
105
leafCertificate: certChain [ 0 ] ,
106
106
intermediates: CertificateStore ( certChain)
@@ -182,31 +182,26 @@ struct DefaultCertificatePolicy: CertificatePolicy {
182
182
return wrappedCallback ( . failure( CertificatePolicyError . emptyCertChain) )
183
183
}
184
184
185
- var policies = [ VerifierPolicy] ( )
186
- policies. append ( _ADPCertificatePolicy ( ) ) // included for testing
187
- // Check if subject name matches
188
- policies. append (
189
- _SubjectNamePolicy (
190
- expectedUserID: self . expectedSubjectUserID,
191
- expectedOrganizationalUnit: self . expectedSubjectOrganizationalUnit
192
- )
193
- )
194
- // Must be a code signing certificate
195
- policies. append ( _CodeSigningPolicy ( ) )
196
- // Basic validations including expiry check
197
- policies. append ( RFC5280Policy ( validationTime: validationTime) )
198
- // Must support OCSP
199
- policies. append (
200
- _OCSPVerifierPolicy (
201
- httpClient: self . httpClient,
202
- validationTime: validationTime
203
- )
204
- )
205
-
206
185
self . verify (
207
186
certChain: certChain,
208
187
trustedRoots: self . trustedRoots,
209
- policies: policies,
188
+ policies: {
189
+ _ADPCertificatePolicy ( ) // included for testing
190
+ // Check if subject name matches
191
+ _SubjectNamePolicy (
192
+ expectedUserID: self . expectedSubjectUserID,
193
+ expectedOrganizationalUnit: self . expectedSubjectOrganizationalUnit
194
+ )
195
+ // Must be a code signing certificate
196
+ _CodeSigningPolicy ( )
197
+ // Basic validations including expiry check
198
+ RFC5280Policy ( validationTime: validationTime)
199
+ // Must support OCSP
200
+ _OCSPVerifierPolicy (
201
+ httpClient: self . httpClient,
202
+ validationTime: validationTime
203
+ )
204
+ } ,
210
205
observabilityScope: self . observabilityScope,
211
206
callbackQueue: self . callbackQueue,
212
207
callback: callback
@@ -269,33 +264,28 @@ struct ADPSwiftPackageCollectionCertificatePolicy: CertificatePolicy {
269
264
return wrappedCallback ( . failure( CertificatePolicyError . emptyCertChain) )
270
265
}
271
266
272
- var policies = [ VerifierPolicy] ( )
273
- // Check for specific markers
274
- policies. append ( _ADPSwiftPackageCertificatePolicy ( ) )
275
- policies. append ( _ADPCertificatePolicy ( ) ) // included for testing
276
- // Check if subject name matches
277
- policies. append (
278
- _SubjectNamePolicy (
279
- expectedUserID: self . expectedSubjectUserID,
280
- expectedOrganizationalUnit: self . expectedSubjectOrganizationalUnit
281
- )
282
- )
283
- // Must be a code signing certificate
284
- policies. append ( _CodeSigningPolicy ( ) )
285
- // Basic validations including expiry check
286
- policies. append ( RFC5280Policy ( validationTime: validationTime) )
287
- // Must support OCSP
288
- policies. append (
289
- _OCSPVerifierPolicy (
290
- httpClient: self . httpClient,
291
- validationTime: validationTime
292
- )
293
- )
294
-
295
267
self . verify (
296
268
certChain: certChain,
297
269
trustedRoots: self . trustedRoots,
298
- policies: policies,
270
+ policies: {
271
+ // Check for specific markers
272
+ _ADPSwiftPackageCertificatePolicy ( )
273
+ _ADPCertificatePolicy ( ) // included for testing
274
+ // Check if subject name matches
275
+ _SubjectNamePolicy (
276
+ expectedUserID: self . expectedSubjectUserID,
277
+ expectedOrganizationalUnit: self . expectedSubjectOrganizationalUnit
278
+ )
279
+ // Must be a code signing certificate
280
+ _CodeSigningPolicy ( )
281
+ // Basic validations including expiry check
282
+ RFC5280Policy ( validationTime: validationTime)
283
+ // Must support OCSP
284
+ _OCSPVerifierPolicy (
285
+ httpClient: self . httpClient,
286
+ validationTime: validationTime
287
+ )
288
+ } ,
299
289
observabilityScope: self . observabilityScope,
300
290
callbackQueue: self . callbackQueue,
301
291
callback: callback
@@ -358,33 +348,28 @@ struct ADPAppleDistributionCertificatePolicy: CertificatePolicy {
358
348
return wrappedCallback ( . failure( CertificatePolicyError . emptyCertChain) )
359
349
}
360
350
361
- var policies = [ VerifierPolicy] ( )
362
- // Check for specific markers
363
- policies. append ( _ADPAppleDistributionCertificatePolicy ( ) )
364
- policies. append ( _ADPCertificatePolicy ( ) ) // included for testing
365
- // Check if subject name matches
366
- policies. append (
367
- _SubjectNamePolicy (
368
- expectedUserID: self . expectedSubjectUserID,
369
- expectedOrganizationalUnit: self . expectedSubjectOrganizationalUnit
370
- )
371
- )
372
- // Must be a code signing certificate
373
- policies. append ( _CodeSigningPolicy ( ) )
374
- // Basic validations including expiry check
375
- policies. append ( RFC5280Policy ( validationTime: validationTime) )
376
- // Must support OCSP
377
- policies. append (
378
- _OCSPVerifierPolicy (
379
- httpClient: self . httpClient,
380
- validationTime: validationTime
381
- )
382
- )
383
-
384
351
self . verify (
385
352
certChain: certChain,
386
353
trustedRoots: self . trustedRoots,
387
- policies: policies,
354
+ policies: {
355
+ // Check for specific markers
356
+ _ADPAppleDistributionCertificatePolicy ( )
357
+ _ADPCertificatePolicy ( ) // included for testing
358
+ // Check if subject name matches
359
+ _SubjectNamePolicy (
360
+ expectedUserID: self . expectedSubjectUserID,
361
+ expectedOrganizationalUnit: self . expectedSubjectOrganizationalUnit
362
+ )
363
+ // Must be a code signing certificate
364
+ _CodeSigningPolicy ( )
365
+ // Basic validations including expiry check
366
+ RFC5280Policy ( validationTime: validationTime)
367
+ // Must support OCSP
368
+ _OCSPVerifierPolicy (
369
+ httpClient: self . httpClient,
370
+ validationTime: validationTime
371
+ )
372
+ } ,
388
373
observabilityScope: self . observabilityScope,
389
374
callbackQueue: self . callbackQueue,
390
375
callback: callback
0 commit comments