bool Ssu::registerDevice(QDomDocument *response){ QString certificateString = response->elementsByTagName("certificate").at(0).toElement().text(); QSslCertificate certificate(certificateString.toAscii()); SsuLog *ssuLog = SsuLog::instance(); SsuCoreConfig *settings = SsuCoreConfig::instance(); if (certificate.isNull()){ // make sure device is in unregistered state on failed registration settings->setValue("registered", false); setError("Certificate is invalid"); return false; } else settings->setValue("certificate", certificate.toPem()); QString privateKeyString = response->elementsByTagName("privateKey").at(0).toElement().text(); QSslKey privateKey(privateKeyString.toAscii(), QSsl::Rsa); if (privateKey.isNull()){ settings->setValue("registered", false); setError("Private key is invalid"); return false; } else settings->setValue("privateKey", privateKey.toPem()); // oldUser is just for reference purposes, in case we want to notify // about owner changes for the device QString oldUser = response->elementsByTagName("user").at(0).toElement().text(); ssuLog->print(LOG_DEBUG, QString("Old user for your device was: %1").arg(oldUser)); // if we came that far everything required for device registration is done settings->setValue("registered", true); settings->sync(); emit registrationStatusChanged(); return true; }
void Ssu::unregister(){ SsuCoreConfig *settings = SsuCoreConfig::instance(); settings->setValue("privateKey", ""); settings->setValue("certificate", ""); settings->setValue("registered", false); settings->sync(); emit registrationStatusChanged(); }
void TransportRegistrationManager::transportRegistrationCheckFinished() { JT_CheckTransportRegistration *registrationCheck = (JT_CheckTransportRegistration *)sender(); if (registrationCheck->success()) { _registered = registrationCheck->isRegistered(); emit registrationStatusChanged(_registered, registrationCheck->registeredUsername()); } }
void TransportRegistrationManager::transportUnRegistrationFinished() { JT_Register *task = (JT_Register *)sender(); if (task->success()) { _registered = false; emit registrationStatusChanged(_registered, ""); emit unregistrationFinished(); } }
void TransportRegistrationManager::transportRegistrationFinished() { JT_Register *task = (JT_Register *)sender(); if (task->success()) { _registered = true; emit registrationStatusChanged(_registered, _usernamesForTasks[task]); emit registrationFinished(); } _usernamesForTasks.remove(task); }
void UrlResolverTest::checkRegisterDevice(){ QDomDocument doc("foo"); QDomElement root = doc.createElement("foo"); doc.appendChild(root); QDomElement certificate = doc.createElement("certificate"); root.appendChild(certificate); QVERIFY2(!ssu.registerDevice(&doc), "Ssu::registerDevice() should fail when 'certificate' is empty"); QFile certificateFile(QString("%1/mycert.crt").arg(LOCATE_DATA_PATH)); QVERIFY(certificateFile.open(QIODevice::ReadOnly)); certificate.appendChild(doc.createTextNode(certificateFile.readAll())); QDomElement privateKey = doc.createElement("privateKey"); root.appendChild(privateKey); QVERIFY2(!ssu.registerDevice(&doc), "Ssu::registerDevice() should fail when 'privateKey' is empty"); QFile privateKeyFile(QString("%1/mykey.key").arg(LOCATE_DATA_PATH)); QVERIFY(privateKeyFile.open(QIODevice::ReadOnly)); privateKey.appendChild(doc.createTextNode(privateKeyFile.readAll())); QDomElement user = doc.createElement("user"); root.appendChild(user); user.appendChild(doc.createTextNode("john.doe")); QSignalSpy registrationStatusChanged_spy(&ssu, SIGNAL(registrationStatusChanged())); QVERIFY(ssu.registerDevice(&doc)); QVERIFY(registrationStatusChanged_spy.count() == 1); QVERIFY(ssu.isRegistered()); ssu.unregister(); QVERIFY(registrationStatusChanged_spy.count() == 2); QVERIFY(!ssu.isRegistered()); }