@@ -88,25 +88,7 @@ def build_policy_spec(cit, ca_info, subject_cn_to_str=True):
8888 ca = f"{ ca_info .ca_type } \\ { ca_info .ca_account_key } \\ { ca_info .vendor_name } "
8989 p .certificate_authority = ca
9090
91- s = Subject ()
92- create_subject = False
93- if len (cit .SubjectORegexes ) > 0 :
94- create_subject = True
95- s .orgs = cit .SubjectORegexes
96- if len (cit .SubjectOURegexes ) > 0 :
97- create_subject = True
98- s .org_units = cit .SubjectOURegexes
99- if len (cit .SubjectLRegexes ) > 0 :
100- create_subject = True
101- s .localities = cit .SubjectLRegexes
102- if len (cit .SubjectSTRegexes ) > 0 :
103- create_subject = True
104- s .states = cit .SubjectSTRegexes
105- if len (cit .SubjectCRegexes ) > 0 :
106- create_subject = True
107- s .countries = cit .SubjectCRegexes
108-
109- p .subject = s if create_subject else None
91+ p .subject = build_policy_spec_subject (cit )
11092
11193 kp = KeyPair ()
11294 create_kp = False
@@ -204,6 +186,63 @@ def build_policy_spec(cit, ca_info, subject_cn_to_str=True):
204186 return ps
205187
206188
189+ def build_policy_spec_subject (cit ):
190+ """
191+
192+ :param Cit cit:
193+ :return:
194+ """
195+ s = Subject ()
196+ return_subject = False
197+
198+ orgs_values = None
199+ if cit .SubjectORegexes is None :
200+ orgs_values = ["" ]
201+ elif len (cit .SubjectORegexes ) > 0 :
202+ orgs_values = cit .SubjectORegexes
203+ if orgs_values :
204+ s .orgs = orgs_values
205+ return_subject = True
206+
207+ org_units_values = None
208+ if cit .SubjectOURegexes is None :
209+ org_units_values = ["" ]
210+ elif len (cit .SubjectOURegexes ) > 0 :
211+ org_units_values = cit .SubjectOURegexes
212+ if org_units_values :
213+ s .org_units = org_units_values
214+ return_subject = True
215+
216+ localities_values = None
217+ if cit .SubjectLRegexes is None :
218+ localities_values = ["" ]
219+ elif len (cit .SubjectLRegexes ) > 0 :
220+ localities_values = cit .SubjectLRegexes
221+ if localities_values :
222+ s .localities = localities_values
223+ return_subject = True
224+
225+ states_values = None
226+ if cit .SubjectSTRegexes is None :
227+ states_values = ["" ]
228+ elif len (cit .SubjectSTRegexes ) > 0 :
229+ states_values = cit .SubjectSTRegexes
230+ if states_values :
231+ s .states = states_values
232+ return_subject = True
233+
234+ countries_values = None
235+ if cit .SubjectCRegexes is None :
236+ countries_values = ["" ]
237+ elif len (cit .SubjectCRegexes ) > 0 :
238+ countries_values = cit .SubjectCRegexes
239+ if countries_values :
240+ s .countries = countries_values
241+ return_subject = True
242+
243+ return s if return_subject else None
244+
245+
207246def validate_policy_spec (policy_spec ):
208247 """
209248 :param PolicySpecification policy_spec:
@@ -505,27 +544,42 @@ def build_cit_request(ps, ca_details):
505544 request ['sanIpAddressRegexes' ] = [re_ipv4 , re_ipv6 ]
506545
507546 if ps .policy and ps .policy .subject and len (ps .policy .subject .orgs ) > 0 :
508- request ['subjectORegexes' ] = ps .policy .subject .orgs
547+ if len (ps .policy .subject .orgs ) == 1 and ps .policy .subject .orgs [0 ] == "" :
548+ request ['subjectORegexes' ] = None
549+ else :
550+ request ['subjectORegexes' ] = ps .policy .subject .orgs
509551 else :
510552 request ['subjectORegexes' ] = [re_allow_all ]
511553
512554 if ps .policy and ps .policy .subject and len (ps .policy .subject .org_units ) > 0 :
513- request ['subjectOURegexes' ] = ps .policy .subject .org_units
555+ if len (ps .policy .subject .org_units ) == 1 and ps .policy .subject .org_units [0 ] == "" :
556+ request ['subjectOURegexes' ] = None
557+ else :
558+ request ['subjectOURegexes' ] = ps .policy .subject .org_units
514559 else :
515560 request ['subjectOURegexes' ] = [re_allow_all ]
516561
517562 if ps .policy and ps .policy .subject and len (ps .policy .subject .localities ) > 0 :
518- request ['subjectLRegexes' ] = ps .policy .subject .localities
563+ if len (ps .policy .subject .localities ) == 1 and ps .policy .subject .localities [0 ] == "" :
564+ request ['subjectLRegexes' ] = None
565+ else :
566+ request ['subjectLRegexes' ] = ps .policy .subject .localities
519567 else :
520568 request ['subjectLRegexes' ] = [re_allow_all ]
521569
522570 if ps .policy and ps .policy .subject and len (ps .policy .subject .states ) > 0 :
523- request ['subjectSTRegexes' ] = ps .policy .subject .states
571+ if len (ps .policy .subject .states ) and ps .policy .subject .states [0 ] == "" :
572+ request ['subjectSTRegexes' ] = None
573+ else :
574+ request ['subjectSTRegexes' ] = ps .policy .subject .states
524575 else :
525576 request ['subjectSTRegexes' ] = [re_allow_all ]
526577
527578 if ps .policy and ps .policy .subject and len (ps .policy .subject .countries ) > 0 :
528- request ['subjectCValues' ] = ps .policy .subject .countries
579+ if len (ps .policy .subject .countries ) == 1 and ps .policy .subject .countries [0 ] == "" :
580+ request ['subjectCValues' ] = None
581+ else :
582+ request ['subjectCValues' ] = ps .policy .subject .countries
529583 else :
530584 request ['subjectCValues' ] = [re_allow_all ]
531585
0 commit comments