diff --git a/src/libsync/clientsideencryption.cpp b/src/libsync/clientsideencryption.cpp index 119e234aa8..ad53b59ba3 100644 --- a/src/libsync/clientsideencryption.cpp +++ b/src/libsync/clientsideencryption.cpp @@ -148,13 +148,11 @@ QString ClientSideEncryption::generateCSR(EVP_PKEY *keyPair) int ret = 0; int nVersion = 1; - X509_REQ *x509_req = NULL; + X509_REQ *x509_req = nullptr; auto out = BIO_new(BIO_s_mem()); - QString output; + QByteArray output("csr=\""); char data[80]; - - // auto out = BIO_new_file("/home/tcanabrava/.nextcloud-keys/request.pem","w"); - + SignPublicKeyApiJob *job = nullptr; // 2. set version of x509 req x509_req = X509_REQ_new(); @@ -191,14 +189,18 @@ QString ClientSideEncryption::generateCSR(EVP_PKEY *keyPair) if (output.endsWith("-----END CERTIFICATE REQUEST-----")) break; } while (ret > 0 ); - - if (ret != 1) { - qCInfo(lcCse()) << "Error saving the csr file"; - } + output += "\""; qCInfo(lcCse()) << "Returning the certificate"; qCInfo(lcCse()) << output; + job = new SignPublicKeyApiJob(_account, baseUrl + "public-key", this); + job->setCsr(output); + connect(job, &SignPublicKeyApiJob::jsonReceived, [this](const QJsonDocument& doc, int retCode) { + qCInfo(lcCse()) << retCode; + qCInfo(lcCse()) << doc; + }); + job->start(); free_all: X509_REQ_free(x509_req); diff --git a/src/libsync/networkjobs.cpp b/src/libsync/networkjobs.cpp index 73d8458ed4..48e49c2faa 100644 --- a/src/libsync/networkjobs.cpp +++ b/src/libsync/networkjobs.cpp @@ -958,6 +958,11 @@ void SignPublicKeyApiJob::start() QNetworkRequest req; req.setRawHeader("OCS-APIREQUEST", "true"); QUrl url = Utility::concatUrlPath(account()->url(), path()); + QList> params = { + qMakePair(QString::fromLatin1("format"), QString::fromLatin1("json")) + }; + url.setQueryItems(params); + sendRequest("POST", url, req, &_csr); AbstractNetworkJob::start(); } @@ -965,7 +970,10 @@ void SignPublicKeyApiJob::start() bool SignPublicKeyApiJob::finished() { qCInfo(lcSignPublicKeyApiJob()) << "Sending CSR ended with" << path() << errorString() << reply()->attribute(QNetworkRequest::HttpStatusCodeAttribute); - qCInfo(lcSignPublicKeyApiJob()) << reply()->readAll(); + + QJsonParseError error; + auto json = QJsonDocument::fromJson(reply()->readAll(), &error); + emit jsonReceived(json, reply()->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); } } // namespace OCC