Example #1
0
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);
}
Example #2
0
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);
}
Example #3
0
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
}
Example #4
0
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();
    }
}
Example #5
0
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()));

}
Example #7
0
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();

}