mirror of
https://github.com/nextcloud/desktop.git
synced 2024-10-27 23:17:13 +03:00
[CSE] Mobe fileEncryption to a static function
and I'll move all of those to a namespace latter.
This commit is contained in:
parent
20198c5c7b
commit
3760b86e07
2 changed files with 15 additions and 44 deletions
|
@ -1272,20 +1272,10 @@ bool ClientSideEncryption::isFolderEncrypted(const QString& path) {
|
||||||
return (*it);
|
return (*it);
|
||||||
}
|
}
|
||||||
|
|
||||||
FileEncryptionJob::FileEncryptionJob(const QByteArray &key, const QByteArray &iv,
|
void EncryptionHelper::fileEncryption(const QByteArray &key, const QByteArray &iv, QFile *input, QFile *output)
|
||||||
QPointer<QFile> input, QPointer<QFile> output, QObject *parent)
|
|
||||||
: QObject(parent),
|
|
||||||
_key(key),
|
|
||||||
_iv(iv),
|
|
||||||
_input(input),
|
|
||||||
_output(output)
|
|
||||||
{
|
{
|
||||||
}
|
input->open(QIODevice::ReadOnly);
|
||||||
|
output->open(QIODevice::WriteOnly);
|
||||||
void FileEncryptionJob::start()
|
|
||||||
{
|
|
||||||
_input->open(QIODevice::ReadOnly);
|
|
||||||
_output->open(QIODevice::WriteOnly);
|
|
||||||
|
|
||||||
// Init
|
// Init
|
||||||
EVP_CIPHER_CTX *ctx;
|
EVP_CIPHER_CTX *ctx;
|
||||||
|
@ -1305,13 +1295,13 @@ void FileEncryptionJob::start()
|
||||||
EVP_CIPHER_CTX_set_padding(ctx, 0);
|
EVP_CIPHER_CTX_set_padding(ctx, 0);
|
||||||
|
|
||||||
/* Set IV length. */
|
/* Set IV length. */
|
||||||
if(!EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_GCM_SET_IVLEN, _iv.size(), NULL)) {
|
if(!EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_GCM_SET_IVLEN, iv.size(), NULL)) {
|
||||||
qCInfo(lcCse()) << "Could not set iv length";
|
qCInfo(lcCse()) << "Could not set iv length";
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Initialise key and IV */
|
/* Initialise key and IV */
|
||||||
if(!EVP_EncryptInit_ex(ctx, NULL, NULL, (const unsigned char *)_key.constData(), (const unsigned char *)_iv.constData())) {
|
if(!EVP_EncryptInit_ex(ctx, NULL, NULL, (const unsigned char *)key.constData(), (const unsigned char *)iv.constData())) {
|
||||||
qCInfo(lcCse()) << "Could not set key and iv";
|
qCInfo(lcCse()) << "Could not set key and iv";
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
@ -1320,8 +1310,8 @@ void FileEncryptionJob::start()
|
||||||
int len = 0;
|
int len = 0;
|
||||||
int total_len = 0;
|
int total_len = 0;
|
||||||
|
|
||||||
while(!_input->atEnd()) {
|
while(!input->atEnd()) {
|
||||||
QByteArray data = _input->read(1024);
|
QByteArray data = input->read(1024);
|
||||||
|
|
||||||
if (data.size() == 0) {
|
if (data.size() == 0) {
|
||||||
qCInfo(lcCse()) << "Could not read data from file";
|
qCInfo(lcCse()) << "Could not read data from file";
|
||||||
|
@ -1333,7 +1323,7 @@ void FileEncryptionJob::start()
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
_output->write((char *)out, len);
|
output->write((char *)out, len);
|
||||||
total_len += len;
|
total_len += len;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1341,7 +1331,7 @@ void FileEncryptionJob::start()
|
||||||
qCInfo(lcCse()) << "Could finalize encryption";
|
qCInfo(lcCse()) << "Could finalize encryption";
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
_output->write((char *)out, len);
|
output->write((char *)out, len);
|
||||||
total_len += len;
|
total_len += len;
|
||||||
|
|
||||||
/* Get the tag */
|
/* Get the tag */
|
||||||
|
@ -1351,16 +1341,14 @@ void FileEncryptionJob::start()
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
_output->write((char *)tag, 16);
|
output->write((char *)tag, 16);
|
||||||
|
|
||||||
free(out);
|
free(out);
|
||||||
free(tag);
|
free(tag);
|
||||||
EVP_CIPHER_CTX_free(ctx);
|
EVP_CIPHER_CTX_free(ctx);
|
||||||
|
|
||||||
_input->close();
|
input->close();
|
||||||
_output->close();
|
output->close();
|
||||||
|
|
||||||
emit finished(_output);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
FileDecryptionJob::FileDecryptionJob(QByteArray &key, QByteArray &iv, QFile *input, QFile *output, QObject *parent)
|
FileDecryptionJob::FileDecryptionJob(QByteArray &key, QByteArray &iv, QFile *input, QFile *output, QObject *parent)
|
||||||
|
|
|
@ -59,6 +59,9 @@ public:
|
||||||
);
|
);
|
||||||
|
|
||||||
static QByteArray BIO2ByteArray(BIO *b);
|
static QByteArray BIO2ByteArray(BIO *b);
|
||||||
|
|
||||||
|
static void fileEncryption(const QByteArray &key, const QByteArray &iv,
|
||||||
|
QFile *input, QFile *output);
|
||||||
};
|
};
|
||||||
|
|
||||||
class ClientSideEncryption : public QObject {
|
class ClientSideEncryption : public QObject {
|
||||||
|
@ -157,26 +160,6 @@ private:
|
||||||
QVector<QPair<QString, QString>> _sharing;
|
QVector<QPair<QString, QString>> _sharing;
|
||||||
};
|
};
|
||||||
|
|
||||||
class FileEncryptionJob : public QObject
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
public:
|
|
||||||
FileEncryptionJob(const QByteArray &key, const QByteArray &iv,
|
|
||||||
QPointer<QFile> input, QPointer<QFile> output, QObject *parent = 0);
|
|
||||||
|
|
||||||
public slots:
|
|
||||||
void start();
|
|
||||||
|
|
||||||
signals:
|
|
||||||
void finished(QFile *output);
|
|
||||||
|
|
||||||
private:
|
|
||||||
QByteArray _key;
|
|
||||||
QByteArray _iv;
|
|
||||||
QPointer<QFile> _input;
|
|
||||||
QPointer<QFile> _output;
|
|
||||||
};
|
|
||||||
|
|
||||||
class FileDecryptionJob : public QObject
|
class FileDecryptionJob : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
Loading…
Reference in a new issue