Beispiel #1
0
Datei: ssu.cpp Projekt: lbt/ssu
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;
}
Beispiel #2
0
Datei: ssu.cpp Projekt: lbt/ssu
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);
}
Beispiel #6
0
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());
}