Skip to content

Commit b4f83c1

Browse files
authored
signing: Fix handling of certificate that has no KeyUsage (#457)
If a certificate without KeyUsage is encountered then the following error is displayed: Verification failed with error: \ No <class 'cryptography.x509.extensions.KeyUsage'> extension was found The error may be mistaken for a broken python cryptography library even though it is related to the certificate missing 'KeyUsage'. Fix this error by intercepting the x509.ExtensionNotFound exception and trying with the ExtendedKeyUsage next. Signed-off-by: Stefan Berger <[email protected]>
1 parent 5c36a41 commit b4f83c1

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

src/model_signing/_signing/sign_certificate.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -222,18 +222,22 @@ def _to_openssl_certificate(certificate_bytes, log_fingerprints):
222222

223223
extensions = signing_certificate.extensions
224224
can_use_for_signing = False
225-
usage = extensions.get_extension_for_class(x509.KeyUsage)
226-
if usage.value.digital_signature:
227-
can_use_for_signing = True
228-
else:
225+
try:
226+
usage = extensions.get_extension_for_class(x509.KeyUsage)
227+
if usage.value.digital_signature:
228+
can_use_for_signing = True
229+
except x509.ExtensionNotFound:
230+
logger.warn("Certificate does not specify 'KeyUsage'.")
231+
232+
if not can_use_for_signing:
229233
try:
230234
usage = extensions.get_extension_for_class(
231235
x509.ExtendedKeyUsage
232236
)
233237
if oid.ExtendedKeyUsageOID.CODE_SIGNING in usage.value:
234238
can_use_for_signing = True
235239
except x509.ExtensionNotFound:
236-
pass
240+
logger.warn("Certificate does not specify 'ExtendedKeyUsage'.")
237241

238242
if not can_use_for_signing:
239243
raise ValueError("Signing certificate cannot be used for signing")

0 commit comments

Comments
 (0)