|
1 |
from src.model.certificate import Certificate
|
|
2 |
from src.model.private_key import PrivateKey
|
|
3 |
from src.services.cryptography import CryptographyService
|
|
4 |
from src.utils.temporary_file import TemporaryFile
|
|
5 |
|
|
6 |
|
|
7 |
CERT_TO_CHECK = 25
|
|
8 |
|
|
9 |
CERTIFICATE_PEM = """-----BEGIN CERTIFICATE-----
|
|
10 |
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
|
|
42 |
-----END CERTIFICATE-----
|
|
43 |
"""
|
|
44 |
|
|
45 |
KEY_PEM = """-----BEGIN RSA PRIVATE KEY-----
|
|
46 |
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
|
|
95 |
-----END RSA PRIVATE KEY-----
|
|
96 |
"""
|
|
97 |
|
|
98 |
INDEX = """R\t230401152645Z\t210401152748Z,keyCompromise\t01\tunknown\t/CN=IA CA/ST=Some-State/C=AU/O=Internet Widgits Pty Ltd
|
|
99 |
R\t230401153537Z\t210401152748Z,keyCompromise\t02\tunknown\t/CN=Pasek Jan/ST=Pilsen/C=CZ/O=Pasek s.r.o.
|
|
100 |
"""
|
|
101 |
|
|
102 |
EXPECTED_CRL = """-----BEGIN X509 CRL-----
|
|
103 |
MIIC5DCBzQIBATANBgkqhkiG9w0BAQUFADBVMQ4wDAYDVQQDDAVJQSBDQTETMBEG
|
|
104 |
A1UECAwKU29tZS1TdGF0ZTELMAkGA1UEBhMCQVUxITAfBgNVBAoMGEludGVybmV0
|
|
105 |
IFdpZGdpdHMgUHR5IEx0ZBcNMjEwNDIwMTc1ODUzWhcNMjEwNTIwMTc1ODUzWjBE
|
|
106 |
MCACAQEXDTIxMDQwMTE1Mjc0OFowDDAKBgNVHRUEAwoBATAgAgECFw0yMTA0MDEx
|
|
107 |
NTI3NDhaMAwwCgYDVR0VBAMKAQEwDQYJKoZIhvcNAQEFBQADggIBACY8D2BPpMf4
|
|
108 |
nVvcdketKVxzKsaZ+nUdOB4kOwMA3/rbPq3axTVQ0HBuMyoTS5sTgZxfEnEd0U9L
|
|
109 |
9sLk3464Mw6NH4Gmo1wiW3vIw0d4ml2hRytb64HIUAnRkZn3x/d2jA4mH0KRBO23
|
|
110 |
aCAy4qTp8J61EIoqQxMM0eJBjVxZnwY/E3SZlVTPVLXe6loSjVzT3rJItKLqMzqV
|
|
111 |
JUlMdMJSIvvCaIjihYa7eiH1iC9T3exyqV34sm/ktGOxxZshmGl0R3yJDgCJ/VG3
|
|
112 |
MEzU8jTys1cwwudUdlcouL4j6XMUpsnJhj+I/JaRXJqozsuyYJy1XmSsR1nlOjct
|
|
113 |
Mdx8chHiAFvQ3QmdfcGPxwtQXvWIh1nbNdoKHWH6CiTX3vhZiKsFwLYYcb+32DW7
|
|
114 |
9BOIAgD+Y+pcBwADWIP5QsIoGHBqbH+KQy8sSSvXK+ZySSHrAdMr7hts+djqQjKE
|
|
115 |
3pG2nH/AdiuyAneJu/YXvpYV9AV+IDVToB0kmwjaqYzGtNzgUMwyhBttR6+nfvkv
|
|
116 |
SQLDUuorwSzPPaROzHpX0TtULHxedZr2gPwjbIOIoB+0ZulpHpBRH6dQY15LaKw6
|
|
117 |
ZyjDy23+CVA/d3CvHuPaDkE0ucTJXNI/0c1giBGPJwdyYmeblZkzcaiYRboOI3kS
|
|
118 |
XlFRZbGV9ivNg6kM4L/7LgNTgBA5T63f
|
|
119 |
-----END X509 CRL-----
|
|
120 |
""".strip().replace("\r", "").replace("\n", "")
|
|
121 |
|
|
122 |
def test_generate_crl():
|
|
123 |
# only PEM data are relevant for the testcase
|
|
124 |
service = CryptographyService()
|
|
125 |
cert = Certificate(-1, "", "", "",
|
|
126 |
CERTIFICATE_PEM, -1, -1, -1, {})
|
|
127 |
key = PrivateKey(-1, KEY_PEM)
|
|
128 |
# generate CRL
|
|
129 |
with TemporaryFile("index", INDEX) as index_file:
|
|
130 |
out = service.generate_crl(cert, key, index_file)
|
|
131 |
|
|
132 |
# check first 25 bytes - the rest can differ due to different issuing date
|
|
133 |
assert out.strip().replace("\r", "").replace("\n", "")[:CERT_TO_CHECK] == EXPECTED_CRL[:CERT_TO_CHECK]
|
Re #8576 - cryptography.py implemented generate_crl()