tdesktop/Telegram/SourceFiles/mtproto/details/mtproto_dc_key_binder.h

46 lines
960 B
C
Raw Normal View History

2019-11-13 14:12:04 +00:00
/*
This file is part of Telegram Desktop,
the official desktop application for the Telegram messaging service.
For license and copyright information please follow this link:
https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
*/
#pragma once
#include "mtproto/core_types.h"
2019-11-18 09:28:14 +00:00
#include "mtproto/mtproto_auth_key.h"
2019-11-13 14:12:04 +00:00
namespace MTP {
class Instance;
} // namespace MTP
namespace MTP::details {
enum class DcKeyBindState {
Unknown,
Success,
Failed,
DefinitelyDestroyed,
};
class DcKeyBinder final {
2019-11-13 14:12:04 +00:00
public:
explicit DcKeyBinder(AuthKeyPtr &&persistentKey);
[[nodiscard]] bool requested() const;
[[nodiscard]] SecureRequest prepareRequest(
const AuthKeyPtr &temporaryKey,
uint64 sessionId);
[[nodiscard]] DcKeyBindState handleResponse(
MTPlong requestMsgId,
const mtpBuffer &response);
[[nodiscard]] AuthKeyPtr persistentKey() const;
2019-11-13 14:12:04 +00:00
private:
AuthKeyPtr _persistentKey;
mtpMsgId _requestMsgId = 0;
2019-11-13 14:12:04 +00:00
};
} // namespace MTP::details