Revize 699a4f25
Přidáno uživatelem Stanislav Král před asi 4 roky(ů)
src/services/key_service.py | ||
---|---|---|
27 | 27 |
def get_key(self, unique_id): |
28 | 28 |
return self.private_key_repository.read(unique_id) |
29 | 29 |
|
30 |
def get_keys(self, unique_ids): |
|
31 |
return [self.private_key_repository.read(identifier) for identifier in unique_ids] |
|
30 |
def get_keys(self, unique_ids=None): |
|
31 |
if unique_ids is None: |
|
32 |
return self.private_key_repository.read_all() |
|
33 |
else: |
|
34 |
# TODO this is very inefficient |
|
35 |
return [self.private_key_repository.read(identifier) for identifier in unique_ids] |
|
32 | 36 |
|
33 | 37 |
def delete_key(self, unique_id): |
34 | 38 |
return self.private_key_repository.delete(unique_id) |
tests/integration_tests/services/certificate_key_service_test.py | ||
---|---|---|
1 |
import subprocess |
|
2 |
|
|
3 |
from src.constants import SSL_ID, CA_ID, AUTHENTICATION_ID, INTERMEDIATE_CA_ID, ROOT_CA_ID, CERTIFICATE_ID, SIGNATURE_ID |
|
4 |
from src.model.subject import Subject |
|
5 |
|
|
6 |
|
|
7 |
def export_crt(crt): |
|
8 |
return subprocess.check_output(["openssl", "x509", "-noout", "-text", "-in", "-"], |
|
9 |
input=bytes(crt, encoding="utf-8"), stderr=subprocess.STDOUT).decode() |
|
10 |
|
|
11 |
|
|
12 |
def test_create_and_get_pk(private_key_service, certificate_service): |
|
13 |
private_key = private_key_service.create_new_key(passphrase="foobar") |
|
14 |
private_key_loaded = private_key_service.get_key(private_key.private_key_id) |
|
15 |
|
|
16 |
assert private_key.private_key_id == private_key_loaded.private_key_id |
|
17 |
assert private_key.private_key == private_key_loaded.private_key |
|
18 |
assert private_key.password == private_key_loaded.password |
|
19 |
|
|
20 |
|
|
21 |
def test_create_and_get_root_ca(private_key_service, certificate_service): |
|
22 |
private_key = private_key_service.create_new_key(passphrase="foobar") |
|
23 |
|
|
24 |
cert = certificate_service.create_root_ca(private_key, |
|
25 |
Subject(common_name="FooName", organization_unit="Department of Foo"), |
|
26 |
usages={SSL_ID: True}) |
|
27 |
|
|
28 |
assert ROOT_CA_ID == cert.type_id |
|
29 |
|
|
30 |
assert cert.usages[CA_ID] |
|
31 |
assert cert.usages[SSL_ID] |
|
32 |
assert cert.usages[AUTHENTICATION_ID] is False |
|
33 |
assert cert.usages[SIGNATURE_ID] is False |
|
34 |
|
|
35 |
cert_loaded = certificate_service.get_certificate(cert.certificate_id) |
|
36 |
|
|
37 |
# verify that the loaded certificate is a CA |
|
38 |
cert_loaded_printed = export_crt(cert_loaded.pem_data) |
|
39 |
assert """ X509v3 Basic Constraints: critical |
|
40 |
CA:TRUE""" in cert_loaded_printed |
|
41 |
|
|
42 |
assert cert.certificate_id == cert_loaded.certificate_id |
|
43 |
assert cert.common_name == cert_loaded.common_name |
|
44 |
assert cert.valid_from == cert_loaded.valid_from |
|
45 |
assert cert.valid_to == cert_loaded.valid_to |
|
46 |
assert cert.pem_data == cert_loaded.pem_data |
|
47 |
assert cert.private_key_id == cert_loaded.private_key_id |
|
48 |
assert cert.type_id == cert_loaded.type_id |
|
49 |
assert cert.parent_id == cert_loaded.parent_id |
|
50 |
assert cert.usages == cert_loaded.usages |
|
51 |
|
|
52 |
|
|
53 |
def test_create_and_get_inter_cert(private_key_service, certificate_service): |
|
54 |
root_ca_private_key = private_key_service.create_new_key(passphrase="foobar") |
|
55 |
inter_ca_private_key = private_key_service.create_new_key() |
|
56 |
|
|
57 |
root_ca = certificate_service.create_root_ca(root_ca_private_key, |
|
58 |
Subject(common_name="RootFoo", organization_unit="Department of Foo")) |
|
59 |
|
|
60 |
inter_cert = certificate_service.create_ca(inter_ca_private_key, Subject(common_name="Intermediate CA"), root_ca, |
|
61 |
root_ca_private_key, usages={SSL_ID: True}) |
|
62 |
|
|
63 |
assert INTERMEDIATE_CA_ID == inter_cert.type_id |
|
64 |
|
|
65 |
assert inter_cert.usages[CA_ID] |
|
66 |
assert inter_cert.usages[SSL_ID] |
|
67 |
assert inter_cert.usages[AUTHENTICATION_ID] is False |
|
68 |
assert inter_cert.usages[SIGNATURE_ID] is False |
|
69 |
|
|
70 |
inter_cert_loaded = certificate_service.get_certificate(inter_cert.certificate_id) |
|
71 |
|
|
72 |
# verify that the loaded certificate is a CA |
|
73 |
cert_loaded_printed = export_crt(inter_cert_loaded.pem_data) |
|
74 |
assert """ X509v3 Basic Constraints: critical |
|
75 |
CA:TRUE""" in cert_loaded_printed |
|
76 |
|
|
77 |
assert inter_cert.certificate_id == inter_cert_loaded.certificate_id |
|
78 |
assert inter_cert.common_name == inter_cert_loaded.common_name |
|
79 |
assert inter_cert.valid_from == inter_cert_loaded.valid_from |
|
80 |
assert inter_cert.valid_to == inter_cert_loaded.valid_to |
|
81 |
assert inter_cert.pem_data == inter_cert_loaded.pem_data |
|
82 |
assert inter_cert.private_key_id == inter_cert_loaded.private_key_id |
|
83 |
assert inter_cert.type_id == inter_cert_loaded.type_id |
|
84 |
assert inter_cert.parent_id == root_ca.certificate_id |
|
85 |
assert inter_cert_loaded.parent_id == root_ca.certificate_id |
|
86 |
assert inter_cert.usages == inter_cert_loaded.usages |
|
87 |
|
|
88 |
|
|
89 |
def test_create_and_get_cert(private_key_service, certificate_service): |
|
90 |
root_ca_private_key = private_key_service.create_new_key(passphrase="foobar") |
|
91 |
inter_ca_private_key = private_key_service.create_new_key(passphrase="barfoo") |
|
92 |
end_cert_private_key = private_key_service.create_new_key(passphrase="foofoo") |
|
93 |
|
|
94 |
root_ca_cert = certificate_service.create_root_ca(root_ca_private_key, |
|
95 |
Subject(common_name="RootFoo", |
|
96 |
organization_unit="Department of Foo")) |
|
97 |
|
|
98 |
inter_ca_cert = certificate_service.create_ca(inter_ca_private_key, Subject(common_name="Intermediate CA"), |
|
99 |
root_ca_cert, |
|
100 |
root_ca_private_key, usages={SSL_ID: True}) |
|
101 |
|
|
102 |
cert = certificate_service.create_end_cert(end_cert_private_key, |
|
103 |
Subject("Foo Child", email_address="foo@bar.cz"), inter_ca_cert, |
|
104 |
inter_ca_private_key, usages={AUTHENTICATION_ID: True}) |
|
105 |
assert CERTIFICATE_ID == cert.type_id |
|
106 |
|
|
107 |
assert cert.usages[AUTHENTICATION_ID] |
|
108 |
assert cert.usages[SSL_ID] is False |
|
109 |
assert cert.usages[SIGNATURE_ID] is False |
|
110 |
assert cert.usages[CA_ID] is False |
|
111 |
|
|
112 |
cert_loaded = certificate_service.get_certificate(cert.certificate_id) |
|
113 |
|
|
114 |
assert cert.certificate_id == cert_loaded.certificate_id |
|
115 |
assert cert.common_name == cert_loaded.common_name |
|
116 |
assert cert.valid_from == cert_loaded.valid_from |
|
117 |
assert cert.valid_to == cert_loaded.valid_to |
|
118 |
assert cert.pem_data == cert_loaded.pem_data |
|
119 |
assert cert.private_key_id == cert_loaded.private_key_id |
|
120 |
assert cert.type_id == cert_loaded.type_id |
|
121 |
assert cert.parent_id == inter_ca_cert.certificate_id |
|
122 |
assert cert_loaded.parent_id == inter_ca_cert.certificate_id |
|
123 |
assert cert.usages == cert_loaded.usages |
|
124 |
|
|
125 |
|
|
126 |
def test_get_certificates(private_key_service_unique, certificate_service_unique): |
|
127 |
root_ca_private_key = private_key_service_unique.create_new_key(passphrase="foobar") |
|
128 |
inter_ca_private_key = private_key_service_unique.create_new_key(passphrase="barfoo") |
|
129 |
end_cert_private_key = private_key_service_unique.create_new_key(passphrase="foofoo") |
|
130 |
|
|
131 |
root_ca_cert = certificate_service_unique.create_root_ca(root_ca_private_key, |
|
132 |
Subject(common_name="RootFoo", |
|
133 |
organization_unit="Department of Foo")) |
|
134 |
|
|
135 |
inter_ca_cert = certificate_service_unique.create_ca(inter_ca_private_key, Subject(common_name="Intermediate CA"), |
|
136 |
root_ca_cert, |
|
137 |
root_ca_private_key, usages={SSL_ID: True}) |
|
138 |
|
|
139 |
cert = certificate_service_unique.create_end_cert(end_cert_private_key, |
|
140 |
Subject("Foo Child", email_address="foo@bar.cz"), inter_ca_cert, |
|
141 |
inter_ca_private_key, usages={AUTHENTICATION_ID: True}) |
|
142 |
|
|
143 |
all_certs = certificate_service_unique.get_certificates() |
|
144 |
assert 3 == len(all_certs) |
|
145 |
assert "RootFoo" == all_certs[0].common_name |
|
146 |
assert "Intermediate CA" == all_certs[1].common_name |
|
147 |
assert "Foo Child" == all_certs[2].common_name |
|
148 |
|
|
149 |
assert 1 == len(certificate_service_unique.get_certificates(cert_type=ROOT_CA_ID)) |
|
150 |
assert 1 == len(certificate_service_unique.get_certificates(cert_type=INTERMEDIATE_CA_ID)) |
|
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 |
|
|
163 |
inter_ca_cert = certificate_service.create_ca(inter_ca_private_key, Subject(common_name="Intermediate CA"), |
|
164 |
root_ca_cert, |
|
165 |
root_ca_private_key, usages={SSL_ID: True}) |
|
166 |
|
|
167 |
cert = certificate_service.create_end_cert(end_cert_private_key, |
|
168 |
Subject("Foo Child", email_address="foo@bar.cz"), inter_ca_cert, |
|
169 |
inter_ca_private_key, usages={AUTHENTICATION_ID: True}) |
|
170 |
|
|
171 |
cot = certificate_service.get_chain_of_trust(cert.certificate_id) |
|
172 |
assert len(cot) == 2 |
|
173 |
assert [cert.certificate_id, inter_ca_cert.certificate_id] == [cot[0].certificate_id, cot[1].certificate_id] |
|
174 |
|
|
175 |
cot = certificate_service.get_chain_of_trust(cert.certificate_id, root_ca_cert.private_key_id) |
|
176 |
assert len(cot) == 2 |
|
177 |
assert [cert.certificate_id, inter_ca_cert.certificate_id] == [cot[0].certificate_id, cot[1].certificate_id] |
|
178 |
|
|
179 |
cot = certificate_service.get_chain_of_trust(cert.certificate_id, inter_ca_cert.private_key_id) |
|
180 |
assert len(cot) == 2 |
|
181 |
assert [cert.certificate_id, inter_ca_cert.certificate_id] == [cot[0].certificate_id, cot[1].certificate_id] |
|
182 |
|
|
183 |
cot = certificate_service.get_chain_of_trust(cert.certificate_id, exclude_root=False) |
|
184 |
assert len(cot) == 3 |
|
185 |
assert [cert.certificate_id, inter_ca_cert.certificate_id, root_ca_cert.certificate_id] == [cot[0].certificate_id, |
|
186 |
cot[1].certificate_id, |
|
187 |
cot[2].certificate_id] |
|
188 |
|
|
189 |
# starting from intermediate certificate |
|
190 |
cot = certificate_service.get_chain_of_trust(inter_ca_cert.certificate_id) |
|
191 |
assert len(cot) == 1 |
|
192 |
assert [inter_ca_cert.certificate_id] == [cot[0].certificate_id] |
|
193 |
|
|
194 |
cot = certificate_service.get_chain_of_trust(inter_ca_cert.certificate_id, root_ca_cert.private_key_id) |
|
195 |
assert len(cot) == 1 |
|
196 |
assert [inter_ca_cert.certificate_id] == [cot[0].certificate_id] |
|
197 |
|
|
198 |
cot = certificate_service.get_chain_of_trust(inter_ca_cert.certificate_id, exclude_root=False) |
|
199 |
assert len(cot) == 2 |
|
200 |
assert [inter_ca_cert.certificate_id, root_ca_cert.certificate_id] == [cot[0].certificate_id, |
|
201 |
cot[1].certificate_id] |
|
202 |
|
|
203 |
# starting from intermediate certificate |
|
204 |
cot = certificate_service.get_chain_of_trust(root_ca_cert.certificate_id) |
|
205 |
assert len(cot) == 0 |
|
206 |
|
|
207 |
cot = certificate_service.get_chain_of_trust(root_ca_cert.certificate_id, root_ca_cert.private_key_id) |
|
208 |
assert len(cot) == 0 |
|
209 |
|
|
210 |
cot = certificate_service.get_chain_of_trust(root_ca_cert.certificate_id, exclude_root=False) |
|
211 |
assert len(cot) == 1 |
|
212 |
assert [root_ca_cert.certificate_id] == [cot[0].certificate_id] |
|
213 |
|
|
214 |
|
|
215 |
def test_delete_cert(private_key_service, certificate_service): |
|
216 |
root_ca_private_key = private_key_service.create_new_key(passphrase="foobar") |
|
217 |
|
|
218 |
original_len = len(certificate_service.get_certificates()) |
|
219 |
|
|
220 |
root_ca_cert = certificate_service.create_root_ca(root_ca_private_key, |
|
221 |
Subject(common_name="RootFoo", |
|
222 |
organization_unit="Department of Foo")) |
|
223 |
|
|
224 |
len_inserted = len(certificate_service.get_certificates()) |
|
225 |
|
|
226 |
assert original_len + 1 == len_inserted |
|
227 |
|
|
228 |
# TODO delete should delete all children? |
|
229 |
assert certificate_service.delete_certificate(root_ca_cert.certificate_id) |
|
230 |
|
|
231 |
assert len_inserted - 1 == len(certificate_service.get_certificates()) |
tests/integration_tests/services/certificate_service_test.py | ||
---|---|---|
1 |
import subprocess |
|
2 |
|
|
3 |
from src.constants import SSL_ID, CA_ID, AUTHENTICATION_ID, INTERMEDIATE_CA_ID, ROOT_CA_ID, CERTIFICATE_ID, SIGNATURE_ID |
|
4 |
from src.model.subject import Subject |
|
5 |
|
|
6 |
|
|
7 |
def export_crt(crt): |
|
8 |
return subprocess.check_output(["openssl", "x509", "-noout", "-text", "-in", "-"], |
|
9 |
input=bytes(crt, encoding="utf-8"), stderr=subprocess.STDOUT).decode() |
|
10 |
|
|
11 |
|
|
12 |
def test_create_and_get_root_ca(private_key_service, certificate_service): |
|
13 |
private_key = private_key_service.create_new_key(passphrase="foobar") |
|
14 |
|
|
15 |
cert = certificate_service.create_root_ca(private_key, |
|
16 |
Subject(common_name="FooName", organization_unit="Department of Foo"), |
|
17 |
usages={SSL_ID: True}) |
|
18 |
|
|
19 |
assert ROOT_CA_ID == cert.type_id |
|
20 |
|
|
21 |
assert cert.usages[CA_ID] |
|
22 |
assert cert.usages[SSL_ID] |
|
23 |
assert cert.usages[AUTHENTICATION_ID] is False |
|
24 |
assert cert.usages[SIGNATURE_ID] is False |
|
25 |
|
|
26 |
cert_loaded = certificate_service.get_certificate(cert.certificate_id) |
|
27 |
|
|
28 |
# verify that the loaded certificate is a CA |
|
29 |
cert_loaded_printed = export_crt(cert_loaded.pem_data) |
|
30 |
assert """ X509v3 Basic Constraints: critical |
|
31 |
CA:TRUE""" in cert_loaded_printed |
|
32 |
|
|
33 |
assert cert.certificate_id == cert_loaded.certificate_id |
|
34 |
assert cert.common_name == cert_loaded.common_name |
|
35 |
assert cert.valid_from == cert_loaded.valid_from |
|
36 |
assert cert.valid_to == cert_loaded.valid_to |
|
37 |
assert cert.pem_data == cert_loaded.pem_data |
|
38 |
assert cert.private_key_id == cert_loaded.private_key_id |
|
39 |
assert cert.type_id == cert_loaded.type_id |
|
40 |
assert cert.parent_id == cert_loaded.parent_id |
|
41 |
assert cert.usages == cert_loaded.usages |
|
42 |
|
|
43 |
|
|
44 |
def test_create_and_get_inter_cert(private_key_service, certificate_service): |
|
45 |
root_ca_private_key = private_key_service.create_new_key(passphrase="foobar") |
|
46 |
inter_ca_private_key = private_key_service.create_new_key() |
|
47 |
|
|
48 |
root_ca = certificate_service.create_root_ca(root_ca_private_key, |
|
49 |
Subject(common_name="RootFoo", organization_unit="Department of Foo")) |
|
50 |
|
|
51 |
inter_cert = certificate_service.create_ca(inter_ca_private_key, Subject(common_name="Intermediate CA"), root_ca, |
|
52 |
root_ca_private_key, usages={SSL_ID: True}) |
|
53 |
|
|
54 |
assert INTERMEDIATE_CA_ID == inter_cert.type_id |
|
55 |
|
|
56 |
assert inter_cert.usages[CA_ID] |
|
57 |
assert inter_cert.usages[SSL_ID] |
|
58 |
assert inter_cert.usages[AUTHENTICATION_ID] is False |
|
59 |
assert inter_cert.usages[SIGNATURE_ID] is False |
|
60 |
|
|
61 |
inter_cert_loaded = certificate_service.get_certificate(inter_cert.certificate_id) |
|
62 |
|
|
63 |
# verify that the loaded certificate is a CA |
|
64 |
cert_loaded_printed = export_crt(inter_cert_loaded.pem_data) |
|
65 |
assert """ X509v3 Basic Constraints: critical |
|
66 |
CA:TRUE""" in cert_loaded_printed |
|
67 |
|
|
68 |
assert inter_cert.certificate_id == inter_cert_loaded.certificate_id |
|
69 |
assert inter_cert.common_name == inter_cert_loaded.common_name |
|
70 |
assert inter_cert.valid_from == inter_cert_loaded.valid_from |
|
71 |
assert inter_cert.valid_to == inter_cert_loaded.valid_to |
|
72 |
assert inter_cert.pem_data == inter_cert_loaded.pem_data |
|
73 |
assert inter_cert.private_key_id == inter_cert_loaded.private_key_id |
|
74 |
assert inter_cert.type_id == inter_cert_loaded.type_id |
|
75 |
assert inter_cert.parent_id == root_ca.certificate_id |
|
76 |
assert inter_cert_loaded.parent_id == root_ca.certificate_id |
|
77 |
assert inter_cert.usages == inter_cert_loaded.usages |
|
78 |
|
|
79 |
|
|
80 |
def test_create_and_get_cert(private_key_service, certificate_service): |
|
81 |
root_ca_private_key = private_key_service.create_new_key(passphrase="foobar") |
|
82 |
inter_ca_private_key = private_key_service.create_new_key(passphrase="barfoo") |
|
83 |
end_cert_private_key = private_key_service.create_new_key(passphrase="foofoo") |
|
84 |
|
|
85 |
root_ca_cert = certificate_service.create_root_ca(root_ca_private_key, |
|
86 |
Subject(common_name="RootFoo", |
|
87 |
organization_unit="Department of Foo")) |
|
88 |
|
|
89 |
inter_ca_cert = certificate_service.create_ca(inter_ca_private_key, Subject(common_name="Intermediate CA"), |
|
90 |
root_ca_cert, |
|
91 |
root_ca_private_key, usages={SSL_ID: True}) |
|
92 |
|
|
93 |
cert = certificate_service.create_end_cert(end_cert_private_key, |
|
94 |
Subject("Foo Child", email_address="foo@bar.cz"), inter_ca_cert, |
|
95 |
inter_ca_private_key, usages={AUTHENTICATION_ID: True}) |
|
96 |
assert CERTIFICATE_ID == cert.type_id |
|
97 |
|
|
98 |
assert cert.usages[AUTHENTICATION_ID] |
|
99 |
assert cert.usages[SSL_ID] is False |
|
100 |
assert cert.usages[SIGNATURE_ID] is False |
|
101 |
assert cert.usages[CA_ID] is False |
|
102 |
|
|
103 |
cert_loaded = certificate_service.get_certificate(cert.certificate_id) |
|
104 |
|
|
105 |
assert cert.certificate_id == cert_loaded.certificate_id |
|
106 |
assert cert.common_name == cert_loaded.common_name |
|
107 |
assert cert.valid_from == cert_loaded.valid_from |
|
108 |
assert cert.valid_to == cert_loaded.valid_to |
|
109 |
assert cert.pem_data == cert_loaded.pem_data |
|
110 |
assert cert.private_key_id == cert_loaded.private_key_id |
|
111 |
assert cert.type_id == cert_loaded.type_id |
|
112 |
assert cert.parent_id == inter_ca_cert.certificate_id |
|
113 |
assert cert_loaded.parent_id == inter_ca_cert.certificate_id |
|
114 |
assert cert.usages == cert_loaded.usages |
|
115 |
|
|
116 |
|
|
117 |
def test_get_certificates(private_key_service_unique, certificate_service_unique): |
|
118 |
root_ca_private_key = private_key_service_unique.create_new_key(passphrase="foobar") |
|
119 |
inter_ca_private_key = private_key_service_unique.create_new_key(passphrase="barfoo") |
|
120 |
end_cert_private_key = private_key_service_unique.create_new_key(passphrase="foofoo") |
|
121 |
|
|
122 |
root_ca_cert = certificate_service_unique.create_root_ca(root_ca_private_key, |
|
123 |
Subject(common_name="RootFoo", |
|
124 |
organization_unit="Department of Foo")) |
|
125 |
|
|
126 |
inter_ca_cert = certificate_service_unique.create_ca(inter_ca_private_key, Subject(common_name="Intermediate CA"), |
|
127 |
root_ca_cert, |
|
128 |
root_ca_private_key, usages={SSL_ID: True}) |
|
129 |
|
|
130 |
cert = certificate_service_unique.create_end_cert(end_cert_private_key, |
|
131 |
Subject("Foo Child", email_address="foo@bar.cz"), inter_ca_cert, |
|
132 |
inter_ca_private_key, usages={AUTHENTICATION_ID: True}) |
|
133 |
|
|
134 |
all_certs = certificate_service_unique.get_certificates() |
|
135 |
assert 3 == len(all_certs) |
|
136 |
assert "RootFoo" == all_certs[0].common_name |
|
137 |
assert "Intermediate CA" == all_certs[1].common_name |
|
138 |
assert "Foo Child" == all_certs[2].common_name |
|
139 |
|
|
140 |
assert 1 == len(certificate_service_unique.get_certificates(cert_type=ROOT_CA_ID)) |
|
141 |
assert 1 == len(certificate_service_unique.get_certificates(cert_type=INTERMEDIATE_CA_ID)) |
|
142 |
assert 1 == len(certificate_service_unique.get_certificates(cert_type=CERTIFICATE_ID)) |
|
143 |
|
|
144 |
|
|
145 |
def test_get_chain_of_trust(private_key_service, certificate_service): |
|
146 |
root_ca_private_key = private_key_service.create_new_key(passphrase="foobar") |
|
147 |
inter_ca_private_key = private_key_service.create_new_key(passphrase="barfoo") |
|
148 |
end_cert_private_key = private_key_service.create_new_key(passphrase="foofoo") |
|
149 |
|
|
150 |
root_ca_cert = certificate_service.create_root_ca(root_ca_private_key, |
|
151 |
Subject(common_name="RootFoo", |
|
152 |
organization_unit="Department of Foo")) |
|
153 |
|
|
154 |
inter_ca_cert = certificate_service.create_ca(inter_ca_private_key, Subject(common_name="Intermediate CA"), |
|
155 |
root_ca_cert, |
|
156 |
root_ca_private_key, usages={SSL_ID: True}) |
|
157 |
|
|
158 |
cert = certificate_service.create_end_cert(end_cert_private_key, |
|
159 |
Subject("Foo Child", email_address="foo@bar.cz"), inter_ca_cert, |
|
160 |
inter_ca_private_key, usages={AUTHENTICATION_ID: True}) |
|
161 |
|
|
162 |
cot = certificate_service.get_chain_of_trust(cert.certificate_id) |
|
163 |
assert len(cot) == 2 |
|
164 |
assert [cert.certificate_id, inter_ca_cert.certificate_id] == [cot[0].certificate_id, cot[1].certificate_id] |
|
165 |
|
|
166 |
cot = certificate_service.get_chain_of_trust(cert.certificate_id, root_ca_cert.private_key_id) |
|
167 |
assert len(cot) == 2 |
|
168 |
assert [cert.certificate_id, inter_ca_cert.certificate_id] == [cot[0].certificate_id, cot[1].certificate_id] |
|
169 |
|
|
170 |
cot = certificate_service.get_chain_of_trust(cert.certificate_id, inter_ca_cert.private_key_id) |
|
171 |
assert len(cot) == 2 |
|
172 |
assert [cert.certificate_id, inter_ca_cert.certificate_id] == [cot[0].certificate_id, cot[1].certificate_id] |
|
173 |
|
|
174 |
cot = certificate_service.get_chain_of_trust(cert.certificate_id, exclude_root=False) |
|
175 |
assert len(cot) == 3 |
|
176 |
assert [cert.certificate_id, inter_ca_cert.certificate_id, root_ca_cert.certificate_id] == [cot[0].certificate_id, |
|
177 |
cot[1].certificate_id, |
|
178 |
cot[2].certificate_id] |
|
179 |
|
|
180 |
# starting from intermediate certificate |
|
181 |
cot = certificate_service.get_chain_of_trust(inter_ca_cert.certificate_id) |
|
182 |
assert len(cot) == 1 |
|
183 |
assert [inter_ca_cert.certificate_id] == [cot[0].certificate_id] |
|
184 |
|
|
185 |
cot = certificate_service.get_chain_of_trust(inter_ca_cert.certificate_id, root_ca_cert.private_key_id) |
|
186 |
assert len(cot) == 1 |
|
187 |
assert [inter_ca_cert.certificate_id] == [cot[0].certificate_id] |
|
188 |
|
|
189 |
cot = certificate_service.get_chain_of_trust(inter_ca_cert.certificate_id, exclude_root=False) |
|
190 |
assert len(cot) == 2 |
|
191 |
assert [inter_ca_cert.certificate_id, root_ca_cert.certificate_id] == [cot[0].certificate_id, |
|
192 |
cot[1].certificate_id] |
|
193 |
|
|
194 |
# starting from intermediate certificate |
|
195 |
cot = certificate_service.get_chain_of_trust(root_ca_cert.certificate_id) |
|
196 |
assert len(cot) == 0 |
|
197 |
|
|
198 |
cot = certificate_service.get_chain_of_trust(root_ca_cert.certificate_id, root_ca_cert.private_key_id) |
|
199 |
assert len(cot) == 0 |
|
200 |
|
|
201 |
cot = certificate_service.get_chain_of_trust(root_ca_cert.certificate_id, exclude_root=False) |
|
202 |
assert len(cot) == 1 |
|
203 |
assert [root_ca_cert.certificate_id] == [cot[0].certificate_id] |
|
204 |
|
|
205 |
|
|
206 |
def test_delete_cert(private_key_service, certificate_service): |
|
207 |
assert not certificate_service.delete_certificate(-1) |
|
208 |
|
|
209 |
root_ca_private_key = private_key_service.create_new_key(passphrase="foobar") |
|
210 |
|
|
211 |
original_len = len(certificate_service.get_certificates()) |
|
212 |
|
|
213 |
root_ca_cert = certificate_service.create_root_ca(root_ca_private_key, |
|
214 |
Subject(common_name="RootFoo", |
|
215 |
organization_unit="Department of Foo")) |
|
216 |
|
|
217 |
len_inserted = len(certificate_service.get_certificates()) |
|
218 |
|
|
219 |
assert original_len + 1 == len_inserted |
|
220 |
|
|
221 |
# TODO delete should delete all children? |
|
222 |
assert certificate_service.delete_certificate(root_ca_cert.certificate_id) |
|
223 |
assert not certificate_service.delete_certificate(root_ca_cert.certificate_id) |
|
224 |
|
|
225 |
assert len_inserted - 1 == len(certificate_service.get_certificates()) |
tests/integration_tests/services/private_key_service_test.py | ||
---|---|---|
1 |
def test_create_and_get_pk(private_key_service, certificate_service): |
|
2 |
private_key = private_key_service.create_new_key(passphrase="foobar") |
|
3 |
private_key_loaded = private_key_service.get_key(private_key.private_key_id) |
|
4 |
|
|
5 |
assert private_key.private_key_id == private_key_loaded.private_key_id |
|
6 |
assert private_key.private_key == private_key_loaded.private_key |
|
7 |
assert private_key.password == private_key_loaded.password |
|
8 |
|
|
9 |
|
|
10 |
def test_delete_pk(private_key_service, certificate_service): |
|
11 |
assert not private_key_service.delete_key(-1) |
|
12 |
|
|
13 |
private_key = private_key_service.create_new_key(passphrase="foobar") |
|
14 |
|
|
15 |
assert private_key_service.delete_key(private_key.private_key_id) is True |
|
16 |
assert not private_key_service.delete_key(private_key.private_key_id) |
Také k dispozici: Unified diff
Re #8472 - Added KeyService.delete test and renamed a test suite
Applied a small change to the KeyService.get_keys method