Skip to content

Commit 34a3f49

Browse files
committed
new versio
1 parent 3448711 commit 34a3f49

File tree

1 file changed

+41
-10
lines changed

1 file changed

+41
-10
lines changed

tests/hazmat/primitives/test_pkcs7.py

Lines changed: 41 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@
1818
from cryptography.hazmat.primitives.asymmetric import ed25519, padding, rsa
1919
from cryptography.hazmat.primitives.ciphers import algorithms
2020
from cryptography.hazmat.primitives.serialization import pkcs7
21-
from cryptography.x509.oid import OtherNameFormOID
21+
from cryptography.x509.oid import (
22+
ExtensionOID,
23+
)
2224
from cryptography.x509.verification import (
2325
PolicyBuilder,
2426
Store,
@@ -148,8 +150,11 @@ def _load_cert_key():
148150
class TestPKCS7VerifyCertificate:
149151
@pytest.fixture(name="certificate_builder")
150152
def fixture_certificate_builder(self) -> x509.CertificateBuilder:
153+
# Load the standard certificate and private key
151154
certificate, private_key = _load_cert_key()
152-
return (
155+
156+
# Basic certificate builder
157+
certificate_builder = (
153158
x509.CertificateBuilder()
154159
.serial_number(certificate.serial_number)
155160
.subject_name(certificate.subject)
@@ -159,19 +164,43 @@ def fixture_certificate_builder(self) -> x509.CertificateBuilder:
159164
.not_valid_after(certificate.not_valid_after)
160165
)
161166

167+
# Add AuthorityKeyIdentifier extension
168+
aki = certificate.extensions.get_extension_for_oid(
169+
ExtensionOID.AUTHORITY_KEY_IDENTIFIER
170+
)
171+
certificate_builder = certificate_builder.add_extension(
172+
aki.value, critical=False
173+
)
174+
175+
# Add SubjectAlternativeName extension
176+
san = certificate.extensions.get_extension_for_oid(
177+
ExtensionOID.SUBJECT_ALTERNATIVE_NAME
178+
)
179+
certificate_builder = certificate_builder.add_extension(
180+
san.value, critical=True
181+
)
182+
183+
return certificate_builder
184+
162185
def test_verify_pkcs7_certificate(self, certificate_builder):
186+
# Load the basic certificate and private key
163187
certificate, private_key = _load_cert_key()
164-
ca_policy, ee_policy = pkcs7.pkcs7_x509_extension_policies()
188+
189+
# Add valid BasicConstraints extension
190+
bc_extension = x509.BasicConstraints(ca=False, path_length=None)
191+
certificate_builder = certificate_builder.add_extension(
192+
bc_extension, False
193+
)
165194

166195
# Add valid KeyUsage extension
167196
ku_extension = x509.KeyUsage(
168197
digital_signature=True,
169198
content_commitment=False,
170-
key_encipherment=False,
171-
data_encipherment=False,
172-
key_agreement=False,
173-
key_cert_sign=False,
174-
crl_sign=False,
199+
key_encipherment=True,
200+
data_encipherment=True,
201+
key_agreement=True,
202+
key_cert_sign=True,
203+
crl_sign=True,
175204
encipher_only=False,
176205
decipher_only=False,
177206
)
@@ -180,7 +209,7 @@ def test_verify_pkcs7_certificate(self, certificate_builder):
180209
)
181210

182211
# Add valid ExtendedKeyUsage extension
183-
usages = [x509.ExtendedKeyUsageOID.CLIENT_AUTH] # type: ignore[attr-defined]
212+
usages = [x509.ExtendedKeyUsageOID.EMAIL_PROTECTION] # type: ignore[attr-defined]
184213
eku_extension = x509.ExtendedKeyUsage(usages)
185214
certificate_builder = certificate_builder.add_extension(
186215
eku_extension, True
@@ -191,13 +220,15 @@ def test_verify_pkcs7_certificate(self, certificate_builder):
191220
private_key, certificate.signature_hash_algorithm, None
192221
)
193222

223+
# Verify the certificate
224+
ca_policy, ee_policy = pkcs7.pkcs7_x509_extension_policies()
194225
verifier = (
195226
PolicyBuilder()
196227
.store(Store([pkcs7_certificate]))
197228
.extension_policies(ca_policy=ca_policy, ee_policy=ee_policy)
198229
.build_client_verifier()
199230
)
200-
verifier.verify(certificate, [])
231+
verifier.verify(pkcs7_certificate, [])
201232

202233
def test_verify_pkcs7_certificate_wrong_bc(self, certificate_builder):
203234
certificate, private_key = _load_cert_key()

0 commit comments

Comments
 (0)