@@ -6,7 +6,7 @@ use cryptography_x509::certificate::Certificate;
66use  cryptography_x509:: extensions:: SubjectAlternativeName ; 
77use  cryptography_x509:: oid:: SUBJECT_ALTERNATIVE_NAME_OID ; 
88use  cryptography_x509_verification:: ops:: { CryptoOps ,  VerificationCertificate } ; 
9- use  cryptography_x509_verification:: policy:: { Policy ,  Subject } ; 
9+ use  cryptography_x509_verification:: policy:: { Policy ,  PolicyDefinition ,   Subject } ; 
1010use  cryptography_x509_verification:: trust_store:: Store ; 
1111use  cryptography_x509_verification:: types:: { DNSName ,  IPAddress } ; 
1212use  pyo3:: types:: { PyAnyMethods ,  PyListMethods } ; 
@@ -25,6 +25,7 @@ impl CryptoOps for PyCryptoOps {
2525    type  Key  = pyo3:: Py < pyo3:: PyAny > ; 
2626    type  Err  = CryptographyError ; 
2727    type  CertificateExtra  = pyo3:: Py < PyCertificate > ; 
28+     type  PolicyExtra  = ( ) ; 
2829
2930    fn  public_key ( & self ,  cert :  & Certificate < ' _ > )  -> Result < Self :: Key ,  Self :: Err >  { 
3031        pyo3:: Python :: with_gil ( |py| -> Result < Self :: Key ,  Self :: Err >  { 
@@ -158,9 +159,10 @@ impl PolicyBuilder {
158159        } ; 
159160
160161        // TODO: Pass extension policies here once implemented in cryptography-x509-verification. 
161-         let  policy = Policy :: client ( PyCryptoOps  { } ,  time,  self . max_chain_depth ) ; 
162- 
163-         Ok ( PyClientVerifier  {  policy,  store } ) 
162+         Ok ( PyClientVerifier  { 
163+             policy_definition :  PolicyDefinition :: client ( PyCryptoOps  { } ,  time,  self . max_chain_depth ) , 
164+             store, 
165+         } ) 
164166    } 
165167
166168    fn  build_server_verifier ( 
@@ -185,11 +187,11 @@ impl PolicyBuilder {
185187        } ; 
186188        let  subject_owner = build_subject_owner ( py,  & subject) ?; 
187189
188-         let  policy  = OwnedPolicy :: try_new ( subject_owner,  |subject_owner| { 
190+         let  policy_definition  = OwnedPolicyDefinition :: try_new ( subject_owner,  |subject_owner| { 
189191            let  subject = build_subject ( py,  subject_owner) ?; 
190192
191193            // TODO: Pass extension policies here once implemented in cryptography-x509-verification. 
192-             Ok :: < PyCryptoPolicy < ' _ > ,  pyo3:: PyErr > ( Policy :: server ( 
194+             Ok :: < PyCryptoPolicyDefinition < ' _ > ,  pyo3:: PyErr > ( PolicyDefinition :: server ( 
193195                PyCryptoOps  { } , 
194196                subject, 
195197                time, 
@@ -199,13 +201,13 @@ impl PolicyBuilder {
199201
200202        Ok ( PyServerVerifier  { 
201203            py_subject :  subject, 
202-             policy , 
204+             policy_definition , 
203205            store, 
204206        } ) 
205207    } 
206208} 
207209
208- type  PyCryptoPolicy < ' a >  = Policy < ' a ,  PyCryptoOps > ; 
210+ type  PyCryptoPolicyDefinition < ' a >  = PolicyDefinition < ' a ,  PyCryptoOps > ; 
209211
210212/// This enum exists solely to provide heterogeneously typed ownership for `OwnedPolicy`. 
211213enum  SubjectOwner  { 
@@ -219,11 +221,11 @@ enum SubjectOwner {
219221} 
220222
221223self_cell:: self_cell!( 
222-     struct  OwnedPolicy  { 
224+     struct  OwnedPolicyDefinition  { 
223225        owner:  SubjectOwner , 
224226
225227        #[ covariant] 
226-         dependent:  PyCryptoPolicy , 
228+         dependent:  PyCryptoPolicyDefinition , 
227229    } 
228230) ; 
229231
@@ -245,14 +247,14 @@ pub(crate) struct PyVerifiedClient {
245247    module = "cryptography.hazmat.bindings._rust.x509"  
246248) ] 
247249pub ( crate )  struct  PyClientVerifier  { 
248-     policy :   PyCryptoPolicy < ' static > , 
250+     policy_definition :   PyCryptoPolicyDefinition < ' static > , 
249251    #[ pyo3( get) ]  
250252    store :  pyo3:: Py < PyStore > , 
251253} 
252254
253255impl  PyClientVerifier  { 
254-     fn  as_policy ( & self )  -> & Policy < ' _ ,   PyCryptoOps >  { 
255-         & self . policy 
256+     fn  as_policy_def ( & self )  -> & PyCryptoPolicyDefinition < ' _ >  { 
257+         & self . policy_definition 
256258    } 
257259} 
258260
@@ -263,12 +265,12 @@ impl PyClientVerifier {
263265        & self , 
264266        py :  pyo3:: Python < ' p > , 
265267    )  -> pyo3:: PyResult < pyo3:: Bound < ' p ,  pyo3:: PyAny > >  { 
266-         datetime_to_py ( py,  & self . as_policy ( ) . validation_time ) 
268+         datetime_to_py ( py,  & self . as_policy_def ( ) . validation_time ) 
267269    } 
268270
269271    #[ getter]  
270272    fn  max_chain_depth ( & self )  -> u8  { 
271-         self . as_policy ( ) . max_chain_depth 
273+         self . as_policy_def ( ) . max_chain_depth 
272274    } 
273275
274276    fn  verify ( 
@@ -277,7 +279,7 @@ impl PyClientVerifier {
277279        leaf :  pyo3:: Py < PyCertificate > , 
278280        intermediates :  Vec < pyo3:: Py < PyCertificate > > , 
279281    )  -> CryptographyResult < PyVerifiedClient >  { 
280-         let  policy = self . as_policy ( ) ; 
282+         let  policy = Policy :: new ( self . as_policy_def ( ) ,   ( ) ) ; 
281283        let  store = self . store . get ( ) ; 
282284
283285        let  intermediates = intermediates
@@ -290,7 +292,7 @@ impl PyClientVerifier {
290292        let  chain = cryptography_x509_verification:: verify ( 
291293            & v, 
292294            & intermediates, 
293-             policy, 
295+             & policy, 
294296            store. raw . borrow_dependent ( ) , 
295297        ) 
296298        . or_else ( |e| handle_validation_error ( py,  e) ) ?; 
@@ -329,14 +331,14 @@ impl PyClientVerifier {
329331pub ( crate )  struct  PyServerVerifier  { 
330332    #[ pyo3( get,  name = "subject" ) ]  
331333    py_subject :  pyo3:: Py < pyo3:: PyAny > , 
332-     policy :   OwnedPolicy , 
334+     policy_definition :   OwnedPolicyDefinition , 
333335    #[ pyo3( get) ]  
334336    store :  pyo3:: Py < PyStore > , 
335337} 
336338
337339impl  PyServerVerifier  { 
338-     fn  as_policy ( & self )  -> & Policy < ' _ ,   PyCryptoOps >  { 
339-         self . policy . borrow_dependent ( ) 
340+     fn  as_policy_def ( & self )  -> & PyCryptoPolicyDefinition < ' _ >  { 
341+         self . policy_definition . borrow_dependent ( ) 
340342    } 
341343} 
342344
@@ -347,12 +349,12 @@ impl PyServerVerifier {
347349        & self , 
348350        py :  pyo3:: Python < ' p > , 
349351    )  -> pyo3:: PyResult < pyo3:: Bound < ' p ,  pyo3:: PyAny > >  { 
350-         datetime_to_py ( py,  & self . as_policy ( ) . validation_time ) 
352+         datetime_to_py ( py,  & self . as_policy_def ( ) . validation_time ) 
351353    } 
352354
353355    #[ getter]  
354356    fn  max_chain_depth ( & self )  -> u8  { 
355-         self . as_policy ( ) . max_chain_depth 
357+         self . as_policy_def ( ) . max_chain_depth 
356358    } 
357359
358360    fn  verify < ' p > ( 
@@ -361,7 +363,7 @@ impl PyServerVerifier {
361363        leaf :  pyo3:: Py < PyCertificate > , 
362364        intermediates :  Vec < pyo3:: Py < PyCertificate > > , 
363365    )  -> CryptographyResult < pyo3:: Bound < ' p ,  pyo3:: types:: PyList > >  { 
364-         let  policy = self . as_policy ( ) ; 
366+         let  policy = Policy :: new ( self . as_policy_def ( ) ,   ( ) ) ; 
365367        let  store = self . store . get ( ) ; 
366368
367369        let  intermediates = intermediates
@@ -374,7 +376,7 @@ impl PyServerVerifier {
374376        let  chain = cryptography_x509_verification:: verify ( 
375377            & v, 
376378            & intermediates, 
377-             policy, 
379+             & policy, 
378380            store. raw . borrow_dependent ( ) , 
379381        ) 
380382        . or_else ( |e| handle_validation_error ( py,  e) ) ?; 
0 commit comments