From 75d42614bc78a373f4ccbc0a359a9f493c7e739d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Afonso=20Janu=C3=A1rio?= Date: Mon, 31 Aug 2026 21:25:41 +0100 Subject: [PATCH 1/4] Regenerate client test cert, current one expires in 2032 client.cert.pem is signed by client_ca and used for the SSL client cert auth tests in test_connect.py, but its own validity ends on 2032-01-04, well before client_ca.cert.pem's own expiry in 2041. When it expires the SSL handshake in those tests will start failing with a plain certificate-expired error, unrelated to anything the test is actually meant to check. ca.cert.pem and server.cert.pem already went through this once and got regenerated further out (#1188), this just does the same thing for the one cert that got missed, since it isn't produced by tests/certs/gen.py at all (that script only ever generates the server-side ca/server pair, the client_ca/client pair looks to have been created separately by hand back when they were first added). Same subject, issuer, public key and X.509 extensions as before (confirmed field by field), just a fresh serial number and validity window matching client_ca's own, reusing the existing client.key.pem rather than rotating it since there's no reason to. --- tests/certs/client.cert.pem | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/tests/certs/client.cert.pem b/tests/certs/client.cert.pem index b6d9a91a..043f6e7c 100644 --- a/tests/certs/client.cert.pem +++ b/tests/certs/client.cert.pem @@ -1,10 +1,10 @@ -----BEGIN CERTIFICATE----- -MIIEAzCCAuugAwIBAgIUPfej8IQ/5bCrihqWImrq2vKPOq0wDQYJKoZIhvcNAQEL +MIIEAzCCAuugAwIBAgIURCaxTIWMMvPKACpfim6M++DoJ3owDQYJKoZIhvcNAQEL BQAwgaMxCzAJBgNVBAYTAkNBMRAwDgYDVQQIDAdPbnRhcmlvMRAwDgYDVQQHDAdU b3JvbnRvMRgwFgYDVQQKDA9NYWdpY1N0YWNrIEluYy4xFjAUBgNVBAsMDWFzeW5j cGcgdGVzdHMxHzAdBgNVBAMMFmFzeW5jcGcgdGVzdCBjbGllbnQgQ0ExHTAbBgkq -hkiG9w0BCQEWDmhlbGxvQG1hZ2ljLmlvMB4XDTIxMDgwOTIxNTA1MloXDTMyMDEw -NDIxNTA1MlowgZUxCzAJBgNVBAYTAkNBMRAwDgYDVQQIDAdPbnRhcmlvMRAwDgYD +hkiG9w0BCQEWDmhlbGxvQG1hZ2ljLmlvMB4XDTI2MDgzMDIxMjI0N1oXDTQxMDgw +NDIxNDQxM1owgZUxCzAJBgNVBAYTAkNBMRAwDgYDVQQIDAdPbnRhcmlvMRAwDgYD VQQHDAdUb3JvbnRvMRgwFgYDVQQKDA9NYWdpY1N0YWNrIEluYy4xFjAUBgNVBAsM DWFzeW5jcGcgdGVzdHMxETAPBgNVBAMMCHNzbF91c2VyMR0wGwYJKoZIhvcNAQkB Fg5oZWxsb0BtYWdpYy5pbzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB @@ -15,10 +15,10 @@ nzMvCp5os+xFrt4SpoRGTx9x4QleY+zrEsYZtmnV4wC+JuJkNw4fuCdrX5k7dghs uZkcsAZof1nMdYsYiazeDfQKZtJqh5kO7mpwvCudKUWaLJJUwiQA87BwSlnCd/Hh TZDbC+zeFNjTS49/4Q72xVECAwEAAaM7MDkwHwYDVR0jBBgwFoAUi1jMmAisuOib mHIE2n0W2WnnaL0wCQYDVR0TBAIwADALBgNVHQ8EBAMCBPAwDQYJKoZIhvcNAQEL -BQADggEBACbnp5oOp639ko4jn8axF+so91k0vIcgwDg+NqgtSRsuAENGumHAa8ec -YOks0TCTvNN5E6AfNSxRat5CyguIlJ/Vy3KbkkFNXcCIcI/duAJvNphg7JeqYlQM -VIJhrO/5oNQMzzTw8XzTHnciGbrbiZ04hjwrruEkvmIAwgQPhIgq4H6umTZauTvk -DEo7uLm7RuG9hnDyWCdJxLLljefNL/EAuDYpPzgTeEN6JAnOu0ULIbpxpJKiYEId -8I0U2n0I2NTDOHmsAJiXf8BiHHmpK5SXFyY9s2ZuGkCzvmeZlR81tTXmHZ3v1X2z -8NajoAZfJ+QD50DrbF5E00yovZbyIB4= +BQADggEBAH/jMspBLCh/GAf1P6bKt4cloa4oQbF+33WI6htyWQ35LN7+TRPp0OQI +ac6SQCztLFjZ4hwb5hlWU0AYvu/K/2eTQQr/yR4siK+/bnPnr/Sa3pmN+iI9aTjp +UBRjk1YJpTmVju67fT3n/wgKSyU+gNhvW+eSjHnLoEQZjpLelYw8IHObQmISAv+K +zSunPXzYhxVJrSQhs7gjXdrwvrioFjtXjLKmXXOLKJgliF7lI0m4OYCu473WKzEI +yvpY6Dmwj3slMYn2+iw7b2uxX1uOu5Y0km7HfR/muBKteNDLX7M67adSWJcZG4oz +ajwF15X7vJqsVHYu6unk9ajf8dxhHL8= -----END CERTIFICATE----- From 07b6c3f1f6eda5e9d158dddb2f3702416da8a6bd Mon Sep 17 00:00:00 2001 From: Elvis Pranskevichus Date: Mon, 21 Sep 2026 14:27:33 -0700 Subject: [PATCH 2/4] Generate client test certificates in cert script --- tests/certs/gen.py | 70 ++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 59 insertions(+), 11 deletions(-) diff --git a/tests/certs/gen.py b/tests/certs/gen.py index 19203840..ec2ae950 100644 --- a/tests/certs/gen.py +++ b/tests/certs/gen.py @@ -9,7 +9,13 @@ from cryptography.x509 import oid -def _new_cert(issuer=None, is_issuer=False, serial_number=None, **subject): +def _new_cert( + issuer=None, + is_issuer=False, + is_client=False, + serial_number=None, + **subject, +): backend = backends.default_backend() private_key = rsa.generate_private_key( public_exponent=65537, key_size=4096, backend=backend @@ -85,6 +91,11 @@ def _new_cert(issuer=None, is_issuer=False, serial_number=None, **subject): ) ) else: + extended_key_usage = ( + oid.ExtendedKeyUsageOID.CLIENT_AUTH + if is_client + else oid.ExtendedKeyUsageOID.SERVER_AUTH + ) builder = ( builder.add_extension( x509.KeyUsage( @@ -105,11 +116,7 @@ def _new_cert(issuer=None, is_issuer=False, serial_number=None, **subject): critical=True, ) .add_extension( - x509.ExtendedKeyUsage([oid.ExtendedKeyUsageOID.SERVER_AUTH]), - critical=False, - ) - .add_extension( - x509.SubjectAlternativeName([x509.DNSName("localhost")]), + x509.ExtendedKeyUsage([extended_key_usage]), critical=False, ) .add_extension( @@ -121,6 +128,11 @@ def _new_cert(issuer=None, is_issuer=False, serial_number=None, **subject): critical=False, ) ) + if not is_client: + builder = builder.add_extension( + x509.SubjectAlternativeName([x509.DNSName("localhost")]), + critical=False, + ) certificate = builder.sign( private_key=signing_key, algorithm=hashes.SHA256(), @@ -129,13 +141,12 @@ def _new_cert(issuer=None, is_issuer=False, serial_number=None, **subject): return certificate, private_key -def _write_cert(path, cert_key_pair, password=None): - certificate, private_key = cert_key_pair +def _write_key(path, private_key, password=None): if password: encryption = serialization.BestAvailableEncryption(password) else: encryption = serialization.NoEncryption() - with open(path + ".key.pem", "wb") as f: + with open(path, "wb") as f: f.write( private_key.private_bytes( encoding=serialization.Encoding.PEM, @@ -143,6 +154,11 @@ def _write_cert(path, cert_key_pair, password=None): encryption_algorithm=encryption, ) ) + + +def _write_cert(path, cert_key_pair, password=None): + certificate, private_key = cert_key_pair + _write_key(path + ".key.pem", private_key, password) with open(path + ".cert.pem", "wb") as f: f.write( certificate.public_bytes( @@ -158,10 +174,18 @@ def new_ca(path, **subject): def new_cert( - path, ca_cert_key_pair, password=None, is_issuer=False, **subject + path, + ca_cert_key_pair, + password=None, + is_issuer=False, + is_client=False, + **subject, ): cert_key_pair = _new_cert( - issuer=ca_cert_key_pair, is_issuer=is_issuer, **subject + issuer=ca_cert_key_pair, + is_issuer=is_issuer, + is_client=is_client, + **subject, ) _write_cert(path, cert_key_pair, password) return cert_key_pair @@ -211,6 +235,30 @@ def main(): ) new_crl('server', ca, server) + client_ca = new_ca( + "client_ca", + country_name="CA", + state_or_province_name="Ontario", + locality_name="Toronto", + organization_name="MagicStack Inc.", + organizational_unit_name="asyncpg tests", + common_name="asyncpg test client CA", + email_address="hello@magic.io", + ) + client = new_cert( + "client", + client_ca, + is_client=True, + country_name="CA", + state_or_province_name="Ontario", + locality_name="Toronto", + organization_name="MagicStack Inc.", + organizational_unit_name="asyncpg tests", + common_name="ssl_user", + email_address="hello@magic.io", + ) + _write_key("client.key.protected.pem", client[1], b"secRet") + if __name__ == "__main__": main() From 1f7755d0b004ff350d4af24ff2c8c8e5a2f9ba6b Mon Sep 17 00:00:00 2001 From: Elvis Pranskevichus Date: Mon, 21 Sep 2026 15:03:15 -0700 Subject: [PATCH 3/4] Regenerate client certificate fixtures --- tests/certs/client.cert.pem | 59 +++++++++++++-------- tests/certs/client.key.pem | 74 ++++++++++++++++++--------- tests/certs/client.key.protected.pem | 76 ++++++++++++++++++---------- tests/certs/client_ca.cert.pem | 56 +++++++++++--------- tests/certs/client_ca.key.pem | 74 ++++++++++++++++++--------- 5 files changed, 218 insertions(+), 121 deletions(-) diff --git a/tests/certs/client.cert.pem b/tests/certs/client.cert.pem index 043f6e7c..e0c5456a 100644 --- a/tests/certs/client.cert.pem +++ b/tests/certs/client.cert.pem @@ -1,24 +1,39 @@ -----BEGIN CERTIFICATE----- -MIIEAzCCAuugAwIBAgIURCaxTIWMMvPKACpfim6M++DoJ3owDQYJKoZIhvcNAQEL -BQAwgaMxCzAJBgNVBAYTAkNBMRAwDgYDVQQIDAdPbnRhcmlvMRAwDgYDVQQHDAdU -b3JvbnRvMRgwFgYDVQQKDA9NYWdpY1N0YWNrIEluYy4xFjAUBgNVBAsMDWFzeW5j -cGcgdGVzdHMxHzAdBgNVBAMMFmFzeW5jcGcgdGVzdCBjbGllbnQgQ0ExHTAbBgkq -hkiG9w0BCQEWDmhlbGxvQG1hZ2ljLmlvMB4XDTI2MDgzMDIxMjI0N1oXDTQxMDgw -NDIxNDQxM1owgZUxCzAJBgNVBAYTAkNBMRAwDgYDVQQIDAdPbnRhcmlvMRAwDgYD -VQQHDAdUb3JvbnRvMRgwFgYDVQQKDA9NYWdpY1N0YWNrIEluYy4xFjAUBgNVBAsM -DWFzeW5jcGcgdGVzdHMxETAPBgNVBAMMCHNzbF91c2VyMR0wGwYJKoZIhvcNAQkB -Fg5oZWxsb0BtYWdpYy5pbzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB -AJjiP9Ik/KRRLK9GMvoH8m1LO+Gyrr8Gz36LpmKJMR/PpwTL+1pOkYSGhOyT3Cw9 -/kWWLJRCvYqKgFtYtbr4S6ReGm3GdSVW+sfVRYDrRQZLPgQSPeq25g2v8UZ63Ota -lPAyUPUZKpxyWz8PL77lV8psb9yv14yBH2kv9BbxKPksWOU8p8OCn1Z3WFFl0ItO -nzMvCp5os+xFrt4SpoRGTx9x4QleY+zrEsYZtmnV4wC+JuJkNw4fuCdrX5k7dghs -uZkcsAZof1nMdYsYiazeDfQKZtJqh5kO7mpwvCudKUWaLJJUwiQA87BwSlnCd/Hh -TZDbC+zeFNjTS49/4Q72xVECAwEAAaM7MDkwHwYDVR0jBBgwFoAUi1jMmAisuOib -mHIE2n0W2WnnaL0wCQYDVR0TBAIwADALBgNVHQ8EBAMCBPAwDQYJKoZIhvcNAQEL -BQADggEBAH/jMspBLCh/GAf1P6bKt4cloa4oQbF+33WI6htyWQ35LN7+TRPp0OQI -ac6SQCztLFjZ4hwb5hlWU0AYvu/K/2eTQQr/yR4siK+/bnPnr/Sa3pmN+iI9aTjp -UBRjk1YJpTmVju67fT3n/wgKSyU+gNhvW+eSjHnLoEQZjpLelYw8IHObQmISAv+K -zSunPXzYhxVJrSQhs7gjXdrwvrioFjtXjLKmXXOLKJgliF7lI0m4OYCu473WKzEI -yvpY6Dmwj3slMYn2+iw7b2uxX1uOu5Y0km7HfR/muBKteNDLX7M67adSWJcZG4oz -ajwF15X7vJqsVHYu6unk9ajf8dxhHL8= +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 -----END CERTIFICATE----- diff --git a/tests/certs/client.key.pem b/tests/certs/client.key.pem index 90389cab..af40338f 100644 --- a/tests/certs/client.key.pem +++ b/tests/certs/client.key.pem @@ -1,27 +1,51 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/tests/certs/client.key.protected.pem b/tests/certs/client.key.protected.pem index 0c5a9795..97095d74 100644 --- a/tests/certs/client.key.protected.pem +++ b/tests/certs/client.key.protected.pem @@ -1,30 +1,54 @@ -----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED -DEK-Info: AES-256-CBC,B222CD7D00828606A07DBC489D400921 +DEK-Info: AES-256-CBC,C4C1E952305DC4E33489AFE0287BE819 -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 -----END RSA PRIVATE KEY----- diff --git a/tests/certs/client_ca.cert.pem b/tests/certs/client_ca.cert.pem index 17d3f357..22b5b02a 100644 --- a/tests/certs/client_ca.cert.pem +++ b/tests/certs/client_ca.cert.pem @@ -1,25 +1,35 @@ -----BEGIN CERTIFICATE----- -MIIEKTCCAxGgAwIBAgIUKmL8tfNS9LIB6GLB9RpZpTyk3uIwDQYJKoZIhvcNAQEL -BQAwgaMxCzAJBgNVBAYTAkNBMRAwDgYDVQQIDAdPbnRhcmlvMRAwDgYDVQQHDAdU -b3JvbnRvMRgwFgYDVQQKDA9NYWdpY1N0YWNrIEluYy4xFjAUBgNVBAsMDWFzeW5j -cGcgdGVzdHMxHzAdBgNVBAMMFmFzeW5jcGcgdGVzdCBjbGllbnQgQ0ExHTAbBgkq -hkiG9w0BCQEWDmhlbGxvQG1hZ2ljLmlvMB4XDTIxMDgwOTIxNDQxM1oXDTQxMDgw -NDIxNDQxM1owgaMxCzAJBgNVBAYTAkNBMRAwDgYDVQQIDAdPbnRhcmlvMRAwDgYD -VQQHDAdUb3JvbnRvMRgwFgYDVQQKDA9NYWdpY1N0YWNrIEluYy4xFjAUBgNVBAsM -DWFzeW5jcGcgdGVzdHMxHzAdBgNVBAMMFmFzeW5jcGcgdGVzdCBjbGllbnQgQ0Ex -HTAbBgkqhkiG9w0BCQEWDmhlbGxvQG1hZ2ljLmlvMIIBIjANBgkqhkiG9w0BAQEF -AAOCAQ8AMIIBCgKCAQEAptRYfxKiWExfZguQDva53bIqYa4lJwZA86Qu0peBUcsd -E6zyHNgVv4XSMim1FH12KQ4KPKuQAcVqRMCRAHqB96kUfWQqF//fLajr0umdzcbx -+UTgNux8TkScTl9KNAxhiR/oOGbKFcNSs4raaG8puwwEN66uMhoKk2pN2NwDVfHa -bTekJ3jouTcTCnqCynx4qwI4WStJkuW4IPCmDRVXxOOauT7YalElYLWYtAOqGEvf -noDK2Imhc0h6B5XW8nI54rVCXWwhW1v3RLAJGP+LwSy++bf08xmpHXdKkAj5BmUO -QwJRiJ33Xa17rmi385egx8KpqV04YEAPdV1Z4QM6PQIDAQABo1MwUTAdBgNVHQ4E -FgQUi1jMmAisuOibmHIE2n0W2WnnaL0wHwYDVR0jBBgwFoAUi1jMmAisuOibmHIE -2n0W2WnnaL0wDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAifNE -ZLZXxECp2Sl6jCViZxgFf2+OHDvRORgI6J0heckYyYF/JHvLaDphh6TkSJAdT6Y3 -hAb7jueTMI+6RIdRzIjTKCGdJqUetiSfAbnQyIp2qmVqdjeFoXTvQL7BdkIE+kOW -0iomMqDB3czTl//LrgVQCYqKM0D/Ytecpg2mbshLfpPxdHyliCJcb4SqfdrDnKoV -HUduBjOVot+6bkB5SEGCrrB4KMFTzbAu+zriKWWz+uycIyeVMLEyhDs59vptOK6e -gWkraG43LZY3cHPiVeN3tA/dWdyJf9rgK21zQDSMB8OSH4yQjdQmkkvRQBjp3Fcy -w2SZIP4o9l1Y7+hMMw== +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 -----END CERTIFICATE----- diff --git a/tests/certs/client_ca.key.pem b/tests/certs/client_ca.key.pem index 519c5a09..c2af7eed 100644 --- a/tests/certs/client_ca.key.pem +++ b/tests/certs/client_ca.key.pem @@ -1,27 +1,51 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- From 35f492c52010893a022cbf4ea8c074d2b5aec066 Mon Sep 17 00:00:00 2001 From: Elvis Pranskevichus Date: Mon, 21 Sep 2026 16:16:22 -0700 Subject: [PATCH 4/4] Reuse existing keys when regenerating certificates --- tests/certs/client.cert.pem | 60 ++++++++---------- tests/certs/client.key.pem | 74 ++++++++-------------- tests/certs/client.key.protected.pem | 76 ++++++++--------------- tests/certs/client_ca.cert.pem | 56 +++++++---------- tests/certs/client_ca.key.pem | 74 ++++++++-------------- tests/certs/gen.py | 93 +++++++++++++++++++++++----- 6 files changed, 200 insertions(+), 233 deletions(-) diff --git a/tests/certs/client.cert.pem b/tests/certs/client.cert.pem index e0c5456a..af49e39b 100644 --- a/tests/certs/client.cert.pem +++ b/tests/certs/client.cert.pem @@ -1,39 +1,29 @@ -----BEGIN CERTIFICATE----- -MIIG7DCCBNSgAwIBAgIILmrEhuv4V1owDQYJKoZIhvcNAQELBQAwgaMxCzAJBgNV -BAYTAkNBMRAwDgYDVQQIDAdPbnRhcmlvMRAwDgYDVQQHDAdUb3JvbnRvMRgwFgYD -VQQKDA9NYWdpY1N0YWNrIEluYy4xFjAUBgNVBAsMDWFzeW5jcGcgdGVzdHMxHzAd -BgNVBAMMFmFzeW5jcGcgdGVzdCBjbGllbnQgQ0ExHTAbBgkqhkiG9w0BCQEWDmhl -bGxvQG1hZ2ljLmlvMB4XDTI2MDkyMDE1MDA0OVoXDTQ1MTEyMDE1MDA0OVowgZUx +MIIE7DCCA9SgAwIBAgIJAMXPbgYRbS6PMA0GCSqGSIb3DQEBCwUAMIGjMQswCQYD +VQQGEwJDQTEQMA4GA1UECAwHT250YXJpbzEQMA4GA1UEBwwHVG9yb250bzEYMBYG +A1UECgwPTWFnaWNTdGFjayBJbmMuMRYwFAYDVQQLDA1hc3luY3BnIHRlc3RzMR8w +HQYDVQQDDBZhc3luY3BnIHRlc3QgY2xpZW50IENBMR0wGwYJKoZIhvcNAQkBFg5o +ZWxsb0BtYWdpYy5pbzAeFw0yNjA5MjAxNTQ2MTNaFw00NTExMjAxNTQ2MTNaMIGV +MQswCQYDVQQGEwJDQTEQMA4GA1UECAwHT250YXJpbzEQMA4GA1UEBwwHVG9yb250 +bzEYMBYGA1UECgwPTWFnaWNTdGFjayBJbmMuMRYwFAYDVQQLDA1hc3luY3BnIHRl +c3RzMREwDwYDVQQDDAhzc2xfdXNlcjEdMBsGCSqGSIb3DQEJARYOaGVsbG9AbWFn +aWMuaW8wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCY4j/SJPykUSyv +RjL6B/JtSzvhsq6/Bs9+i6ZiiTEfz6cEy/taTpGEhoTsk9wsPf5FliyUQr2KioBb +WLW6+EukXhptxnUlVvrH1UWA60UGSz4EEj3qtuYNr/FGetzrWpTwMlD1GSqccls/ +Dy++5VfKbG/cr9eMgR9pL/QW8Sj5LFjlPKfDgp9Wd1hRZdCLTp8zLwqeaLPsRa7e +EqaERk8fceEJXmPs6xLGGbZp1eMAvibiZDcOH7gna1+ZO3YIbLmZHLAGaH9ZzHWL +GIms3g30CmbSaoeZDu5qcLwrnSlFmiySVMIkAPOwcEpZwnfx4U2Q2wvs3hTY00uP +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 +URBnwi1RJjdumfMw1gC1Ow== -----END CERTIFICATE----- diff --git a/tests/certs/client.key.pem b/tests/certs/client.key.pem index af40338f..90389cab 100644 --- a/tests/certs/client.key.pem +++ b/tests/certs/client.key.pem @@ -1,51 +1,27 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/tests/certs/client.key.protected.pem b/tests/certs/client.key.protected.pem index 97095d74..0c5a9795 100644 --- a/tests/certs/client.key.protected.pem +++ b/tests/certs/client.key.protected.pem @@ -1,54 +1,30 @@ -----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED -DEK-Info: AES-256-CBC,C4C1E952305DC4E33489AFE0287BE819 +DEK-Info: AES-256-CBC,B222CD7D00828606A07DBC489D400921 -dMydanNa0IxMOwy8dLN9KUv83yJyL7lmWHX3h17ppZaH4KcLkmMl0vqHDAdOOL1r -f8HDgrNoVABX6ZaUhSw7BH9cUqf24UUutGz51VNipKpIP8hZgQVeikYilf9yRxnP -5bVX38+yYe4GN7T/qiE0pUKbBkNFQwQN1PLbmkJs497r3fT/GoEEkMmlitRGKJ0m -Ef7ZqmS1AP1XFhsDWmtulL08klrohcQJU+IIDBzddb/WlZH3zzXSdSm1jXm8pMlT -Gqe1w/OcQ3Nx+yajACRpjRrRuoeGbxOe4axrbZneAYIzp/chXhAtppHuAA9a987f -xyQuqQeVEzk+KG4worvlzqpyj3fKdylG7oKlAGFHbkF+bIhesWikM3HMpJuMvb2Z -7I1cGQpZ8r+LufpilUJd254IhuqtJPdilzGUk+8iw3WWdx0Y4O97rVbxb+37EUfd -sriMz3Kx2W4vwH/ZMPDcatSYTE2rfY6zk/o4l/DblyE1PSmd9ep4WjNfRTE89t6a -HAqw3s8hj2omVRZPe68FdmP/Fwog4uyRsDy6OWVZDyUV2G4/gx2UxYNd5QA7ioiz -dED3w+ROr77qK0FsJx+YAp9WDRwYn494CUSpWx7/7h/o+MqRxJZJNtME06pN75DW -KTdyv7mFoCmugkviUXNUHoo6uz9gQWvcHKeReNw4crSTWX33Hxqr5st5+tH6SRCG -bZ9RQP4lCJr3eWHwdg4rJZa6gHfLSxnt3UWDVapOFOvaDM0UbY3sS6S16yeJeext -fwcFh4WcfW+rnST9UnYzWdhUTnGgNRsnH5DKww7rPMJe+FicbKhSsWobZkIMwrJB -uv0wDRmtPkB4EMh5zLMtJErhbgGT0XLtNAl8GvMMgJ7Je0k0ZyZ5qzUGk8B7q3Td -X2Ro+667z6qRvjvAca5z46ALOpH5K2Civ+/3NvMDekNRuGtVsFcNCh2AlyKa6uNc -WSHVPF/NN4VGMIVwervPHzdkTQLhuokNijPOUuSDo+XPiIs5RFVWflOiieBks5W7 -5tYx0QZscHuirtqVK2gWJITyjPlVkFmaUxGB2H8cpPnya+y0gmwd7dMUr0DJ9OGj -qLXMs9uSd5ZinehokO6FS7FI2GovCy/tHS1bnSVW6ryc6eCpciz9/DPmdGzqzz9X -ntKc3fwF60ShCgPb+kNnXUrO0Qd2LwQ9I1LXAlaIyioEiNR9dbgePJk4yCxXmfZe -oa26ZE3DJpe7y9oDpBvGThmZhW8TwUgdB6t9LJFd5qURTZLxs8XiIoRKCsrVVwSw -8fhGs+Wn+xAa9omO382Edvf6FVQVh9VICyWrJfkruz3xCcjHLXcQ0JXLrcKqQkRN -WITiT4PMMtoovOThL8LHPfEwOsD4qk7fPc1YKbKNcffOpiq3FP5zjyfszomSnV+0 -2iYMSaofNXrITis+xHTazSrZHyeYJ0SLmEOEwL731foYg2UETn/WCgn6C0V04Cg7 -lubYorNah1HGF/USMB2OccKmXrQRMHpCbdTOnstyqqGm5E+1Di8x3g5t6MtMWV3Z -YnHDPNypJMvHHYh2eQHp89aWPZ+FqA0Wk8tYtsichIPA88nTyLwxxymtJf6MCD2z -lO4TCejFQi/nBPqRR8J17x3ASLJzhLWWBlghhtvVMkH2knv7TAHYJNkOFvyOyAnK -Narvm2Gw37T7P0gWvxbSWFfuisgx1luJuBT6Ok56CxG6NDbta8Zpg7wbmNT7gWz/ -ng/sDj04IZLdoKy5A4kU5AGHekFt6woZwM5F3zlI3KDNCuAyoaCLcVe0y97DhTv1 -GpaINc5ywbAXEr7o5qZc8jqheRgYcGQ2PNd7whyegRsEQbMFkIwf2pkKF8GxB+3J -SA7LvFqYw8xQvk7Ls2uKY0vlqHqGEkDAWlwnxiRLw1dle1Wc9FKk+cSbqN1vjHQz -OeomVJBm5Ffzmz56Y1hp6/vdIffgWepwld4gdSpvXtBBBMaHsJsYESgQWuqKQc6v -BPSyobflXnUTSlrn+ccZVANWBVp6W4otFzquh1N5eRL/W0+Rc7T9M4sX3hlnae+f -zAt2E0KA/swifBy/WvXmbOp6NDmEsaKckcAPZutbJ8AJoPiwmnpK69oRdUiMj3xl -aJ/zR4HoqnQcWbWC0TeNnCyQms3ydoMqalFWjGaE1z5ldpAmEEBcgALcIMQDdNZz -DkeRDL9agZmwVX2VzuUzwAea8mXPK9JITC4BIJHb3bw0sD57YNfbN4+X3ZFKa84C -5pGAeyzA8fWnVr/wfyWOqTvMsF7KBB4Vk0aYMHw9Su1ZVjG9Yup5c/FtgegOTqHF -nJEVwAInTbmUq0xriAoXrQJXi5sz9eNwCm2gueX8YEHKy4qoXAF/3NVAbYMTPMgP -rXEgrSpST4CD35eiEu02t2CiSnfaFFdMtcLxPDNb1WJ5z9ZGlqlgIPM/+TwFug1S -2BH+44vZme679mxp8rRdrxvRYXJyHwF1zYjTVvYxsysiZgzRqrRUdWTfIczHTwdO -uAyErQzZFyxr9+ZvXXUMKnkD6OQypTS1FpD90SpIVYuJF6HARfpKL9mdzmY06EP1 -ZWrf0eiup41K0nEVcnpkW3Gyd6mCw4qC156Ip7qj1pUcd1pH9Air92kkdM9EYf5V -mP5fn8cB1h2X2OIX7H4Ei+ddGQ01IM0baQ8ooz4aIXp6E/caEnqY+uAjAMWKXqr/ -imdrsxCOxmvN4stgRBum48igkQLRPeBPmGWc382knEzBiSTOxG6ZztVtHVrMK3NC -5f5GMVevtyLFU8TI/vE2kfBRj3LDH3NwYoSCzJTzHt4vzNMW/OnMJlpdgWOYbZDb -gESzkvLGfzv3EI/Psr72bEXT6U6LyObKS0ym+Jibl6jZGRVQjEeEzDzDnCbclTeI -jUV2+FnG9C8HImK/LqroXJSCV0jAhR/DVUUF6bZWNZmjMdsbASDidWLkR1lecp0K -Rwi8jgDUDySUYverKSBrPHfKIvq4Qi6MtAwRgqbO9nBipGJ+gcId2ngct/G9GAVm -+RZ+C8MOpMfRHYxYsLsixjM9dVZ2Ea/HyNi4erEONJ0vZjVBrtaBio5kH9Wn5mbK -SSOFn9+Ea8c7Pd6cxEZ2kFqt3JxF11GPIsPFptIwLvYgin/sxTDTePmSef7+oxaH +LRHsNGUsD5bG9+x/1UlzImN0rqEF10sFPBmxKeQpXQ/hy4iR+X/Gagoyagi23wOn +EZf0sCLJx95ixG+4fXJDX0jgBtqeziVNS4FLWHIuf3+blja8nf4tkmmH9pF8jFQ0 +i1an3TP6KRyDKa17gioOdtSsS51BZmPkp3MByJQsrMhyB0txEUsGtUMaBTYmVN/5 +uYHf9MsmfcfQy30nt2t6St6W82QupHHMOx5xyhPJo8cqQncZC7Dwo4hyDV3h3vWn +UjaRZiEMmQ3IgCwfJd1VmMECvrwXd/sTOXNhofWwDQIqmQ3GGWdrRnmgD863BQT3 +V8RVyPLkutOnrZ/kiMSAuiXGsSYK0TV8F9TaP/abLob4P8jbKYLcuR7ws3cu1xBl +XWt9RALxGPUyHIy+BWLXJTYL8T+TVJpiKsAGCQB54j8VQBSArwFL4LnzdUu1txe2 +qa6ZEwt4q6SEwOTJpJWz3oJ1j+OTsRCN+4dlyo7sEZMeyTRp9nUzwulhd+fOdIhY +2UllMG71opKfNxZzEW7lq6E/waf0MmxwjUJmgwVO218yag9oknHnoFwewF42DGY7 +072h23EJeKla7sI+MAB18z01z6C/yHWXLybOlXaGqk6zOm3OvTUFnUXtKzlBO2v3 +FQwrOE5U/VEyQkNWzHzh4j4LxYEL9/B08PxaveUwvNVGn9I3YknE6uMfcU7VuxDq ++6bgM6r+ez+9QLFSjH/gQuPs2DKX0h3b9ppQNx+MANX0DEGbGabJiBp887f8pG6Q +tW0i0+rfzYz3JwnwIuMZjYz6qUlP4bJMEmmDfod3fbnvg3MoCSMTUvi1Tq3Iiv4L +GM5/YNkL0V3PhOI686aBfU7GLGXQFhdbQ9xrSoQRBmmNBqTCSf+iIEoTxlBac8GQ +vSzDO+A+ovBP36K13Yn7gzuN/3PLZXH2TZ8t2b/OkEXOciH5KbycGHQA7gqxX1P4 +J55gpqPAWe8e7wKheWj3BMfmbWuH4rpiEkrLpqbTSfTwIKqplk253chmJj5I82XI +ioFLS5vCi9JJsTrQ720O+VQPVB5xeA80WL8NxamWQb/KkvVnb4dTmaV30RCgLLZC +tuMx8YSW71ALLT15qFB2zlMDKZO1jjunNE71BUFBPIkTKEOCyMAiF60fFeIWezxy +kvBBOg7+MTcZNeW110FqRWNGr2A5KYFN15g+YVpfEoF26slHisSjVW5ndzGh0kaQ +sIOjQitA9JYoLua7sHvsr6H5KdCGjNxv7O7y8wLGBVApRhU0wxZtbClqqEUvCLLP +UiLDp9L34wDL7sGrfNgWA4UuN29XQzTxI5kbv/EPKhyt2oVHLqUiE+eGyvnuYm+X +KqFi016nQaxTU5Kr8Pl0pSHbJMLFDWLSpsbbTB6YJpdEGxJoj3JB3VncOpwcuK+G +xZ1tV2orPt1s/6m+/ihzRgoEkyLwcLRPN7ojgD/sqS679ZGf1IkDMgFCQe4g0UWm +Fw7v816MNCgypUM5hQaU+Jp8vSlEc29RbrdSHbcxrKj/xPCLWrAbvmI5tgonKmuJ +J1LW8AXyh/EUp/uUh++jqVGx+8pFfcmJw6V6JrJzQ7HMlakkry7N1eAGrIJGtYCW -----END RSA PRIVATE KEY----- diff --git a/tests/certs/client_ca.cert.pem b/tests/certs/client_ca.cert.pem index 22b5b02a..db0d2ab0 100644 --- a/tests/certs/client_ca.cert.pem +++ b/tests/certs/client_ca.cert.pem @@ -1,35 +1,25 @@ -----BEGIN CERTIFICATE----- -MIIGKzCCBBOgAwIBAgIJALM/GfFIUB8GMA0GCSqGSIb3DQEBCwUAMIGjMQswCQYD -VQQGEwJDQTEQMA4GA1UECAwHT250YXJpbzEQMA4GA1UEBwwHVG9yb250bzEYMBYG -A1UECgwPTWFnaWNTdGFjayBJbmMuMRYwFAYDVQQLDA1hc3luY3BnIHRlc3RzMR8w -HQYDVQQDDBZhc3luY3BnIHRlc3QgY2xpZW50IENBMR0wGwYJKoZIhvcNAQkBFg5o -ZWxsb0BtYWdpYy5pbzAeFw0yNjA5MjAxNTAwNDlaFw00NTExMjAxNTAwNDlaMIGj -MQswCQYDVQQGEwJDQTEQMA4GA1UECAwHT250YXJpbzEQMA4GA1UEBwwHVG9yb250 -bzEYMBYGA1UECgwPTWFnaWNTdGFjayBJbmMuMRYwFAYDVQQLDA1hc3luY3BnIHRl -c3RzMR8wHQYDVQQDDBZhc3luY3BnIHRlc3QgY2xpZW50IENBMR0wGwYJKoZIhvcN -AQkBFg5oZWxsb0BtYWdpYy5pbzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC -ggIBALPaSeED5o1aeiYFFskru+ayrD0Wa4pVM7SDgfjPlvicqqPI+jwfHMJ8a3B+ -6SRjCZLdfwepBDI4k5dSFjml5sHYE2bhNVgH1fLyI0Qf2DhaE47Kn6P11NEAw18b -iKYRKlCPt2SID5e8WICfHEVAmlQgbOllA16zdVoJXfXhsSk47Q2QcA5GEmYceYdj -1mDKogco7l2nNCd6GzjU6TosU6VggvRmhbG11Qo4aWtuFIVCKjIDcLVHmwKHNgCz -vabvFz4bqxfOjQ+o87JBndeGg7cDmhlobWCyYrjzHCABr+aG41394my3l3xi69Ac -q1GyxjiLZEOLB9gkz5tKa4ggK701Q6qRHbNvKWHvtKhoOWNqqwAFMhCeiMru9vui -sbF3s7LxwC1aP6hF9qbkU7S0RhYeJVoolKosOBiULY0mBiKw6KZn0wqpFivOKCCb -QzpaDTnblb5Wp6Lwoh4BGbx6CHCL50Wc5fXL6ZvKd45hZ6KkUmHsBDZgtDEMF+Nt -OzdMPo1fcssKJuZs7mLtM1HVmSuwRokTKSfjyfvtB50Q3BrMN07dcDroNGE1H475 -P+pHTq6KynPFRGXVpUopWlupwl8GIRGOwdMNhqhYR3Saebvol/bFEy5GdH8sDCHP -olubaiC0gE4Uzv9/1V38l92JXKAuR4RioIPTCCXNhYPvic4NAgMBAAGjYDBeMA8G -A1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBScnZ88W6zlAYHc -BqUVUlwKwgutJzAfBgNVHSMEGDAWgBScnZ88W6zlAYHcBqUVUlwKwgutJzANBgkq -hkiG9w0BAQsFAAOCAgEAD2EdwWcM3p2vJBRhfS1/vt3igRRnuLxs4id8pbInbxut -yfXcT1sddQKAZ7nVhd2qgjjlENJ6noDT7SPRwhbohUca0noxFLU98X5AdY6bYRp7 -suLROPnK09VtFeTVvi5MTmBe2gH3hZKaPwJXf6U+4QmhDehwQgkRo7+j+tA99ZFM -V3zS1O0ln9bzSW+SW1jDLAJx259ttvRbi/v+huCzX5y829DB35dBZzwe2j/fKf3v -Gn3j1umbUbrukIPwFEGjYT+ZEx+F49Axa5F5DqILHVP8sNJLNdb2oYVLbmaWSag5 -fyvzg65xnEJl39ZolSnyns3Rs/lBHobZDunBFs/qUB2VsjUAtaSa5Ev1J9v+RmSo -ggMVGTP68x3lQ4MeBya93Czqn9wDytVRI/dows8NL8d3sVWlC7JU4ruDSlJm1aky -jEtAbxklMfOqRqzkqs7e7bdTbmCenuyfPrKoMSoVHAKDKk7Hji74pm/qDTj4UzMm -kPY8pxC5oMhpvsE4Fi8IdLc9/unouHu5Ss2W2VkFswtPdlw6Ep2ziHYvEBI8UQ/q -DY7PCEO5bgF91YSKcdWXH8x6o7wIgdWj7U0aGhmScLTtZ4m+6gKaoZRmMMCztnw4 -qbgbV5ZLp5OrnQGEmOMDB5Ia/0oCK2xEAHn1ddQ8OOdIAAoHd93IdRB1eVmx7Pk= +MIIEKjCCAxKgAwIBAgIIYmeAzUeaulwwDQYJKoZIhvcNAQELBQAwgaMxCzAJBgNV +BAYTAkNBMRAwDgYDVQQIDAdPbnRhcmlvMRAwDgYDVQQHDAdUb3JvbnRvMRgwFgYD +VQQKDA9NYWdpY1N0YWNrIEluYy4xFjAUBgNVBAsMDWFzeW5jcGcgdGVzdHMxHzAd +BgNVBAMMFmFzeW5jcGcgdGVzdCBjbGllbnQgQ0ExHTAbBgkqhkiG9w0BCQEWDmhl +bGxvQG1hZ2ljLmlvMB4XDTI2MDkyMDE1NDYxM1oXDTQ1MTEyMDE1NDYxM1owgaMx +CzAJBgNVBAYTAkNBMRAwDgYDVQQIDAdPbnRhcmlvMRAwDgYDVQQHDAdUb3JvbnRv +MRgwFgYDVQQKDA9NYWdpY1N0YWNrIEluYy4xFjAUBgNVBAsMDWFzeW5jcGcgdGVz +dHMxHzAdBgNVBAMMFmFzeW5jcGcgdGVzdCBjbGllbnQgQ0ExHTAbBgkqhkiG9w0B +CQEWDmhlbGxvQG1hZ2ljLmlvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEAptRYfxKiWExfZguQDva53bIqYa4lJwZA86Qu0peBUcsdE6zyHNgVv4XSMim1 +FH12KQ4KPKuQAcVqRMCRAHqB96kUfWQqF//fLajr0umdzcbx+UTgNux8TkScTl9K +NAxhiR/oOGbKFcNSs4raaG8puwwEN66uMhoKk2pN2NwDVfHabTekJ3jouTcTCnqC +ynx4qwI4WStJkuW4IPCmDRVXxOOauT7YalElYLWYtAOqGEvfnoDK2Imhc0h6B5XW +8nI54rVCXWwhW1v3RLAJGP+LwSy++bf08xmpHXdKkAj5BmUOQwJRiJ33Xa17rmi3 +85egx8KpqV04YEAPdV1Z4QM6PQIDAQABo2AwXjAPBgNVHRMBAf8EBTADAQH/MAsG +A1UdDwQEAwIBBjAdBgNVHQ4EFgQUi1jMmAisuOibmHIE2n0W2WnnaL0wHwYDVR0j +BBgwFoAUi1jMmAisuOibmHIE2n0W2WnnaL0wDQYJKoZIhvcNAQELBQADggEBAEI4 +hrs6eAd+AD1GwU1GQpuwOGYPlwKHAIYgpDkNi9UTF3munLnVIZffxeq8z9e31kxo +/1CJYanG3ajupBxj/+wRWKQkf9mWLo8N9fmEWC1k9Xp8r9WyupnfSRILZh/aEvSW +pkbJAwI9xB+fD8L225+wQKwR0XT//uqtlzIyxLSMMwZXAfr9p3LlMvPG/xwfywg+ +SiFIIBIUM64f4sH6wDZWpGeORdI3BlPo/fiZgvZiI6VJv16Kq4eU0KwMsGeFE5ON +99vSDNKqrLqahEv9vigDnCAWus9IN5Cap3xA7Q2C4naDB87y6JSIv+kuVreiuf5x +qzhNr5p37kx+78yclOQ= -----END CERTIFICATE----- diff --git a/tests/certs/client_ca.key.pem b/tests/certs/client_ca.key.pem index c2af7eed..519c5a09 100644 --- a/tests/certs/client_ca.key.pem +++ b/tests/certs/client_ca.key.pem @@ -1,51 +1,27 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/tests/certs/gen.py b/tests/certs/gen.py index ec2ae950..5e5e89bf 100644 --- a/tests/certs/gen.py +++ b/tests/certs/gen.py @@ -1,3 +1,4 @@ +import argparse import datetime import os @@ -9,24 +10,30 @@ from cryptography.x509 import oid +def _new_subject(**subject): + return x509.Name( + [ + x509.NameAttribute(getattr(oid.NameOID, key.upper()), value) + for key, value in subject.items() + ] + ) + + def _new_cert( issuer=None, is_issuer=False, is_client=False, + private_key=None, serial_number=None, **subject, ): backend = backends.default_backend() - private_key = rsa.generate_private_key( - public_exponent=65537, key_size=4096, backend=backend - ) + if private_key is None: + private_key = rsa.generate_private_key( + public_exponent=65537, key_size=4096, backend=backend + ) public_key = private_key.public_key() - subject = x509.Name( - [ - x509.NameAttribute(getattr(oid.NameOID, key.upper()), value) - for key, value in subject.items() - ] - ) + subject = _new_subject(**subject) builder = ( x509.CertificateBuilder() .subject_name(subject) @@ -156,6 +163,18 @@ def _write_key(path, private_key, password=None): ) +def _load_key(path, password=None): + try: + with open(path, "rb") as f: + return serialization.load_pem_private_key( + f.read(), + password=password, + backend=backends.default_backend(), + ) + except FileNotFoundError: + return None + + def _write_cert(path, cert_key_pair, password=None): certificate, private_key = cert_key_pair _write_key(path + ".key.pem", private_key, password) @@ -167,8 +186,12 @@ def _write_cert(path, cert_key_pair, password=None): ) -def new_ca(path, **subject): - cert_key_pair = _new_cert(is_issuer=True, **subject) +def new_ca(path, private_key=None, **subject): + cert_key_pair = _new_cert( + is_issuer=True, + private_key=private_key, + **subject, + ) _write_cert(path, cert_key_pair) return cert_key_pair @@ -179,18 +202,34 @@ def new_cert( password=None, is_issuer=False, is_client=False, + private_key=None, **subject, ): cert_key_pair = _new_cert( issuer=ca_cert_key_pair, is_issuer=is_issuer, is_client=is_client, + private_key=private_key, **subject, ) _write_cert(path, cert_key_pair, password) return cert_key_pair +def new_csr(path, private_key, **subject): + request = ( + x509.CertificateSigningRequestBuilder() + .subject_name(_new_subject(**subject)) + .sign( + private_key, + hashes.SHA256(), + backends.default_backend(), + ) + ) + with open(path + ".csr.pem", "wb") as f: + f.write(request.public_bytes(serialization.Encoding.PEM)) + + def new_crl(path, issuer, cert): issuer_cert, signing_key = issuer revoked_cert = ( @@ -211,9 +250,15 @@ def new_crl(path, issuer, cert): f.write(crl.public_bytes(encoding=serialization.Encoding.PEM)) -def main(): +def main(*, rotate_keys=False): + def existing_key(path): + if rotate_keys: + return None + return _load_key(path) + ca = new_ca( "ca", + private_key=existing_key("ca.key.pem"), country_name="CA", state_or_province_name="Ontario", locality_name="Toronto", @@ -225,6 +270,7 @@ def main(): server = new_cert( "server", ca, + private_key=existing_key("server.key.pem"), country_name="CA", state_or_province_name="Ontario", organization_name="MagicStack Inc.", @@ -237,6 +283,7 @@ def main(): client_ca = new_ca( "client_ca", + private_key=existing_key("client_ca.key.pem"), country_name="CA", state_or_province_name="Ontario", locality_name="Toronto", @@ -245,10 +292,7 @@ def main(): common_name="asyncpg test client CA", email_address="hello@magic.io", ) - client = new_cert( - "client", - client_ca, - is_client=True, + client_subject = dict( country_name="CA", state_or_province_name="Ontario", locality_name="Toronto", @@ -257,8 +301,23 @@ def main(): common_name="ssl_user", email_address="hello@magic.io", ) + client = new_cert( + "client", + client_ca, + is_client=True, + private_key=existing_key("client.key.pem"), + **client_subject, + ) + new_csr("client", client[1], **client_subject) _write_key("client.key.protected.pem", client[1], b"secRet") if __name__ == "__main__": - main() + parser = argparse.ArgumentParser() + parser.add_argument( + "--rotate-keys", + action="store_true", + help="generate new private keys instead of reusing existing key files", + ) + args = parser.parse_args() + main(rotate_keys=args.rotate_keys)