Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [Qt 4] openssl


Автор: zayacnk 17.11.2010, 22:08
Приведу код.

Код

QByteArray digest;
    QByteArray _plain;
    QByteArray _keybuf;
    QByteArray _ivec;

    unsigned char *keybuf;
    unsigned char *plain;
    unsigned char *ivec;
    unsigned char *encrypted;
    unsigned char *padding;

    int outlen,tmplen;

    digest.clear();
    _plain.append(lineEdit_3->text());
    _keybuf.append(lineEdit->text());
    _ivec.append(lineEdit_2->text());

    plain = reinterpret_cast<unsigned char *>(_plain.data());
    keybuf = reinterpret_cast<unsigned char *>(_keybuf.data());
    ivec = reinterpret_cast<unsigned char *>(_ivec.data());

    EVP_CIPHER_CTX  ctx;
    EVP_CIPHER_CTX_init(&ctx);

    EVP_EncryptInit(&ctx, EVP_bf_cbc(), keybuf, ivec);

    if (!EVP_EncryptUpdate(&ctx, encrypted, &outlen, plain, _plain.count()))
    {
        //error
    }

    for (int i = 0; i < outlen; i++)
        digest.append(encrypted[i]);

    if (!EVP_EncryptFinal(&ctx, padding, &tmplen)){
        //error
    }

    for (int i = 0; i < tmplen; i++)
        digest.append(padding[i]);

    EVP_CIPHER_CTX_cleanup(&ctx);

    lineEdit_3->setText(digest);


Собственно проблема, никак не пойму из-за чего.

Код повешен на кнопку.
Запускаю приложение, ввожу данные, все работает. При повторном нажатие кнопки вылетает Segmentation Fault.
Может кто знает, где зарыта ошибка?
 
Проелывается все в Ubuntu 10.04

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)