CertificateInfoWidgetImpl::CertificateInfoWidgetImpl( const GpgME::Key & key, bool external, QWidget * parent, const char * name ) : CertificateInfoWidget( parent, name ), mExternal( external ), mFoundIssuer( true ), mHaveKeyLocally( false ) { importButton->setEnabled( false ); listView->setColumnWidthMode( 1, QListView::Maximum ); QFontMetrics fm = fontMetrics(); listView->setColumnWidth( 1, fm.width( i18n("Information") ) * 5 ); listView->header()->setClickEnabled( false ); listView->setSorting( -1 ); connect( listView, SIGNAL( selectionChanged( QListViewItem* ) ), this, SLOT( slotShowInfo( QListViewItem* ) ) ); pathView->setColumnWidthMode( 0, QListView::Maximum ); pathView->header()->hide(); connect( pathView, SIGNAL( doubleClicked( QListViewItem* ) ), this, SLOT( slotShowCertPathDetails( QListViewItem* ) ) ); connect( pathView, SIGNAL( returnPressed( QListViewItem* ) ), this, SLOT( slotShowCertPathDetails( QListViewItem* ) ) ); connect( importButton, SIGNAL( clicked() ), this, SLOT( slotImportCertificate() ) ); dumpView->setFont( KGlobalSettings::fixedFont() ); if ( !key.isNull() ) setKey( key ); }
void Kleo::KeyListView::slotAddKey( const GpgME::Key & key ) { if ( key.isNull() ) return; d->keyBuffer.push_back( key ); if ( !d->updateTimer->isActive() ) d->updateTimer->start( updateDelayMilliSecs, true /* single-shot */ ); }
void CertificateInfoWidgetImpl::slotKeyExistanceCheckNextCandidate( const GpgME::Key & key ) { if ( key.isNull() || mChain.empty() || !key.primaryFingerprint() ) return; if ( qstrcmp( key.primaryFingerprint(), mChain.back().primaryFingerprint() ) == 0 ) mHaveKeyLocally = true; }
void CertificateInfoWidgetImpl::slotNextKey( const GpgME::Key & key ) { kdDebug() << "CertificateInfoWidgetImpl::slotNextKey( \"" << key.userID(0).id() << "\" )" << endl; if ( key.isNull() ) return; mFoundIssuer = true; mChain.push_front( key ); updateChainView(); // FIXME: cancel the keylisting. We're only interested in _one_ key. }
void Identity::setKey(const GpgME::Key &key) { if (key.isNull()) { m_identity->setPGPEncryptionKey(QByteArray()); m_identity->setPGPSigningKey(QByteArray()); m_identity->setSMIMEEncryptionKey(QByteArray()); m_identity->setSMIMESigningKey(QByteArray()); } else if (key.protocol() == GpgME::OpenPGP) { m_identity->setPGPSigningKey(key.primaryFingerprint()); m_identity->setPGPEncryptionKey(key.primaryFingerprint()); } else if (key.protocol() == GpgME::CMS) { m_identity->setSMIMESigningKey(key.primaryFingerprint()); m_identity->setSMIMEEncryptionKey(key.primaryFingerprint()); } }
void CertificateInfoWidgetImpl::setKey( const GpgME::Key & key ) { mChain.clear(); mFoundIssuer = true; mHaveKeyLocally = false; listView->clear(); pathView->clear(); importButton->setEnabled( false ); if ( key.isNull() ) return; mChain.push_front( key ); startKeyExistanceCheck(); // starts a local keylisting to enable the // importButton if needed QListViewItem * item = 0; item = new QListViewItem( listView, item, i18n("Valid"), QString("From %1 to %2") .arg( time_t2string( key.subkey(0).creationTime() ), time_t2string( key.subkey(0).expirationTime() ) ) ); item = new QListViewItem( listView, item, i18n("Can be used for signing"), key.canSign() ? i18n("Yes") : i18n("No") ); item = new QListViewItem( listView, item, i18n("Can be used for encryption"), key.canEncrypt() ? i18n("Yes") : i18n("No") ); item = new QListViewItem( listView, item, i18n("Can be used for certification"), key.canCertify() ? i18n("Yes") : i18n("No") ); item = new QListViewItem( listView, item, i18n("Can be used for authentication"), key.canAuthenticate() ? i18n("Yes") : i18n("No" ) ); item = new QListViewItem( listView, item, i18n("Fingerprint"), key.primaryFingerprint() ); item = new QListViewItem( listView, item, i18n("Issuer"), Kleo::DN( key.issuerName() ).prettyDN() ); item = new QListViewItem( listView, item, i18n("Serial Number"), key.issuerSerial() ); const Kleo::DN dn = key.userID(0).id(); // FIXME: use the attributeLabelMap from certificatewizardimpl.cpp: static QMap<QString,QString> dnComponentNames; if ( dnComponentNames.isEmpty() ) { dnComponentNames["C"] = i18n("Country"); dnComponentNames["OU"] = i18n("Organizational Unit"); dnComponentNames["O"] = i18n("Organization"); dnComponentNames["L"] = i18n("Location"); dnComponentNames["CN"] = i18n("Common Name"); dnComponentNames["EMAIL"] = i18n("Email"); } for ( Kleo::DN::const_iterator dnit = dn.begin() ; dnit != dn.end() ; ++dnit ) { QString displayName = (*dnit).name(); if( dnComponentNames.contains(displayName) ) displayName = dnComponentNames[displayName]; item = new QListViewItem( listView, item, displayName, (*dnit).value() ); } const std::vector<GpgME::UserID> uids = key.userIDs(); if ( !uids.empty() ) { item = new QListViewItem( listView, item, i18n("Subject"), Kleo::DN( uids.front().id() ).prettyDN() ); for ( std::vector<GpgME::UserID>::const_iterator it = uids.begin() + 1 ; it != uids.end() ; ++it ) { if ( !(*it).id() ) continue; const QString email = QString::fromUtf8( (*it).id() ).stripWhiteSpace(); if ( email.isEmpty() ) continue; if ( email.startsWith( "<" ) ) item = new QListViewItem( listView, item, i18n("Email"), email.mid( 1, email.length()-2 ) ); else item = new QListViewItem( listView, item, i18n("A.k.a."), email ); } } updateChainView(); startCertificateChainListing(); startCertificateDump(); }