void Signature::slotVerified(const GpgME::VerificationResult &result) { d->verificationResult = result; d->status = Signature::NotWorked; if (!d->verificationResult.numSignatures()) { kDebug(5001) << "No signatures\n"; emit verified(d->status); return; } GpgME::Signature signature = d->verificationResult.signature(0); d->sigSummary = signature.summary(); d->error = signature.status().code(); d->fingerprint = signature.fingerprint(); kDebug(5001) << "Fingerprint:" << d->fingerprint; kDebug(5001) << "Signature summary:" << d->sigSummary; kDebug(5001) << "Error code:" << d->error; if (d->sigSummary & GpgME::Signature::KeyMissing) { kDebug(5001) << "Public key missing."; if (Settings::signatureAutomaticDownloading() || (KMessageBox::warningYesNoCancel(0, i18n("The key to verify the signature is missing, do you want to download it?")) == KMessageBox::Yes)) { d->verifyTried = true; downloadKey(d->fingerprint); emit verified(d->status); return; } } if (!signature.status()) { if (d->sigSummary & GpgME::Signature::Valid) { d->status = Signature::Verified; } else if ((d->sigSummary & GpgME::Signature::Green) || (d->sigSummary == 0)) { d->status = Signature::VerifiedInformation; } } else if (signature.status()) { if ((d->sigSummary & GpgME::Signature::KeyExpired) || (d->sigSummary & GpgME::Signature::KeyRevoked)) { d->status = Signature::VerifiedWarning; } if (d->sigSummary & GpgME::Signature::Red) {//TODO handle more cases! d->status = Signature::NotVerified; //TODO handle that dialog better in 4.5 KMessageBox::error(0, i18n("The signature could not be verified for %1. See transfer settings for more information.", d->dest.fileName()), i18n("Signature not verified")); } } emit verified(d->status); }
void Verifier::changeStatus(const QString &type, bool isVerified) { kDebug(5001) << "Verified:" << isVerified; d->status = isVerified ? Verifier::Verified : Verifier::NotVerified; d->model->setVerificationStatus(type, d->status); emit verified(isVerified); }
Signature::Signature(const KUrl &dest, QObject *object) : QObject(object), d(new SignaturePrivate(this)) { d->dest = dest; #ifdef HAVE_QGPGME qRegisterMetaType<GpgME::VerificationResult>("GpgME::VerificationResult"); connect(&d->thread, SIGNAL(verified(GpgME::VerificationResult)), this, SLOT(slotVerified(GpgME::VerificationResult))); #endif //HAVE_QGPGME }
void VerificationThread::doVerify() { m_mutex.lock(); bool run = m_files.count(); m_mutex.unlock(); while (run && !m_abort) { m_mutex.lock(); const QString type = m_types.takeFirst(); const QString checksum = m_checksums.takeFirst(); const KUrl url = m_files.takeFirst(); m_mutex.unlock(); if (type.isEmpty() || checksum.isEmpty()) { m_mutex.lock(); run = m_files.count(); m_mutex.unlock(); continue; } const QString hash = Verifier::checksum(url, type, &m_abort); kDebug(5001) << "Type:" << type << "Calculated checksum:" << hash << "Entered checksum:" << checksum; const bool fileVerified = (hash == checksum); if (m_abort) { return; } m_mutex.lock(); if (!m_abort) { emit verified(type, fileVerified, url); emit verified(fileVerified); } run = m_files.count(); m_mutex.unlock(); } }
int search(char *matrix, int rows, int columns, int row, int column) { char *left, *right, *top, *bottom; int num_elements = ceil(1.0 * rows * columns / (sizeof(char) * 4)); if (row < 0 || row >= rows || column < 0 || column >= columns) { return 0; } print_matrix(matrix, rows, columns); char element = get_element(matrix, rows, columns, row, column); if (element == 2) { set_element(matrix, rows, columns, row, column, 3); return verified(matrix, rows, columns); } if (element == 3) { printf("--- FAIL ----\n"); return 0; } set_element(matrix, rows, columns, row, column, 3); left = create_matrix(rows, columns); memcpy(left, matrix, num_elements); right = create_matrix(rows, columns); memcpy(right, matrix, num_elements); bottom = create_matrix(rows, columns); memcpy(bottom, matrix, num_elements); top = create_matrix(rows, columns); memcpy(top, matrix, num_elements); set_element(right, rows, columns, row + 1, column, 1); set_element(left, rows, columns, row - 1, column, 1); set_element(bottom, rows, columns, row, column + 1, 1); set_element(top, rows, columns, row, column - 1, 1); int total = search(left, rows, columns, row - 1, column) + search(right, rows, columns, row + 1, column) + search(top, rows, columns, row, column - 1) + search(bottom, rows, columns, row, column + 1); free(left); free(right); free(top); free(bottom); return total; }
LoginDialog::LoginDialog(QWidget *parent) : QDialog(parent), ui(new Ui::LoginDialog) { ui->setupUi(this); ui->pwdEdit->setEchoMode(QLineEdit::Password); serverIp = QString("127.0.0.1"); serverPort = QString("9998"); connect(ui->loginButton,SIGNAL(clicked()),this,SLOT(login())); connect(this,SIGNAL(verified()),this,SLOT(processVerified())); connect(this,SIGNAL(unverified()),this,SLOT(processUnverified())); }
void Signature::setSignature(const QByteArray &signature, SignatureType type) { if ((signature == d->signature) && (type == d->type)) { return; } d->type = type; d->signature = signature; d->fingerprint.clear(); d->error = 0; d->sigSummary = 0; d->status = Signature::NoResult; #ifdef HAVE_QGPGME d->verificationResult = GpgME::VerificationResult(); #endif //HAVE_QGPGME emit verified(d->status);//FIXME }
//Analysis the info read from the server and make decision void LoginDialog::readMessage() { qDebug("message arrive..."); QString result; QDataStream in(client); in.setVersion(QDataStream::Qt_4_7); if(blockSize == 0) { if(client->bytesAvailable() < (int)sizeof(quint16)) return; in >> blockSize; } if(client->bytesAvailable() < blockSize) return; in >> result; if(result == "True") emit verified(); else if(result == "False") emit unverified(); }