simpler cleanup of result from RSAKeypairGenerator

This commit is contained in:
Stephen Birarda 2016-02-19 16:41:56 -08:00
parent fa5f2571d7
commit 5de8601b43
3 changed files with 13 additions and 9 deletions

View file

@ -598,16 +598,24 @@ void AccountManager::generateNewKeypair(bool isUserKeypair, const QUuid& domainI
generateThread->setObjectName("Account Manager Generator Thread"); generateThread->setObjectName("Account Manager Generator Thread");
// setup a keypair generator // setup a keypair generator
RSAKeypairGenerator* keypairGenerator = new RSAKeypairGenerator(); RSAKeypairGenerator* keypairGenerator = new RSAKeypairGenerator { this };
if (!isUserKeypair) { if (!isUserKeypair) {
keypairGenerator->setDomainID(domainID); keypairGenerator->setDomainID(domainID);
} }
// start keypair generation when the thread starts
connect(generateThread, &QThread::started, keypairGenerator, &RSAKeypairGenerator::generateKeypair); connect(generateThread, &QThread::started, keypairGenerator, &RSAKeypairGenerator::generateKeypair);
// handle success or failure of keypair generation
connect(keypairGenerator, &RSAKeypairGenerator::generatedKeypair, this, &AccountManager::processGeneratedKeypair); connect(keypairGenerator, &RSAKeypairGenerator::generatedKeypair, this, &AccountManager::processGeneratedKeypair);
connect(keypairGenerator, &RSAKeypairGenerator::errorGeneratingKeypair, connect(keypairGenerator, &RSAKeypairGenerator::errorGeneratingKeypair,
this, &AccountManager::handleKeypairGenerationError); this, &AccountManager::handleKeypairGenerationError);
// cleanup the keypair generator and the thread once the generation succeeds or fails
connect(keypairGenerator, &RSAKeypairGenerator::generatedKeypair, keypairGenerator, &RSAKeypairGenerator::deleteLater);
connect(keypairGenerator, &RSAKeypairGenerator::errorGeneratingKeypair, keypairGenerator, &RSAKeypairGenerator::deleteLater);
connect(keypairGenerator, &QObject::destroyed, generateThread, &QThread::quit); connect(keypairGenerator, &QObject::destroyed, generateThread, &QThread::quit);
connect(generateThread, &QThread::finished, generateThread, &QThread::deleteLater); connect(generateThread, &QThread::finished, generateThread, &QThread::deleteLater);
@ -617,7 +625,7 @@ void AccountManager::generateNewKeypair(bool isUserKeypair, const QUuid& domainI
generateThread->start(); generateThread->start();
} }
void AccountManager::processGeneratedKeypair(const QByteArray& publicKey, const QByteArray& privateKey) { void AccountManager::processGeneratedKeypair(QByteArray publicKey, QByteArray privateKey) {
qCDebug(networking) << "Generated 2048-bit RSA key-pair. Storing private key and uploading public key."; qCDebug(networking) << "Generated 2048-bit RSA key-pair. Storing private key and uploading public key.";
@ -641,12 +649,8 @@ void AccountManager::processGeneratedKeypair(const QByteArray& publicKey, const
sendRequest(PUBLIC_KEY_UPDATE_PATH, AccountManagerAuth::Required, QNetworkAccessManager::PutOperation, sendRequest(PUBLIC_KEY_UPDATE_PATH, AccountManagerAuth::Required, QNetworkAccessManager::PutOperation,
JSONCallbackParameters(), QByteArray(), requestMultiPart); JSONCallbackParameters(), QByteArray(), requestMultiPart);
// get rid of the keypair generator now that we don't need it anymore
sender()->deleteLater();
} }
void AccountManager::handleKeypairGenerationError() { void AccountManager::handleKeypairGenerationError() {
// for now there isn't anything we do with this except get the worker thread to clean up qCritical() << "Error generating keypair - this is likely to cause authentication issues.";
sender()->deleteLater();
} }

View file

@ -103,7 +103,7 @@ signals:
private slots: private slots:
void processReply(); void processReply();
void handleKeypairGenerationError(); void handleKeypairGenerationError();
void processGeneratedKeypair(const QByteArray& publicKey, const QByteArray& privateKey); void processGeneratedKeypair(QByteArray publicKey, QByteArray privateKey);
private: private:
AccountManager(); AccountManager();

View file

@ -28,7 +28,7 @@ public slots:
signals: signals:
void errorGeneratingKeypair(); void errorGeneratingKeypair();
void generatedKeypair(const QByteArray& publicKey, const QByteArray& privateKey); void generatedKeypair(QByteArray publicKey, QByteArray privateKey);
private: private:
QUuid _domainID; QUuid _domainID;