[SCM] kdeconnect packaging branch, master, updated. debian/0.9g-1-1183-g9d69498
Maximiliano Curia
maxy at moszumanska.debian.org
Fri Oct 14 14:28:44 UTC 2016
Gitweb-URL: http://git.debian.org/?p=pkg-kde/kde-extras/kdeconnect.git;a=commitdiff;h=0c110e4
The following commit has been merged in the master branch:
commit 0c110e4392be3646ba7a6c03afaaad21a8237eef
Author: Vineet Garg <grg.vineet at gmail.com>
Date: Mon Jul 6 02:35:26 2015 +0530
Added SSL encryption in file upload
DeviceId is used for peerVerifyName
---
core/backends/lan/landevicelink.cpp | 22 ++++++++++++++++------
core/backends/lan/lanlinkprovider.cpp | 6 ++----
core/backends/lan/uploadjob.cpp | 30 ++++++++++++++++++++----------
core/backends/lan/uploadjob.h | 13 +++++++------
4 files changed, 45 insertions(+), 26 deletions(-)
diff --git a/core/backends/lan/landevicelink.cpp b/core/backends/lan/landevicelink.cpp
index c728fe0..f145382 100644
--- a/core/backends/lan/landevicelink.cpp
+++ b/core/backends/lan/landevicelink.cpp
@@ -57,9 +57,14 @@ void LanDeviceLink::setOnSsl(bool value) {
bool LanDeviceLink::sendPackageEncrypted(QCA::PublicKey& key, NetworkPackage& np)
{
if (np.hasPayload()) {
- UploadJob* job = new UploadJob(np.payload());
- job->start();
- np.setPayloadTransferInfo(job->getTransferInfo());
+ QVariantMap sslInfo;
+ if (onSsl) {
+ sslInfo.insert("useSsl", true);
+ sslInfo.insert("deviceId", deviceId());
+ }
+ UploadJob* job = new UploadJob(np.payload(), sslInfo);
+ job->start();
+ np.setPayloadTransferInfo(job->getTransferInfo());
}
if (!onSsl) {
@@ -77,9 +82,14 @@ bool LanDeviceLink::sendPackageEncrypted(QCA::PublicKey& key, NetworkPackage& np
bool LanDeviceLink::sendPackage(NetworkPackage& np)
{
if (np.hasPayload()) {
- UploadJob* job = new UploadJob(np.payload());
- job->start();
- np.setPayloadTransferInfo(job->getTransferInfo());
+ QVariantMap sslInfo;
+ if (onSsl) {
+ sslInfo.insert("useSsl", true);
+ sslInfo.insert("deviceId", deviceId());
+ }
+ UploadJob* job = new UploadJob(np.payload(), sslInfo);
+ job->start();
+ np.setPayloadTransferInfo(job->getTransferInfo());
}
int written = mSocketLineReader->write(np.serialize());
diff --git a/core/backends/lan/lanlinkprovider.cpp b/core/backends/lan/lanlinkprovider.cpp
index f7c8fb0..6f0b33e 100644
--- a/core/backends/lan/lanlinkprovider.cpp
+++ b/core/backends/lan/lanlinkprovider.cpp
@@ -204,8 +204,7 @@ void LanLinkProvider::connected()
bool isDeviceTrusted = KdeConnectConfig::instance()->trustedDevices().contains(deviceId);
- //TODO : Change it too device id from received package, also correct it on Android side
- socket->setPeerVerifyName("Vineet Garg");
+ socket->setPeerVerifyName(receivedPackage->get<QString>("deviceId"));
if (isDeviceTrusted) {
qDebug() << "Device trusted";
@@ -340,8 +339,7 @@ void LanLinkProvider::dataReceived()
bool isDeviceTrusted = KdeConnectConfig::instance()->trustedDevices().contains(deviceId);
- // TODO : Change it to device id of remote device, correct it on Android side too, certificate name is not set there
- socket->setPeerVerifyName("Vineet Garg");
+ socket->setPeerVerifyName(np->get<QString>("deviceId"));
if (isDeviceTrusted) {
qDebug() << "Device trusted";
diff --git a/core/backends/lan/uploadjob.cpp b/core/backends/lan/uploadjob.cpp
index b0d35fc..6accc7f 100644
--- a/core/backends/lan/uploadjob.cpp
+++ b/core/backends/lan/uploadjob.cpp
@@ -20,17 +20,21 @@
#include <qalgorithms.h>
#include <QtGlobal>
+#include <kdeconnectconfig.h>
#include "uploadjob.h"
#include "core_debug.h"
-UploadJob::UploadJob(const QSharedPointer<QIODevice>& source): KJob()
+UploadJob::UploadJob(const QSharedPointer<QIODevice>& source, QVariantMap sslInfo): KJob()
{
mInput = source;
- mServer = new QTcpServer(this);
+ mServer = new Server(this);
mSocket = 0;
mPort = 0;
+ // We will use this info if link is on ssl, to send encrypted payload
+ this->sslInfo = sslInfo;
+
connect(mInput.data(), SIGNAL(readyRead()), this, SLOT(readyRead()));
connect(mInput.data(), SIGNAL(aboutToClose()), this, SLOT(aboutToClose()));
}
@@ -46,27 +50,33 @@ void UploadJob::start()
return;
}
}
- connect(mServer, SIGNAL(newConnection()), this, SLOT(newConnection()));
+ connect(mServer, SIGNAL(newConnection(QSslSocket*)), this, SLOT(newConnection(QSslSocket*)));
}
-void UploadJob::newConnection()
+void UploadJob::newConnection(QSslSocket* socket)
{
-
- if (mSocket || !mServer->hasPendingConnections()) return;
-
if (!mInput->open(QIODevice::ReadOnly)) {
qWarning() << "error when opening the input to upload";
return; //TODO: Handle error, clean up...
}
- mSocket = mServer->nextPendingConnection();
+ mSocket = socket;
+
+ if (sslInfo.value("useSsl", false).toBool()) {
+ mSocket->setLocalCertificate(KdeConnectConfig::instance()->certificate());
+ mSocket->setPrivateKey(KdeConnectConfig::instance()->privateKeyPath());
+ mSocket->setProtocol(QSsl::TlsV1_2);
+ mSocket->setPeerVerifyName(sslInfo.value("deviceId").toString());
+ mSocket->addCaCertificate(QSslCertificate(KdeConnectConfig::instance()->getTrustedDevice(sslInfo.value("deviceId").toString()).certificate.toLatin1()));
+ mSocket->startServerEncryption();
+ mSocket->waitForEncrypted();
+ }
+
readyRead();
}
void UploadJob::readyRead()
{
- //TODO: Implement payload encryption
-
while ( mInput->bytesAvailable() > 0 )
{
qint64 bytes = qMin(mInput->bytesAvailable(), (qint64)4096);
diff --git a/core/backends/lan/uploadjob.h b/core/backends/lan/uploadjob.h
index 12b6f7e..e7fd833 100644
--- a/core/backends/lan/uploadjob.h
+++ b/core/backends/lan/uploadjob.h
@@ -25,28 +25,29 @@
#include <QIODevice>
#include <QVariantMap>
-#include <QTcpServer>
-#include <QTcpSocket>
#include <QSharedPointer>
+#include <QSslSocket>
+#include "server.h"
class UploadJob
: public KJob
{
Q_OBJECT
public:
- UploadJob(const QSharedPointer<QIODevice>& source);
+ UploadJob(const QSharedPointer<QIODevice>& source, QVariantMap sslInfo);
virtual void start();
QVariantMap getTransferInfo();
private:
QSharedPointer<QIODevice> mInput;
- QTcpServer* mServer;
- QTcpSocket* mSocket;
+ Server* mServer;
+ QSslSocket* mSocket;
quint16 mPort;
+ QVariantMap sslInfo;
private Q_SLOTS:
void readyRead();
- void newConnection();
+ void newConnection(QSslSocket*);
void aboutToClose();
};
--
kdeconnect packaging
More information about the pkg-kde-commits
mailing list