OpensslAES::OpensslAES(const QByteArray &key, const QByteArray &salt, Type type, Mode mode) : m_isValid(false), m_type(type), m_mode(mode) { m_blockSize = calcBlockSize(); /* gen key and iv. init the cipher ctx object */ m_isValid = init(key, salt); }
void Q3LocalFs::operationPut( Q3NetworkOperation *op ) { #ifdef QLOCALFS_DEBUG qDebug( "Q3LocalFs: operationPut" ); #endif op->setState( StInProgress ); QString to = Q3Url( op->arg( 0 ) ).path(); QFile f( to ); if ( !f.open( IO_WriteOnly ) ) { QString msg = tr( "Could not write\n%1" ).arg( to ); op->setState( StFailed ); op->setProtocolDetail( msg ); op->setErrorCode( (int)ErrPut ); emit finished( op ); return; } QByteArray ba( op->rawArg( 1 ) ); emit dataTransferProgress( 0, ba.size(), op ); int blockSize = calcBlockSize( ba.size() ); if ( (int)ba.size() < blockSize ) { f.writeBlock( ba.data(), ba.size() ); emit dataTransferProgress( ba.size(), ba.size(), op ); } else { int i = 0; while ( i + blockSize < (int)ba.size() - 1 ) { if ( operationInProgress() != op ) return; f.writeBlock( &ba.data()[ i ], blockSize ); f.flush(); emit dataTransferProgress( i + blockSize, ba.size(), op ); i += blockSize; QPointer<QObject> that = this; qApp->processEvents(); if (!that) return; } if ( i < (int)ba.size() - 1 ) f.writeBlock( &ba.data()[ i ], ba.size() - i ); emit dataTransferProgress( ba.size(), ba.size(), op ); } op->setState( StDone ); f.close(); emit finished( op ); }
void Q3LocalFs::operationGet( Q3NetworkOperation *op ) { #ifdef QLOCALFS_DEBUG qDebug( "Q3LocalFs: operationGet" ); #endif op->setState( StInProgress ); QString from = Q3Url( op->arg( 0 ) ).path(); QFile f( from ); if ( !f.open( IO_ReadOnly ) ) { #ifdef QLOCALFS_DEBUG qDebug( "Q3LocalFs: could not open %s", from.latin1() ); #endif QString msg = tr( "Could not open\n%1" ).arg( from ); op->setState( StFailed ); op->setProtocolDetail( msg ); op->setErrorCode( (int)ErrGet ); emit finished( op ); return; } QByteArray s; emit dataTransferProgress( 0, f.size(), op ); if ( f.size() != 0 ) { int blockSize = calcBlockSize( f.size() ); if ( (int)f.size() < blockSize ) { s.resize( f.size() ); f.readBlock( s.data(), f.size() ); emit data( s, op ); emit dataTransferProgress( f.size(), f.size(), op ); #ifdef QLOCALFS_DEBUG qDebug( "Q3LocalFs: got all %d bytes at once", f.size() ); #endif } else { s.resize( blockSize ); int remaining = f.size(); QPointer<QObject> that = this; while ( that && remaining > 0 ) { if ( operationInProgress() != op ) return; if ( remaining >= blockSize ) { f.readBlock( s.data(), blockSize ); emit data( s, op ); emit dataTransferProgress( f.size() - remaining, f.size(), op ); remaining -= blockSize; } else { s.resize( remaining ); f.readBlock( s.data(), remaining ); emit data( s, op ); emit dataTransferProgress( f.size() - remaining, f.size(), op ); remaining -= remaining; } qApp->processEvents(); } if ( !that ) return; #ifdef QLOCALFS_DEBUG qDebug( "Q3LocalFs: got all %d bytes step by step", f.size() ); #endif emit dataTransferProgress( f.size(), f.size(), op ); } } op->setState( StDone ); f.close(); emit finished( op ); }