diff options
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")); + } } - } |