@@ -88,25 +88,31 @@ 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+ # s = Subject()
92+ # create_subject = False
93+ # if cit.SubjectORegexes is None:
94+ # s.orgs = [""]
95+ # elif len(cit.SubjectORegexes) > 0:
96+ # create_subject = True
97+ # s.orgs = cit.SubjectORegexes
98+ #
99+ # if len(cit.SubjectOURegexes) > 0:
100+ # create_subject = True
101+ # s.org_units = cit.SubjectOURegexes
102+ #
103+ # if len(cit.SubjectLRegexes) > 0:
104+ # create_subject = True
105+ # s.localities = cit.SubjectLRegexes
106+ #
107+ # if len(cit.SubjectSTRegexes) > 0:
108+ # create_subject = True
109+ # s.states = cit.SubjectSTRegexes
110+ #
111+ # if len(cit.SubjectCRegexes) > 0:
112+ # create_subject = True
113+ # s.countries = cit.SubjectCRegexes
114+
115+ p .subject = build_policy_spec_subject (cit )
110116
111117 kp = KeyPair ()
112118 create_kp = False
@@ -204,6 +210,63 @@ def build_policy_spec(cit, ca_info, subject_cn_to_str=True):
204210 return ps
205211
206212
213+ def build_policy_spec_subject (cit ):
214+ """
215+
216+ :param Cit cit:
217+ :return:
218+ """
219+ s = Subject ()
220+ return_subject = False
221+
222+ orgs_values = None
223+ if cit .SubjectORegexes is None :
224+ orgs_values = ["" ]
225+ elif len (cit .SubjectORegexes ) > 0 :
226+ orgs_values = cit .SubjectORegexes
227+ if orgs_values :
228+ s .orgs = orgs_values
229+ return_subject = True
230+
231+ org_units_values = None
232+ if cit .SubjectOURegexes is None :
233+ org_units_values = ["" ]
234+ elif len (cit .SubjectOURegexes ) > 0 :
235+ org_units_values = cit .SubjectOURegexes
236+ if org_units_values :
237+ s .org_units = org_units_values
238+ return_subject = True
239+
240+ localities_values = None
241+ if cit .SubjectLRegexes is None :
242+ localities_values = ["" ]
243+ elif len (cit .SubjectLRegexes ) > 0 :
244+ localities_values = cit .SubjectLRegexes
245+ if localities_values :
246+ s .localities = localities_values
247+ return_subject = True
248+
249+ states_values = None
250+ if cit .SubjectSTRegexes is None :
251+ states_values = ["" ]
252+ elif len (cit .SubjectSTRegexes ) > 0 :
253+ states_values = cit .SubjectSTRegexes
254+ if states_values :
255+ s .states = states_values
256+ return_subject = True
257+
258+ countries_values = None
259+ if cit .SubjectCRegexes is None :
260+ countries_values = ["" ]
261+ elif len (cit .SubjectCRegexes ) > 0 :
262+ countries_values = cit .SubjectCRegexes
263+ if countries_values :
264+ s .countries = countries_values
265+ return_subject = True
266+
267+ return s if return_subject else None
268+
269+
207270def validate_policy_spec (policy_spec ):
208271 """
209272 :param PolicySpecification policy_spec:
@@ -505,27 +568,42 @@ def build_cit_request(ps, ca_details):
505568 request ['sanIpAddressRegexes' ] = [re_ipv4 , re_ipv6 ]
506569
507570 if ps .policy and ps .policy .subject and len (ps .policy .subject .orgs ) > 0 :
508- request ['subjectORegexes' ] = ps .policy .subject .orgs
571+ if len (ps .policy .subject .orgs ) == 1 and ps .policy .subject .orgs [0 ] == "" :
572+ request ['subjectORegexes' ] = None
573+ else :
574+ request ['subjectORegexes' ] = ps .policy .subject .orgs
509575 else :
510576 request ['subjectORegexes' ] = [re_allow_all ]
511577
512578 if ps .policy and ps .policy .subject and len (ps .policy .subject .org_units ) > 0 :
513- request ['subjectOURegexes' ] = ps .policy .subject .org_units
579+ if len (ps .policy .subject .org_units ) == 1 and ps .policy .subject .org_units [0 ] == "" :
580+ request ['subjectOURegexes' ] = None
581+ else :
582+ request ['subjectOURegexes' ] = ps .policy .subject .org_units
514583 else :
515584 request ['subjectOURegexes' ] = [re_allow_all ]
516585
517586 if ps .policy and ps .policy .subject and len (ps .policy .subject .localities ) > 0 :
518- request ['subjectLRegexes' ] = ps .policy .subject .localities
587+ if len (ps .policy .subject .localities ) == 1 and ps .policy .subject .localities [0 ] == "" :
588+ request ['subjectLRegexes' ] = None
589+ else :
590+ request ['subjectLRegexes' ] = ps .policy .subject .localities
519591 else :
520592 request ['subjectLRegexes' ] = [re_allow_all ]
521593
522594 if ps .policy and ps .policy .subject and len (ps .policy .subject .states ) > 0 :
523- request ['subjectSTRegexes' ] = ps .policy .subject .states
595+ if len (ps .policy .subject .states ) and ps .policy .subject .states [0 ] == "" :
596+ request ['subjectSTRegexes' ] = None
597+ else :
598+ request ['subjectSTRegexes' ] = ps .policy .subject .states
524599 else :
525600 request ['subjectSTRegexes' ] = [re_allow_all ]
526601
527602 if ps .policy and ps .policy .subject and len (ps .policy .subject .countries ) > 0 :
528- request ['subjectCValues' ] = ps .policy .subject .countries
603+ if len (ps .policy .subject .countries ) == 1 and ps .policy .subject .countries [0 ] == "" :
604+ request ['subjectCValues' ] = None
605+ else :
606+ request ['subjectCValues' ] = ps .policy .subject .countries
529607 else :
530608 request ['subjectCValues' ] = [re_allow_all ]
531609
0 commit comments