<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en">
<head>
<meta content="text/html; charset=US-ASCII" http-equiv="Content-Type">
<title>
GitLab
</title>


<style>img {
max-width: 100%; height: auto;
}
</style>
</head>
<body>
<div class="content">

<p style="color: #777777;">
<a href="https://gitlab.com/rfmcas">Richard Frith-Macdonald</a>
<a href="https://gitlab.com/gnutls/gnutls/-/issues/1348#note_894761904">commented</a>:
</p>
<div class="md" style="">
<p dir="auto">_gnutls_x509_cert_verify_peers() calls gnutls_x509_trust_list_verify_crt2() with a list of three certificates.</p>
<p dir="auto">This uses shorten_clist() to remove the last (root) certificate and then (at verify-high.c:1587) calls _gnutls_verify_crt_status() with the first and second certificates and using the trusted_cas from the issuer of the second certificate (the root).</p>
<p dir="auto">This then calls verify_crt() with the second (intermediate) certificate.  The function gets the issuer (third cert) and at line 810 calls is_level_acceptable(), which calls _gnutls_sign_is_secure2(), which calls _gnutls_digest_is_insecure2() in the third (root/issuer) certificate, causing is_level_acceptable() to return false.
When that happens, the local variable 'out' is set to 258 (marking the third certificate as having an invalid signature).
Later on in verify_crt() (line 847) the bits in 'out' are returned to the caller where they become part of the failure status of the verification.</p>
<p dir="auto">Back in gnutls_x509_trust_list_verify_crt2() SIGNER_OLD_OR_UNKNOWN() returns true so we get to line 1601.  It looks to me like the problem here is that the code is now looking for the second (intermediate) certificate in the trusted list rather than the third one.  Either because it shortened the list earlier on, or because it is mistakenely calling hash_pjw_bare() using raw_dn rather than raw_issuer_dn</p>
<p dir="auto">So I'm pretty sure the bug is at that point, but I don't know how it should be fixed.</p>
</div>


</div>
<div class="footer" style="margin-top: 10px;">
<p style="font-size: small; color: #666;">

<br>
Reply to this email directly or <a href="https://gitlab.com/gnutls/gnutls/-/issues/1348#note_894761904">view it on GitLab</a>.
<br>
You're receiving this email because of your account on gitlab.com.
If you'd like to receive fewer emails, you can
<a href="https://gitlab.com/-/sent_notifications/c7d18e20b0434857a11cedd61f094c37/unsubscribe">unsubscribe</a>
from this thread or
adjust your notification settings.
<script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","action":{"@type":"ViewAction","name":"View Issue","url":"https://gitlab.com/gnutls/gnutls/-/issues/1348#note_894761904"}}</script>


</p>
</div>
</body>
</html>