149 |
149 |
assert 1 == len(certificate_service_unique.get_certificates(cert_type=ROOT_CA_ID))
|
150 |
150 |
assert 1 == len(certificate_service_unique.get_certificates(cert_type=INTERMEDIATE_CA_ID))
|
151 |
151 |
assert 1 == len(certificate_service_unique.get_certificates(cert_type=CERTIFICATE_ID))
|
|
152 |
|
|
153 |
|
|
154 |
def test_get_chain_of_trust(private_key_service, certificate_service):
|
|
155 |
root_ca_private_key = private_key_service.create_new_key(passphrase="foobar")
|
|
156 |
inter_ca_private_key = private_key_service.create_new_key(passphrase="barfoo")
|
|
157 |
end_cert_private_key = private_key_service.create_new_key(passphrase="foofoo")
|
|
158 |
|
|
159 |
root_ca_cert = certificate_service.create_root_ca(root_ca_private_key,
|
|
160 |
Subject(common_name="RootFoo",
|
|
161 |
organization_unit="Department of Foo"))
|
|
162 |
print(root_ca_cert.certificate_id)
|
|
163 |
|
|
164 |
inter_ca_cert = certificate_service.create_ca(inter_ca_private_key, Subject(common_name="Intermediate CA"),
|
|
165 |
root_ca_cert,
|
|
166 |
root_ca_private_key, usages={SSL_ID: True})
|
|
167 |
print(inter_ca_cert.certificate_id)
|
|
168 |
print(inter_ca_cert.parent_id)
|
|
169 |
|
|
170 |
cert = certificate_service.create_end_cert(end_cert_private_key,
|
|
171 |
Subject("Foo Child", email_address="foo@bar.cz"), inter_ca_cert,
|
|
172 |
inter_ca_private_key, usages={AUTHENTICATION_ID: True})
|
|
173 |
print(cert.certificate_id)
|
|
174 |
print(cert.parent_id)
|
|
175 |
|
|
176 |
cot = certificate_service.get_chain_of_trust(cert.certificate_id)
|
|
177 |
assert len(cot) == 2
|
|
178 |
assert [cert.certificate_id, inter_ca_cert.certificate_id] == [cot[0].certificate_id, cot[1].certificate_id]
|
|
179 |
|
|
180 |
cot = certificate_service.get_chain_of_trust(cert.certificate_id, root_ca_cert.private_key_id)
|
|
181 |
assert len(cot) == 2
|
|
182 |
assert [cert.certificate_id, inter_ca_cert.certificate_id] == [cot[0].certificate_id, cot[1].certificate_id]
|
|
183 |
|
|
184 |
cot = certificate_service.get_chain_of_trust(cert.certificate_id, inter_ca_cert.private_key_id)
|
|
185 |
assert len(cot) == 2
|
|
186 |
assert [cert.certificate_id, inter_ca_cert.certificate_id] == [cot[0].certificate_id, cot[1].certificate_id]
|
|
187 |
|
|
188 |
cot = certificate_service.get_chain_of_trust(cert.certificate_id, exclude_root=False)
|
|
189 |
assert len(cot) == 3
|
|
190 |
assert [cert.certificate_id, inter_ca_cert.certificate_id, root_ca_cert.certificate_id] == [cot[0].certificate_id,
|
|
191 |
cot[1].certificate_id,
|
|
192 |
cot[2].certificate_id]
|
|
193 |
|
|
194 |
# starting from intermediate certificate
|
|
195 |
cot = certificate_service.get_chain_of_trust(inter_ca_cert.certificate_id)
|
|
196 |
assert len(cot) == 1
|
|
197 |
assert [inter_ca_cert.certificate_id] == [cot[0].certificate_id]
|
|
198 |
|
|
199 |
cot = certificate_service.get_chain_of_trust(inter_ca_cert.certificate_id, root_ca_cert.private_key_id)
|
|
200 |
assert len(cot) == 1
|
|
201 |
assert [inter_ca_cert.certificate_id] == [cot[0].certificate_id]
|
|
202 |
|
|
203 |
cot = certificate_service.get_chain_of_trust(inter_ca_cert.certificate_id, exclude_root=False)
|
|
204 |
assert len(cot) == 2
|
|
205 |
assert [inter_ca_cert.certificate_id, root_ca_cert.certificate_id] == [cot[0].certificate_id,
|
|
206 |
cot[1].certificate_id]
|
|
207 |
|
|
208 |
# starting from intermediate certificate
|
|
209 |
cot = certificate_service.get_chain_of_trust(root_ca_cert.certificate_id)
|
|
210 |
assert len(cot) == 0
|
|
211 |
|
|
212 |
cot = certificate_service.get_chain_of_trust(root_ca_cert.certificate_id, root_ca_cert.private_key_id)
|
|
213 |
assert len(cot) == 0
|
|
214 |
|
|
215 |
cot = certificate_service.get_chain_of_trust(root_ca_cert.certificate_id, exclude_root=False)
|
|
216 |
assert len(cot) == 1
|
|
217 |
assert [root_ca_cert.certificate_id] == [cot[0].certificate_id]
|
Re #8472 - Implemented get_chain_of_trust method and added an integration test validating it
Added return type specification to read_all method in CertificateRepository