void ImapAccess::slotSslErrors(const QList<QSslCertificate> &sslCertificateChain, const QList<QSslError> &sslErrors) { m_sslChain = sslCertificateChain; m_sslErrors = sslErrors; QByteArray lastKnownPubKey = m_settings->value(Common::SettingsNames::imapSslPemPubKey).toByteArray(); if (!m_sslChain.isEmpty() && !lastKnownPubKey.isEmpty() && lastKnownPubKey == m_sslChain[0].publicKey().toPem()) { // This certificate chain contains the same public keys as the last time; we should accept that m_imapModel->setSslPolicy(m_sslChain, m_sslErrors, true); } else { UiUtils::Formatting::formatSslState( m_sslChain, lastKnownPubKey, m_sslErrors, &m_sslInfoTitle, &m_sslInfoMessage, &m_sslInfoIcon); emit checkSslPolicy(); } }
void ImapAccess::slotSslErrors(const QList<QSslCertificate> &sslCertificateChain, const QList<QSslError> &sslErrors) { m_sslChain = sslCertificateChain; m_sslErrors = sslErrors; QSettings s; QByteArray lastKnownCertPem = s.value(Common::SettingsNames::imapSslPemCertificate).toByteArray(); QList<QSslCertificate> oldChain = QSslCertificate::fromData(lastKnownCertPem, QSsl::Pem); if (!sslCertificateChain.isEmpty() && !lastKnownCertPem.isEmpty() && sslCertificateChain == oldChain) { m_imapModel->setSslPolicy(m_sslChain, m_sslErrors, true); } else { Imap::Mailbox::CertificateUtils::IconType icon; Imap::Mailbox::CertificateUtils::formatSslState( m_sslChain, oldChain, lastKnownCertPem, m_sslErrors, &m_sslInfoTitle, &m_sslInfoMessage, &icon); emit checkSslPolicy(); } }