Changeset 651 for trunk/src/network/ssl


Ignore:
Timestamp:
Mar 8, 2010, 12:52:58 PM (15 years ago)
Author:
Dmitry A. Kuminov
Message:

trunk: Merged in qt 4.6.2 sources.

Location:
trunk
Files:
24 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/src/network/ssl/qssl.cpp

    r561 r651  
    11/****************************************************************************
    22**
    3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
     3** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
    44** All rights reserved.
    55** Contact: Nokia Corporation (qt-info@nokia.com)
  • trunk/src/network/ssl/qssl.h

    r561 r651  
    11/****************************************************************************
    22**
    3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
     3** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
    44** All rights reserved.
    55** Contact: Nokia Corporation (qt-info@nokia.com)
  • trunk/src/network/ssl/qsslcertificate.cpp

    r561 r651  
    11/****************************************************************************
    22**
    3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
     3** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
    44** All rights reserved.
    55** Contact: Nokia Corporation (qt-info@nokia.com)
     
    305305QString QSslCertificate::issuerInfo(SubjectInfo info) const
    306306{
     307    // lazy init
    307308    if (d->issuerInfo.isEmpty() && d->x509)
    308309        d->issuerInfo =
     
    321322QString QSslCertificate::issuerInfo(const QByteArray &tag) const
    322323{
    323     // ### Use a QByteArray for the keys in the map
     324    // lazy init
     325    if (d->issuerInfo.isEmpty() && d->x509)
     326        d->issuerInfo =
     327                _q_mapFromOnelineName(q_X509_NAME_oneline(q_X509_get_issuer_name(d->x509), 0, 0));
     328
    324329    return d->issuerInfo.value(QString::fromLatin1(tag));
    325330}
     
    336341QString QSslCertificate::subjectInfo(SubjectInfo info) const
    337342{
     343    // lazy init
    338344    if (d->subjectInfo.isEmpty() && d->x509)
    339345        d->subjectInfo =
     
    351357QString QSslCertificate::subjectInfo(const QByteArray &tag) const
    352358{
    353     // ### Use a QByteArray for the keys in the map
     359    // lazy init
     360    if (d->subjectInfo.isEmpty() && d->x509)
     361        d->subjectInfo =
     362                _q_mapFromOnelineName(q_X509_NAME_oneline(q_X509_get_subject_name(d->x509), 0, 0));
     363
    354364    return d->subjectInfo.value(QString::fromLatin1(tag));
    355365}
     
    687697static bool matchLineFeed(const QByteArray &pem, int *offset)
    688698{
    689     char ch = pem.at(*offset);
     699    char ch;
    690700
    691701    // ignore extra whitespace at the end of the line
    692     while (ch == ' ' && *offset < pem.size())
    693         ch = pem.at(++*offset);
     702    while (*offset < pem.size() && (ch = pem.at(*offset)) == ' ')
     703        ++*offset;
    694704
    695705    if (ch == '\n') {
     
    723733
    724734        offset = endPos + sizeof(ENDCERTSTRING) - 1;
    725         if (!matchLineFeed(pem, &offset))
     735        if (offset < pem.size() && !matchLineFeed(pem, &offset))
    726736            break;
    727737
  • trunk/src/network/ssl/qsslcertificate.h

    r561 r651  
    11/****************************************************************************
    22**
    3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
     3** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
    44** All rights reserved.
    55** Contact: Nokia Corporation (qt-info@nokia.com)
  • trunk/src/network/ssl/qsslcertificate_p.h

    r561 r651  
    11/****************************************************************************
    22**
    3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
     3** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
    44** All rights reserved.
    55** Contact: Nokia Corporation (qt-info@nokia.com)
  • trunk/src/network/ssl/qsslcipher.cpp

    r561 r651  
    11/****************************************************************************
    22**
    3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
     3** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
    44** All rights reserved.
    55** Contact: Nokia Corporation (qt-info@nokia.com)
  • trunk/src/network/ssl/qsslcipher.h

    r561 r651  
    11/****************************************************************************
    22**
    3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
     3** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
    44** All rights reserved.
    55** Contact: Nokia Corporation (qt-info@nokia.com)
  • trunk/src/network/ssl/qsslcipher_p.h

    r561 r651  
    11/****************************************************************************
    22**
    3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
     3** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
    44** All rights reserved.
    55** Contact: Nokia Corporation (qt-info@nokia.com)
  • trunk/src/network/ssl/qsslconfiguration.cpp

    r561 r651  
    11/****************************************************************************
    22**
    3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
     3** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
    44** All rights reserved.
    55** Contact: Nokia Corporation (qt-info@nokia.com)
  • trunk/src/network/ssl/qsslconfiguration.h

    r561 r651  
    11/****************************************************************************
    22**
    3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
     3** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
    44** All rights reserved.
    55** Contact: Nokia Corporation (qt-info@nokia.com)
  • trunk/src/network/ssl/qsslconfiguration_p.h

    r561 r651  
    11/****************************************************************************
    22**
    3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
     3** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
    44** All rights reserved.
    55** Contact: Nokia Corporation (qt-info@nokia.com)
  • trunk/src/network/ssl/qsslerror.cpp

    r561 r651  
    11/****************************************************************************
    22**
    3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
     3** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
    44** All rights reserved.
    55** Contact: Nokia Corporation (qt-info@nokia.com)
  • trunk/src/network/ssl/qsslerror.h

    r561 r651  
    11/****************************************************************************
    22**
    3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
     3** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
    44** All rights reserved.
    55** Contact: Nokia Corporation (qt-info@nokia.com)
  • trunk/src/network/ssl/qsslkey.cpp

    r561 r651  
    11/****************************************************************************
    22**
    3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
     3** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
    44** All rights reserved.
    55** Contact: Nokia Corporation (qt-info@nokia.com)
  • trunk/src/network/ssl/qsslkey.h

    r561 r651  
    11/****************************************************************************
    22**
    3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
     3** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
    44** All rights reserved.
    55** Contact: Nokia Corporation (qt-info@nokia.com)
  • trunk/src/network/ssl/qsslkey_p.h

    r561 r651  
    11/****************************************************************************
    22**
    3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
     3** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
    44** All rights reserved.
    55** Contact: Nokia Corporation (qt-info@nokia.com)
  • trunk/src/network/ssl/qsslsocket.cpp

    r561 r651  
    11/****************************************************************************
    22**
    3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
     3** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
    44** All rights reserved.
    55** Contact: Nokia Corporation (qt-info@nokia.com)
  • trunk/src/network/ssl/qsslsocket.h

    r561 r651  
    11/****************************************************************************
    22**
    3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
     3** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
    44** All rights reserved.
    55** Contact: Nokia Corporation (qt-info@nokia.com)
  • trunk/src/network/ssl/qsslsocket_openssl.cpp

    r561 r651  
    11/****************************************************************************
    22**
    3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
     3** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
    44** All rights reserved.
    55** Contact: Nokia Corporation (qt-info@nokia.com)
     
    554554                writeBuffer.free(writtenBytes);
    555555                totalBytesWritten += writtenBytes;
     556
     557                if (writtenBytes < nextDataBlockSize) {
     558                    // break out of the writing loop and try again after we had read
     559                    transmitting = true;
     560                    break;
     561                }
    556562            }
    557563
     
    587593                // Read encrypted data from the socket into a buffer.
    588594                data.resize(pendingBytes);
    589                 int decryptedBytesRead = plainSocket->read(data.data(), pendingBytes);
     595                // just peek() here because q_BIO_write could write less data than expected
     596                int encryptedBytesRead = plainSocket->peek(data.data(), pendingBytes);
    590597#ifdef QSSLSOCKET_DEBUG
    591                 qDebug() << "QSslSocketBackendPrivate::transmit: read" << decryptedBytesRead << "encrypted bytes from the socket";
     598                qDebug() << "QSslSocketBackendPrivate::transmit: read" << encryptedBytesRead << "encrypted bytes from the socket";
    592599#endif
    593600                // Write encrypted data from the buffer into the read BIO.
    594                 q_BIO_write(readBio, data.constData(), decryptedBytesRead);
     601                int writtenToBio = q_BIO_write(readBio, data.constData(), encryptedBytesRead);
     602
     603                // do the actual read() here and throw away the results.
     604                if (writtenToBio > 0) {
     605                    // ### TODO: make this cheaper by not making it memcpy. E.g. make it work with data=0x0 or make it work with seek
     606                    plainSocket->read(data.data(), writtenToBio);
     607                } else {
     608                    // ### Better error handling.
     609                    q->setErrorString(QSslSocket::tr("Unable to decrypt data: %1").arg(SSL_ERRORSTR()));
     610                    q->setSocketError(QAbstractSocket::UnknownSocketError);
     611                    emit q->error(QAbstractSocket::UnknownSocketError);
     612                    return;
     613                }
     614
    595615                transmitting = true;
    596616            }
  • trunk/src/network/ssl/qsslsocket_openssl_p.h

    r561 r651  
    11/****************************************************************************
    22**
    3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
     3** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
    44** All rights reserved.
    55** Contact: Nokia Corporation (qt-info@nokia.com)
  • trunk/src/network/ssl/qsslsocket_openssl_symbols.cpp

    r561 r651  
    11/****************************************************************************
    22**
    3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
     3** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
    44** All rights reserved.
    55** Contact: Nokia Corporation (qt-info@nokia.com)
  • trunk/src/network/ssl/qsslsocket_openssl_symbols_p.h

    r561 r651  
    11/****************************************************************************
    22**
    3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
     3** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
    44** All rights reserved.
    55** Contact: Nokia Corporation (qt-info@nokia.com)
  • trunk/src/network/ssl/qsslsocket_p.h

    r561 r651  
    11/****************************************************************************
    22**
    3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
     3** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
    44** All rights reserved.
    55** Contact: Nokia Corporation (qt-info@nokia.com)
     
    8484    bool* readyReadEmittedPointer;
    8585
    86     QRingBuffer readBuffer;
    87     QRingBuffer writeBuffer;
    88 
    8986    QSslConfigurationPrivate configuration;
    9087    QList<QSslError> sslErrors;
Note: See TracChangeset for help on using the changeset viewer.