aboutsummaryrefslogtreecommitdiffstats
path: root/src/server/api/PubkeyUploader.cpp
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/server/api/PubkeyUploader.cpp (renamed from src/server/PubkeyUploader.cpp)75
1 files changed, 39 insertions, 36 deletions
diff --git a/src/server/PubkeyUploader.cpp b/src/server/api/PubkeyUploader.cpp
index 70ba07ec..8051dab7 100644
--- a/src/server/PubkeyUploader.cpp
+++ b/src/server/api/PubkeyUploader.cpp
@@ -22,34 +22,33 @@
*
*/
-#include "server/PubkeyUploader.h"
+#include "server/api/PubkeyUploader.h"
-#include "rapidjson/prettywriter.h"
-
-PubkeyUploader::PubkeyUploader(GpgME::GpgContext *ctx, const QVector<GpgKey> &keys) {
- auto utils = new ComUtils(nullptr);
- QUrl reqUrl(utils->getUrl(ComUtils::UploadPubkey));
- QNetworkRequest request(reqUrl);
+PubkeyUploader::PubkeyUploader(GpgME::GpgContext *ctx, const QVector<GpgKey> &keys) : BaseAPI(ComUtils::UploadPubkey),
+ mCtx(ctx),
+ mKeys(keys) {
+}
- rapidjson::Document publicKeys;
- publicKeys.SetArray();
+void PubkeyUploader::construct_json() {
+ document.SetArray();
QStringList keyIds;
- rapidjson::Document::AllocatorType& allocator = publicKeys.GetAllocator();
+ rapidjson::Document::AllocatorType &allocator = document.GetAllocator();
- for(const auto &key : keys) {
+ for (const auto &key : mKeys) {
rapidjson::Value publicKeyObj, pubkey, sha, signedFpr;
QByteArray keyDataBuf;
keyIds << key.id;
- ctx->exportKeys(&keyIds, &keyDataBuf);
+ mCtx->exportKeys(&keyIds, &keyDataBuf);
QCryptographicHash shaGen(QCryptographicHash::Sha256);
shaGen.addData(keyDataBuf);
auto shaStr = shaGen.result().toHex();
- auto signFprStr = ComUtils::getSignStringBase64(ctx, key.fpr, key);
+ auto signFprStr = ComUtils::getSignStringBase64(mCtx, key.fpr, key);
+ qDebug() << "signFprStr" << signFprStr;
pubkey.SetString(keyDataBuf.constData(), keyDataBuf.count());
@@ -62,31 +61,35 @@ PubkeyUploader::PubkeyUploader(GpgME::GpgContext *ctx, const QVector<GpgKey> &ke
publicKeyObj.AddMember("sha", sha, allocator);
publicKeyObj.AddMember("signedFpr", signedFpr, allocator);
- publicKeys.PushBack(publicKeyObj, allocator);
+ document.PushBack(publicKeyObj, allocator);
keyIds.clear();
}
+}
- rapidjson::StringBuffer sb;
- rapidjson::PrettyWriter<rapidjson::StringBuffer> writer(sb);
- publicKeys.Accept(writer);
-
- QByteArray postData(sb.GetString());
- qDebug() << "postData" << QString::fromUtf8(postData);
-
- QNetworkReply *reply = utils->getNetworkManager().post(request, postData);
-
- while (reply->isRunning()) QApplication::processEvents();
-
- QByteArray replyData = reply->readAll().constData();
- if (utils->checkServerReply(replyData)) {
- /**
- * {
- * "strings" : [
- * "...",
- * "..."
- * ]
- * }
- */
+void PubkeyUploader::deal_reply() {
+
+ const auto &utils = getUtils();
+
+ /**
+ * {
+ * "strings" : [
+ * "...",
+ * "..."
+ * ]
+ * }
+ */
+
+ if (!utils.checkDataValue("strings")) {
+ QMessageBox::critical(nullptr, tr("Error"),
+ tr("The communication content with the server does not meet the requirements"));
+ } else {
+ auto &strings = utils.getDataValue("strings");
+ qDebug() << "Pubkey Uploader" << strings.IsArray() << strings.GetArray().Size();
+ if (strings.IsArray() && strings.GetArray().Size() == mKeys.size()) {
+
+ } else {
+ QMessageBox::warning(nullptr, tr("Warning"),
+ tr("Partial failure of automatic pubkey exchange"));
+ }
}
-
}