void MumbleSSL::addSystemCA() { #if QT_VERSION < 0x040700 && !defined(NO_SYSTEM_CA_OVERRIDE) #if defined(Q_OS_WIN) QStringList qsl; qsl << QLatin1String("Ca"); qsl << QLatin1String("Root"); qsl << QLatin1String("AuthRoot"); foreach(const QString &store, qsl) { HCERTSTORE hCertStore; PCCERT_CONTEXT pCertContext = NULL; bool found = false; hCertStore = CertOpenSystemStore(NULL, store.utf16()); if (! hCertStore) { qWarning("SSL: Failed to open CA store %s", qPrintable(store)); continue; } while (pCertContext = CertEnumCertificatesInStore(hCertStore, pCertContext)) { QByteArray qba(reinterpret_cast<const char *>(pCertContext->pbCertEncoded), pCertContext->cbCertEncoded); QList<QSslCertificate> ql = QSslCertificate::fromData(qba, QSsl::Pem); ql += QSslCertificate::fromData(qba, QSsl::Der); if (! ql.isEmpty()) { found = true; QSslSocket::addDefaultCaCertificates(ql); } } if (found) qWarning("SSL: Added CA certificates from system store '%s'", qPrintable(store)); CertCloseStore(hCertStore, 0); }
void AudioInput::flushCheck() { if (bPreviousVoice && iFrames < g.s.iFramesPerPacket) return; int flags = 0; if (g.iAltSpeak > 0) flags += MessageSpeex::AltSpeak; if (g.s.lmLoopMode == Settings::Server) flags += MessageSpeex::LoopBack; if (! bPreviousVoice) flags += MessageSpeex::EndSpeech; flags += (iFrames - 1) << 4; int len = speex_bits_nbytes(&sbBits); QByteArray qba(len + 1, 0); qba[0] = static_cast<unsigned char>(flags); speex_bits_write(&sbBits, qba.data() + 1, len); MessageSpeex msPacket; msPacket.qbaSpeexPacket = qba; msPacket.iSeq = iFrameCounter; if (g.s.lmLoopMode == Settings::Local) { LoopPlayer::lpLoopy.addFrame(qba, msPacket.iSeq); } else if (g.sh) { g.sh->sendMessage(&msPacket); } iFrames = 0; speex_bits_reset(&sbBits); }
/** Save vector information */ void EditableVector::save(QXmlStreamWriter &s) { s.writeStartElement("editablevector"); saveNameInfo(s, VNUM|XNUM); if (_saveData) { QByteArray qba(length()*sizeof(double), '\0'); QDataStream qds(&qba, QIODevice::WriteOnly); for (int i = 0; i < length(); i++) { qds << _v[i]; } s.writeTextElement("data", qCompress(qba).toBase64()); } s.writeEndElement(); }
void TestPacketDataStream::undersize() { QByteArray qba(32, 'Z'); char buff[256]; for (unsigned int i=0;i<32;i++) { PacketDataStream out(buff, i); out << qba; QCOMPARE(33-i, out.undersize()); QVERIFY(! out.isValid()); QVERIFY(out.left() == 0); } PacketDataStream out(buff, 33); out << qba; QCOMPARE(out.undersize(), 0U); QVERIFY(out.isValid()); QVERIFY(out.left() == 0); }
void EditableMatrix::save(QXmlStreamWriter &xml) { QByteArray qba(_zSize*sizeof(double), '\0'); QDataStream qds(&qba, QIODevice::WriteOnly); for (int i = 0; i < _zSize; i++) { qds << _z[i]; } xml.writeStartElement(staticTypeTag); xml.writeAttribute("xmin", QString::number(minX())); xml.writeAttribute("ymin", QString::number(minY())); xml.writeAttribute("nx", QString::number(xNumSteps())); xml.writeAttribute("ny", QString::number(yNumSteps())); xml.writeAttribute("xstep", QString::number(xStepSize())); xml.writeAttribute("ystep", QString::number(yStepSize())); xml.writeTextElement("data", qCompress(qba).toBase64()); saveNameInfo(xml, VNUM|MNUM|XNUM); xml.writeEndElement(); }
/** @brief Creates new mixer line (list item) and adds it to the list widget @note Mixer lines are now HTML formated in order to support bold text. @param[in] dest defines which mixer line to create. If dest < 0 then create empty channel slotr fo channel -dest ( dest=-2 -> CH2) if dest >=0 then create used channel based on model mix data from slot dest (dest=4 -> model mix[4]) @retval true destination channel is different from the previous list item false destination channle is the same as previous list item */ bool MixesPanel::AddMixerLine(int dest) { bool new_ch; QString str = getMixerText(dest, &new_ch); QListWidgetItem *itm = new QListWidgetItem(str); QByteArray qba(1, (quint8)dest); if (dest >= 0) { //add mix data MixData *md = &model->mixData[dest]; qba.append((const char*)md, sizeof(MixData)); } itm->setData(Qt::UserRole, qba); #if MIX_ROW_HEIGHT_INCREASE > 0 if (new_ch && !firstLine) { //increase size of this row itm->setData(GroupHeaderRole, 1); } #endif MixerlistWidget->addItem(itm); firstLine = false; // qDebug() << "MixesPanel::AddMixerLine(): dest" << dest << "text" << str; return new_ch; }
void PhoneWidget::phoneSubmitDone(const MTPauth_SentCode &result) { stopCheck(); _sentRequest = 0; if (result.type() != mtpc_auth_sentCode) { showPhoneError(&Lang::Hard::ServerError); return; } const auto &d = result.c_auth_sentCode(); fillSentCodeData(d); getData()->phone = _sentPhone; getData()->phoneHash = qba(d.vphone_code_hash); getData()->phoneIsRegistered = d.is_phone_registered(); if (d.has_next_type() && d.vnext_type.type() == mtpc_auth_codeTypeCall) { getData()->callStatus = Widget::Data::CallStatus::Waiting; getData()->callTimeout = d.has_timeout() ? d.vtimeout.v : 60; } else { getData()->callStatus = Widget::Data::CallStatus::Disabled; getData()->callTimeout = 0; } goNext(new Intro::CodeWidget(parentWidget(), getData())); }