void MurmurIce::authenticateSlot(int &res, QString &uname, const QList<QSslCertificate> &certlist, const QString &certhash, bool certstrong, const QString &pw) { ::Server *server = qobject_cast< ::Server *> (sender()); ServerAuthenticatorPrx prx = mi->qmServerAuthenticator.value(server->iServerNum); ::std::string newname; ::Murmur::GroupNameList groups; ::Murmur::CertificateList certs; certs.resize(certlist.size()); for (int i=0;i<certlist.size();++i) { ::Murmur::CertificateDer der; QByteArray qba = certlist.at(i).toDer(); der.resize(qba.size()); const char *ptr = qba.constData(); for (int j=0;j<qba.size();++j) der[j] = ptr[j]; certs[i] = der; } try { res = prx->authenticate(u8(uname), u8(pw), certs, u8(certhash), certstrong, newname, groups); } catch (...) { badAuthenticator(server); } if (res >= 0) { if (newname.length() > 0) uname = u8(newname); QStringList qsl; foreach(const ::std::string &str, groups) { qsl << u8(str); } if (! qsl.isEmpty()) server->setTempGroups(res, NULL, qsl); }