@@ -120,6 +120,50 @@ void tlshd_log_gai_error(int error)
120120 syslog (LOG_NOTICE , "%s\n" , gai_strerror (error ));
121121}
122122
123+ struct tlshd_cert_status_bit {
124+ unsigned int bit ;
125+ char * name ;
126+ };
127+
128+ static const struct tlshd_cert_status_bit tlshd_cert_status_names [] = {
129+ /* { GNUTLS_CERT_INVALID, "invalid" }, */
130+ { GNUTLS_CERT_REVOKED , "revoked" },
131+ { GNUTLS_CERT_SIGNER_NOT_FOUND , "signer not found" },
132+ { GNUTLS_CERT_SIGNER_NOT_CA , "signer not CA" },
133+ { GNUTLS_CERT_INSECURE_ALGORITHM , "uses insecure algorithm" },
134+ { GNUTLS_CERT_NOT_ACTIVATED , "not activated" },
135+ { GNUTLS_CERT_EXPIRED , "expired" },
136+ { GNUTLS_CERT_SIGNATURE_FAILURE , "signature failure" },
137+ { GNUTLS_CERT_REVOCATION_DATA_SUPERSEDED , "revocation data superseded" },
138+ { GNUTLS_CERT_UNEXPECTED_OWNER , "owner unexpected" },
139+ { GNUTLS_CERT_REVOCATION_DATA_ISSUED_IN_FUTURE , "revocation data issued in the future" },
140+ { GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE , "signer constraints failure" },
141+ { GNUTLS_CERT_MISMATCH , "mismatch" },
142+ { GNUTLS_CERT_PURPOSE_MISMATCH , "purpose mismatch" },
143+ { GNUTLS_CERT_MISSING_OCSP_STATUS , "has missing OCSP status" },
144+ { GNUTLS_CERT_INVALID_OCSP_STATUS , "has invalid OCSP status" },
145+ { GNUTLS_CERT_UNKNOWN_CRIT_EXTENSIONS , "has unknown crit extensions" },
146+ { 0 , NULL }
147+ };
148+
149+ /**
150+ * tlshd_log_cert_verification_error - Report a failed certificate verification
151+ * @session: Session with a failed handshake
152+ *
153+ */
154+ void tlshd_log_cert_verification_error (gnutls_session_t session )
155+ {
156+ unsigned int status ;
157+ int i ;
158+
159+ status = gnutls_session_get_verify_cert_status (session );
160+
161+ for (i = 0 ; tlshd_cert_status_names [i ].name ; i ++ )
162+ if (status & tlshd_cert_status_names [i ].bit )
163+ syslog (LOG_ERR , "Certificate %s.\n" ,
164+ tlshd_cert_status_names [i ].name );
165+ }
166+
123167/**
124168 * tlshd_log_gnutls_error - Emit "library call failed" notification
125169 * @error: GnuTLS error code to log
0 commit comments